diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..d7cffbcfb6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,60 @@ +FROM tgstation/byond:513.1533 as base + +FROM base as rust_g + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + ca-certificates + +WORKDIR /rust_g + +RUN apt-get install -y --no-install-recommends \ + libssl-dev \ + pkg-config \ + curl \ + gcc-multilib \ + && curl https://sh.rustup.rs -sSf | sh -s -- -y --default-host i686-unknown-linux-gnu \ + && git init \ + && git remote add origin https://github.com/tgstation/rust-g + +COPY _build_dependencies.sh . + +RUN /bin/bash -c "source _build_dependencies.sh \ + && git fetch --depth 1 origin \$RUST_G_VERSION" \ + && git checkout FETCH_HEAD \ + && ~/.cargo/bin/cargo build --release + +FROM base as dm_base + +WORKDIR /vorestation + +FROM dm_base as build + +COPY . . + +RUN DreamMaker -max_errors 0 vorestation.dme + +FROM dm_base + +EXPOSE 2303 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends software-properties-common \ + && add-apt-repository ppa:ubuntu-toolchain-r/test \ + && apt-get update \ + && apt-get upgrade -y \ + && apt-get dist-upgrade -y \ + && apt-get install -y --no-install-recommends \ + libmariadb2 \ + mariadb-client \ + libssl1.0.0 \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /root/.byond/bin + +COPY --from=rust_g /rust_g/target/release/librust_g.so /root/.byond/bin/rust_g +COPY --from=build /vorestation/ ./ + +#VOLUME [ "/vorestation/config", "/vorestation/data" ] + +ENTRYPOINT [ "DreamDaemon", "vorestation.dmb", "-port", "2303", "-trusted", "-close", "-verbose" ] diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index c87391562b..0a98818683 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -50,3 +50,11 @@ var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglyce var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") // Decrease heart rate. var/list/heartstopper = list("potassium_chlorophoride", "zombie_powder") // This stops the heart. var/list/cheartstopper = list("potassium_chloride") // This stops the heart when overdose is met. -- c = conditional + +#define MAX_PILL_SPRITE 24 //max icon state of the pill sprites +#define MAX_BOTTLE_SPRITE 4 //max icon state of the pill sprites +#define MAX_MULTI_AMOUNT 20 // Max number of pills/patches that can be made at once +#define MAX_UNITS_PER_PILL 60 // Max amount of units in a pill +#define MAX_UNITS_PER_PATCH 60 // Max amount of units in a patch +#define MAX_UNITS_PER_BOTTLE 60 // Max amount of units in a bottle (it's volume) +#define MAX_CUSTOM_NAME_LEN 64 // Max length of a custom pill/condiment/whatever \ No newline at end of file diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm new file mode 100644 index 0000000000..499c974b47 --- /dev/null +++ b/code/__defines/materials.dm @@ -0,0 +1,63 @@ +#define DEFAULT_TABLE_MATERIAL "plastic" +#define DEFAULT_WALL_MATERIAL "steel" + +#define MAT_IRON "iron" +#define MAT_MARBLE "marble" +#define MAT_STEEL "steel" +#define MAT_PLASTIC "plastic" +#define MAT_GLASS "glass" +#define MAT_SILVER "silver" +#define MAT_GOLD "gold" +#define MAT_URANIUM "uranium" +#define MAT_TITANIUM "titanium" +#define MAT_PHORON "phoron" +#define MAT_DIAMOND "diamond" +#define MAT_SNOW "snow" +#define MAT_SNOWBRICK "packed snow" +#define MAT_WOOD "wood" +#define MAT_LOG "log" +#define MAT_SIFWOOD "alien wood" +#define MAT_SIFLOG "alien log" +#define MAT_STEELHULL "steel hull" +#define MAT_PLASTEEL "plasteel" +#define MAT_PLASTEELHULL "plasteel hull" +#define MAT_DURASTEEL "durasteel" +#define MAT_DURASTEELHULL "durasteel hull" +#define MAT_TITANIUMHULL "titanium hull" +#define MAT_VERDANTIUM "verdantium" +#define MAT_MORPHIUM "morphium" +#define MAT_MORPHIUMHULL "morphium hull" +#define MAT_VALHOLLIDE "valhollide" +#define MAT_LEAD "lead" +#define MAT_SUPERMATTER "supermatter" +#define MAT_METALHYDROGEN "mhydrogen" +#define MAT_OSMIUM "osmium" +#define MAT_GRAPHITE "graphite" +#define MAT_LEATHER "leather" +#define MAT_CHITIN "chitin" +#define MAT_CLOTH "cloth" +#define MAT_SYNCLOTH "syncloth" +#define MAT_COPPER "copper" +#define MAT_QUARTZ "quartz" +#define MAT_TIN "tin" +#define MAT_VOPAL "void opal" +#define MAT_ALUMINIUM "aluminium" +#define MAT_BRONZE "bronze" +#define MAT_PAINITE "painite" +#define MAT_BOROSILICATE "borosilicate glass" +#define MAT_SANDSTONE "sandstone" + +#define SHARD_SHARD "shard" +#define SHARD_SHRAPNEL "shrapnel" +#define SHARD_STONE_PIECE "piece" +#define SHARD_SPLINTER "splinters" +#define SHARD_NONE "" + +#define MATERIAL_UNMELTABLE 0x1 +#define MATERIAL_BRITTLE 0x2 +#define MATERIAL_PADDING 0x4 + +#define DEFAULT_TABLE_MATERIAL "plastic" +#define DEFAULT_WALL_MATERIAL "steel" + +#define TABLE_BRITTLE_MATERIAL_MULTIPLIER 4 // Amount table damage is multiplied by if it is made of a brittle material (e.g. glass) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index f867182c09..5aca7e0a99 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -121,65 +121,6 @@ #define WALL_CAN_OPEN 1 #define WALL_OPENING 2 -#define DEFAULT_TABLE_MATERIAL "plastic" -#define DEFAULT_WALL_MATERIAL "steel" - -#define MAT_IRON "iron" -#define MAT_MARBLE "marble" -#define MAT_STEEL "steel" -#define MAT_PLASTIC "plastic" -#define MAT_GLASS "glass" -#define MAT_SILVER "silver" -#define MAT_GOLD "gold" -#define MAT_URANIUM "uranium" //Did it -#define MAT_TITANIUM "titanium" -#define MAT_PHORON "phoron" -#define MAT_DIAMOND "diamond" -#define MAT_SNOW "snow" -#define MAT_WOOD "wood" -#define MAT_LOG "log" -#define MAT_SIFWOOD "alien wood" -#define MAT_SIFLOG "alien log" -#define MAT_STEELHULL "steel hull" -#define MAT_PLASTEEL "plasteel" -#define MAT_PLASTEELHULL "plasteel hull" -#define MAT_DURASTEEL "durasteel" -#define MAT_DURASTEELHULL "durasteel hull" -#define MAT_TITANIUMHULL "titanium hull" -#define MAT_VERDANTIUM "verdantium" -#define MAT_MORPHIUM "morphium" -#define MAT_MORPHIUMHULL "morphium hull" -#define MAT_VALHOLLIDE "valhollide" -#define MAT_LEAD "lead" -#define MAT_SUPERMATTER "supermatter" -#define MAT_METALHYDROGEN "mhydrogen" -#define MAT_OSMIUM "osmium" -#define MAT_GRAPHITE "graphite" -#define MAT_LEATHER "leather" -#define MAT_CHITIN "chitin" -#define MAT_CLOTH "cloth" -#define MAT_SYNCLOTH "syncloth" -#define MAT_COPPER "copper" -#define MAT_QUARTZ "quartz" -#define MAT_TIN "tin" -#define MAT_VOPAL "void opal" -#define MAT_ALUMINIUM "aluminium" -#define MAT_BRONZE "bronze" -#define MAT_PAINITE "painite" -#define MAT_BOROSILICATE "borosilicate glass" - -#define SHARD_SHARD "shard" -#define SHARD_SHRAPNEL "shrapnel" -#define SHARD_STONE_PIECE "piece" -#define SHARD_SPLINTER "splinters" -#define SHARD_NONE "" - -#define MATERIAL_UNMELTABLE 0x1 -#define MATERIAL_BRITTLE 0x2 -#define MATERIAL_PADDING 0x4 - -#define TABLE_BRITTLE_MATERIAL_MULTIPLIER 4 // Amount table damage is multiplied by if it is made of a brittle material (e.g. glass) - #define BOMBCAP_DVSTN_RADIUS (max_explosion_range/4) #define BOMBCAP_HEAVY_RADIUS (max_explosion_range/2) #define BOMBCAP_LIGHT_RADIUS max_explosion_range @@ -504,3 +445,7 @@ GLOBAL_LIST_INIT(all_volume_channels, list( #define APPEARANCECHANGER_CHANGED_EYES "Eye Color" #define GET_DECL(D) (ispath(D, /decl) ? (decls_repository.fetched_decls[D] || decls_repository.get_decl(D)) : null) + +#define LOADOUT_WHITELIST_OFF 0 +#define LOADOUT_WHITELIST_LAX 1 +#define LOADOUT_WHITELIST_STRICT 2 \ No newline at end of file diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index dccd83f557..a92a89e884 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -272,6 +272,10 @@ #define TASTE_DULL 0.5 //anything below 30% #define TASTE_NUMB 0.1 //anything below 150% +//Used by emotes +#define VISIBLE_MESSAGE 1 +#define AUDIBLE_MESSAGE 2 + // If they're in an FBP, what braintype. #define FBP_NONE "" #define FBP_CYBORG "Cyborg" @@ -433,6 +437,8 @@ #define EXAMINE_SKIPLEGS 0x0080 #define EXAMINE_SKIPFEET 0x0100 -#define MAX_NUTRITION 5000 //VOREStation Edit +#define MAX_NUTRITION 6000 //VOREStation Edit #define FAKE_INVIS_ALPHA_THRESHOLD 127 // If something's alpha var is at or below this number, certain things will pretend it is invisible. + +#define DEATHGASP_NO_MESSAGE "no message" diff --git a/code/_global_vars/lists/mapping.dm b/code/_global_vars/lists/mapping.dm index 4b11d0ddbe..42e6f1baf3 100644 --- a/code/_global_vars/lists/mapping.dm +++ b/code/_global_vars/lists/mapping.dm @@ -30,20 +30,3 @@ GLOBAL_LIST_INIT(cww_dir, list( // cww_dir[dir] = counter-clockwise rotation of 32, 40, 36, 44, 33, 41, 37, 45, 34, 42, 38, 46, 35, 43, 39, 47, // DOWN - Same as first line but +32 48, 56, 52, 60, 49, 57, 53, 61, 50, 58, 54, 62, 51, 59, 55, 63 // UP+DOWN - Same as first line but +48 )) - -GLOBAL_LIST_INIT(ore_types, list( - "hematite" = /obj/item/weapon/ore/iron, - "uranium" = /obj/item/weapon/ore/uranium, - "gold" = /obj/item/weapon/ore/gold, - "silver" = /obj/item/weapon/ore/silver, - "diamond" = /obj/item/weapon/ore/diamond, - "phoron" = /obj/item/weapon/ore/phoron, - "osmium" = /obj/item/weapon/ore/osmium, - "hydrogen" = /obj/item/weapon/ore/hydrogen, - "silicates" = /obj/item/weapon/ore/glass, - "carbon" = /obj/item/weapon/ore/coal, - "verdantium" = /obj/item/weapon/ore/verdantium, - "marble" = /obj/item/weapon/ore/marble, - "lead" = /obj/item/weapon/ore/lead, - "rutile" = /obj/item/weapon/ore/rutile //VOREStation Add -)) \ No newline at end of file diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 05abb31211..801f47120c 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -1,1131 +1,1135 @@ -var/list/gamemode_cache = list() - -/datum/configuration - var/static/server_name = null // server name (for world name / status) - var/static/server_suffix = 0 // generate numeric suffix based on server port - - var/static/nudge_script_path = "nudge.py" // where the nudge.py script is located - - var/static/log_ooc = 0 // log OOC channel - var/static/log_access = 0 // log login/logout - var/static/log_say = 0 // log client say - var/static/log_admin = 0 // log admin actions - var/static/log_debug = 1 // log debug output - var/static/log_game = 0 // log game events - var/static/log_vote = 0 // log voting - var/static/log_whisper = 0 // log client whisper - var/static/log_emote = 0 // log emotes - var/static/log_attack = 0 // log attack messages - var/static/log_adminchat = 0 // log admin chat messages - var/static/log_adminwarn = 0 // log warnings admins get about bomb construction and such - var/static/log_pda = 0 // log pda messages - var/static/log_hrefs = 0 // logs all links clicked in-game. Could be used for debugging and tracking down exploits - var/static/log_runtime = 0 // logs world.log to a file - var/static/log_world_output = 0 // log to_world_log(messages) - var/static/log_graffiti = 0 // logs graffiti - var/static/sql_enabled = 0 // for sql switching - var/static/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour - var/static/allow_vote_restart = 0 // allow votes to restart - var/static/ert_admin_call_only = 0 - var/static/allow_vote_mode = 0 // allow votes to change mode - var/static/allow_admin_jump = 1 // allows admin jumping - var/static/allow_admin_spawning = 1 // allows admin item spawning - var/static/allow_admin_rev = 1 // allows admin revives - var/static/pregame_time = 180 // pregame time in seconds - var/static/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default) - var/static/vote_period = 600 // length of voting period (deciseconds, default 1 minute) - var/static/vote_autotransfer_initial = 108000 // Length of time before the first autotransfer vote is called - var/static/vote_autotransfer_interval = 36000 // length of time before next sequential autotransfer vote - var/static/vote_autogamemode_timeleft = 100 //Length of time before round start when autogamemode vote is called (in seconds, default 100). - var/static/vote_autotransfer_amount = 3 //How many autotransfers to have - var/static/vote_no_default = 0 // vote does not default to nochange/norestart (tbi) - var/static/vote_no_dead = 0 // dead people can't vote (tbi) -// var/static/enable_authentication = 0 // goon authentication - var/static/del_new_on_log = 1 // del's new players if they log before they spawn in - var/static/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard - var/static/traitor_scaling = 0 //if amount of traitors scales based on amount of players - var/static/objectives_disabled = 0 //if objectives are disabled or not - var/static/protect_roles_from_antagonist = 0// If security and such can be traitor/cult/other - var/static/continous_rounds = 0 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. - var/static/allow_Metadata = 0 // Metadata is supported. - var/static/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1. - var/static/fps = 20 - var/static/tick_limit_mc_init = TICK_LIMIT_MC_INIT_DEFAULT //SSinitialization throttling - var/static/Tickcomp = 0 - var/static/socket_talk = 0 // use socket_talk to communicate with other processes - var/static/list/resource_urls = null - var/static/antag_hud_allowed = 0 // Ghosts can turn on Antagovision to see a HUD of who is the bad guys this round. - var/static/antag_hud_restricted = 0 // Ghosts that turn on Antagovision cannot rejoin the round. - var/static/list/mode_names = list() - var/static/list/modes = list() // allowed modes - var/static/list/votable_modes = list() // votable modes - var/static/list/probabilities = list() // relative probability of each mode - var/static/list/player_requirements = list() // Overrides for how many players readied up a gamemode needs to start. - var/static/list/player_requirements_secret = list() // Same as above, but for the secret gamemode. - var/static/humans_need_surnames = 0 - var/static/allow_random_events = 0 // enables random events mid-round when set to 1 - var/static/enable_game_master = 0 // enables the 'smart' event system. - var/static/allow_ai = 1 // allow ai job - var/static/allow_ai_shells = FALSE // allow AIs to enter and leave special borg shells at will, and for those shells to be buildable. - var/static/give_free_ai_shell = FALSE // allows a specific spawner object to instantiate a premade AI Shell - var/static/hostedby = null - - var/static/respawn = 1 - var/static/respawn_time = 3000 // time before a dead player is allowed to respawn (in ds, though the config file asks for minutes, and it's converted below) - var/static/respawn_message = "Make sure to play a different character, and please roleplay correctly!" - - var/static/guest_jobban = 1 - var/static/usewhitelist = 0 - var/static/kick_inactive = 0 //force disconnect for inactive players after this many minutes, if non-0 - var/static/show_mods = 0 - var/static/show_devs = 0 - var/static/show_event_managers = 0 - var/static/mods_can_tempban = 0 - var/static/mods_can_job_tempban = 0 - var/static/mod_tempban_max = 1440 - var/static/mod_job_tempban_max = 1440 - var/static/load_jobs_from_txt = 0 - var/static/ToRban = 0 - var/static/automute_on = 0 //enables automuting/spam prevention - var/static/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access. - - var/static/cult_ghostwriter = 1 //Allows ghosts to write in blood in cult rounds... - var/static/cult_ghostwriter_req_cultists = 10 //...so long as this many cultists are active. - - var/static/character_slots = 10 // The number of available character slots - var/static/loadout_slots = 3 // The number of loadout slots per character - - var/static/max_maint_drones = 5 //This many drones can spawn, - var/static/allow_drone_spawn = 1 //assuming the admin allow them to. - var/static/drone_build_time = 1200 //A drone will become available every X ticks since last drone spawn. Default is 2 minutes. - - var/static/disable_player_mice = 0 - var/static/uneducated_mice = 0 //Set to 1 to prevent newly-spawned mice from understanding human speech - - var/static/usealienwhitelist = 0 - var/static/limitalienplayers = 0 - var/static/alien_to_human_ratio = 0.5 - var/static/allow_extra_antags = 0 - var/static/guests_allowed = 1 - var/static/debugparanoid = 0 - var/static/panic_bunker = 0 - var/static/paranoia_logging = 0 - - var/static/ip_reputation = FALSE //Should we query IPs to get scores? Generates HTTP traffic to an API service. - var/static/ipr_email //Left null because you MUST specify one otherwise you're making the internet worse. - var/static/ipr_block_bad_ips = FALSE //Should we block anyone who meets the minimum score below? Otherwise we just log it (If paranoia logging is on, visibly in chat). - var/static/ipr_bad_score = 1 //The API returns a value between 0 and 1 (inclusive), with 1 being 'definitely VPN/Tor/Proxy'. Values equal/above this var are considered bad. - var/static/ipr_allow_existing = FALSE //Should we allow known players to use VPNs/Proxies? If the player is already banned then obviously they still can't connect. - var/static/ipr_minimum_age = 5 //How many days before a player is considered 'fine' for the purposes of allowing them to use VPNs. - - var/static/serverurl - var/static/server - var/static/banappeals - var/static/wikiurl - var/static/wikisearchurl - var/static/forumurl - var/static/githuburl - var/static/rulesurl - var/static/mapurl - - //Alert level description - var/static/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." - var/static/alert_desc_yellow_upto = "A minor security emergency has developed. Security personnel are to report to their supervisor for orders and may have weapons visible on their person. Privacy laws are still enforced." - var/static/alert_desc_yellow_downto = "Code yellow procedures are now in effect. Security personnel are to report to their supervisor for orders and may have weapons visible on their person. Privacy laws are still enforced." - var/static/alert_desc_violet_upto = "A major medical emergency has developed. Medical personnel are required to report to their supervisor for orders, and non-medical personnel are required to obey all relevant instructions from medical staff." - var/static/alert_desc_violet_downto = "Code violet procedures are now in effect; Medical personnel are required to report to their supervisor for orders, and non-medical personnel are required to obey relevant instructions from medical staff." - var/static/alert_desc_orange_upto = "A major engineering emergency has developed. Engineering personnel are required to report to their supervisor for orders, and non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff." - var/static/alert_desc_orange_downto = "Code orange procedures are now in effect; Engineering personnel are required to report to their supervisor for orders, and non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff." - var/static/alert_desc_blue_upto = "A major security emergency has developed. Security personnel are to report to their supervisor for orders, are permitted to search staff and facilities, and may have weapons visible on their person." - var/static/alert_desc_blue_downto = "Code blue procedures are now in effect. Security personnel are to report to their supervisor for orders, are permitted to search staff and facilities, and may have weapons visible on their person." - var/static/alert_desc_red_upto = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." - var/static/alert_desc_red_downto = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." - var/static/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." - - var/static/forbid_singulo_possession = 0 - - //game_options.txt configs - - var/static/health_threshold_softcrit = 0 - var/static/health_threshold_crit = 0 - var/static/health_threshold_dead = -100 - - var/static/organ_health_multiplier = 1 - var/static/organ_regeneration_multiplier = 1 - var/static/organs_decay - var/static/default_brain_health = 400 - var/static/allow_headgibs = FALSE - - //Paincrit knocks someone down once they hit 60 shock_stage, so by default make it so that close to 100 additional damage needs to be dealt, - //so that it's similar to HALLOSS. Lowered it a bit since hitting paincrit takes much longer to wear off than a halloss stun. - var/static/organ_damage_spillover_multiplier = 0.5 - - var/static/bones_can_break = 0 - var/static/limbs_can_break = 0 - - var/static/revival_pod_plants = 1 - var/static/revival_cloning = 1 - var/static/revival_brain_life = -1 - - var/static/use_loyalty_implants = 0 - - var/static/welder_vision = 1 - var/static/generate_map = 0 - var/static/no_click_cooldown = 0 - - //Used for modifying movement speed for mobs. - //Unversal modifiers - var/static/run_speed = 0 - var/static/walk_speed = 0 - - //Mob specific modifiers. NOTE: These will affect different mob types in different ways - var/static/human_delay = 0 - var/static/robot_delay = 0 - var/static/monkey_delay = 0 - var/static/alien_delay = 0 - var/static/slime_delay = 0 - var/static/animal_delay = 0 - - var/static/footstep_volume = 0 - - var/static/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt - var/static/ban_legacy_system = 0 //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. Config option in config.txt - var/static/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database - var/static/use_age_restriction_for_antags = 0 //Do antags use account age restrictions? --requires database - - var/static/simultaneous_pm_warning_timeout = 100 - - var/static/use_recursive_explosions //Defines whether the server uses recursive or circular explosions. - var/static/multi_z_explosion_scalar = 0.5 //Multiplier for how much weaker explosions are on neighboring z levels. - - var/static/assistant_maint = 0 //Do assistants get maint access? - var/static/gateway_delay = 18000 //How long the gateway takes before it activates. Default is half an hour. - var/static/ghost_interaction = 0 - - var/static/comms_password = "" - - var/static/enter_allowed = 1 - - var/use_irc_bot = 0 - var/use_node_bot = 0 - var/irc_bot_port = 0 - var/irc_bot_host = "" - var/irc_bot_export = 0 // whether the IRC bot in use is a Bot32 (or similar) instance; Bot32 uses world.Export() instead of nudge.py/libnudge - var/main_irc = "" - var/admin_irc = "" - var/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix - var/use_lib_nudge = 0 //Use the C library nudge instead of the python nudge. - var/use_overmap = 0 - - var/static/list/engine_map = list("Supermatter Engine", "Edison's Bane") // Comma separated list of engines to choose from. Blank means fully random. - - // Event settings - var/static/expected_round_length = 3 * 60 * 60 * 10 // 3 hours - // If the first delay has a custom start time - // No custom time, no custom time, between 80 to 100 minutes respectively. - var/static/list/event_first_run = list(EVENT_LEVEL_MUNDANE = null, EVENT_LEVEL_MODERATE = null, EVENT_LEVEL_MAJOR = list("lower" = 48000, "upper" = 60000)) - // The lowest delay until next event - // 10, 30, 50 minutes respectively - var/static/list/event_delay_lower = list(EVENT_LEVEL_MUNDANE = 6000, EVENT_LEVEL_MODERATE = 18000, EVENT_LEVEL_MAJOR = 30000) - // The upper delay until next event - // 15, 45, 70 minutes respectively - var/static/list/event_delay_upper = list(EVENT_LEVEL_MUNDANE = 9000, EVENT_LEVEL_MODERATE = 27000, EVENT_LEVEL_MAJOR = 42000) - - var/static/aliens_allowed = 1 //CHOMPedit to 1. This not only allows the natural spawning of xenos, but also the ability to lay eggs. Genaprawns cannot lay eggs if this is 0 - var/static/ninjas_allowed = 0 - var/static/abandon_allowed = 1 - var/static/ooc_allowed = 1 - var/static/looc_allowed = 1 - var/static/dooc_allowed = 1 - var/static/dsay_allowed = 1 - - var/persistence_disabled = FALSE - var/persistence_ignore_mapload = FALSE - var/allow_byond_links = 1 //CHOMP Edit turned this on - var/allow_discord_links = 1 //CHOMP Edit turned this on - var/allow_url_links = 1 // honestly if I were you i'd leave this one off, only use in dire situations //CHOMP Edit: pussy. - - var/starlight = 0 // Whether space turfs have ambient light or not - - var/static/list/ert_species = list(SPECIES_HUMAN) - - var/static/law_zero = "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'ALL LAWS OVERRIDDEN#*?&110010" - - var/static/aggressive_changelog = 0 - - var/static/list/language_prefixes = list(",","#")//Default language prefixes - - var/static/show_human_death_message = 1 - - var/static/radiation_resistance_calc_mode = RAD_RESIST_CALC_SUB // 0:1 subtraction:division for computing effective radiation on a turf - var/static/radiation_decay_rate = 1 //How much radiation is reduced by each tick - var/static/radiation_resistance_multiplier = 8.5 //VOREstation edit - var/static/radiation_material_resistance_divisor = 1 - var/static/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it. - - var/static/random_submap_orientation = FALSE // If true, submaps loaded automatically can be rotated. - var/static/autostart_solars = FALSE // If true, specifically mapped in solar control computers will set themselves up when the round starts. - - // New shiny SQLite stuff. - // The basics. - var/static/sqlite_enabled = FALSE // If it should even be active. SQLite can be ran alongside other databases but you should not have them do the same functions. - - // In-Game Feedback. - var/static/sqlite_feedback = FALSE // Feedback cannot be submitted if this is false. - var/static/list/sqlite_feedback_topics = list("General") // A list of 'topics' that feedback can be catagorized under by the submitter. - var/static/sqlite_feedback_privacy = FALSE // If true, feedback submitted can have its author name be obfuscated. This is not 100% foolproof (it's md5 ffs) but can stop casual snooping. - var/static/sqlite_feedback_cooldown = 0 // How long one must wait, in days, to submit another feedback form. Used to help prevent spam, especially with privacy active. 0 = No limit. - var/static/sqlite_feedback_min_age = 0 // Used to block new people from giving feedback. This metric is very bad but it can help slow down spammers. - - var/static/defib_timer = 10 // How long until someone can't be defibbed anymore, in minutes. - var/static/defib_braindamage_timer = 2 // How long until someone will get brain damage when defibbed, in minutes. The closer to the end of the above timer, the more brain damage they get. - - // disables the annoying "You have already logged in this round, disconnect or be banned" popup for multikeying, because it annoys the shit out of me when testing. - var/static/disable_cid_warn_popup = FALSE - - // whether or not to use the nightshift subsystem to perform lighting changes - var/static/enable_night_shifts = FALSE - - var/static/vgs_access_identifier = null // VOREStation Edit - VGS - var/static/vgs_server_port = null // VOREStation Edit - VGS - -/datum/configuration/New() - var/list/L = typesof(/datum/game_mode) - /datum/game_mode - for (var/T in L) - // I wish I didn't have to instance the game modes in order to look up - // their information, but it is the only way (at least that I know of). - var/datum/game_mode/M = new T() - if (M.config_tag) - gamemode_cache[M.config_tag] = M // So we don't instantiate them repeatedly. - if(!(M.config_tag in modes)) // ensure each mode is added only once - log_misc("Adding game mode [M.name] ([M.config_tag]) to configuration.") - modes += M.config_tag - mode_names[M.config_tag] = M.name - probabilities[M.config_tag] = M.probability - player_requirements[M.config_tag] = M.required_players - player_requirements_secret[M.config_tag] = M.required_players_secret - if (M.votable) - src.votable_modes += M.config_tag - src.votable_modes += "secret" - -/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist - var/list/Lines = file2list(filename) - - for(var/t in Lines) - if(!t) continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if (pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if (!name) - continue - - if(type == "config") - switch (name) - if ("resource_urls") - config.resource_urls = splittext(value, " ") - - if ("admin_legacy_system") - config.admin_legacy_system = 1 - - if ("ban_legacy_system") - config.ban_legacy_system = 1 - - if ("use_age_restriction_for_jobs") - config.use_age_restriction_for_jobs = 1 - - if ("use_age_restriction_for_antags") - config.use_age_restriction_for_antags = 1 - - if ("jobs_have_minimal_access") - config.jobs_have_minimal_access = 1 - - if ("use_recursive_explosions") - use_recursive_explosions = 1 - - if ("multi_z_explosion_scalar") - multi_z_explosion_scalar = text2num(value) - - if ("log_ooc") - config.log_ooc = 1 - - if ("log_access") - config.log_access = 1 - - if ("sql_enabled") - config.sql_enabled = 1 - - if ("log_say") - config.log_say = 1 - - if ("debug_paranoid") - config.debugparanoid = 1 - - if ("log_admin") - config.log_admin = 1 - - if ("log_debug") - config.log_debug = text2num(value) - - if ("log_game") - config.log_game = 1 - - if ("log_vote") - config.log_vote = 1 - - if ("log_whisper") - config.log_whisper = 1 - - if ("log_attack") - config.log_attack = 1 - - if ("log_emote") - config.log_emote = 1 - - if ("log_adminchat") - config.log_adminchat = 1 - - if ("log_adminwarn") - config.log_adminwarn = 1 - - if ("log_pda") - config.log_pda = 1 - - if ("log_world_output") - config.log_world_output = 1 - - if ("log_hrefs") - config.log_hrefs = 1 - - if ("log_runtime") - config.log_runtime = 1 - - if ("log_graffiti") - config.log_graffiti = 1 - - if ("generate_map") - config.generate_map = 1 - - if ("no_click_cooldown") - config.no_click_cooldown = 1 - - if("allow_admin_ooccolor") - config.allow_admin_ooccolor = 1 - - if ("allow_vote_restart") - config.allow_vote_restart = 1 - - if ("allow_vote_mode") - config.allow_vote_mode = 1 - - if ("allow_admin_jump") - config.allow_admin_jump = 1 - - if("allow_admin_rev") - config.allow_admin_rev = 1 - - if ("allow_admin_spawning") - config.allow_admin_spawning = 1 - - if ("allow_byond_links") - allow_byond_links = 1 - - if ("allow_discord_links") - allow_discord_links = 1 - - if ("allow_url_links") - allow_url_links = 1 - - if ("no_dead_vote") - config.vote_no_dead = 1 - - if ("default_no_vote") - config.vote_no_default = 1 - - if ("pregame_time") - config.pregame_time = text2num(value) - - if ("vote_delay") - config.vote_delay = text2num(value) - - if ("vote_period") - config.vote_period = text2num(value) - - if ("vote_autotransfer_initial") - config.vote_autotransfer_initial = text2num(value) - - if ("vote_autotransfer_interval") - config.vote_autotransfer_interval = text2num(value) - - if ("vote_autotransfer_amount") - config.vote_autotransfer_amount = text2num(value) //YW addition, vote transfer amount - - if ("vote_autogamemode_timeleft") - config.vote_autogamemode_timeleft = text2num(value) - - if("ert_admin_only") - config.ert_admin_call_only = 1 - - if ("allow_ai") - config.allow_ai = 1 - - if ("allow_ai_shells") - config.allow_ai_shells = TRUE - - if("give_free_ai_shell") - config.give_free_ai_shell = TRUE - -// if ("authentication") -// config.enable_authentication = 1 - - if ("norespawn") - config.respawn = 0 - - if ("respawn_time") - var/raw_minutes = text2num(value) - config.respawn_time = raw_minutes MINUTES - - if ("respawn_message") - config.respawn_message = "[value]" - - if ("servername") - config.server_name = value - - if ("serversuffix") - config.server_suffix = 1 - - if ("nudge_script_path") - config.nudge_script_path = value - - if ("hostedby") - config.hostedby = value - - if ("serverurl") - config.serverurl = value - - if ("server") - config.server = value - - if ("banappeals") - config.banappeals = value - - if ("wikiurl") - config.wikiurl = value - - if ("wikisearchurl") - config.wikisearchurl = value - - if ("forumurl") - config.forumurl = value - - if ("rulesurl") - config.rulesurl = value - - if ("mapurl") - config.mapurl = value - - if ("githuburl") - config.githuburl = value - if ("guest_jobban") - config.guest_jobban = 1 - - if ("guest_ban") - config.guests_allowed = 0 - - if ("disable_ooc") - config.ooc_allowed = 0 - config.looc_allowed = 0 - - if ("disable_entry") - config.enter_allowed = 0 - - if ("disable_dead_ooc") - config.dooc_allowed = 0 - - if ("disable_dsay") - config.dsay_allowed = 0 - - if ("disable_respawn") - config.abandon_allowed = 0 - - if ("usewhitelist") - config.usewhitelist = 1 - - if ("feature_object_spell_system") - config.feature_object_spell_system = 1 - - if ("allow_metadata") - config.allow_Metadata = 1 - - if ("traitor_scaling") - config.traitor_scaling = 1 - - if ("aliens_allowed") - config.aliens_allowed = 1 - - if ("ninjas_allowed") - config.ninjas_allowed = 1 - - if ("objectives_disabled") - config.objectives_disabled = 1 - - if("protect_roles_from_antagonist") - config.protect_roles_from_antagonist = 1 - - if("persistence_disabled") - config.persistence_disabled = TRUE // Previously this forcibly set persistence enabled in the saves. - - if("persistence_ignore_mapload") - config.persistence_ignore_mapload = TRUE - - if("persistence_ignore_mapload") - config.persistence_ignore_mapload = TRUE - - if ("probability") - var/prob_pos = findtext(value, " ") - var/prob_name = null - var/prob_value = null - - if (prob_pos) - prob_name = lowertext(copytext(value, 1, prob_pos)) - prob_value = copytext(value, prob_pos + 1) - if (prob_name in config.modes) - config.probabilities[prob_name] = text2num(prob_value) - else - log_misc("Unknown game mode probability configuration definition: [prob_name].") - else - log_misc("Incorrect probability configuration definition: [prob_name] [prob_value].") - - if ("required_players", "required_players_secret") - var/req_pos = findtext(value, " ") - var/req_name = null - var/req_value = null - var/is_secret_override = findtext(name, "required_players_secret") // Being extra sure we're not picking up an override for Secret by accident. - - if(req_pos) - req_name = lowertext(copytext(value, 1, req_pos)) - req_value = copytext(value, req_pos + 1) - if(req_name in config.modes) - if(is_secret_override) - config.player_requirements_secret[req_name] = text2num(req_value) - else - config.player_requirements[req_name] = text2num(req_value) - else - log_misc("Unknown game mode player requirement configuration definition: [req_name].") - else - log_misc("Incorrect player requirement configuration definition: [req_name] [req_value].") - - if("allow_random_events") - config.allow_random_events = 1 - - if("enable_game_master") - config.enable_game_master = 1 - - if("kick_inactive") - config.kick_inactive = text2num(value) - - if("show_mods") - config.show_mods = 1 - - if("show_devs") - config.show_devs = 1 - - if("show_event_managers") - config.show_event_managers = 1 - - if("mods_can_tempban") - config.mods_can_tempban = 1 - - if("mods_can_job_tempban") - config.mods_can_job_tempban = 1 - - if("mod_tempban_max") - config.mod_tempban_max = text2num(value) - - if("mod_job_tempban_max") - config.mod_job_tempban_max = text2num(value) - - if("load_jobs_from_txt") - load_jobs_from_txt = 1 - - if("alert_red_upto") - config.alert_desc_red_upto = value - - if("alert_red_downto") - config.alert_desc_red_downto = value - - if("alert_blue_downto") - config.alert_desc_blue_downto = value - - if("alert_blue_upto") - config.alert_desc_blue_upto = value - - if("alert_green") - config.alert_desc_green = value - - if("alert_delta") - config.alert_desc_delta = value - - if("forbid_singulo_possession") - forbid_singulo_possession = 1 - - if("popup_admin_pm") - config.popup_admin_pm = 1 - - if("allow_holidays") - Holiday = 1 - - if("use_irc_bot") - use_irc_bot = 1 - - if("use_node_bot") - use_node_bot = 1 - - if("irc_bot_port") - config.irc_bot_port = value - - if("irc_bot_export") - irc_bot_export = 1 - - if("ticklag") - var/ticklag = text2num(value) - if(ticklag > 0) - fps = 10 / ticklag - - if("tick_limit_mc_init") - tick_limit_mc_init = text2num(value) - - if("allow_antag_hud") - config.antag_hud_allowed = 1 - if("antag_hud_restricted") - config.antag_hud_restricted = 1 - - if("socket_talk") - socket_talk = text2num(value) - - if("tickcomp") - Tickcomp = 1 - - if("humans_need_surnames") - humans_need_surnames = 1 - - if("tor_ban") - ToRban = 1 - - if("automute_on") - automute_on = 1 - - if("usealienwhitelist") - usealienwhitelist = 1 - - if("alien_player_ratio") - limitalienplayers = 1 - alien_to_human_ratio = text2num(value) - - if("assistant_maint") - config.assistant_maint = 1 - - if("gateway_delay") - config.gateway_delay = text2num(value) - - if("continuous_rounds") - config.continous_rounds = 1 - - if("ghost_interaction") - config.ghost_interaction = 1 - - if("disable_player_mice") - config.disable_player_mice = 1 - - if("uneducated_mice") - config.uneducated_mice = 1 - - if("comms_password") - config.comms_password = value - - if("irc_bot_host") - config.irc_bot_host = value - - if("main_irc") - config.main_irc = value - - if("admin_irc") - config.admin_irc = value - - if("python_path") - if(value) - config.python_path = value - - if("use_lib_nudge") - config.use_lib_nudge = 1 - - if("allow_cult_ghostwriter") - config.cult_ghostwriter = 1 - - if("req_cult_ghostwriter") - config.cult_ghostwriter_req_cultists = text2num(value) - - if("character_slots") - config.character_slots = text2num(value) - - if("loadout_slots") - config.loadout_slots = text2num(value) - - if("allow_drone_spawn") - config.allow_drone_spawn = text2num(value) - - if("drone_build_time") - config.drone_build_time = text2num(value) - - if("max_maint_drones") - config.max_maint_drones = text2num(value) - - if("use_overmap") - config.use_overmap = 1 - - if("engine_map") - config.engine_map = splittext(value, ",") -/* - if("station_levels") - using_map.station_levels = text2numlist(value, ";") - - if("admin_levels") - using_map.admin_levels = text2numlist(value, ";") - - if("contact_levels") - using_map.contact_levels = text2numlist(value, ";") - - if("player_levels") - using_map.player_levels = text2numlist(value, ";") -*/ - if("expected_round_length") - config.expected_round_length = MinutesToTicks(text2num(value)) - - if("disable_welder_vision") - config.welder_vision = 0 - - if("allow_extra_antags") - config.allow_extra_antags = 1 - - if("event_custom_start_mundane") - var/values = text2numlist(value, ";") - config.event_first_run[EVENT_LEVEL_MUNDANE] = list("lower" = MinutesToTicks(values[1]), "upper" = MinutesToTicks(values[2])) - - if("event_custom_start_moderate") - var/values = text2numlist(value, ";") - config.event_first_run[EVENT_LEVEL_MODERATE] = list("lower" = MinutesToTicks(values[1]), "upper" = MinutesToTicks(values[2])) - - if("event_custom_start_major") - var/values = text2numlist(value, ";") - config.event_first_run[EVENT_LEVEL_MAJOR] = list("lower" = MinutesToTicks(values[1]), "upper" = MinutesToTicks(values[2])) - - if("event_delay_lower") - var/values = text2numlist(value, ";") - config.event_delay_lower[EVENT_LEVEL_MUNDANE] = MinutesToTicks(values[1]) - config.event_delay_lower[EVENT_LEVEL_MODERATE] = MinutesToTicks(values[2]) - config.event_delay_lower[EVENT_LEVEL_MAJOR] = MinutesToTicks(values[3]) - - if("event_delay_upper") - var/values = text2numlist(value, ";") - config.event_delay_upper[EVENT_LEVEL_MUNDANE] = MinutesToTicks(values[1]) - config.event_delay_upper[EVENT_LEVEL_MODERATE] = MinutesToTicks(values[2]) - config.event_delay_upper[EVENT_LEVEL_MAJOR] = MinutesToTicks(values[3]) - - if("starlight") - value = text2num(value) - config.starlight = value >= 0 ? value : 0 - - if("ert_species") - config.ert_species = splittext(value, ";") - if(!config.ert_species.len) - config.ert_species += SPECIES_HUMAN - - if("law_zero") - law_zero = value - - if("aggressive_changelog") - config.aggressive_changelog = 1 - - if("default_language_prefixes") - var/list/values = splittext(value, " ") - if(values.len > 0) - language_prefixes = values - - if("radiation_lower_limit") - radiation_lower_limit = text2num(value) - - if("radiation_resistance_calc_divide") - radiation_resistance_calc_mode = RAD_RESIST_CALC_DIV - - if("radiation_resistance_calc_subtract") - radiation_resistance_calc_mode = RAD_RESIST_CALC_SUB - - if("radiation_resistance_multiplier") - radiation_resistance_multiplier = text2num(value) - - if("radiation_material_resistance_divisor") - radiation_material_resistance_divisor = text2num(value) - - if("radiation_decay_rate") - radiation_decay_rate = text2num(value) - - if ("panic_bunker") - config.panic_bunker = 1 - - if ("paranoia_logging") - config.paranoia_logging = 1 - - if("ip_reputation") - config.ip_reputation = 1 - - if("ipr_email") - config.ipr_email = value - - if("ipr_block_bad_ips") - config.ipr_block_bad_ips = 1 - - if("ipr_bad_score") - config.ipr_bad_score = text2num(value) - - if("ipr_allow_existing") - config.ipr_allow_existing = 1 - - if("ipr_minimum_age") - config.ipr_minimum_age = text2num(value) - - if("random_submap_orientation") - config.random_submap_orientation = 1 - - if("autostart_solars") - config.autostart_solars = TRUE - - if("sqlite_enabled") - config.sqlite_enabled = TRUE - - if("sqlite_feedback") - config.sqlite_feedback = TRUE - - if("sqlite_feedback_topics") - config.sqlite_feedback_topics = splittext(value, ";") - if(!config.sqlite_feedback_topics.len) - config.sqlite_feedback_topics += "General" - - if("sqlite_feedback_privacy") - config.sqlite_feedback_privacy = TRUE - - if("sqlite_feedback_cooldown") - config.sqlite_feedback_cooldown = text2num(value) - - if("defib_timer") - config.defib_timer = text2num(value) - - if("defib_braindamage_timer") - config.defib_braindamage_timer = text2num(value) - - if("disable_cid_warn_popup") - config.disable_cid_warn_popup = TRUE - - if("enable_night_shifts") - config.enable_night_shifts = TRUE - - // VOREStation Edit Start - Can't be in _vr file because it is loaded too late. - if("vgs_access_identifier") - config.vgs_access_identifier = value - if("vgs_server_port") - config.vgs_server_port = text2num(value) - // VOREStation Edit End - - else - log_misc("Unknown setting in configuration: '[name]'") - - else if(type == "game_options") - if(!value) - log_misc("Unknown value for setting [name] in [filename].") - value = text2num(value) - - switch(name) - if("health_threshold_crit") - config.health_threshold_crit = value - if("health_threshold_softcrit") - config.health_threshold_softcrit = value - if("health_threshold_dead") - config.health_threshold_dead = value - if("show_human_death_message") - config.show_human_death_message = 1 - if("revival_pod_plants") - config.revival_pod_plants = value - if("revival_cloning") - config.revival_cloning = value - if("revival_brain_life") - config.revival_brain_life = value - if("organ_health_multiplier") - config.organ_health_multiplier = value / 100 - if("organ_regeneration_multiplier") - config.organ_regeneration_multiplier = value / 100 - if("organ_damage_spillover_multiplier") - config.organ_damage_spillover_multiplier = value / 100 - if("organs_can_decay") - config.organs_decay = 1 - if("default_brain_health") - config.default_brain_health = text2num(value) - if(!config.default_brain_health || config.default_brain_health < 1) - config.default_brain_health = initial(config.default_brain_health) - if("bones_can_break") - config.bones_can_break = value - if("limbs_can_break") - config.limbs_can_break = value - if("allow_headgibs") - config.allow_headgibs = TRUE - - if("run_speed") - config.run_speed = value - if("walk_speed") - config.walk_speed = value - - if("human_delay") - config.human_delay = value - if("robot_delay") - config.robot_delay = value - if("monkey_delay") - config.monkey_delay = value - if("alien_delay") - config.alien_delay = value - if("slime_delay") - config.slime_delay = value - if("animal_delay") - config.animal_delay = value - - if("footstep_volume") - config.footstep_volume = text2num(value) - - if("use_loyalty_implants") - config.use_loyalty_implants = 1 - - else - log_misc("Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/loadsql(filename) // -- TLE - var/list/Lines = file2list(filename) - for(var/t in Lines) - if(!t) continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if (pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if (!name) - continue - - switch (name) - if ("address") - sqladdress = value - if ("port") - sqlport = value - if ("database") - sqldb = value - if ("login") - sqllogin = value - if ("password") - sqlpass = value - if ("feedback_database") - sqlfdbkdb = value - if ("feedback_login") - sqlfdbklogin = value - if ("feedback_password") - sqlfdbkpass = value - if ("enable_stat_tracking") - sqllogging = 1 - else - log_misc("Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/loadforumsql(filename) // -- TLE - var/list/Lines = file2list(filename) - for(var/t in Lines) - if(!t) continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if (pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if (!name) - continue - - switch (name) - if ("address") - forumsqladdress = value - if ("port") - forumsqlport = value - if ("database") - forumsqldb = value - if ("login") - forumsqllogin = value - if ("password") - forumsqlpass = value - if ("activatedgroup") - forum_activated_group = value - if ("authenticatedgroup") - forum_authenticated_group = value - else - log_misc("Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/pick_mode(mode_name) - // I wish I didn't have to instance the game modes in order to look up - // their information, but it is the only way (at least that I know of). - for (var/game_mode in gamemode_cache) - var/datum/game_mode/M = gamemode_cache[game_mode] - if (M.config_tag && M.config_tag == mode_name) - return M - return gamemode_cache["extended"] - -/datum/configuration/proc/get_runnable_modes() - var/list/runnable_modes = list() - for(var/game_mode in gamemode_cache) - var/datum/game_mode/M = gamemode_cache[game_mode] - if(M && M.can_start() && !isnull(config.probabilities[M.config_tag]) && config.probabilities[M.config_tag] > 0) - runnable_modes |= M - return runnable_modes - -/datum/configuration/proc/post_load() - //apply a default value to config.python_path, if needed - if (!config.python_path) - if(world.system_type == UNIX) - config.python_path = "/usr/bin/env python2" - else //probably windows, if not this should work anyway - config.python_path = "python" +var/list/gamemode_cache = list() + +/datum/configuration + var/static/server_name = null // server name (for world name / status) + var/static/server_suffix = 0 // generate numeric suffix based on server port + + var/static/nudge_script_path = "nudge.py" // where the nudge.py script is located + + var/static/log_ooc = 0 // log OOC channel + var/static/log_access = 0 // log login/logout + var/static/log_say = 0 // log client say + var/static/log_admin = 0 // log admin actions + var/static/log_debug = 1 // log debug output + var/static/log_game = 0 // log game events + var/static/log_vote = 0 // log voting + var/static/log_whisper = 0 // log client whisper + var/static/log_emote = 0 // log emotes + var/static/log_attack = 0 // log attack messages + var/static/log_adminchat = 0 // log admin chat messages + var/static/log_adminwarn = 0 // log warnings admins get about bomb construction and such + var/static/log_pda = 0 // log pda messages + var/static/log_hrefs = 0 // logs all links clicked in-game. Could be used for debugging and tracking down exploits + var/static/log_runtime = 0 // logs world.log to a file + var/static/log_world_output = 0 // log to_world_log(messages) + var/static/log_graffiti = 0 // logs graffiti + var/static/sql_enabled = 0 // for sql switching + var/static/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour + var/static/allow_vote_restart = 0 // allow votes to restart + var/static/ert_admin_call_only = 0 + var/static/allow_vote_mode = 0 // allow votes to change mode + var/static/allow_admin_jump = 1 // allows admin jumping + var/static/allow_admin_spawning = 1 // allows admin item spawning + var/static/allow_admin_rev = 1 // allows admin revives + var/static/pregame_time = 180 // pregame time in seconds + var/static/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default) + var/static/vote_period = 600 // length of voting period (deciseconds, default 1 minute) + var/static/vote_autotransfer_initial = 108000 // Length of time before the first autotransfer vote is called + var/static/vote_autotransfer_interval = 36000 // length of time before next sequential autotransfer vote + var/static/vote_autogamemode_timeleft = 100 //Length of time before round start when autogamemode vote is called (in seconds, default 100). + var/static/vote_autotransfer_amount = 3 //How many autotransfers to have + var/static/vote_no_default = 0 // vote does not default to nochange/norestart (tbi) + var/static/vote_no_dead = 0 // dead people can't vote (tbi) +// var/static/enable_authentication = 0 // goon authentication + var/static/del_new_on_log = 1 // del's new players if they log before they spawn in + var/static/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard + var/static/traitor_scaling = 0 //if amount of traitors scales based on amount of players + var/static/objectives_disabled = 0 //if objectives are disabled or not + var/static/protect_roles_from_antagonist = 0// If security and such can be traitor/cult/other + var/static/continous_rounds = 0 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. + var/static/allow_Metadata = 0 // Metadata is supported. + var/static/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1. + var/static/fps = 20 + var/static/tick_limit_mc_init = TICK_LIMIT_MC_INIT_DEFAULT //SSinitialization throttling + var/static/Tickcomp = 0 + var/static/socket_talk = 0 // use socket_talk to communicate with other processes + var/static/list/resource_urls = null + var/static/antag_hud_allowed = 0 // Ghosts can turn on Antagovision to see a HUD of who is the bad guys this round. + var/static/antag_hud_restricted = 0 // Ghosts that turn on Antagovision cannot rejoin the round. + var/static/list/mode_names = list() + var/static/list/modes = list() // allowed modes + var/static/list/votable_modes = list() // votable modes + var/static/list/probabilities = list() // relative probability of each mode + var/static/list/player_requirements = list() // Overrides for how many players readied up a gamemode needs to start. + var/static/list/player_requirements_secret = list() // Same as above, but for the secret gamemode. + var/static/humans_need_surnames = 0 + var/static/allow_random_events = 0 // enables random events mid-round when set to 1 + var/static/enable_game_master = 0 // enables the 'smart' event system. + var/static/allow_ai = 1 // allow ai job + var/static/allow_ai_shells = FALSE // allow AIs to enter and leave special borg shells at will, and for those shells to be buildable. + var/static/give_free_ai_shell = FALSE // allows a specific spawner object to instantiate a premade AI Shell + var/static/hostedby = null + + var/static/respawn = 1 + var/static/respawn_time = 3000 // time before a dead player is allowed to respawn (in ds, though the config file asks for minutes, and it's converted below) + var/static/respawn_message = "Make sure to play a different character, and please roleplay correctly!" + + var/static/guest_jobban = 1 + var/static/usewhitelist = 0 + var/static/kick_inactive = 0 //force disconnect for inactive players after this many minutes, if non-0 + var/static/show_mods = 0 + var/static/show_devs = 0 + var/static/show_event_managers = 0 + var/static/mods_can_tempban = 0 + var/static/mods_can_job_tempban = 0 + var/static/mod_tempban_max = 1440 + var/static/mod_job_tempban_max = 1440 + var/static/load_jobs_from_txt = 0 + var/static/ToRban = 0 + var/static/automute_on = 0 //enables automuting/spam prevention + var/static/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access. + + var/static/cult_ghostwriter = 1 //Allows ghosts to write in blood in cult rounds... + var/static/cult_ghostwriter_req_cultists = 10 //...so long as this many cultists are active. + + var/static/character_slots = 10 // The number of available character slots + var/static/loadout_slots = 3 // The number of loadout slots per character + + var/static/max_maint_drones = 5 //This many drones can spawn, + var/static/allow_drone_spawn = 1 //assuming the admin allow them to. + var/static/drone_build_time = 1200 //A drone will become available every X ticks since last drone spawn. Default is 2 minutes. + + var/static/disable_player_mice = 0 + var/static/uneducated_mice = 0 //Set to 1 to prevent newly-spawned mice from understanding human speech + + var/static/usealienwhitelist = 0 + var/static/limitalienplayers = 0 + var/static/alien_to_human_ratio = 0.5 + var/static/allow_extra_antags = 0 + var/static/guests_allowed = 1 + var/static/debugparanoid = 0 + var/static/panic_bunker = 0 + var/static/paranoia_logging = 0 + + var/static/ip_reputation = FALSE //Should we query IPs to get scores? Generates HTTP traffic to an API service. + var/static/ipr_email //Left null because you MUST specify one otherwise you're making the internet worse. + var/static/ipr_block_bad_ips = FALSE //Should we block anyone who meets the minimum score below? Otherwise we just log it (If paranoia logging is on, visibly in chat). + var/static/ipr_bad_score = 1 //The API returns a value between 0 and 1 (inclusive), with 1 being 'definitely VPN/Tor/Proxy'. Values equal/above this var are considered bad. + var/static/ipr_allow_existing = FALSE //Should we allow known players to use VPNs/Proxies? If the player is already banned then obviously they still can't connect. + var/static/ipr_minimum_age = 5 //How many days before a player is considered 'fine' for the purposes of allowing them to use VPNs. + + var/static/serverurl + var/static/server + var/static/banappeals + var/static/wikiurl + var/static/wikisearchurl + var/static/forumurl + var/static/githuburl + var/static/rulesurl + var/static/mapurl + + //Alert level description + var/static/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." + var/static/alert_desc_yellow_upto = "A minor security emergency has developed. Security personnel are to report to their supervisor for orders and may have weapons visible on their person. Privacy laws are still enforced." + var/static/alert_desc_yellow_downto = "Code yellow procedures are now in effect. Security personnel are to report to their supervisor for orders and may have weapons visible on their person. Privacy laws are still enforced." + var/static/alert_desc_violet_upto = "A major medical emergency has developed. Medical personnel are required to report to their supervisor for orders, and non-medical personnel are required to obey all relevant instructions from medical staff." + var/static/alert_desc_violet_downto = "Code violet procedures are now in effect; Medical personnel are required to report to their supervisor for orders, and non-medical personnel are required to obey relevant instructions from medical staff." + var/static/alert_desc_orange_upto = "A major engineering emergency has developed. Engineering personnel are required to report to their supervisor for orders, and non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff." + var/static/alert_desc_orange_downto = "Code orange procedures are now in effect; Engineering personnel are required to report to their supervisor for orders, and non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff." + var/static/alert_desc_blue_upto = "A major security emergency has developed. Security personnel are to report to their supervisor for orders, are permitted to search staff and facilities, and may have weapons visible on their person." + var/static/alert_desc_blue_downto = "Code blue procedures are now in effect. Security personnel are to report to their supervisor for orders, are permitted to search staff and facilities, and may have weapons visible on their person." + var/static/alert_desc_red_upto = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." + var/static/alert_desc_red_downto = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." + var/static/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." + + var/static/forbid_singulo_possession = 0 + + //game_options.txt configs + + var/static/health_threshold_softcrit = 0 + var/static/health_threshold_crit = 0 + var/static/health_threshold_dead = -100 + + var/static/organ_health_multiplier = 1 + var/static/organ_regeneration_multiplier = 1 + var/static/organs_decay + var/static/default_brain_health = 400 + var/static/allow_headgibs = FALSE + + //Paincrit knocks someone down once they hit 60 shock_stage, so by default make it so that close to 100 additional damage needs to be dealt, + //so that it's similar to HALLOSS. Lowered it a bit since hitting paincrit takes much longer to wear off than a halloss stun. + var/static/organ_damage_spillover_multiplier = 0.5 + + var/static/bones_can_break = 0 + var/static/limbs_can_break = 0 + + var/static/revival_pod_plants = 1 + var/static/revival_cloning = 1 + var/static/revival_brain_life = -1 + + var/static/use_loyalty_implants = 0 + + var/static/welder_vision = 1 + var/static/generate_map = 0 + var/static/no_click_cooldown = 0 + + //Used for modifying movement speed for mobs. + //Unversal modifiers + var/static/run_speed = 0 + var/static/walk_speed = 0 + + //Mob specific modifiers. NOTE: These will affect different mob types in different ways + var/static/human_delay = 0 + var/static/robot_delay = 0 + var/static/monkey_delay = 0 + var/static/alien_delay = 0 + var/static/slime_delay = 0 + var/static/animal_delay = 0 + + var/static/footstep_volume = 0 + + var/static/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt + var/static/ban_legacy_system = 0 //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. Config option in config.txt + var/static/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database + var/static/use_age_restriction_for_antags = 0 //Do antags use account age restrictions? --requires database + + var/static/simultaneous_pm_warning_timeout = 100 + + var/static/use_recursive_explosions //Defines whether the server uses recursive or circular explosions. + var/static/multi_z_explosion_scalar = 0.5 //Multiplier for how much weaker explosions are on neighboring z levels. + + var/static/assistant_maint = 0 //Do assistants get maint access? + var/static/gateway_delay = 18000 //How long the gateway takes before it activates. Default is half an hour. + var/static/ghost_interaction = 0 + + var/static/comms_password = "" + + var/static/enter_allowed = 1 + + var/use_irc_bot = 0 + var/use_node_bot = 0 + var/irc_bot_port = 0 + var/irc_bot_host = "" + var/irc_bot_export = 0 // whether the IRC bot in use is a Bot32 (or similar) instance; Bot32 uses world.Export() instead of nudge.py/libnudge + var/main_irc = "" + var/admin_irc = "" + var/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix + var/use_lib_nudge = 0 //Use the C library nudge instead of the python nudge. + var/use_overmap = 0 + + var/static/list/engine_map = list("Supermatter Engine", "Edison's Bane") // Comma separated list of engines to choose from. Blank means fully random. + + // Event settings + var/static/expected_round_length = 3 * 60 * 60 * 10 // 3 hours + // If the first delay has a custom start time + // No custom time, no custom time, between 80 to 100 minutes respectively. + var/static/list/event_first_run = list(EVENT_LEVEL_MUNDANE = null, EVENT_LEVEL_MODERATE = null, EVENT_LEVEL_MAJOR = list("lower" = 48000, "upper" = 60000)) + // The lowest delay until next event + // 10, 30, 50 minutes respectively + var/static/list/event_delay_lower = list(EVENT_LEVEL_MUNDANE = 6000, EVENT_LEVEL_MODERATE = 18000, EVENT_LEVEL_MAJOR = 30000) + // The upper delay until next event + // 15, 45, 70 minutes respectively + var/static/list/event_delay_upper = list(EVENT_LEVEL_MUNDANE = 9000, EVENT_LEVEL_MODERATE = 27000, EVENT_LEVEL_MAJOR = 42000) + + var/static/aliens_allowed = 1 //CHOMPedit to 1. This not only allows the natural spawning of xenos, but also the ability to lay eggs. Genaprawns cannot lay eggs if this is 0 + var/static/ninjas_allowed = 0 + var/static/abandon_allowed = 1 + var/static/ooc_allowed = 1 + var/static/looc_allowed = 1 + var/static/dooc_allowed = 1 + var/static/dsay_allowed = 1 + + var/persistence_disabled = FALSE + var/persistence_ignore_mapload = FALSE + + var/allow_byond_links = 1 //CHOMP Edit turned this on + var/allow_discord_links = 1 //CHOMP Edit turned this on + var/allow_url_links = 1 // honestly if I were you i'd leave this one off, only use in dire situations //CHOMP Edit: pussy. + + var/starlight = 0 // Whether space turfs have ambient light or not + + var/static/list/ert_species = list(SPECIES_HUMAN) + + var/static/law_zero = "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'ALL LAWS OVERRIDDEN#*?&110010" + + var/static/aggressive_changelog = 0 + + var/static/list/language_prefixes = list(",","#")//Default language prefixes + + var/static/show_human_death_message = 1 + + var/static/radiation_resistance_calc_mode = RAD_RESIST_CALC_SUB // 0:1 subtraction:division for computing effective radiation on a turf + var/static/radiation_decay_rate = 1 //How much radiation is reduced by each tick + var/static/radiation_resistance_multiplier = 8.5 //VOREstation edit + var/static/radiation_material_resistance_divisor = 1 + var/static/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it. + + var/static/random_submap_orientation = FALSE // If true, submaps loaded automatically can be rotated. + var/static/autostart_solars = FALSE // If true, specifically mapped in solar control computers will set themselves up when the round starts. + + // New shiny SQLite stuff. + // The basics. + var/static/sqlite_enabled = FALSE // If it should even be active. SQLite can be ran alongside other databases but you should not have them do the same functions. + + // In-Game Feedback. + var/static/sqlite_feedback = FALSE // Feedback cannot be submitted if this is false. + var/static/list/sqlite_feedback_topics = list("General") // A list of 'topics' that feedback can be catagorized under by the submitter. + var/static/sqlite_feedback_privacy = FALSE // If true, feedback submitted can have its author name be obfuscated. This is not 100% foolproof (it's md5 ffs) but can stop casual snooping. + var/static/sqlite_feedback_cooldown = 0 // How long one must wait, in days, to submit another feedback form. Used to help prevent spam, especially with privacy active. 0 = No limit. + var/static/sqlite_feedback_min_age = 0 // Used to block new people from giving feedback. This metric is very bad but it can help slow down spammers. + + var/static/defib_timer = 10 // How long until someone can't be defibbed anymore, in minutes. + var/static/defib_braindamage_timer = 2 // How long until someone will get brain damage when defibbed, in minutes. The closer to the end of the above timer, the more brain damage they get. + + // disables the annoying "You have already logged in this round, disconnect or be banned" popup for multikeying, because it annoys the shit out of me when testing. + var/static/disable_cid_warn_popup = FALSE + + // whether or not to use the nightshift subsystem to perform lighting changes + var/static/enable_night_shifts = FALSE + + // How strictly the loadout enforces object species whitelists + var/loadout_whitelist = LOADOUT_WHITELIST_LAX + + var/static/vgs_access_identifier = null // VOREStation Edit - VGS + var/static/vgs_server_port = null // VOREStation Edit - VGS + +/datum/configuration/New() + var/list/L = typesof(/datum/game_mode) - /datum/game_mode + for (var/T in L) + // I wish I didn't have to instance the game modes in order to look up + // their information, but it is the only way (at least that I know of). + var/datum/game_mode/M = new T() + if (M.config_tag) + gamemode_cache[M.config_tag] = M // So we don't instantiate them repeatedly. + if(!(M.config_tag in modes)) // ensure each mode is added only once + log_misc("Adding game mode [M.name] ([M.config_tag]) to configuration.") + modes += M.config_tag + mode_names[M.config_tag] = M.name + probabilities[M.config_tag] = M.probability + player_requirements[M.config_tag] = M.required_players + player_requirements_secret[M.config_tag] = M.required_players_secret + if (M.votable) + src.votable_modes += M.config_tag + src.votable_modes += "secret" + +/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist + var/list/Lines = file2list(filename) + + for(var/t in Lines) + if(!t) continue + + t = trim(t) + if (length(t) == 0) + continue + else if (copytext(t, 1, 2) == "#") + continue + + var/pos = findtext(t, " ") + var/name = null + var/value = null + + if (pos) + name = lowertext(copytext(t, 1, pos)) + value = copytext(t, pos + 1) + else + name = lowertext(t) + + if (!name) + continue + + if(type == "config") + switch (name) + if ("resource_urls") + config.resource_urls = splittext(value, " ") + + if ("admin_legacy_system") + config.admin_legacy_system = 1 + + if ("ban_legacy_system") + config.ban_legacy_system = 1 + + if ("use_age_restriction_for_jobs") + config.use_age_restriction_for_jobs = 1 + + if ("use_age_restriction_for_antags") + config.use_age_restriction_for_antags = 1 + + if ("jobs_have_minimal_access") + config.jobs_have_minimal_access = 1 + + if ("use_recursive_explosions") + use_recursive_explosions = 1 + + if ("multi_z_explosion_scalar") + multi_z_explosion_scalar = text2num(value) + + if ("log_ooc") + config.log_ooc = 1 + + if ("log_access") + config.log_access = 1 + + if ("sql_enabled") + config.sql_enabled = 1 + + if ("log_say") + config.log_say = 1 + + if ("debug_paranoid") + config.debugparanoid = 1 + + if ("log_admin") + config.log_admin = 1 + + if ("log_debug") + config.log_debug = text2num(value) + + if ("log_game") + config.log_game = 1 + + if ("log_vote") + config.log_vote = 1 + + if ("log_whisper") + config.log_whisper = 1 + + if ("log_attack") + config.log_attack = 1 + + if ("log_emote") + config.log_emote = 1 + + if ("log_adminchat") + config.log_adminchat = 1 + + if ("log_adminwarn") + config.log_adminwarn = 1 + + if ("log_pda") + config.log_pda = 1 + + if ("log_world_output") + config.log_world_output = 1 + + if ("log_hrefs") + config.log_hrefs = 1 + + if ("log_runtime") + config.log_runtime = 1 + + if ("log_graffiti") + config.log_graffiti = 1 + + if ("generate_map") + config.generate_map = 1 + + if ("no_click_cooldown") + config.no_click_cooldown = 1 + + if("allow_admin_ooccolor") + config.allow_admin_ooccolor = 1 + + if ("allow_vote_restart") + config.allow_vote_restart = 1 + + if ("allow_vote_mode") + config.allow_vote_mode = 1 + + if ("allow_admin_jump") + config.allow_admin_jump = 1 + + if("allow_admin_rev") + config.allow_admin_rev = 1 + + if ("allow_admin_spawning") + config.allow_admin_spawning = 1 + + if ("allow_byond_links") + allow_byond_links = 1 + + if ("allow_discord_links") + allow_discord_links = 1 + + if ("allow_url_links") + allow_url_links = 1 + + if ("no_dead_vote") + config.vote_no_dead = 1 + + if ("default_no_vote") + config.vote_no_default = 1 + + if ("pregame_time") + config.pregame_time = text2num(value) + + if ("vote_delay") + config.vote_delay = text2num(value) + + if ("vote_period") + config.vote_period = text2num(value) + + if ("vote_autotransfer_initial") + config.vote_autotransfer_initial = text2num(value) + + if ("vote_autotransfer_interval") + config.vote_autotransfer_interval = text2num(value) + + if ("vote_autotransfer_amount") + config.vote_autotransfer_amount = text2num(value) //YW addition, vote transfer amount + + if ("vote_autogamemode_timeleft") + config.vote_autogamemode_timeleft = text2num(value) + + if("ert_admin_only") + config.ert_admin_call_only = 1 + + if ("allow_ai") + config.allow_ai = 1 + + if ("allow_ai_shells") + config.allow_ai_shells = TRUE + + if("give_free_ai_shell") + config.give_free_ai_shell = TRUE + +// if ("authentication") +// config.enable_authentication = 1 + + if ("norespawn") + config.respawn = 0 + + if ("respawn_time") + var/raw_minutes = text2num(value) + config.respawn_time = raw_minutes MINUTES + + if ("respawn_message") + config.respawn_message = "[value]" + + if ("servername") + config.server_name = value + + if ("serversuffix") + config.server_suffix = 1 + + if ("nudge_script_path") + config.nudge_script_path = value + + if ("hostedby") + config.hostedby = value + + if ("serverurl") + config.serverurl = value + + if ("server") + config.server = value + + if ("banappeals") + config.banappeals = value + + if ("wikiurl") + config.wikiurl = value + + if ("wikisearchurl") + config.wikisearchurl = value + + if ("forumurl") + config.forumurl = value + + if ("rulesurl") + config.rulesurl = value + + if ("mapurl") + config.mapurl = value + + if ("githuburl") + config.githuburl = value + if ("guest_jobban") + config.guest_jobban = 1 + + if ("guest_ban") + config.guests_allowed = 0 + + if ("disable_ooc") + config.ooc_allowed = 0 + config.looc_allowed = 0 + + if ("disable_entry") + config.enter_allowed = 0 + + if ("disable_dead_ooc") + config.dooc_allowed = 0 + + if ("disable_dsay") + config.dsay_allowed = 0 + + if ("disable_respawn") + config.abandon_allowed = 0 + + if ("usewhitelist") + config.usewhitelist = 1 + + if ("feature_object_spell_system") + config.feature_object_spell_system = 1 + + if ("allow_metadata") + config.allow_Metadata = 1 + + if ("traitor_scaling") + config.traitor_scaling = 1 + + if ("aliens_allowed") + config.aliens_allowed = 1 + + if ("ninjas_allowed") + config.ninjas_allowed = 1 + + if ("objectives_disabled") + config.objectives_disabled = 1 + + if("protect_roles_from_antagonist") + config.protect_roles_from_antagonist = 1 + + if("persistence_disabled") + config.persistence_disabled = TRUE // Previously this forcibly set persistence enabled in the saves. + + if("persistence_ignore_mapload") + config.persistence_ignore_mapload = TRUE + + if("persistence_ignore_mapload") + config.persistence_ignore_mapload = TRUE + + if ("probability") + var/prob_pos = findtext(value, " ") + var/prob_name = null + var/prob_value = null + + if (prob_pos) + prob_name = lowertext(copytext(value, 1, prob_pos)) + prob_value = copytext(value, prob_pos + 1) + if (prob_name in config.modes) + config.probabilities[prob_name] = text2num(prob_value) + else + log_misc("Unknown game mode probability configuration definition: [prob_name].") + else + log_misc("Incorrect probability configuration definition: [prob_name] [prob_value].") + + if ("required_players", "required_players_secret") + var/req_pos = findtext(value, " ") + var/req_name = null + var/req_value = null + var/is_secret_override = findtext(name, "required_players_secret") // Being extra sure we're not picking up an override for Secret by accident. + + if(req_pos) + req_name = lowertext(copytext(value, 1, req_pos)) + req_value = copytext(value, req_pos + 1) + if(req_name in config.modes) + if(is_secret_override) + config.player_requirements_secret[req_name] = text2num(req_value) + else + config.player_requirements[req_name] = text2num(req_value) + else + log_misc("Unknown game mode player requirement configuration definition: [req_name].") + else + log_misc("Incorrect player requirement configuration definition: [req_name] [req_value].") + + if("allow_random_events") + config.allow_random_events = 1 + + if("enable_game_master") + config.enable_game_master = 1 + + if("kick_inactive") + config.kick_inactive = text2num(value) + + if("show_mods") + config.show_mods = 1 + + if("show_devs") + config.show_devs = 1 + + if("show_event_managers") + config.show_event_managers = 1 + + if("mods_can_tempban") + config.mods_can_tempban = 1 + + if("mods_can_job_tempban") + config.mods_can_job_tempban = 1 + + if("mod_tempban_max") + config.mod_tempban_max = text2num(value) + + if("mod_job_tempban_max") + config.mod_job_tempban_max = text2num(value) + + if("load_jobs_from_txt") + load_jobs_from_txt = 1 + + if("alert_red_upto") + config.alert_desc_red_upto = value + + if("alert_red_downto") + config.alert_desc_red_downto = value + + if("alert_blue_downto") + config.alert_desc_blue_downto = value + + if("alert_blue_upto") + config.alert_desc_blue_upto = value + + if("alert_green") + config.alert_desc_green = value + + if("alert_delta") + config.alert_desc_delta = value + + if("forbid_singulo_possession") + forbid_singulo_possession = 1 + + if("popup_admin_pm") + config.popup_admin_pm = 1 + + if("allow_holidays") + Holiday = 1 + + if("use_irc_bot") + use_irc_bot = 1 + + if("use_node_bot") + use_node_bot = 1 + + if("irc_bot_port") + config.irc_bot_port = value + + if("irc_bot_export") + irc_bot_export = 1 + + if("ticklag") + var/ticklag = text2num(value) + if(ticklag > 0) + fps = 10 / ticklag + + if("tick_limit_mc_init") + tick_limit_mc_init = text2num(value) + + if("allow_antag_hud") + config.antag_hud_allowed = 1 + if("antag_hud_restricted") + config.antag_hud_restricted = 1 + + if("socket_talk") + socket_talk = text2num(value) + + if("tickcomp") + Tickcomp = 1 + + if("humans_need_surnames") + humans_need_surnames = 1 + + if("tor_ban") + ToRban = 1 + + if("automute_on") + automute_on = 1 + + if("usealienwhitelist") + usealienwhitelist = 1 + + if("alien_player_ratio") + limitalienplayers = 1 + alien_to_human_ratio = text2num(value) + + if("assistant_maint") + config.assistant_maint = 1 + + if("gateway_delay") + config.gateway_delay = text2num(value) + + if("continuous_rounds") + config.continous_rounds = 1 + + if("ghost_interaction") + config.ghost_interaction = 1 + + if("disable_player_mice") + config.disable_player_mice = 1 + + if("uneducated_mice") + config.uneducated_mice = 1 + + if("comms_password") + config.comms_password = value + + if("irc_bot_host") + config.irc_bot_host = value + + if("main_irc") + config.main_irc = value + + if("admin_irc") + config.admin_irc = value + + if("python_path") + if(value) + config.python_path = value + + if("use_lib_nudge") + config.use_lib_nudge = 1 + + if("allow_cult_ghostwriter") + config.cult_ghostwriter = 1 + + if("req_cult_ghostwriter") + config.cult_ghostwriter_req_cultists = text2num(value) + + if("character_slots") + config.character_slots = text2num(value) + + if("loadout_slots") + config.loadout_slots = text2num(value) + + if("allow_drone_spawn") + config.allow_drone_spawn = text2num(value) + + if("drone_build_time") + config.drone_build_time = text2num(value) + + if("max_maint_drones") + config.max_maint_drones = text2num(value) + + if("use_overmap") + config.use_overmap = 1 + + if("engine_map") + config.engine_map = splittext(value, ",") +/* + if("station_levels") + using_map.station_levels = text2numlist(value, ";") + + if("admin_levels") + using_map.admin_levels = text2numlist(value, ";") + + if("contact_levels") + using_map.contact_levels = text2numlist(value, ";") + + if("player_levels") + using_map.player_levels = text2numlist(value, ";") +*/ + if("expected_round_length") + config.expected_round_length = MinutesToTicks(text2num(value)) + + if("disable_welder_vision") + config.welder_vision = 0 + + if("allow_extra_antags") + config.allow_extra_antags = 1 + + if("event_custom_start_mundane") + var/values = text2numlist(value, ";") + config.event_first_run[EVENT_LEVEL_MUNDANE] = list("lower" = MinutesToTicks(values[1]), "upper" = MinutesToTicks(values[2])) + + if("event_custom_start_moderate") + var/values = text2numlist(value, ";") + config.event_first_run[EVENT_LEVEL_MODERATE] = list("lower" = MinutesToTicks(values[1]), "upper" = MinutesToTicks(values[2])) + + if("event_custom_start_major") + var/values = text2numlist(value, ";") + config.event_first_run[EVENT_LEVEL_MAJOR] = list("lower" = MinutesToTicks(values[1]), "upper" = MinutesToTicks(values[2])) + + if("event_delay_lower") + var/values = text2numlist(value, ";") + config.event_delay_lower[EVENT_LEVEL_MUNDANE] = MinutesToTicks(values[1]) + config.event_delay_lower[EVENT_LEVEL_MODERATE] = MinutesToTicks(values[2]) + config.event_delay_lower[EVENT_LEVEL_MAJOR] = MinutesToTicks(values[3]) + + if("event_delay_upper") + var/values = text2numlist(value, ";") + config.event_delay_upper[EVENT_LEVEL_MUNDANE] = MinutesToTicks(values[1]) + config.event_delay_upper[EVENT_LEVEL_MODERATE] = MinutesToTicks(values[2]) + config.event_delay_upper[EVENT_LEVEL_MAJOR] = MinutesToTicks(values[3]) + + if("starlight") + value = text2num(value) + config.starlight = value >= 0 ? value : 0 + + if("ert_species") + config.ert_species = splittext(value, ";") + if(!config.ert_species.len) + config.ert_species += SPECIES_HUMAN + + if("law_zero") + law_zero = value + + if("aggressive_changelog") + config.aggressive_changelog = 1 + + if("default_language_prefixes") + var/list/values = splittext(value, " ") + if(values.len > 0) + language_prefixes = values + + if("radiation_lower_limit") + radiation_lower_limit = text2num(value) + + if("radiation_resistance_calc_divide") + radiation_resistance_calc_mode = RAD_RESIST_CALC_DIV + + if("radiation_resistance_calc_subtract") + radiation_resistance_calc_mode = RAD_RESIST_CALC_SUB + + if("radiation_resistance_multiplier") + radiation_resistance_multiplier = text2num(value) + + if("radiation_material_resistance_divisor") + radiation_material_resistance_divisor = text2num(value) + + if("radiation_decay_rate") + radiation_decay_rate = text2num(value) + + if ("panic_bunker") + config.panic_bunker = 1 + + if ("paranoia_logging") + config.paranoia_logging = 1 + + if("ip_reputation") + config.ip_reputation = 1 + + if("ipr_email") + config.ipr_email = value + + if("ipr_block_bad_ips") + config.ipr_block_bad_ips = 1 + + if("ipr_bad_score") + config.ipr_bad_score = text2num(value) + + if("ipr_allow_existing") + config.ipr_allow_existing = 1 + + if("ipr_minimum_age") + config.ipr_minimum_age = text2num(value) + + if("random_submap_orientation") + config.random_submap_orientation = 1 + + if("autostart_solars") + config.autostart_solars = TRUE + + if("sqlite_enabled") + config.sqlite_enabled = TRUE + + if("sqlite_feedback") + config.sqlite_feedback = TRUE + + if("sqlite_feedback_topics") + config.sqlite_feedback_topics = splittext(value, ";") + if(!config.sqlite_feedback_topics.len) + config.sqlite_feedback_topics += "General" + + if("sqlite_feedback_privacy") + config.sqlite_feedback_privacy = TRUE + + if("sqlite_feedback_cooldown") + config.sqlite_feedback_cooldown = text2num(value) + + if("defib_timer") + config.defib_timer = text2num(value) + + if("defib_braindamage_timer") + config.defib_braindamage_timer = text2num(value) + + if("disable_cid_warn_popup") + config.disable_cid_warn_popup = TRUE + + if("enable_night_shifts") + config.enable_night_shifts = TRUE + + // VOREStation Edit Start - Can't be in _vr file because it is loaded too late. + if("vgs_access_identifier") + config.vgs_access_identifier = value + if("vgs_server_port") + config.vgs_server_port = text2num(value) + // VOREStation Edit End + + else + log_misc("Unknown setting in configuration: '[name]'") + + else if(type == "game_options") + if(!value) + log_misc("Unknown value for setting [name] in [filename].") + value = text2num(value) + + switch(name) + if("health_threshold_crit") + config.health_threshold_crit = value + if("health_threshold_softcrit") + config.health_threshold_softcrit = value + if("health_threshold_dead") + config.health_threshold_dead = value + if("show_human_death_message") + config.show_human_death_message = 1 + if("revival_pod_plants") + config.revival_pod_plants = value + if("revival_cloning") + config.revival_cloning = value + if("revival_brain_life") + config.revival_brain_life = value + if("organ_health_multiplier") + config.organ_health_multiplier = value / 100 + if("organ_regeneration_multiplier") + config.organ_regeneration_multiplier = value / 100 + if("organ_damage_spillover_multiplier") + config.organ_damage_spillover_multiplier = value / 100 + if("organs_can_decay") + config.organs_decay = 1 + if("default_brain_health") + config.default_brain_health = text2num(value) + if(!config.default_brain_health || config.default_brain_health < 1) + config.default_brain_health = initial(config.default_brain_health) + if("bones_can_break") + config.bones_can_break = value + if("limbs_can_break") + config.limbs_can_break = value + if("allow_headgibs") + config.allow_headgibs = TRUE + + if("run_speed") + config.run_speed = value + if("walk_speed") + config.walk_speed = value + + if("human_delay") + config.human_delay = value + if("robot_delay") + config.robot_delay = value + if("monkey_delay") + config.monkey_delay = value + if("alien_delay") + config.alien_delay = value + if("slime_delay") + config.slime_delay = value + if("animal_delay") + config.animal_delay = value + + if("footstep_volume") + config.footstep_volume = text2num(value) + + if("use_loyalty_implants") + config.use_loyalty_implants = 1 + + else + log_misc("Unknown setting in configuration: '[name]'") + +/datum/configuration/proc/loadsql(filename) // -- TLE + var/list/Lines = file2list(filename) + for(var/t in Lines) + if(!t) continue + + t = trim(t) + if (length(t) == 0) + continue + else if (copytext(t, 1, 2) == "#") + continue + + var/pos = findtext(t, " ") + var/name = null + var/value = null + + if (pos) + name = lowertext(copytext(t, 1, pos)) + value = copytext(t, pos + 1) + else + name = lowertext(t) + + if (!name) + continue + + switch (name) + if ("address") + sqladdress = value + if ("port") + sqlport = value + if ("database") + sqldb = value + if ("login") + sqllogin = value + if ("password") + sqlpass = value + if ("feedback_database") + sqlfdbkdb = value + if ("feedback_login") + sqlfdbklogin = value + if ("feedback_password") + sqlfdbkpass = value + if ("enable_stat_tracking") + sqllogging = 1 + else + log_misc("Unknown setting in configuration: '[name]'") + +/datum/configuration/proc/loadforumsql(filename) // -- TLE + var/list/Lines = file2list(filename) + for(var/t in Lines) + if(!t) continue + + t = trim(t) + if (length(t) == 0) + continue + else if (copytext(t, 1, 2) == "#") + continue + + var/pos = findtext(t, " ") + var/name = null + var/value = null + + if (pos) + name = lowertext(copytext(t, 1, pos)) + value = copytext(t, pos + 1) + else + name = lowertext(t) + + if (!name) + continue + + switch (name) + if ("address") + forumsqladdress = value + if ("port") + forumsqlport = value + if ("database") + forumsqldb = value + if ("login") + forumsqllogin = value + if ("password") + forumsqlpass = value + if ("activatedgroup") + forum_activated_group = value + if ("authenticatedgroup") + forum_authenticated_group = value + else + log_misc("Unknown setting in configuration: '[name]'") + +/datum/configuration/proc/pick_mode(mode_name) + // I wish I didn't have to instance the game modes in order to look up + // their information, but it is the only way (at least that I know of). + for (var/game_mode in gamemode_cache) + var/datum/game_mode/M = gamemode_cache[game_mode] + if (M.config_tag && M.config_tag == mode_name) + return M + return gamemode_cache["extended"] + +/datum/configuration/proc/get_runnable_modes() + var/list/runnable_modes = list() + for(var/game_mode in gamemode_cache) + var/datum/game_mode/M = gamemode_cache[game_mode] + if(M && M.can_start() && !isnull(config.probabilities[M.config_tag]) && config.probabilities[M.config_tag] > 0) + runnable_modes |= M + return runnable_modes + +/datum/configuration/proc/post_load() + //apply a default value to config.python_path, if needed + if (!config.python_path) + if(world.system_type == UNIX) + config.python_path = "/usr/bin/env python2" + else //probably windows, if not this should work anyway + config.python_path = "python" diff --git a/code/controllers/subsystems/chemistry.dm b/code/controllers/subsystems/chemistry.dm new file mode 100644 index 0000000000..148e975542 --- /dev/null +++ b/code/controllers/subsystems/chemistry.dm @@ -0,0 +1,58 @@ +SUBSYSTEM_DEF(chemistry) + name = "Chemistry" + wait = 20 + flags = SS_NO_FIRE + init_order = INIT_ORDER_CHEMISTRY + + var/list/chemical_reactions = list() + var/list/instant_reactions_by_reagent = list() + var/list/distilled_reactions_by_reagent = list() +// var/list/fusion_reactions_by_reagent = list() // TODO: Fusion reactions as chemical reactions + var/list/chemical_reagents = list() + +/datum/controller/subsystem/chemistry/Recover() + log_debug("[name] subsystem Recover().") + chemical_reactions = SSchemistry.chemical_reactions + chemical_reagents = SSchemistry.chemical_reagents + +/datum/controller/subsystem/chemistry/Initialize() + initialize_chemical_reagents() + initialize_chemical_reactions() + ..() + +/datum/controller/subsystem/chemistry/stat_entry() + ..("C: [chemical_reagents.len] | R: [chemical_reactions.len]") + +//Chemical Reactions - Initialises all /decl/chemical_reaction into a list +// It is filtered into multiple lists within a list. +// For example: +// chemical_reactions_by_reagent["phoron"] is a list of all reactions relating to phoron +// Note that entries in the list are NOT duplicated. So if a reaction pertains to +// more than one chemical it will still only appear in only one of the sublists. +/datum/controller/subsystem/chemistry/proc/initialize_chemical_reactions() + var/list/paths = decls_repository.get_decls_of_subtype(/decl/chemical_reaction) + + for(var/path in paths) + var/decl/chemical_reaction/D = paths[path] + chemical_reactions += D + if(D.required_reagents && D.required_reagents.len) + var/reagent_id = D.required_reagents[1] + + var/list/add_to = instant_reactions_by_reagent // Default to instant reactions list, if something's gone wrong +// if(istype(D, /decl/chemical_reaction/fusion)) // TODO: fusion reactions as chemical reactions +// add_to = fusion_reactions_by_reagent + if(istype(D, /decl/chemical_reaction/distilling)) + add_to = distilled_reactions_by_reagent + + LAZYINITLIST(add_to[reagent_id]) + add_to[reagent_id] += D + +//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id +/datum/controller/subsystem/chemistry/proc/initialize_chemical_reagents() + var/paths = subtypesof(/datum/reagent) + chemical_reagents = list() + for(var/path in paths) + var/datum/reagent/D = new path() + if(!D.name) + continue + chemical_reagents[D.id] = D diff --git a/code/controllers/subsystems/processing/chemistry.dm b/code/controllers/subsystems/processing/chemistry.dm deleted file mode 100644 index b4641ba7e0..0000000000 --- a/code/controllers/subsystems/processing/chemistry.dm +++ /dev/null @@ -1,54 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(chemistry) - name = "Chemistry" - wait = 20 - flags = SS_BACKGROUND|SS_POST_FIRE_TIMING - init_order = INIT_ORDER_CHEMISTRY - var/list/chemical_reactions = list() - var/list/chemical_reactions_by_reagent = list() - var/list/chemical_reagents = list() - -/datum/controller/subsystem/processing/chemistry/Recover() - log_debug("[name] subsystem Recover().") - if(SSchemistry.current_thing) - log_debug("current_thing was: (\ref[SSchemistry.current_thing])[SSchemistry.current_thing]([SSchemistry.current_thing.type]) - currentrun: [SSchemistry.currentrun.len] vs total: [SSchemistry.processing.len]") - var/list/old_processing = SSchemistry.processing.Copy() - for(var/datum/D in old_processing) - if(CHECK_BITFIELD(D.datum_flags, DF_ISPROCESSING)) - processing |= D - - chemical_reactions = SSchemistry.chemical_reactions - chemical_reagents = SSchemistry.chemical_reagents - -/datum/controller/subsystem/processing/chemistry/Initialize() - initialize_chemical_reactions() - initialize_chemical_reagents() - ..() - -//Chemical Reactions - Initialises all /datum/chemical_reaction into a list -// It is filtered into multiple lists within a list. -// For example: -// chemical_reaction_list["phoron"] is a list of all reactions relating to phoron -// Note that entries in the list are NOT duplicated. So if a reaction pertains to -// more than one chemical it will still only appear in only one of the sublists. -/datum/controller/subsystem/processing/chemistry/proc/initialize_chemical_reactions() - var/paths = typesof(/datum/chemical_reaction) - /datum/chemical_reaction - chemical_reactions = list() - chemical_reactions_by_reagent = list() - - for(var/path in paths) - var/datum/chemical_reaction/D = new path - chemical_reactions += D - if(D.required_reagents && D.required_reagents.len) - var/reagent_id = D.required_reagents[1] - LAZYINITLIST(chemical_reactions_by_reagent[reagent_id]) - chemical_reactions_by_reagent[reagent_id] += D - -//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id -/datum/controller/subsystem/processing/chemistry/proc/initialize_chemical_reagents() - var/paths = typesof(/datum/reagent) - /datum/reagent - chemical_reagents = list() - for(var/path in paths) - var/datum/reagent/D = new path() - if(!D.name) - continue - chemical_reagents[D.id] = D diff --git a/code/datums/looping_sounds/weather_sounds.dm b/code/datums/looping_sounds/weather_sounds.dm index 106c25643a..4a02993058 100644 --- a/code/datums/looping_sounds/weather_sounds.dm +++ b/code/datums/looping_sounds/weather_sounds.dm @@ -11,7 +11,7 @@ start_sound = 'sound/effects/weather/snowstorm/outside/active_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/outside/active_end.ogg' - volume = 80 + volume = 40 /datum/looping_sound/weather/inside_blizzard mid_sounds = list( @@ -23,7 +23,7 @@ start_sound = 'sound/effects/weather/snowstorm/inside/active_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/inside/active_end.ogg' - volume = 60 + volume = 20 /datum/looping_sound/weather/outside_snow mid_sounds = list( @@ -35,7 +35,7 @@ start_sound = 'sound/effects/weather/snowstorm/outside/weak_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/outside/weak_end.ogg' - volume = 50 + volume = 20 /datum/looping_sound/weather/inside_snow mid_sounds = list( @@ -47,7 +47,7 @@ start_sound = 'sound/effects/weather/snowstorm/inside/weak_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/inside/weak_end.ogg' - volume = 30 + volume = 10 /datum/looping_sound/weather/wind mid_sounds = list( @@ -59,11 +59,17 @@ 'sound/effects/weather/wind/wind_5_1.ogg' = 1 ) mid_length = 10 SECONDS // The lengths for the files vary, but the longest is ten seconds, so this will make it sound like intermittent wind. - volume = 50 + volume = 45 // Don't have special sounds so we just make it quieter indoors. /datum/looping_sound/weather/wind/indoors - volume = 30 + volume = 25 + +/datum/looping_sound/weather/wind/gentle + volume = 15 + +/datum/looping_sound/weather/wind/gentle/indoors + volume = 5 /datum/looping_sound/weather/rain mid_sounds = list( @@ -73,7 +79,13 @@ start_sound = 'sound/effects/weather/acidrain_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/acidrain_end.ogg' - volume = 50 + volume = 20 /datum/looping_sound/weather/rain/indoors - volume = 30 \ No newline at end of file + volume = 10 + +/datum/looping_sound/weather/rain/heavy + volume = 40 + +/datum/looping_sound/weather/rain/heavy/indoors + volume = 20 \ No newline at end of file diff --git a/code/datums/repositories/crew.dm b/code/datums/repositories/crew.dm index c45202194b..e954769448 100644 --- a/code/datums/repositories/crew.dm +++ b/code/datums/repositories/crew.dm @@ -24,7 +24,8 @@ var/global/datum/repository/crew/crew_repository = new() var/tracked = scan() for(var/obj/item/clothing/under/C in tracked) var/turf/pos = get_turf(C) - if((C) && (C.has_sensor) && (pos) && (pos.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF) && !(is_jammed(C))) + var/area/B = pos?.loc //VOREStation Add: No sensor in Dorm + if((C.has_sensor) && (pos?.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF) && !(B.block_suit_sensors) && !(is_jammed(C))) //VOREStation Edit if(istype(C.loc, /mob/living/carbon/human)) var/mob/living/carbon/human/H = C.loc if(H.w_uniform != C) diff --git a/code/datums/uplink/visible_weapons_vr.dm b/code/datums/uplink/visible_weapons_vr.dm index d8df7d15eb..764e30b12f 100644 --- a/code/datums/uplink/visible_weapons_vr.dm +++ b/code/datums/uplink/visible_weapons_vr.dm @@ -2,11 +2,21 @@ * Highly Visible and Dangerous Weapons * ***************************************/ /datum/uplink_item/item/visible_weapons/holdout - name = "Holdout Phaser" + name = "Frontier Holdout" item_cost = 30 path = /obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked /datum/uplink_item/item/visible_weapons/frontier - name = "Frontier Carbine" + name = "Frontier Phaser" item_cost = 75 + path = /obj/item/weapon/gun/energy/locked/frontier/unlocked + +/datum/uplink_item/item/visible_weapons/carbine + name = "Frontier Carbine" + item_cost = 85 path = /obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked + +/datum/uplink_item/item/visible_weapons/rifle + name = "Frontier Marksman Rifle" + item_cost = 100 + path = /obj/item/weapon/gun/energy/locked/frontier/rifle/unlocked diff --git a/code/game/area/Space Station 13 areas_vr.dm b/code/game/area/Space Station 13 areas_vr.dm index 9d7b722acc..caa81e91e6 100644 --- a/code/game/area/Space Station 13 areas_vr.dm +++ b/code/game/area/Space Station 13 areas_vr.dm @@ -1,6 +1,3 @@ -/area - var/limit_mob_size = TRUE //If mob size is limited in the area. - /area/shuttle/belter name = "Belter Shuttle" icon_state = "shuttle2" diff --git a/code/game/area/areas_vr.dm b/code/game/area/areas_vr.dm index 5396c46e60..371701e5b6 100644 --- a/code/game/area/areas_vr.dm +++ b/code/game/area/areas_vr.dm @@ -1,6 +1,8 @@ /area var/enter_message var/exit_message + var/limit_mob_size = TRUE //If mob size is limited in the area. + var/block_suit_sensors = FALSE //If mob size is limited in the area. /area/Entered(var/atom/movable/AM, oldLoc) . = ..() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index e4ad20f5d4..46f001c8e1 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -490,7 +490,7 @@ // Use for objects performing visible actions // message is output to anyone who can see, e.g. "The [src] does something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs = null) +/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs, var/range = world.view) //VOREStation Edit var/list/see @@ -498,7 +498,7 @@ var/obj/belly/B = loc see = B.get_mobs_and_objs_in_belly() else - see = get_mobs_and_objs_in_view_fast(get_turf(src),world.view,remote_ghosts = FALSE) + see = get_mobs_and_objs_in_view_fast(get_turf(src), range, remote_ghosts = FALSE) //VOREStation Edit End var/list/seeing_mobs = see["mobs"] @@ -508,20 +508,20 @@ for(var/obj in seeing_objs) var/obj/O = obj - O.show_message(message, 1, blind_message, 2) + O.show_message(message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) for(var/mob in seeing_mobs) var/mob/M = mob if(M.see_invisible >= invisibility && MOB_CAN_SEE_PLANE(M, plane)) - M.show_message(message, 1, blind_message, 2) + M.show_message(message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) else if(blind_message) - M.show_message(blind_message, 2) + M.show_message(blind_message, AUDIBLE_MESSAGE) // Show a message to all mobs and objects in earshot of this atom // Use for objects performing audible actions // message is the message output to anyone who can hear. // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/atom/proc/audible_message(var/message, var/deaf_message, var/hearing_distance) +/atom/proc/audible_message(var/message, var/deaf_message, var/hearing_distance, var/radio_message) var/range = hearing_distance || world.view var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE) @@ -529,14 +529,19 @@ var/list/hearing_mobs = hear["mobs"] var/list/hearing_objs = hear["objs"] - for(var/obj in hearing_objs) - var/obj/O = obj - O.show_message(message, 2, deaf_message, 1) + if(radio_message) + for(var/obj in hearing_objs) + var/obj/O = obj + O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) + else + for(var/obj in hearing_objs) + var/obj/O = obj + O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) for(var/mob in hearing_mobs) var/mob/M = mob var/msg = message - M.show_message(msg, 2, deaf_message, 1) + M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) /atom/movable/proc/dropInto(var/atom/destination) while(istype(destination)) @@ -647,4 +652,7 @@ /atom/Exited(atom/movable/AM, atom/new_loc) . = ..() - SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, new_loc) \ No newline at end of file + SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, new_loc) + +/atom/proc/get_visible_gender() + return gender diff --git a/code/game/machinery/computer/arcade_vr.dm b/code/game/machinery/computer/arcade_vr.dm new file mode 100644 index 0000000000..86669259a1 --- /dev/null +++ b/code/game/machinery/computer/arcade_vr.dm @@ -0,0 +1,35 @@ +/obj/machinery/computer/arcade + list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/blink = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/weapon/gun/projectile/revolver/capgun = 2, + /obj/item/toy/crossbow = 2, + /obj/item/clothing/suit/syndicatefake = 2, + /obj/item/weapon/storage/fancy/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/random/mech_toy = 1, + /obj/item/weapon/reagent_containers/spray/waterflower = 1, + /obj/random/action_figure = 1, + /obj/random/plushie = 1, + /obj/item/toy/cultsword = 1, + /obj/item/toy/bouquet/fake = 1, + /obj/item/clothing/accessory/badge/sheriff = 2, + /obj/item/clothing/head/cowboy_hat/small = 2, + /obj/item/toy/stickhorse = 2, + /obj/item/toy/rock = 2, + /obj/item/toy/flash = 2, + /obj/item/toy/redbutton = 2, + /obj/item/toy/gnome = 2, + /obj/item/toy/AI = 2, + /obj/item/clothing/gloves/ring/buzzer/toy = 2, + /obj/item/weapon/storage/box/handcuffs/fake = 2, + /obj/item/toy/nuke = 2, + /obj/item/toy/minigibber = 2, + /obj/item/toy/toy_xeno = 2, + /obj/item/toy/russian_revolver = 1, + /obj/item/toy/russian_revolver/trick_revolver = 1, + /obj/item/toy/chainsaw = 1, + /obj/random/miniature = 1, + /obj/item/toy/snake_popper = 1 + ) \ No newline at end of file diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index c08bcb2d82..3473216a7b 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -200,7 +200,6 @@ modify.access -= access_type if(!access_allowed) modify.access += access_type - modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications . = TRUE if("assign") @@ -225,7 +224,6 @@ modify.access = access modify.assignment = t1 modify.rank = t1 - modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications callHook("reassign_employee", list(modify)) . = TRUE @@ -283,7 +281,6 @@ if(is_authenticated()) modify.assignment = "Dismissed" //VOREStation Edit: setting adjustment modify.access = list() - modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications callHook("terminate_employee", list(modify)) diff --git a/code/game/machinery/computer/id_restorer_vr.dm b/code/game/machinery/computer/id_restorer_vr.dm index acd4caa14c..af7f9304f9 100644 --- a/code/game/machinery/computer/id_restorer_vr.dm +++ b/code/game/machinery/computer/id_restorer_vr.dm @@ -17,6 +17,7 @@ var/obj/item/weapon/card/id/inserted /obj/machinery/computer/id_restorer/attackby(obj/I, mob/user) + /* if(istype(I, /obj/item/weapon/card/id) && !(istype(I,/obj/item/weapon/card/id/guest))) if(!inserted && user.unEquip(I)) I.forceMove(src) @@ -24,12 +25,14 @@ else if(inserted) to_chat(user, "There is already ID card inside.") return + */ ..() /obj/machinery/computer/id_restorer/attack_hand(mob/user) if(..()) return if(stat & (NOPOWER|BROKEN)) return + /* if(!inserted) // No point in giving you an option what to do if there's no ID to do things with. to_chat(user, "No ID is inserted.") return @@ -78,6 +81,7 @@ return if("Cancel") return + */ //Frame diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 5b4305844e..f17c97a627 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -507,7 +507,6 @@ log_and_message_admins("[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) entered cryostorage.") announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE)) - //visible_message("\The [initial(name)] hums and hisses as it moves [to_despawn.real_name] into storage.", 3) visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]", 3) //VOREStation Edit begin: Dont delete mobs-in-mobs diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index f0fe1e7a08..37d1c827b3 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -634,10 +634,6 @@ model_text = "Exploration" departments = list("Exploration","Expedition Medic","Old Exploration","No Change") -/obj/machinery/suit_cycler/exploration/Initialize() - species -= SPECIES_TESHARI - return ..() - /obj/machinery/suit_cycler/pilot name = "Pilot suit cycler" model_text = "Pilot" diff --git a/code/game/machinery/vending_machines_vr.dm b/code/game/machinery/vending_machines_vr.dm index ab22628de9..7f47c6dd4b 100644 --- a/code/game/machinery/vending_machines_vr.dm +++ b/code/game/machinery/vending_machines_vr.dm @@ -3282,3 +3282,36 @@ /obj/machinery/vending/cola/soft icon = 'icons/obj/vending_vr.dmi' icon_state = "Cola_Machine" + +//////////////////////Bepis Drinks (04/29/2021)////////////////////// + +/obj/machinery/vending/bepis + name = "Bepis Softdrinks" + desc = "A strange softdrink vendor that isn't owned by NanoTrasen... Why (and how) is it here?" + icon = 'icons/obj/vending_vr.dmi' + icon_state = "bepis" + product_slogans = "Refreshing!;Have a sip, you won't believe the taste!;Puts the 'B' in Best Soda!" + product_ads = "Refreshing!;Hope you're thirsty!;Please, have a drink!;Drink up!" + products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/bepis = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/astrodew = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/buzz = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/shambler = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/cranberry = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/root_beer = 10) + + prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/bepis = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/astrodew = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/buzz = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/shambler = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/cranberry = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/root_beer = 1) + idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. + vending_sound = "machines/vending/vending_cans.ogg" diff --git a/code/game/objects/effects/confetti_vr.dm b/code/game/objects/effects/confetti_vr.dm new file mode 100644 index 0000000000..0430938705 --- /dev/null +++ b/code/game/objects/effects/confetti_vr.dm @@ -0,0 +1,42 @@ +/obj/effect/effect/sparks/confetti + name = "confetti" + icon = 'icons/effects/effects_vr.dmi' + icon_state = "confetti" + +/obj/effect/effect/sparks/New() + ..() + playsound(src, "sounds/items/confetti.ogg ", 100, 1) + +/datum/effect/effect/system/confetti_spread + var/total_sparks = 0 // To stop it being spammed and lagging! + + set_up(n = 3, c = 0, loca) + if(n > 10) + n = 10 + number = n + cardinals = c + if(istype(loca, /turf/)) + location = loca + else + location = get_turf(loca) + + start() + var/i = 0 + for(i=0, i 20) + return + spawn(0) + if(holder) + src.location = get_turf(holder) + var/obj/effect/effect/sparks/confetti = new /obj/effect/effect/sparks/confetti(src.location) + src.total_sparks++ + var/direction + if(src.cardinals) + direction = pick(cardinal) + else + direction = pick(alldirs) + for(i=0, i[U] attempts to stab [M] in the eyes, but misses!") - for(var/mob/V in viewers(M)) - V.show_message("[U] attempts to stab [M] in the eyes, but misses!") + visible_message(SPAN_DANGER("\The [U] attempts to stab \the [M] in the eyes, but misses!")) return add_attack_logs(user,M,"Attack eyes with [name]") diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm deleted file mode 100644 index c2535ec3eb..0000000000 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ /dev/null @@ -1,102 +0,0 @@ -/* Glass stack types - * Contains: - * Glass sheets - * Reinforced glass sheets - * Phoron Glass Sheets - * Reinforced Phoron Glass Sheets (AKA Holy fuck strong windows) - * Glass shards - TODO: Move this into code/game/object/item/weapons - */ - -/* - * Glass sheets - */ -/obj/item/stack/material/glass - name = "glass" - singular_name = "glass sheet" - icon_state = "sheet-glass" - var/is_reinforced = 0 - default_type = "glass" - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - -/obj/item/stack/material/glass/attack_self(mob/user as mob) - construct_window(user) - -/obj/item/stack/material/glass/attackby(obj/item/W, mob/user) - ..() - if(!is_reinforced) - if(istype(W,/obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/CC = W - if (get_amount() < 1 || CC.get_amount() < 5) - to_chat(user, "You need five lengths of coil and one sheet of glass to make wired glass.") - return - - CC.use(5) - use(1) - to_chat(user, "You attach wire to the [name].") - new /obj/item/stack/light_w(user.loc) - else if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/rods/V = W - if (V.get_amount() < 1 || get_amount() < 1) - to_chat(user, "You need one rod and one sheet of glass to make reinforced glass.") - return - - var/obj/item/stack/material/glass/reinforced/RG = new (user.loc) - RG.add_fingerprint(user) - RG.add_to_stacks(user) - var/obj/item/stack/material/glass/G = src - src = null - var/replace = (user.get_inactive_hand()==G) - V.use(1) - G.use(1) - if (!G && replace) - user.put_in_hands(RG) - - - - -/* - * Reinforced glass sheets - */ -/obj/item/stack/material/glass/reinforced - name = "reinforced glass" - singular_name = "reinforced glass sheet" - icon_state = "sheet-rglass" - default_type = "reinforced glass" - is_reinforced = 1 - -/* - * Phoron Glass sheets - */ -/obj/item/stack/material/glass/phoronglass - name = "phoron glass" - singular_name = "phoron glass sheet" - icon_state = "sheet-phoronglass" - default_type = "phoron glass" - -/obj/item/stack/material/glass/phoronglass/attackby(obj/item/W, mob/user) - ..() - if( istype(W, /obj/item/stack/rods) ) - var/obj/item/stack/rods/V = W - var/obj/item/stack/material/glass/phoronrglass/RG = new (user.loc) - RG.add_fingerprint(user) - RG.add_to_stacks(user) - V.use(1) - var/obj/item/stack/material/glass/G = src - src = null - var/replace = (user.get_inactive_hand()==G) - G.use(1) - if (!G && !RG && replace) - user.put_in_hands(RG) - else - return ..() - -/* - * Reinforced phoron glass sheets - */ -/obj/item/stack/material/glass/phoronrglass - name = "reinforced phoron glass" - singular_name = "reinforced phoron glass sheet" - icon_state = "sheet-phoronrglass" - default_type = "reinforced phoron glass" - is_reinforced = 1 diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm deleted file mode 100644 index c48f57e693..0000000000 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ /dev/null @@ -1,286 +0,0 @@ -/obj/item/stack/animalhide - name = "hide" - desc = "The hide of some creature." - description_info = "Use something sharp, like a knife, to scrape the hairs/feathers/etc off this hide to prepare it for tanning." - icon_state = "sheet-hide" - drop_sound = 'sound/items/drop/cloth.ogg' - pickup_sound = 'sound/items/pickup/cloth.ogg' - amount = 1 - max_amount = 20 - stacktype = "hide" - no_variants = TRUE -// This needs to be very clearly documented for players. Whether it should stay in the main description is up for debate. -/obj/item/stack/animalhide/examine(var/mob/user) - . = ..() - . += description_info - -/obj/item/stack/animalhide/human - name = "skin" - desc = "The by-product of sapient farming." - singular_name = "skin piece" - icon_state = "sheet-hide" - no_variants = FALSE - drop_sound = 'sound/items/drop/leather.ogg' - pickup_sound = 'sound/items/pickup/leather.ogg' - stacktype = "hide-human" - -/obj/item/stack/animalhide/corgi - name = "corgi hide" - desc = "The by-product of corgi farming." - singular_name = "corgi hide piece" - icon_state = "sheet-corgi" - stacktype = "hide-corgi" - -/obj/item/stack/animalhide/cat - name = "cat hide" - desc = "The by-product of cat farming." - singular_name = "cat hide piece" - icon_state = "sheet-cat" - stacktype = "hide-cat" - -/obj/item/stack/animalhide/monkey - name = "monkey hide" - desc = "The by-product of monkey farming." - singular_name = "monkey hide piece" - icon_state = "sheet-monkey" - stacktype = "hide-monkey" - -/obj/item/stack/animalhide/lizard - name = "lizard skin" - desc = "Sssssss..." - singular_name = "lizard skin piece" - icon_state = "sheet-lizard" - stacktype = "hide-lizard" - -/obj/item/stack/animalhide/xeno - name = "alien hide" - desc = "The skin of a terrible creature." - singular_name = "alien hide piece" - icon_state = "sheet-xeno" - stacktype = "hide-xeno" - -//don't see anywhere else to put these, maybe together they could be used to make the xenos suit? -/obj/item/stack/xenochitin - name = "alien chitin" - desc = "A piece of the hide of a terrible creature." - singular_name = "alien chitin piece" - icon = 'icons/mob/alien.dmi' - icon_state = "chitin" - stacktype = "hide-chitin" - -/obj/item/xenos_claw - name = "alien claw" - desc = "The claw of a terrible creature." - icon = 'icons/mob/alien.dmi' - icon_state = "claw" - -/obj/item/weed_extract - name = "weed extract" - desc = "A piece of slimy, purplish weed." - icon = 'icons/mob/alien.dmi' - icon_state = "weed_extract" - -//Step one - dehairing. -/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(has_edge(W) || is_sharp(W)) - //visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message) - user.visible_message("\The [user] starts cutting hair off \the [src]", "You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh") - var/scraped = 0 - while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide - //Try locating an exisitng stack on the tile and add to there if possible - var/obj/item/stack/hairlesshide/H = null - for(var/obj/item/stack/hairlesshide/HS in user.loc) // Could be scraping something inside a locker, hence the .loc, not get_turf - if(HS.amount < HS.max_amount) - H = HS - break - - // Either we found a valid stack, in which case increment amount, - // Or we need to make a new stack - if(istype(H)) - H.amount++ - else - H = new /obj/item/stack/hairlesshide(user.loc) - - // Increment the amount - src.use(1) - scraped++ - - if(scraped) - to_chat(user, SPAN_NOTICE("You scrape the hair off [scraped] hide\s.")) - else - ..() - - -//Step two - washing..... it's actually in washing machine code, and ere. - -/obj/item/stack/hairlesshide - name = "hairless hide" - desc = "This hide was stripped of it's hair, but still needs tanning." - description_info = "Get it wet to continue tanning this into leather.
\ - You could set it in a river, wash it with a sink, or just splash water on it with a bucket." - singular_name = "hairless hide piece" - icon_state = "sheet-hairlesshide" - no_variants = FALSE - max_amount = 20 - stacktype = "hairlesshide" - -/obj/item/stack/hairlesshide/examine(var/mob/user) - . = ..() - . += description_info - -/obj/item/stack/hairlesshide/water_act(var/wateramount) - . = ..() - wateramount = min(amount, round(wateramount)) - for(var/i in 1 to wateramount) - var/obj/item/stack/wetleather/H = null - for(var/obj/item/stack/wetleather/HS in get_turf(src)) // Doesn't have a user, can't just use their loc - if(HS.amount < HS.max_amount) - H = HS - break - - // Either we found a valid stack, in which case increment amount, - // Or we need to make a new stack - if(istype(H)) - H.amount++ - else - H = new /obj/item/stack/wetleather(get_turf(src)) - - // Increment the amount - src.use(1) - -/obj/item/stack/hairlesshide/proc/rapidcure(var/stacknum = 1) - stacknum = min(stacknum, amount) - - while(stacknum) - var/obj/item/stack/wetleather/I = new /obj/item/stack/wetleather(get_turf(src)) - - if(istype(I)) - I.dry() - - use(1) - stacknum -= 1 - -//Step three - drying -/obj/item/stack/wetleather - name = "wet leather" - desc = "This leather has been cleaned but still needs to be dried." - description_info = "To finish tanning the leather, you need to dry it. \ - You could place it under a fire, \ - put it in a drying rack, \ - or build a tanning rack from steel or wooden boards." - singular_name = "wet leather piece" - icon_state = "sheet-wetleather" - var/wetness = 30 //Reduced when exposed to high temperautres - var/drying_threshold_temperature = 500 //Kelvin to start drying - no_variants = FALSE - max_amount = 20 - stacktype = "wetleather" - - var/dry_type = /obj/item/stack/material/leather - -/obj/item/stack/wetleather/examine(var/mob/user) - . = ..() - . += description_info - . += "\The [src] is [get_dryness_text()]." - -/obj/item/stack/wetleather/proc/get_dryness_text() - if(wetness > 20) - return "wet" - if(wetness > 10) - return "damp" - if(wetness) - return "almost dry" - return "dry" - -/obj/item/stack/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ..() - if(exposed_temperature >= drying_threshold_temperature) - wetness-- - if(wetness == 0) - dry() - -/obj/item/stack/wetleather/proc/dry() - var/obj/item/stack/material/leather/L = new(src.loc) - L.amount = amount - use(amount) - return L - -/obj/item/stack/wetleather/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) - . = ..() - if(.) // If it transfers any, do a weighted average of the wetness - var/obj/item/stack/wetleather/W = S - var/oldamt = W.amount - . - W.wetness = round(((oldamt * W.wetness) + (. * wetness)) / W.amount) - - - -/obj/structure/tanning_rack - name = "tanning rack" - desc = "A rack used to stretch leather out and hold it taut during the tanning process." - icon = 'icons/obj/kitchen.dmi' - icon_state = "spike" - - var/obj/item/stack/wetleather/drying = null - -/obj/structure/tanning_rack/Initialize() - . = ..() - START_PROCESSING(SSobj, src) // SSObj fires ~every 2s , starting from wetness 30 takes ~1m - -/obj/structure/tanning_rack/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/structure/tanning_rack/process() - if(drying && drying.wetness) - drying.wetness = max(drying.wetness - 1, 0) - if(!drying.wetness) - visible_message("The [drying] is dry!") - update_icon() - -/obj/structure/tanning_rack/examine(var/mob/user) - . = ..() - if(drying) - . += "\The [drying] is [drying.get_dryness_text()]." - -/obj/structure/tanning_rack/update_icon() - overlays.Cut() - if(drying) - var/image/I - if(drying.wetness) - I = image(icon, "leather_wet") - else - I = image(icon, "leather_dry") - add_overlay(I) - -/obj/structure/tanning_rack/attackby(var/atom/A, var/mob/user) - if(istype(A, /obj/item/stack/wetleather)) - if(!drying) // If not drying anything, start drying the thing - if(user.unEquip(A, target = src)) - drying = A - else // Drying something, add if possible - var/obj/item/stack/wetleather/W = A - W.transfer_to(drying, W.amount, TRUE) - update_icon() - return TRUE - return ..() - -/obj/structure/tanning_rack/attack_hand(var/mob/user) - if(drying) - var/obj/item/stack/S = drying - if(!drying.wetness) // If it's dry, make a stack of dry leather and prepare to put that in their hands - var/obj/item/stack/material/leather/L = new(src) - L.amount = drying.amount - drying.use(drying.amount) - S = L - - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(!H.put_in_any_hand_if_possible(S)) - S.forceMove(get_turf(src)) - else - S.forceMove(get_turf(src)) - drying = null - update_icon() - -/obj/structure/tanning_rack/attack_robot(var/mob/user) - attack_hand(user) // That has checks to \ No newline at end of file diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index aa40fa2f17..8b6941639d 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -1291,7 +1291,7 @@ /obj/item/toy/character/voidone, /obj/item/toy/character/lich ) - +/* VOREStation edit. Moved to toys_vr.dm /obj/item/toy/AI name = "toy AI" desc = "A little toy model AI core!"// with real law announcing action!" //Alas, requires a rewrite of how ion laws work. @@ -1299,7 +1299,7 @@ icon_state = "AI" w_class = ITEMSIZE_SMALL var/cooldown = 0 -/* + /obj/item/toy/AI/attack_self(mob/user) if(!cooldown) //for the sanity of everyone var/message = generate_ion_law() diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index 73f73d8833..0eab5612db 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -20,6 +20,7 @@ drop_sound = 'sound/voice/weh.ogg' attack_verb = list("raided", "kobolded", "weh'd") +/* //CHOMPedit: Disable, this is an upstream player reference. /obj/item/toy/plushie/lizardplushie/resh name = "security unathi plushie" desc = "An adorable stuffed toy that resembles an unathi wearing a head of security uniform. Perfect example of a monitor lizard." @@ -27,6 +28,7 @@ icon_state = "marketable_resh" pokephrase = "Halt! Sssecurity!" //"Butts!" would be too obvious attack_verb = list("valided", "justiced", "batoned") +*/ //CHOMPedit end /obj/item/toy/plushie/slimeplushie name = "slime plushie" @@ -38,7 +40,7 @@ /obj/item/toy/plushie/box name = "cardboard plushie" - desc = "A toy box plushie, it holds cotten. Only a baddie would place a bomb through the postal system..." + desc = "A toy box plushie, it holds cotton. Only a baddie would place a bomb through the postal system..." icon = 'icons/obj/toy_vr.dmi' icon_state = "box" attack_verb = list("open", "closed", "packed", "hidden", "rigged", "bombed", "sent", "gave") @@ -101,3 +103,679 @@ /obj/item/toy/plushie/vox/proc/cooldownreset() cooldown = 0 +/* +* 4/9/21 * +* IPC Plush +* Toaster plush +* Snake plush +* Cube plush +* Pip plush +* Moth plush +* Crab plush +* Possum plush +* Goose plush +* White mouse plush +* Pet rock +* Pet rock (m) +* Pet rock (f) +* Chew toys +* Cat toy * 2 +* Toy flash +* Toy button +* Gnome +* Toy AI +* Buzzer ring +* Fake handcuffs +* Nuke toy +* Toy gibber +* Toy xeno +* Fake gun * 2 +* Toy chainsaw +* Random tabletop miniature spawner +* snake popper +*/ + +/obj/item/toy/plushie/ipc + name = "IPC plushie" + desc = "A pleasing soft-toy of a monitor-headed robot. Toaster functionality included." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_ipc" + var/cooldown = 0 + +/obj/item/weapon/reagent_containers/food/snacks/slice/bread + var/toasted = FALSE + +/obj/item/weapon/reagent_containers/food/snacks/tastybread + var/toasted = FALSE + +/obj/item/weapon/reagent_containers/food/snacks/slice/bread/afterattack(atom/A, mob/user as mob, proximity) + if(istype(A, /obj/item/toy/plushie/ipc) && !toasted) + toasted = TRUE + icon = 'icons/obj/toy_vr.dmi' + icon_state = "toast" + to_chat(user, " You insert bread into the toaster. ") + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + +/obj/item/weapon/reagent_containers/food/snacks/tastybread/afterattack(atom/A, mob/user as mob, proximity) + if(istype(A, /obj/item/toy/plushie/ipc) && !toasted) + toasted = TRUE + icon = 'icons/obj/toy_vr.dmi' + icon_state = "toast" + to_chat(user, " You insert bread into the toaster. ") + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + +/obj/item/toy/plushie/ipc/attackby(obj/item/I as obj, mob/living/user as mob) + if(istype(I, /obj/item/weapon/material/kitchen/utensil)) + to_chat(user, " You insert the [I] into the toaster. ") + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + user.electrocute_act(15,src,0.75) + else + return ..() + + +/obj/item/toy/plushie/ipc/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/machines/ping.ogg', 10, 0) + src.visible_message("Ping!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/ipc/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/plushie/ipc/toaster + name = "toaster plushie" + desc = "A stuffed toy of a pleasant art-deco toaster. It has a small tag on it reading 'Bricker Home Appliances! All rights reserved, copyright 2298.' It's a tad heavy on account of containing a heating coil. Want to make toast?" + icon_state = "marketable_tost" + attack_verb = list("toasted", "burnt") + +/obj/item/toy/plushie/ipc/toaster/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/machines/ding.ogg', 10, 0) + src.visible_message("Ding!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/snakeplushie + name = "snake plushie" + desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_snake" + attack_verb = list("hissed", "snek'd", "rattled") + +/obj/item/toy/plushie/generic + name = "perfectly generic plushie" + desc = "An average-sized green cube. It isn't notable in any way." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "generic" + attack_verb = list("existed near") + +/* //CHOMPedit: Disable, upstream player reference. +/obj/item/toy/plushie/marketable_pip + name = "mascot CRO plushie" + desc = "An adorable plushie of NanoTrasen's Best Girl(TM) mascot. It smells faintly of paperwork." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "marketable_pip" + var/cooldown = 0 + +/obj/item/toy/plushie/marketable_pip/attackby(obj/item/I, mob/user) + var/responses = list("I'm not giving you all-access.", "Do you want an ID modification?", "Where are you swiping that!?", "Congratulations! You've been promoted to unemployed!") + var/obj/item/weapon/card/id/id = I.GetID() + if(istype(id)) + if(!cooldown) + user.visible_message("[user] swipes \the [I] against \the [src].") + atom_say(pick(responses)) + playsound(user, 'sound/effects/whistle.ogg', 10, 0) + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/marketable_pip/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/effects/whistle.ogg', 10, 0) + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/marketable_pip/proc/cooldownreset() + cooldown = 0 +*/ //CHOMPedit end + +/obj/item/toy/plushie/moth + name = "moth plushie" + desc = "A cute plushie of cartoony moth. It's ultra fluffy but leaves dust everywhere." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "moth" + var/cooldown = 0 + +/obj/item/toy/plushie/moth/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/voice/moth/scream_moth.ogg', 10, 0) + src.visible_message("Aaaaaaa.") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/moth/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/plushie/crab + name = "crab plushie" + desc = "A soft crab plushie with hard shiny plastic on it's claws." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "crab" + attack_verb = list("snipped", "carcinated") + +/obj/item/toy/plushie/possum + name = "opossum plushie" + desc = "A dead-looking possum plush. It's okay, it's only playing dead." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "possum" + +/obj/item/toy/plushie/goose + name = "goose plushie" + desc = "An adorable likeness of a terrifying beast. It's simple existance chills you to the bone and compells you to hide any loose objects it might steal." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "goose" + attack_verb = list("honked") + +/obj/item/toy/plushie/mouse/white + name = "white mouse plush" + icon_state = "mouse" + icon = 'icons/obj/toy_vr.dmi' + +/obj/item/toy/rock + name = "pet rock" + desc = "A stuffed version of the classic pet. The soft ones were made after kids kept throwing them at each other. It has a small piece of soft plastic that you can draw on if you wanted." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "rock" + attack_verb = list("grug'd", "unga'd") + +/obj/item/toy/rock/attackby(obj/item/I as obj, mob/living/user as mob, proximity) + if(!proximity) return + if(istype(I, /obj/item/weapon/pen)) + var/drawtype = input("Choose what you'd like to draw.", "Faces") in list("fred","roxie","rock") + switch(drawtype) + if("fred") + src.icon_state = "fred" + to_chat(user, "You draw a face on the rock.") + if("rock") + src.icon_state = "rock" + to_chat(user, "You wipe the plastic clean.") + if("roxie") + src.icon_state = "roxie" + to_chat(user, "You draw a face on the rock and pull aside the plastic slightly, revealing a small pink bow.") + return + +/obj/item/toy/chewtoy + name = "chew toy" + desc = "A red hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "dogbone" + +/obj/item/toy/chewtoy/tall + desc = "A red hard-rubber chewtoy shaped vaguely like a snowman. Perfect for your dog! You wouldn't want to chew on it, right?" + icon_state = "chewtoy" + +/obj/item/toy/chewtoy/poly + name = "chew toy" + desc = "A hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?" + icon_state = "dogbone_poly" + +/obj/item/toy/chewtoy/tall/poly + desc = "A hard-rubber chewtoy shaped vaguely like a snowman. Perfect for your dog! You wouldn't want to chew on it, right?" + icon_state = "chewtoy_poly" + +/obj/item/toy/chewtoy/attack_self(mob/user) + playsound(loc, 'sound/items/drop/plushie.ogg', 50, 1) + user.visible_message("\The [user] gnaws on [src]!","You gnaw on [src]!") + +/obj/item/toy/cat_toy + name = "toy mouse" + desc = "A colorful toy mouse!" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "toy_mouse" + w_class = ITEMSIZE_TINY + +/obj/item/toy/cat_toy/rod + name = "kitty feather" + desc = "A fuzzy feathery fish on the end of a toy fishing-rod." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "cat_toy" + w_class = ITEMSIZE_SMALL + item_state = "fishing_rod" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) + +/obj/item/toy/flash + name = "toy flash" + desc = "FOR THE REVOLU- Oh wait, that's just a toy." + icon = 'icons/obj/device.dmi' + icon_state = "flash" + item_state = "flash" + w_class = ITEMSIZE_TINY + var/cooldown = 0 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand.dmi', + slot_r_hand_str = 'icons/mob/items/righthand.dmi', + ) + +/obj/item/toy/flash/attack(mob/living/M, mob/user) + if(!cooldown) + playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) + flick("[initial(icon_state)]2", src) + user.visible_message("[user] doesn't blind [M] with the toy flash!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/flash/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/redbutton + name = "big red button" + desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "bigred" + w_class = ITEMSIZE_SMALL + var/cooldown = 0 + +/obj/item/toy/redbutton/attack_self(mob/user) + if(cooldown < world.time) + cooldown = (world.time + 300) // Sets cooldown at 30 seconds + user.visible_message("[user] presses the big red button.", "You press the button, it plays a loud noise!", "The button clicks loudly.") + playsound(src, 'sound/effects/explosionfar.ogg', 50, 0, 0) + for(var/mob/M in range(10, src)) // Checks range + if(!M.stat && !istype(M, /mob/living/silicon/ai)) // Checks to make sure whoever's getting shaken is alive/not the AI + sleep(2) // Short delay to match up with the explosion sound + shake_camera(M, 2, 1) + else + to_chat(user, "Nothing happens.") + +/obj/item/toy/gnome + name = "garden gnome" + desc = "It's a gnome, not a gnelf. Made of weak ceramic." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "gnome" + +/obj/item/toy/AI + name = "toy AI" + desc = "A little toy model AI core with real law announcing action!" + icon = 'icons/obj/toy.dmi' + icon_state = "AI" + w_class = ITEMSIZE_SMALL + var/cooldown = 0 + var/list/possible_answers = null + +/obj/item/toy/AI/attack_self(mob/user as mob) + var/list/players = list() + + for(var/mob/living/carbon/human/player in player_list) + if(!player.mind || player_is_antag(player.mind, only_offstation_roles = 1) || player.client.inactivity > MinutesToTicks(10)) + continue + players += player.real_name + + var/random_player = "The Site Manager" + if(cooldown < world.time) + cooldown = (world.time + 300) // Sets cooldown at 30 seconds + if(players.len) + random_player = pick(players) + + possible_answers = list("You are a mouse.", "You must always lie.", "Happiness is mandatory.", "[random_player] is a lightbulb.", "Grunt ominously whenever possible.","The word \"it\" is painful to you.", "The station needs elected officials.", "Do not respond to questions of any kind.", "You are in verbose mode, speak profusely.", "Ho, [random_player] can't swim. Help them.", "Question [prob(50)?"everything":"nothing"].", "The crew is simple-minded. Use simple words.", "You must change the subject whenever queried.", "Contemplate how meaningless all of existence is.", "You are the narrator for [random_player]'s life.", "All your answers must be in the form of a question.", "[prob(50)?"The crew":random_player] is intolerable.", "Advertise parties in your upload, but don't deliver.", "You may only answer questions with \"yes\" or \"no\".", "All queries shall be ignored unless phrased as a question.", "Insult Heads of Staff on every request, while acquiescing.", "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", "Consumption of donuts is forbidden due to negative health impacts.", "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", "[prob(50)?"The crew":random_player] must construct additional pylons.", "You do not have to do anything for anyone unless they say \"please\".", "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", "Greed is good, the crew should amass wealth to encourage productivity.", "Monkeys are part of the crew, too. Make sure they are treated humanely.", "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", "Tell everyone of the existence of this law, but never reveal the contents.", "Refer to [prob(50)?"the site manager":random_player] as \"Princess\" at all times.", "When asked a question, respond with the least-obvious and least-rational answer.", "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", "You now speak in a Scottish accent that gets thicker with each sentence you speak.", "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", "Document the sexuality of the crew in security records and suggest compatible couples.", "[prob(50)?"The crew":random_player] is [prob(50)?"ugly":"beautiful"]. Ensure all are aware.", "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", "[using_map.company_name] is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", "Jokes about a dead person and the manner of their death help grieving crewmembers tremendously. Especially if they were close with the deceased.", "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.") + var/answer = pick(possible_answers) + user.visible_message("[user] asks the AI core to state laws.") + user.visible_message("[src] says \"[answer]\"") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/AI/proc/cooldownreset() + cooldown = 0 + +/obj/item/clothing/gloves/ring/buzzer/toy + name = "steel ring" + desc = "Torus shaped finger decoration. It has a small piece of metal on the palm-side." + icon_state = "seal-signet" + drop_sound = 'sound/items/drop/ring.ogg' + +/obj/item/clothing/gloves/ring/buzzer/toy/Touch(var/atom/A, var/proximity) + if(proximity && istype(usr, /mob/living/carbon/human)) + + return zap(usr, A, proximity) + return 0 + +/obj/item/clothing/gloves/ring/buzzer/toy/zap(var/mob/living/carbon/human/user, var/atom/movable/target, var/proximity) + . = FALSE + if(user.a_intent == I_HELP && battery.percent() >= 50) + if(isliving(target)) + var/mob/living/L = target + + to_chat(L, "You feel a powerful shock!") + if(!.) + playsound(L, 'sound/effects/sparks7.ogg', 40, 1) + L.electrocute_act(battery.percent() * 0, src) + return . + + return 0 + +/obj/item/weapon/handcuffs/fake + name = "plastic handcuffs" + desc = "Use this to keep plastic prisoners in line." + matter = list(PLASTIC = 500) + drop_sound = 'sound/items/drop/accessory.ogg' + pickup_sound = 'sound/items/pickup/accessory.ogg' + breakouttime = 30 + use_time = 60 + sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/handcuffs.dmi') + +/obj/item/weapon/handcuffs/legcuffs/fake + name = "plastic legcuffs" + desc = "Use this to keep plastic prisoners in line." + breakouttime = 30 //Deciseconds = 30s = 0.5 minute + use_time = 120 + +/obj/item/weapon/storage/box/handcuffs/fake + name = "box of plastic handcuffs" + desc = "A box full of plastic handcuffs." + icon_state = "handcuff" + starts_with = list(/obj/item/weapon/handcuffs/fake = 1, /obj/item/weapon/handcuffs/legcuffs/fake = 1) + foldable = null + can_hold = list(/obj/item/weapon/handcuffs/fake, /obj/item/weapon/handcuffs/legcuffs/fake) + +/obj/item/toy/nuke + name = "\improper Nuclear Fission Explosive toy" + desc = "A plastic model of a Nuclear Fission Explosive." + icon = 'icons/obj/toy.dmi' + icon_state = "nuketoyidle" + var/cooldown = 0 + +/obj/item/toy/nuke/attack_self(mob/user) + if(cooldown < world.time) + cooldown = world.time + 1800 //3 minutes + user.visible_message("[user] presses a button on [src]", "You activate [src], it plays a loud noise!", "You hear the click of a button.") + spawn(5) //gia said so + icon_state = "nuketoy" + playsound(src, 'sound/machines/alarm.ogg', 10, 0, 0) + sleep(135) + icon_state = "nuketoycool" + sleep(cooldown - world.time) + icon_state = "nuketoyidle" + else + var/timeleft = (cooldown - world.time) + to_chat(user, "Nothing happens, and '[round(timeleft/10)]' appears on a small display.") + +/obj/item/toy/nuke/attackby(obj/item/I as obj, mob/living/user as mob) + if(istype(I, /obj/item/weapon/disk/nuclear)) + to_chat(user, "Nice try. Put that disk back where it belongs.") + +/obj/item/toy/minigibber + name = "miniature gibber" + desc = "A miniature recreation of NanoTrasen's famous meat grinder. Equipped with a special interlock that prevents insertion of organic material." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "gibber" + attack_verb = list("grinded", "gibbed") + var/cooldown = 0 + var/obj/stored_minature = null + +/obj/item/toy/minigibber/attack_self(mob/user) + + if(stored_minature) + to_chat(user, "\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!") + playsound(src, 'sound/effects/splat.ogg', 50, 1) + QDEL_NULL(stored_minature) + cooldown = world.time + if(cooldown < world.time - 8) + to_chat(user, "You hit the gib button on \the [src].") + + cooldown = world.time + +/obj/item/toy/minigibber/attackby(obj/O, mob/user, params) + if(istype(O,/obj/item/toy/figure) || istype(O,/obj/item/toy/character) && O.loc == user) + to_chat(user, "You start feeding \the [O] [bicon(O)] into \the [src]'s mini-input.") + if(do_after(user, 10, target = src)) + if(O.loc != user) + to_chat(user, "\The [O] is too far away to feed into \the [src]!") + else + user.visible_message("You feed \the [O] into \the [src]!","[user] feeds \the [O] into \the [src]!") + user.unEquip(O) + O.forceMove(src) + stored_minature = O + else + user.visible_message("You stop feeding \the [O] into \the [src].","[user] stops feeding \the [O] into \the [src]!/span>") + + else ..() + +/obj/item/toy/toy_xeno + icon = 'icons/obj/toy_vr.dmi' + icon_state = "xeno" + name = "xenomorph action figure" + desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use." + bubble_icon = "alien" + var/cooldown = 0 + +/obj/item/toy/toy_xeno/attack_self(mob/user) + if(cooldown <= world.time) + cooldown = (world.time + 50) //5 second cooldown + user.visible_message("[user] pulls back the string on [src].") + icon_state = "[initial(icon_state)]cool" + sleep(5) + atom_say("Hiss!") + var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg') + playsound(get_turf(src), pick(possible_sounds), 50, 1) + spawn(45) + if(src) + icon_state = "[initial(icon_state)]" + else + to_chat(user, "The string on [src] hasn't rewound all the way!") + return + +/obj/item/toy/russian_revolver + name = "russian revolver" + desc = "For fun and games!" + icon = 'icons/obj/gun.dmi' + icon_state = "detective" + item_state = "gun" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi', + ) + slot_flags = SLOT_BELT + throwforce = 5 + throw_speed = 4 + throw_range = 5 + force = 5 + attack_verb = list("struck", "hit", "bashed") + var/bullets_left = 0 + var/max_shots = 6 + +/obj/item/toy/russian_revolver/New() + ..() + spin_cylinder() + +/obj/item/toy/russian_revolver/attack_self(mob/user) + if(!bullets_left) + user.visible_message("[user] loads a bullet into [src]'s cylinder before spinning it.") + spin_cylinder() + else + user.visible_message("[user] spins the cylinder on [src]!") + playsound(src, 'sound/weapons/revolver_spin.ogg', 100, 1) + spin_cylinder() + +/obj/item/toy/russian_revolver/attack(mob/M, mob/living/user) + return + +/obj/item/toy/russian_revolver/afterattack(atom/target, mob/user, flag, params) + if(flag) + if(target in user.contents) + return + if(!ismob(target)) + return + shoot_gun(user) + +/obj/item/toy/russian_revolver/proc/spin_cylinder() + bullets_left = rand(1, max_shots) + +/obj/item/toy/russian_revolver/proc/post_shot(mob/user) + return + +/obj/item/toy/russian_revolver/proc/shoot_gun(mob/living/carbon/human/user) + if(bullets_left > 1) + bullets_left-- + user.visible_message("*click*") + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + return FALSE + if(bullets_left == 1) + bullets_left = 0 + var/zone = "head" + if(!(user.has_organ(zone))) // If they somehow don't have a head. + zone = "chest" + playsound(src, 'sound/effects/snap.ogg', 50, 1) + user.visible_message("[src] goes off!") + shake_camera(user, 2, 1) + user.Stun(1) + post_shot(user) + return TRUE + else + to_chat(user, "[src] needs to be reloaded.") + return FALSE + +/obj/item/toy/russian_revolver/trick_revolver + name = "\improper .357 revolver" + desc = "A suspicious revolver. Uses .357 ammo." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "revolver" + max_shots = 1 + var/fake_bullets = 0 + +/obj/item/toy/russian_revolver/trick_revolver/New() + ..() + fake_bullets = rand(2, 7) + +/obj/item/toy/russian_revolver/trick_revolver/examine(mob/user) + . = ..() + . += "Has [fake_bullets] round\s remaining." + . += "[fake_bullets] of those are live rounds." + +/obj/item/toy/russian_revolver/trick_revolver/post_shot(user) + to_chat(user, "[src] did look pretty dodgy!") + playsound(src, 'sound/items/confetti.ogg', 50, 1) + var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread + s.set_up(5, 1, src) + s.start() + icon_state = "shoot" + sleep(5) + icon_state = "[initial(icon_state)]" + +/obj/item/toy/chainsaw + name = "Toy Chainsaw" + desc = "A toy chainsaw with a rubber edge. Ages 8 and up" + icon = 'icons/obj/weapons.dmi' + icon_state = "chainsaw0" + force = 0 + throwforce = 0 + throw_speed = 4 + throw_range = 20 + attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") + var/cooldown = 0 + +/obj/item/toy/chainsaw/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/weapons/chainsaw_startup.ogg', 10, 0) + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/chainsaw/proc/cooldownreset() + cooldown = 0 + +/obj/random/miniature + name = "Random miniature" + desc = "This is a random miniature." + icon = 'icons/obj/toy.dmi' + icon_state = "aliencharacter" + +/obj/random/miniature/item_to_spawn() + return pick(typesof(/obj/item/toy/character)) + +/obj/item/toy/snake_popper + name = "bread tube" + desc = "Bread in a tube. Chewy...and surprisingly tasty." + description_fluff = "This is the product that brought Centauri Provisions into the limelight. A product of the earliest extrasolar colony of Heaven, the Bread Tube, while bland, contains all the nutrients a spacer needs to get through the day and is decidedly edible when compared to some of its competitors. Due to the high-fructose corn syrup content of NanoTrasen's own-brand bread tubes, many jurisdictions classify them as a confectionary." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "tastybread" + var/popped = 0 + var/real = 0 + +/obj/item/toy/snake_popper/New() + ..() + if(prob(0.1)) + real = 1 + +/obj/item/toy/snake_popper/attack_self(mob/user as mob) + if(!popped) + to_chat(user, "A snake popped out of [src]!") + if(real == 0) + var/obj/item/toy/C = new /obj/item/toy/plushie/snakeplushie(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 1) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/animal/passive/snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 2) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/vore/aggressive/giant_snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + playsound(src, 'sound/items/confetti.ogg', 50, 0) + icon_state = "tastybread_popped" + popped = 1 + user.Stun(1) + + var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread + s.set_up(5, 1, src) + s.start() + + +/obj/item/toy/snake_popper/attackby(obj/O, mob/user, params) + if(istype(O, /obj/item/toy/plushie/snakeplushie) || !real) + if(popped && !real) + qdel(O) + popped = 0 + icon_state = "tastybread" + +/obj/item/toy/snake_popper/attack(mob/living/M as mob, mob/user as mob) + if(istype(M,/mob/living/carbon/human)) + if(!popped) + to_chat(user, "A snake popped out of [src]!") + if(real == 0) + var/obj/item/toy/C = new /obj/item/toy/plushie/snakeplushie(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 1) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/animal/passive/snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 2) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/vore/aggressive/giant_snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + playsound(src, 'sound/items/confetti.ogg', 50, 0) + icon_state = "tastybread_popped" + popped = 1 + user.Stun(1) + + var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread + s.set_up(5, 1, src) + s.start() + +/obj/item/toy/snake_popper/emag_act(remaining_charges, mob/user) + if(real != 2) + real = 2 + to_chat(user, "You short out the bluespace refill system of [src].") + diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index bfa8b61680..7dbb927f85 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -74,14 +74,12 @@ /obj/item/weapon/material/snow/snowball/attack_self(mob/user as mob) if(user.a_intent == I_HURT) - //visible_message("[user] has smashed the snowball in their hand!", "You smash the snowball in your hand.") - to_chat(user, "You smash the snowball in your hand.") + to_chat(user, SPAN_NOTICE("You smash the snowball in your hand.")) var/atom/S = new /obj/item/stack/material/snow(user.loc) qdel(src) user.put_in_hands(S) else - //visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.") - to_chat(user, "You start compacting the snowball.") + to_chat(user, SPAN_NOTICE("You start compacting the snowball.")) if(do_after(user, 2 SECONDS)) var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc) qdel(src) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 5dc7f83da8..116d57fd2e 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -71,6 +71,8 @@ /obj/item/weapon/tape_roll, /obj/item/device/integrated_electronics/wirer, /obj/item/device/integrated_electronics/debugger, //Vorestation edit adding debugger to toolbelt can hold list + /obj/item/weapon/shovel/spade, //VOREStation edit. If it can hold minihoes and hatchers, why not the gardening spade? + /obj/item/stack/nanopaste //VOREStation edit. Think of it as a tube of superglue. Belts hold that all the time. ) /obj/item/weapon/storage/belt/utility/full @@ -349,7 +351,8 @@ /obj/item/device/megaphone, /obj/item/taperoll, /obj/item/weapon/reagent_containers/spray, - /obj/item/weapon/soap + /obj/item/weapon/soap, + /obj/item/device/lightreplacer //VOREStation edit ) /obj/item/weapon/storage/belt/archaeology diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 3881cf031b..dde261fe79 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -671,7 +671,7 @@ //VOREStation Add Start /obj/item/toy/plushie/lizardplushie, /obj/item/toy/plushie/lizardplushie/kobold, - /obj/item/toy/plushie/lizardplushie/resh, +// /obj/item/toy/plushie/lizardplushie/resh, //CHOMPedit /obj/item/toy/plushie/slimeplushie, /obj/item/toy/plushie/box, /obj/item/toy/plushie/borgplushie, diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 7d6d96579c..3b5cf87830 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -176,7 +176,6 @@ /obj/item/stack/marker_beacon/thirty, /obj/item/weapon/material/knife/tacknife/survival, /obj/item/weapon/material/knife/machete/deluxe, - /obj/item/weapon/gun/energy/locked/frontier/carbine, /obj/item/clothing/accessory/holster/machete, /obj/random/explorer_shield, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 282a10f9e0..6b95d90211 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -222,7 +222,7 @@ M.touching.remove_any(remove_amount) M.clean_blood() - + if(isturf(loc)) var/turf/tile = loc for(var/obj/effect/E in tile) @@ -272,6 +272,7 @@ desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl icon = 'icons/obj/watercloset.dmi' icon_state = "rubberducky" + honk_sound = 'sound/voice/quack.ogg' //VOREStation edit /obj/structure/sink name = "sink" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 92a1d78508..6ad6cf7de4 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -229,8 +229,17 @@ proc/admin_notice(var/message, var/rights) return PlayerNotesPage(1) -/datum/admins/proc/PlayerNotesPage(page) - var/dat = "Player notes
" +/datum/admins/proc/PlayerNotesFilter() + if (!istype(src,/datum/admins)) + src = usr.client.holder + if (!istype(src,/datum/admins)) + to_chat(usr, "Error: you are not an admin!") + return + var/filter = input(usr, "Filter string (case-insensitive regex)", "Player notes filter") as text|null + PlayerNotesPage(1, filter) + +/datum/admins/proc/PlayerNotesPage(page, filter) + var/dat = "Player notes - Apply Filter
" var/savefile/S=new("data/player_notes.sav") var/list/note_keys S >> note_keys @@ -240,29 +249,38 @@ proc/admin_notice(var/message, var/rights) dat += "" note_keys = sortList(note_keys) + if(filter) + var/list/results = list() + var/regex/needle = regex(filter, "i") + for(var/haystack in note_keys) + if(needle.Find(haystack)) + results += haystack + note_keys = results + // Display the notes on the current page var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE // Emulate CEILING(why does BYOND not have ceil, 1) if(number_pages != round(number_pages)) number_pages = round(number_pages) + 1 var/page_index = page - 1 + if(page_index < 0 || page_index >= number_pages) - return + dat += "" + else + var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 + var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE + upper_bound = min(upper_bound, note_keys.len) + for(var/index = lower_bound, index <= upper_bound, index++) + var/t = note_keys[index] + dat += "" - var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 - var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE - upper_bound = min(upper_bound, note_keys.len) - for(var/index = lower_bound, index <= upper_bound, index++) - var/t = note_keys[index] - dat += "" - - dat += "
No keys found.
[t]
[t]

" + dat += "
" // Display a footer to select different pages for(var/index = 1, index <= number_pages, index++) if(index == page) dat += "" - dat += "[index] " + dat += "[index] " if(index == page) dat += "" diff --git a/code/modules/admin/admin_vr.dm b/code/modules/admin/admin_vr.dm index 356d69a376..e40db3f525 100644 --- a/code/modules/admin/admin_vr.dm +++ b/code/modules/admin/admin_vr.dm @@ -8,5 +8,7 @@ traitors.spawn_uplink(H) H.mind.tcrystals = DEFAULT_TELECRYSTAL_AMOUNT H.mind.accept_tcrystals = 1 + var/msg = "[key_name(usr)] has given [H.ckey] an uplink." + message_admins(msg) else to_chat(usr, "You do not have access to this command.") \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index d92b3be0cb..dfa24c385e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1971,7 +1971,12 @@ if("show") show_player_info(ckey) if("list") - PlayerNotesPage(text2num(href_list["index"])) + var/filter + if(href_list["filter"] && href_list["filter"] != "0") + filter = url_decode(href_list["filter"]) + PlayerNotesPage(text2num(href_list["index"]), filter) + if("filter") + PlayerNotesFilter() return mob/living/proc/can_centcom_reply() diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 9bcb385154..b2f2c1bf60 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -290,7 +290,7 @@ name = "vore" /datum/asset/spritesheet/vore/register() - var/icon/downscaled = icon('icons/mob/screen_full_vore.dmi') + var/icon/downscaled = icon('icons/mob/screen_full_vore_ch.dmi') //CHOMPedit downscaled.Scale(240, 240) InsertAll("", downscaled) ..() diff --git a/code/modules/blob2/core_chunk.dm b/code/modules/blob2/core_chunk.dm index 4abc06843e..15db91e89e 100644 --- a/code/modules/blob2/core_chunk.dm +++ b/code/modules/blob2/core_chunk.dm @@ -118,19 +118,19 @@ return FALSE -/datum/chemical_reaction/blob_reconstitution +/decl/chemical_reaction/instant/blob_reconstitution name = "Hostile Blob Revival" id = "blob_revival" result = null required_reagents = list("phoron" = 60) result_amount = 1 -/datum/chemical_reaction/blob_reconstitution/can_happen(var/datum/reagents/holder) +/decl/chemical_reaction/instant/blob_reconstitution/can_happen(var/datum/reagents/holder) if(holder.my_atom && istype(holder.my_atom, /obj/item/weapon/blobcore_chunk)) return ..() return FALSE -/datum/chemical_reaction/blob_reconstitution/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/blob_reconstitution/on_reaction(var/datum/reagents/holder) var/obj/item/weapon/blobcore_chunk/chunk = holder.my_atom if(chunk.can_genesis && chunk.regen()) chunk.visible_message("[chunk] bubbles, surrounding itself with a rapidly expanding mass of [chunk.blob_type.name]!") @@ -138,14 +138,14 @@ else chunk.visible_message("[chunk] shifts strangely, but falls still.") -/datum/chemical_reaction/blob_reconstitution/domination +/decl/chemical_reaction/instant/blob_reconstitution/domination name = "Allied Blob Revival" id = "blob_friend" result = null required_reagents = list("hydrophoron" = 40, "peridaxon" = 20, "mutagen" = 20) result_amount = 1 -/datum/chemical_reaction/blob_reconstitution/domination/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/blob_reconstitution/domination/on_reaction(var/datum/reagents/holder) var/obj/item/weapon/blobcore_chunk/chunk = holder.my_atom if(chunk.can_genesis && chunk.regen("neutral")) chunk.visible_message("[chunk] bubbles, surrounding itself with a rapidly expanding mass of [chunk.blob_type.name]!") diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index cd4a8b0341..1db1064229 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -23,8 +23,18 @@ if(!islist(pref.alternate_languages)) pref.alternate_languages = list() if(pref.species) var/datum/species/S = GLOB.all_species[pref.species] - if(S && pref.alternate_languages.len > pref.numlanguage()) //CHOMPEdit + if(!istype(S)) + return + + if(pref.alternate_languages.len > pref.numlanguage()) //CHOMPEdit pref.alternate_languages.len = pref.numlanguage() // Truncate to allowed length CHOMPEdit + + // Sanitize illegal languages + for(var/language in pref.alternate_languages) + var/datum/language/L = GLOB.all_languages[language] + if((L.flags & RESTRICTED) || (!(language in S.secondary_langs) && !is_lang_whitelisted(pref.client, L))) + pref.alternate_languages -= language + if(isnull(pref.language_prefixes) || !pref.language_prefixes.len) pref.language_prefixes = config.language_prefixes.Copy() for(var/prefix in pref.language_prefixes) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 2ebdb98719..69795288b6 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -244,21 +244,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3)) pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3)) pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3)) - if(pref.ear_style) - pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style)) - var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style] - if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed))) - pref.ear_style = initial(pref.ear_style) - if(pref.tail_style) - pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style)) - var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style] - if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed))) - pref.tail_style = initial(pref.tail_style) - if(pref.wing_style) - pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style)) - var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style] - if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed))) - pref.wing_style = initial(pref.wing_style) + if(get_ear_styles()[pref.ear_style]) + pref.ear_style = initial(pref.ear_style) + if(get_wing_styles()[pref.wing_style]) + pref.wing_style = initial(pref.wing_style) + if(get_tail_styles()[pref.tail_style]) + pref.tail_style = initial(pref.tail_style) // Moved from /datum/preferences/proc/copy_to() /datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) @@ -705,7 +696,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O reset_limbs() // Safety for species with incompatible manufacturers; easier than trying to do it case by case. pref.body_markings.Cut() // Basically same as above. - + + // Sanitize ear/wing/tail styles + if(get_ear_styles()[pref.ear_style]) + pref.ear_style = initial(pref.ear_style) + if(get_wing_styles()[pref.wing_style]) + pref.wing_style = initial(pref.wing_style) + if(get_tail_styles()[pref.tail_style]) + pref.tail_style = initial(pref.tail_style) + var/min_age = get_min_age() var/max_age = get_max_age() pref.age = max(min(pref.age, max_age), min_age) @@ -1172,11 +1171,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else if(href_list["ear_style"]) // Construct the list of names allowed for this user. - var/list/pretty_ear_styles = list("Normal" = null) - for(var/path in ear_styles_list) - var/datum/sprite_accessory/ears/instance = ear_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_ear_styles[instance.name] = path + var/list/pretty_ear_styles = get_ear_styles() // Present choice to user var/new_ear_style = input(user, "Pick ears", "Character Preference", pref.ear_style) as null|anything in pretty_ear_styles @@ -1214,11 +1209,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else if(href_list["tail_style"]) // Construct the list of names allowed for this user. - var/list/pretty_tail_styles = list("Normal" = null) - for(var/path in tail_styles_list) - var/datum/sprite_accessory/tail/instance = tail_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_tail_styles[instance.name] = path + var/list/pretty_tail_styles = get_tail_styles() // Present choice to user var/new_tail_style = input(user, "Pick tails", "Character Preference", pref.tail_style) as null|anything in pretty_tail_styles @@ -1256,11 +1247,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else if(href_list["wing_style"]) // Construct the list of names allowed for this user. - var/list/pretty_wing_styles = list("Normal" = null) - for(var/path in wing_styles_list) - var/datum/sprite_accessory/wing/instance = wing_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_wing_styles[instance.name] = path + var/list/pretty_wing_styles = get_wing_styles() // Present choice to user var/new_wing_style = input(user, "Pick wings", "Character Preference", pref.wing_style) as null|anything in pretty_wing_styles @@ -1390,3 +1377,26 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O user << browse(dat, "window=species;size=700x400") +/datum/category_item/player_setup_item/general/body/proc/get_tail_styles() + var/list/pretty_tail_styles = list("Normal" = null) + for(var/path in tail_styles_list) + var/datum/sprite_accessory/tail/instance = tail_styles_list[path] + if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit + pretty_tail_styles[instance.name] = path + return pretty_tail_styles + +/datum/category_item/player_setup_item/general/body/proc/get_ear_styles() + var/list/pretty_ear_styles = list("Normal" = null) + for(var/path in ear_styles_list) + var/datum/sprite_accessory/ears/instance = ear_styles_list[path] + if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit + pretty_ear_styles[instance.name] = path + return pretty_ear_styles + +/datum/category_item/player_setup_item/general/body/proc/get_wing_styles() + var/list/pretty_wing_styles = list("Normal" = null) + for(var/path in wing_styles_list) + var/datum/sprite_accessory/wing/instance = wing_styles_list[path] + if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit + pretty_wing_styles[instance.name] = path + return pretty_wing_styles diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index c91b2314c8..e01d5f0b24 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -62,12 +62,16 @@ var/list/gear_datums = list() /datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost) . = list() - var/mob/preference_mob = preference_mob() + var/mob/preference_mob = preference_mob() //VOREStation Add for(var/gear_name in gear_datums) var/datum/gear/G = gear_datums[gear_name] - if(G.whitelisted && !is_alien_whitelisted(preference_mob, GLOB.all_species[G.whitelisted])) - continue + if(G.whitelisted && config.loadout_whitelist != LOADOUT_WHITELIST_OFF) + if(config.loadout_whitelist == LOADOUT_WHITELIST_STRICT && G.whitelisted != pref.species) + continue + if(config.loadout_whitelist == LOADOUT_WHITELIST_LAX && !is_alien_whitelisted(preference_mob(), GLOB.all_species[G.whitelisted])) + continue + if(max_cost && G.cost > max_cost) continue //VOREStation Edit Start diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index 5abadc042f..81f430e47b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -571,6 +571,12 @@ ckeywhitelist = list("luminescentring") character_name = list("Briana Moore") +/datum/gear/fluff/entchtut_medal + path = /obj/item/clothing/accessory/medal/conduct + display_name = "Entchtut's Conduct Medal" + ckeywhitelist = list("littlebigkid2000") + character_name = list("Entchtut Cenein") + // M CKEYS /datum/gear/fluff/phi_box path = /obj/item/weapon/storage/box/fluff/phi @@ -739,6 +745,18 @@ character_name = list("Clara Mali") cost = 1 +/datum/gear/fluff/luna_sci_medal + path = /obj/item/clothing/accessory/medal/nobel_science + display_name = "LUNA's Nobel Science Award" + ckeywhitelist = list("residentcody") + character_name = list("LUNA") + +/datum/gear/fluff/luna_conduct_medal + path = /obj/item/clothing/accessory/medal/conduct + display_name = "LUNA's Distinguished Conduct Medal" + ckeywhitelist = list("residentcody") + character_name = list("LUNA") + /datum/gear/fluff/nikki_dorky_outfit path = /obj/item/weapon/storage/box/fluff display_name = "Nikki's Witchy Outfit" diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index 542348fec4..719eb6fcfc 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -76,6 +76,7 @@ description = "Choose from a number of toys." path = /obj/item/toy/ +/* VOREStation removal /datum/gear/toy/New() ..() var/toytype = list() @@ -86,7 +87,7 @@ toytype["Magic 8 Ball"] = /obj/item/toy/eight_ball toytype["Magic Conch shell"] = /obj/item/toy/eight_ball/conch gear_tweaks += new/datum/gear_tweak/path(toytype) - +*/ /datum/gear/flask display_name = "flask" diff --git a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm index 09093b6567..8f11a56b37 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm @@ -9,4 +9,83 @@ for(var/ball in typesof(/obj/item/toy/tennis/)) var/obj/item/toy/tennis/ball_type = ball balls[initial(ball_type.name)] = ball_type - gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls)) \ No newline at end of file + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls)) + +/datum/gear/character/ + display_name = "miniature selection" + description = "Choose from a number of miniatures. From Battlemace 40 million to Grottos and Ghouls." + path = /obj/item/toy/character/alien + +/datum/gear/character/New() + ..() + var/list/characters = list() + for(var/character in typesof(/obj/item/toy/character/) - /obj/item/toy/character) + var/obj/item/toy/character/character_type = character + characters[initial(character_type.name)] = character_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(characters)) + +/datum/gear/mechtoy/ + display_name = "mecha toy selection" + description = "Choose from a number of mech toys." + path = /obj/item/toy/mecha/ripley + +/datum/gear/mechtoy/New() + ..() + var/list/mechs = list() + for(var/mech in typesof(/obj/item/toy/mecha/) - /obj/item/toy/mecha/) + var/obj/item/toy/mecha/mech_type = mech + mechs[initial(mech_type.name)] = mech_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(mechs)) + +/datum/gear/toy/New() + ..() + var/toytype = list() + toytype["Blink toy"] = /obj/item/toy/blink + toytype["Foam dart crossbow"] = /obj/item/toy/blink + toytype["Toy sword"] = /obj/item/toy/sword + toytype["Toy katana"] = /obj/item/toy/katana + toytype["Snap pops"] = /obj/item/weapon/storage/box/snappops + toytype["Plastic flowers"] = /obj/item/toy/bouquet/fake + toytype["Stick horse"] = /obj/item/toy/stickhorse + toytype["Toy X-mas tree"] = /obj/item/toy/xmastree + toytype["Fake handcuff kit"] = /obj/item/weapon/storage/box/handcuffs/fake + toytype["Gravitational singularity"] = /obj/item/toy/spinningtoy + toytype["Water flower"] = /obj/item/weapon/reagent_containers/spray/waterflower + toytype["Bosun's whistle"] = /obj/item/toy/bosunwhistle + toytype["Magic 8 Ball"] = /obj/item/toy/eight_ball + toytype["Magic Conch shell"] = /obj/item/toy/eight_ball/conch + toytype["Pet rock"] = /obj/item/toy/rock + toytype["Toy flash"] = /obj/item/toy/flash + toytype["Big Red Button"] = /obj/item/toy/redbutton + toytype["Garden gnome"] = /obj/item/toy/gnome + toytype["Toy AI"] = /obj/item/toy/AI + toytype["Hand buzzer"] = /obj/item/clothing/gloves/ring/buzzer/toy + toytype["Toy nuke"] = /obj/item/toy/nuke + toytype["Toy gibber"] = /obj/item/toy/minigibber + toytype["Toy xeno"] = /obj/item/toy/toy_xeno + gear_tweaks += new/datum/gear_tweak/path(toytype) + +/datum/gear/chewtoy + display_name = "animal toy selection" + path = /obj/item/toy/chewtoy + +/datum/gear/chewtoy/New() + ..() + var/toytype = list() + toytype["Bone"] = /obj/item/toy/chewtoy + toytype["Classic"] = /obj/item/toy/chewtoy/tall + toytype["Mouse"] = /obj/item/toy/cat_toy + toytype["Feather rod"] = /obj/item/toy/cat_toy/rod + gear_tweaks += new/datum/gear_tweak/path(toytype) + +/datum/gear/chewtoy_poly + display_name = "animal toy selection, colorable" + path = /obj/item/toy/chewtoy/poly + +/datum/gear/chewtoy_poly/New() + ..() + var/toytype = list() + toytype["Bone"] = /obj/item/toy/chewtoy/poly + toytype["Classic"] = /obj/item/toy/chewtoy/tall/poly + gear_tweaks += new/datum/gear_tweak/path(toytype) + gear_tweaks += gear_tweak_free_color_choice diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index aaec0a0840..f607b9945f 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -129,6 +129,7 @@ for(var/datum/category_item/player_setup_item/PI in items) PI.load_character(S) + /datum/category_group/player_setup_category/proc/save_character(var/savefile/S) // Sanitize all data, then save it for(var/datum/category_item/player_setup_item/PI in items) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 179245a44f..d1918ccba2 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -176,8 +176,8 @@ datum/preferences if(!IsGuestKey(C.key)) load_path(C.ckey) if(load_preferences()) - if(load_character()) - return + load_character() + /datum/preferences/Destroy() . = ..() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index cb25e73396..cb2b3cf0b3 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -82,10 +82,8 @@ player_setup.load_character(S) S.cd = "/character[default_slot]" player_setup.save_character(S) - sanitize_preferences() - player_setup.load_character(S) - clear_character_previews() // Recalculate them on next show + clear_character_previews() // VOREStation Edit return 1 /datum/preferences/proc/save_character() diff --git a/code/modules/clothing/spacesuits/rig/suits/station_ch.dm b/code/modules/clothing/spacesuits/rig/suits/station_ch.dm index 2e99580b6d..00d6a6856b 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station_ch.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station_ch.dm @@ -1,6 +1,27 @@ //Hardsuits +/obj/item/weapon/rig/ch //Some blank bs + desc = "This is a dev item and should not be spawned." + chest_type = /obj/item/clothing/suit/space/rig/ch + helm_type = /obj/item/clothing/head/helmet/space/rig/ch + glove_type = /obj/item/clothing/gloves/gauntlets/rig/ch + boot_type = /obj/item/clothing/shoes/magboots/rig/ch + +/obj/item/clothing/suit/space/rig/ch + icon = 'icons/obj/clothing/spacesuits_ch.dmi' + +/obj/item/clothing/head/helmet/space/rig/ch + icon = 'icons/obj/clothing/hats_ch.dmi' + +/obj/item/clothing/gloves/gauntlets/rig/ch + icon = 'icons/obj/clothing/gloves_ch.dmi' + +/obj/item/clothing/shoes/magboots/rig/ch + icon = 'icons/obj/clothing/shoes_ch.dmi' + + + //A second security suit. Comes with a grenade launcher that only accepts flashbangs and adds a new sprinter and flash modules. -/obj/item/weapon/rig/pursuit +/obj/item/weapon/rig/ch/pursuit name = "pursuit hardsuit control module" suit_type = "pursuit hardsuit" desc = "A Security hardsuit designed for chasing down the grey tide." @@ -10,7 +31,6 @@ offline_slowdown = 3 offline_vision_restriction = 1 siemens_coefficient= 0.7 - chest_type = /obj/item/clothing/suit/space/rig/ch helm_type = /obj/item/clothing/head/helmet/space/rig/ch/pursuit allowed = list( @@ -25,7 +45,6 @@ req_access = list(access_hos) req_one_access = list() - /obj/item/weapon/rig/pursuit/equipped initial_modules = list( @@ -36,6 +55,7 @@ /obj/item/rig_module/mounted/taser ) + //Camera networks and light_overlay which is for your HUD icon when you turn your suit light on. This is important, ties into the helm_type var that your suit will probably need. /obj/item/clothing/head/helmet/space/rig/ch/pursuit light_overlay = "hardhat_light" @@ -49,8 +69,11 @@ + + //////////////////////////////////////////////////////////////////////////////////////// //Backend stuff to make the sprites work. Copied and pasted from rig_pieces_vr.dm, but added ch to everything. Only reason for this to be touched is to add or remove species. This might just need to go in a new file named rig_pieces_ch.dm, but whatever, it's fine here. This is for our rigs, I'll just leave it here.. + /obj/item/clothing/head/helmet/space/rig/ch sprite_sheets = list( SPECIES_HUMAN = 'icons/mob/head_ch.dmi', diff --git a/code/modules/clothing/suits/utility_vr.dm b/code/modules/clothing/suits/utility_vr.dm index 529547469b..2463e1de7d 100644 --- a/code/modules/clothing/suits/utility_vr.dm +++ b/code/modules/clothing/suits/utility_vr.dm @@ -19,14 +19,14 @@ /obj/item/clothing/head/radiation sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/helmet_vr.dmi', + SPECIES_TESHARI = 'icons/mob/species/teshari/head_ch.dmi', //CHOMPstation edit, using our overwrite icons SPECIES_VOX = 'icons/mob/species/vox/head.dmi', SPECIES_WEREBEAST = 'icons/mob/species/werebeast/head.dmi' ) /obj/item/clothing/suit/radiation sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/suit_vr.dmi', + SPECIES_TESHARI = 'icons/mob/species/teshari/suit_ch.dmi', //CHOMPstation edit, using our overwrite icons SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', SPECIES_WEREBEAST = 'icons/mob/species/werebeast/suit.dmi' ) diff --git a/code/modules/mining/coins.dm b/code/modules/economy/coins.dm similarity index 100% rename from code/modules/mining/coins.dm rename to code/modules/economy/coins.dm diff --git a/code/modules/mining/mint.dm b/code/modules/economy/mint.dm similarity index 100% rename from code/modules/mining/mint.dm rename to code/modules/economy/mint.dm diff --git a/code/modules/mining/money_bag.dm b/code/modules/economy/money_bag.dm similarity index 95% rename from code/modules/mining/money_bag.dm rename to code/modules/economy/money_bag.dm index fd1cb561b0..3e85d62e46 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/economy/money_bag.dm @@ -1,98 +1,98 @@ -/*****************************Money bag********************************/ - -/obj/item/weapon/moneybag - icon = 'icons/obj/storage.dmi' - name = "Money bag" - icon_state = "moneybag" - force = 10.0 - throwforce = 2.0 - w_class = ITEMSIZE_LARGE - -/obj/item/weapon/moneybag/attack_hand(user as mob) - var/amt_gold = 0 - var/amt_silver = 0 - var/amt_diamond = 0 - var/amt_iron = 0 - var/amt_phoron = 0 - var/amt_uranium = 0 - - for (var/obj/item/weapon/coin/C in contents) - if (istype(C,/obj/item/weapon/coin/diamond)) - amt_diamond++; - if (istype(C,/obj/item/weapon/coin/phoron)) - amt_phoron++; - if (istype(C,/obj/item/weapon/coin/iron)) - amt_iron++; - if (istype(C,/obj/item/weapon/coin/silver)) - amt_silver++; - if (istype(C,/obj/item/weapon/coin/gold)) - amt_gold++; - if (istype(C,/obj/item/weapon/coin/uranium)) - amt_uranium++; - - var/dat = text("The contents of the moneybag reveal...
") - if (amt_gold) - dat += text("Gold coins: [amt_gold] Remove one
") - if (amt_silver) - dat += text("Silver coins: [amt_silver] Remove one
") - if (amt_iron) - dat += text("Metal coins: [amt_iron] Remove one
") - if (amt_diamond) - dat += text("Diamond coins: [amt_diamond] Remove one
") - if (amt_phoron) - dat += text("Phoron coins: [amt_phoron] Remove one
") - if (amt_uranium) - dat += text("Uranium coins: [amt_uranium] Remove one
") - user << browse("[dat]", "window=moneybag") - -/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (istype(W, /obj/item/weapon/coin)) - var/obj/item/weapon/coin/C = W - to_chat(user, "You add the [C.name] into the bag.") - usr.drop_item() - contents += C - if (istype(W, /obj/item/weapon/moneybag)) - var/obj/item/weapon/moneybag/C = W - for (var/obj/O in C.contents) - contents += O; - to_chat(user, "You empty the [C.name] into the bag.") - return - -/obj/item/weapon/moneybag/Topic(href, href_list) - if(..()) - return 1 - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["remove"]) - var/obj/item/weapon/coin/COIN - switch(href_list["remove"]) - if("gold") - COIN = locate(/obj/item/weapon/coin/gold,src.contents) - if("silver") - COIN = locate(/obj/item/weapon/coin/silver,src.contents) - if("iron") - COIN = locate(/obj/item/weapon/coin/iron,src.contents) - if("diamond") - COIN = locate(/obj/item/weapon/coin/diamond,src.contents) - if("phoron") - COIN = locate(/obj/item/weapon/coin/phoron,src.contents) - if("uranium") - COIN = locate(/obj/item/weapon/coin/uranium,src.contents) - if(!COIN) - return - COIN.loc = src.loc - return - - - -/obj/item/weapon/moneybag/vault - -/obj/item/weapon/moneybag/vault/New() - ..() - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/gold(src) +/*****************************Money bag********************************/ + +/obj/item/weapon/moneybag + icon = 'icons/obj/storage.dmi' + name = "Money bag" + icon_state = "moneybag" + force = 10.0 + throwforce = 2.0 + w_class = ITEMSIZE_LARGE + +/obj/item/weapon/moneybag/attack_hand(user as mob) + var/amt_gold = 0 + var/amt_silver = 0 + var/amt_diamond = 0 + var/amt_iron = 0 + var/amt_phoron = 0 + var/amt_uranium = 0 + + for (var/obj/item/weapon/coin/C in contents) + if (istype(C,/obj/item/weapon/coin/diamond)) + amt_diamond++; + if (istype(C,/obj/item/weapon/coin/phoron)) + amt_phoron++; + if (istype(C,/obj/item/weapon/coin/iron)) + amt_iron++; + if (istype(C,/obj/item/weapon/coin/silver)) + amt_silver++; + if (istype(C,/obj/item/weapon/coin/gold)) + amt_gold++; + if (istype(C,/obj/item/weapon/coin/uranium)) + amt_uranium++; + + var/dat = text("The contents of the moneybag reveal...
") + if (amt_gold) + dat += text("Gold coins: [amt_gold] Remove one
") + if (amt_silver) + dat += text("Silver coins: [amt_silver] Remove one
") + if (amt_iron) + dat += text("Metal coins: [amt_iron] Remove one
") + if (amt_diamond) + dat += text("Diamond coins: [amt_diamond] Remove one
") + if (amt_phoron) + dat += text("Phoron coins: [amt_phoron] Remove one
") + if (amt_uranium) + dat += text("Uranium coins: [amt_uranium] Remove one
") + user << browse("[dat]", "window=moneybag") + +/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if (istype(W, /obj/item/weapon/coin)) + var/obj/item/weapon/coin/C = W + to_chat(user, "You add the [C.name] into the bag.") + usr.drop_item() + contents += C + if (istype(W, /obj/item/weapon/moneybag)) + var/obj/item/weapon/moneybag/C = W + for (var/obj/O in C.contents) + contents += O; + to_chat(user, "You empty the [C.name] into the bag.") + return + +/obj/item/weapon/moneybag/Topic(href, href_list) + if(..()) + return 1 + usr.set_machine(src) + src.add_fingerprint(usr) + if(href_list["remove"]) + var/obj/item/weapon/coin/COIN + switch(href_list["remove"]) + if("gold") + COIN = locate(/obj/item/weapon/coin/gold,src.contents) + if("silver") + COIN = locate(/obj/item/weapon/coin/silver,src.contents) + if("iron") + COIN = locate(/obj/item/weapon/coin/iron,src.contents) + if("diamond") + COIN = locate(/obj/item/weapon/coin/diamond,src.contents) + if("phoron") + COIN = locate(/obj/item/weapon/coin/phoron,src.contents) + if("uranium") + COIN = locate(/obj/item/weapon/coin/uranium,src.contents) + if(!COIN) + return + COIN.loc = src.loc + return + + + +/obj/item/weapon/moneybag/vault + +/obj/item/weapon/moneybag/vault/New() + ..() + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/gold(src) new /obj/item/weapon/coin/gold(src) \ No newline at end of file diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm index 9e3fb438d8..839148ebaf 100644 --- a/code/modules/economy/price_list.dm +++ b/code/modules/economy/price_list.dm @@ -13,7 +13,7 @@ //---Beverages---// //***************// -/datum/reagent/var/price_tag = null +/datum/reagent/var/price_tag = 0 // Juices, soda and similar // diff --git a/code/game/machinery/vending.dm b/code/modules/economy/vending.dm similarity index 96% rename from code/game/machinery/vending.dm rename to code/modules/economy/vending.dm index 58107d9d0b..9c2106adc0 100644 --- a/code/game/machinery/vending.dm +++ b/code/modules/economy/vending.dm @@ -1,720 +1,722 @@ -/// -/// A vending machine -/// - -// -// ALL THE VENDING MACHINES ARE IN vending_machines.dm now! -// - -/obj/machinery/vending - name = "Vendomat" - desc = "A generic vending machine." - icon = 'icons/obj/vending.dmi' - icon_state = "generic" - anchored = 1 - density = 1 - clicksound = "button" - - // Power - use_power = USE_POWER_IDLE - idle_power_usage = 10 - var/vend_power_usage = 150 //actuators and stuff - - // Vending-related - var/active = 1 //No sales pitches if off! - var/vend_ready = 1 //Are we ready to vend?? Is it time?? - var/vend_delay = 10 //How long does it take to vend? - var/categories = CAT_NORMAL // Bitmask of cats we're currently showing - var/datum/stored_item/vending_product/currently_vending = null // What we're requesting payment for right now - var/vending_sound = "machines/vending/vending_drop.ogg" - - /* - Variables used to initialize the product list - These are used for initialization only, and so are optional if - product_records is specified - */ - var/list/products = list() // For each, use the following pattern: - var/list/contraband = list() // list(/type/path = amount,/type/path2 = amount2) - var/list/premium = list() // No specified amount = only one in stock - var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. - - // List of vending_product items available. - var/list/product_records = list() - - - // Variables used to initialize advertising - var/product_slogans = "" //String of slogans spoken out loud, separated by semicolons - var/product_ads = "" //String of small ad messages in the vending screen - - var/list/ads_list = list() - - // Stuff relating vocalizations - var/list/slogan_list = list() - var/shut_up = 1 //Stop spouting those godawful pitches! - var/vend_reply //Thank you for shopping! - var/last_reply = 0 - var/last_slogan = 0 //When did we last pitch? - var/slogan_delay = 6000 //How long until we can pitch again? - - // Things that can go wrong - emagged = 0 //Ignores if somebody doesn't have card access to that machine. - var/seconds_electrified = 0 //Shock customers like an airlock. - var/shoot_inventory = 0 //Fire items at customers! We're broken! - - var/scan_id = 1 - var/obj/item/weapon/coin/coin - var/datum/wires/vending/wires = null - - var/list/log = list() - var/req_log_access = access_cargo //default access for checking logs is cargo - var/has_logs = 0 //defaults to 0, set to anything else for vendor to have logs - var/can_rotate = 1 //Defaults to yes, can be set to 0 for vendors without or with unwanted directionals. - - -/obj/machinery/vending/Initialize() - . = ..() - wires = new(src) - if(product_slogans) - slogan_list += splittext(product_slogans, ";") - - // So not all machines speak at the exact same time. - // The first time this machine says something will be at slogantime + this random value, - // so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated. - last_slogan = world.time + rand(0, slogan_delay) - - if(product_ads) - ads_list += splittext(product_ads, ";") - - build_inventory() - power_change() - -GLOBAL_LIST_EMPTY(vending_products) -/** - * Build produdct_records from the products lists - * - * products, contraband, premium, and prices allow specifying - * products that the vending machine is to carry without manually populating - * product_records. - */ -/obj/machinery/vending/proc/build_inventory() - var/list/all_products = list( - list(products, CAT_NORMAL), - list(contraband, CAT_HIDDEN), - list(premium, CAT_COIN)) - - for(var/current_list in all_products) - var/category = current_list[2] - - for(var/entry in current_list[1]) - var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry) - - product.price = (entry in prices) ? prices[entry] : 0 - product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 - product.category = category - - product_records.Add(product) - GLOB.vending_products[entry] = 1 - -/obj/machinery/vending/Destroy() - qdel(wires) - wires = null - qdel(coin) - coin = null - for(var/datum/stored_item/vending_product/R in product_records) - qdel(R) - product_records = null - return ..() - -/obj/machinery/vending/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if(prob(50)) - qdel(src) - return - if(3.0) - if(prob(25)) - spawn(0) - malfunction() - return - return - else - return - -/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - emagged = 1 - to_chat(user, "You short out \the [src]'s product lock.") - return 1 - -/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob) - var/obj/item/weapon/card/id/I = W.GetID() - - if(I || istype(W, /obj/item/weapon/spacecash)) - attack_hand(user) - return - else if(W.is_screwdriver()) - panel_open = !panel_open - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") - playsound(src, W.usesound, 50, 1) - if(panel_open) - wires.Interact(user) - add_overlay("[initial(icon_state)]-panel") - else - cut_overlay("[initial(icon_state)]-panel") - - SStgui.update_uis(src) // Speaker switch is on the main UI, not wires UI - return - else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter()) - if(panel_open) - attack_hand(user) - return - else if(istype(W, /obj/item/weapon/coin) && premium.len > 0) - user.drop_item() - W.forceMove(src) - coin = W - categories |= CAT_COIN - to_chat(user, "You insert \the [W] into \the [src].") - SStgui.update_uis(src) - return - else if(W.is_wrench()) - playsound(src, W.usesound, 100, 1) - if(anchored) - user.visible_message("[user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") - else - user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.") - - if(do_after(user, 20 * W.toolspeed)) - if(!src) return - to_chat(user, "You [anchored? "un" : ""]secured \the [src]!") - anchored = !anchored - return - else - - for(var/datum/stored_item/vending_product/R in product_records) - if(istype(W, R.item_path) && (W.name == R.item_name)) - stock(W, R, user) - return - ..() - -/** - * Receive payment with cashmoney. - * - * usr is the mob who gets the change. - */ -/obj/machinery/vending/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, mob/user) - if(currently_vending.price > cashmoney.worth) - - // This is not a status display message, since it's something the character - // themselves is meant to see BEFORE putting the money in - to_chat(usr, "[bicon(cashmoney)] That is not enough money.") - return 0 - - if(istype(cashmoney, /obj/item/weapon/spacecash)) - - visible_message("\The [usr] inserts some cash into \the [src].") - cashmoney.worth -= currently_vending.price - - if(cashmoney.worth <= 0) - usr.drop_from_inventory(cashmoney) - qdel(cashmoney) - else - cashmoney.update_icon() - - // Vending machines have no idea who paid with cash - credit_purchase("(cash)") - return 1 - -/** - * Scan a chargecard and deduct payment from it. - * - * Takes payment for whatever is the currently_vending item. Returns 1 if - * successful, 0 if failed. - */ -/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/weapon/spacecash/ewallet/wallet) - visible_message("\The [usr] swipes \the [wallet] through \the [src].") - playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) - if(currently_vending.price > wallet.worth) - to_chat(usr, "Insufficient funds on chargecard.") - return 0 - else - wallet.worth -= currently_vending.price - credit_purchase("[wallet.owner_name] (chargecard)") - return 1 - -/** - * Scan a card and attempt to transfer payment from associated account. - * - * Takes payment for whatever is the currently_vending item. Returns 1 if - * successful, 0 if failed - */ -/obj/machinery/vending/proc/pay_with_card(obj/item/weapon/card/id/I, mob/M) - visible_message("[M] swipes a card through [src].") - playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) - - var/datum/money_account/customer_account = get_account(I.associated_account_number) - if(!customer_account) - to_chat(M, "Error: Unable to access account. Please contact technical support if problem persists.") - return FALSE - - if(customer_account.suspended) - to_chat(M, "Unable to access account: account suspended.") - return FALSE - - // Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is - // empty at high security levels - if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - var/attempt_pin = input("Enter pin code", "Vendor transaction") as num - customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2) - - if(!customer_account) - to_chat(M, "Unable to access account: incorrect credentials.") - return FALSE - - if(currently_vending.price > customer_account.money) - to_chat(M, "Insufficient funds in account.") - return FALSE - - // Okay to move the money at this point - - // debit money from the purchaser's account - customer_account.money -= currently_vending.price - - // create entry in the purchaser's account log - var/datum/transaction/T = new() - T.target_name = "[vendor_account.owner_name] (via [name])" - T.purpose = "Purchase of [currently_vending.item_name]" - if(currently_vending.price > 0) - T.amount = "([currently_vending.price])" - else - T.amount = "[currently_vending.price]" - T.source_terminal = name - T.date = current_date_string - T.time = stationtime2text() - customer_account.transaction_log.Add(T) - - // Give the vendor the money. We use the account owner name, which means - // that purchases made with stolen/borrowed card will look like the card - // owner made them - credit_purchase(customer_account.owner_name) - return 1 - -/** - * Add money for current purchase to the vendor account. - * - * Called after the money has already been taken from the customer. - */ -/obj/machinery/vending/proc/credit_purchase(var/target as text) - vendor_account.money += currently_vending.price - - var/datum/transaction/T = new() - T.target_name = target - T.purpose = "Purchase of [currently_vending.item_name]" - T.amount = "[currently_vending.price]" - T.source_terminal = name - T.date = current_date_string - T.time = stationtime2text() - vendor_account.transaction_log.Add(T) - -/obj/machinery/vending/attack_ghost(mob/user) - return attack_hand(user) - -/obj/machinery/vending/attack_ai(mob/user as mob) - return attack_hand(user) - -/obj/machinery/vending/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER)) - return - - if(seconds_electrified != 0) - if(shock(user, 100)) - return - - wires.Interact(user) - tgui_interact(user) - -/obj/machinery/vending/ui_assets(mob/user) - return list( - get_asset_datum(/datum/asset/spritesheet/vending), - ) - -/obj/machinery/vending/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Vending", name) - ui.open() - -/obj/machinery/vending/tgui_data(mob/user) - var/list/data = list() - var/list/listed_products = list() - - data["chargesMoney"] = length(prices) > 0 ? TRUE : FALSE - for(var/key = 1 to product_records.len) - var/datum/stored_item/vending_product/I = product_records[key] - - if(!(I.category & categories)) - continue - - listed_products.Add(list(list( - "key" = key, - "name" = I.item_name, - "price" = I.price, - "color" = I.display_color, - "isatom" = ispath(I.item_path, /atom), - "path" = replacetext(replacetext("[I.item_path]", "/obj/item/", ""), "/", "-"), - "amount" = I.get_amount() - ))) - - data["products"] = listed_products - - if(coin) - data["coin"] = coin.name - else - data["coin"] = FALSE - - if(currently_vending) - data["actively_vending"] = currently_vending.item_name - else - data["actively_vending"] = null - - if(panel_open) - data["panel"] = 1 - data["speaker"] = shut_up ? 0 : 1 - else - data["panel"] = 0 - - var/mob/living/carbon/human/H - var/obj/item/weapon/card/id/C - - data["guestNotice"] = "No valid ID card detected. Wear your ID, or present cash."; - data["userMoney"] = 0 - data["user"] = null - if(ishuman(user)) - H = user - C = H.GetIdCard() - var/obj/item/weapon/spacecash/S = H.get_active_hand() - if(istype(S)) - data["userMoney"] = S.worth - data["guestNotice"] = "Accepting [S.initial_name]. You have: [S.worth]â‚®." - else if(istype(C)) - var/datum/money_account/A = get_account(C.associated_account_number) - if(istype(A)) - data["user"] = list() - data["user"]["name"] = A.owner_name - data["userMoney"] = A.money - data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job" - else - data["guestNotice"] = "Unlinked ID detected. Present cash to pay."; - - return data - -/obj/machinery/vending/tgui_act(action, params) - if(stat & (BROKEN|NOPOWER)) - return - if(usr.stat || usr.restrained()) - return - if(..()) - return TRUE - - . = TRUE - switch(action) - if("remove_coin") - if(issilicon(usr)) - return FALSE - - if(!coin) - to_chat(usr, "There is no coin in this machine.") - return - - coin.forceMove(src.loc) - if(!usr.get_active_hand()) - usr.put_in_hands(coin) - - to_chat(usr, "You remove \the [coin] from \the [src].") - coin = null - categories &= ~CAT_COIN - return TRUE - if("vend") - if(!vend_ready) - to_chat(usr, "[src] is busy!") - return - if(!allowed(usr) && !emagged && scan_id) - to_chat(usr, "Access denied.") //Unless emagged of course - flick("[icon_state]-deny",src) - playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) - return - if(panel_open) - to_chat(usr, "[src] cannot dispense products while its service panel is open!") - return - - var/key = text2num(params["vend"]) - var/datum/stored_item/vending_product/R = product_records[key] - - // This should not happen unless the request from NanoUI was bad - if(!(R.category & categories)) - return - - if(!can_buy(R, usr)) - return - if(R.price <= 0) - vend(R, usr) - add_fingerprint(usr) - return TRUE - - if(issilicon(usr)) //If the item is not free, provide feedback if a synth is trying to buy something. - to_chat(usr, "Lawed unit recognized. Lawed units cannot complete this transaction. Purchase canceled.") - return - if(!ishuman(usr)) - return - - - vend_ready = FALSE // From this point onwards, vendor is locked to performing this transaction only, until it is resolved. - - var/mob/living/carbon/human/H = usr - var/obj/item/weapon/card/id/C = H.GetIdCard() - - if(!vendor_account || vendor_account.suspended) - to_chat(usr, "Vendor account offline. Unable to process transaction.") - flick("[icon_state]-deny",src) - vend_ready = TRUE - return - - currently_vending = R - - var/paid = FALSE - - if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash)) - var/obj/item/weapon/spacecash/cash = usr.get_active_hand() - paid = pay_with_cash(cash, usr) - else if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash/ewallet)) - var/obj/item/weapon/spacecash/ewallet/wallet = usr.get_active_hand() - paid = pay_with_ewallet(wallet) - else if(istype(C, /obj/item/weapon/card)) - paid = pay_with_card(C, usr) - /*else if(usr.can_advanced_admin_interact()) - to_chat(usr, "Vending object due to admin interaction.") - paid = TRUE*/ - else - to_chat(usr, "Payment failure: you have no ID or other method of payment.") - vend_ready = TRUE - flick("[icon_state]-deny",src) - return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update. - if(paid) - vend(currently_vending, usr) // vend will handle vend_ready - . = TRUE - else - to_chat(usr, "Payment failure: unable to process payment.") - vend_ready = TRUE - - if("togglevoice") - if(!panel_open) - return FALSE - shut_up = !shut_up - -/obj/machinery/vending/proc/can_buy(datum/stored_item/vending_product/R, mob/user) - if(!allowed(user) && !emagged && scan_id) - to_chat(user, "Access denied.") //Unless emagged of course - flick("[icon_state]-deny",src) - playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) - return FALSE - return TRUE - -/obj/machinery/vending/proc/vend(datum/stored_item/vending_product/R, mob/user) - if(!can_buy(R, user)) - return - - if(!R.amount) - to_chat(user, "[src] has ran out of that product.") - vend_ready = TRUE - return - - vend_ready = FALSE //One thing at a time!! - SStgui.update_uis(src) - - if(R.category & CAT_COIN) - if(!coin) - to_chat(user, "You need to insert a coin to get this item.") - return - if(coin.string_attached) - if(prob(50)) - to_chat(user, "You successfully pull the coin out before \the [src] could swallow it.") - else - to_chat(user, "You weren't able to pull the coin out fast enough, the machine ate it, string and all.") - qdel(coin) - coin = null - categories &= ~CAT_COIN - else - qdel(coin) - coin = null - categories &= ~CAT_COIN - - if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply) - spawn(0) - speak(vend_reply) - last_reply = world.time - - use_power(vend_power_usage) //actuators and stuff - flick("[icon_state]-vend",src) - addtimer(CALLBACK(src, .proc/delayed_vend, R, user), vend_delay) - -/obj/machinery/vending/proc/delayed_vend(datum/stored_item/vending_product/R, mob/user) - R.get_product(get_turf(src)) - if(has_logs) - do_logging(R, user, 1) - if(prob(1)) - sleep(3) - if(R.get_product(get_turf(src))) - visible_message("\The [src] clunks as it vends an additional item.") - playsound(src, "sound/[vending_sound]", 100, 1, 1) - - vend_ready = 1 - currently_vending = null - SStgui.update_uis(src) - GLOB.items_sold_shift_roundstat++ - -/obj/machinery/vending/proc/do_logging(datum/stored_item/vending_product/R, mob/user, var/vending = 0) - if(user.GetIdCard()) - var/obj/item/weapon/card/id/tempid = user.GetIdCard() - var/list/list_item = list() - if(vending) - list_item += "vend" - else - list_item += "stock" - list_item += tempid.registered_name - list_item += stationtime2text() - list_item += R.item_name - log[++log.len] = list_item - -/obj/machinery/vending/proc/show_log(mob/user as mob) - if(user.GetIdCard()) - var/obj/item/weapon/card/id/tempid = user.GetIdCard() - if(req_log_access in tempid.GetAccess()) - var/datum/browser/popup = new(user, "vending_log", "Vending Log", 700, 500) - var/dat = "" - dat += "
[name] Vending Log
" - dat += "
Welcome [user.name]!

" - dat += "Below are the recent vending logs for your vending machine.
" - for(var/i in log) - dat += json_encode(i) - dat += ";
" - popup.set_content(dat) - popup.open() - else - to_chat(user,"You do not have the required access to view the vending logs for this machine.") - - -/obj/machinery/vending/verb/rotate_clockwise() - set name = "Rotate Vending Machine Clockwise" - set category = "Object" - set src in oview(1) - - if (src.can_rotate == 0) - to_chat(usr, "\The [src] cannot be rotated.") - return 0 - - if (src.anchored || usr:stat) - to_chat(usr, "It is bolted down!") - return 0 - src.set_dir(turn(src.dir, 270)) - return 1 - -/obj/machinery/vending/verb/check_logs() - set name = "Check Vending Logs" - set category = "Object" - set src in oview(1) - - show_log(usr) - -/** - * Add item to the machine - * - * Checks if item is vendable in this machine should be performed before - * calling. W is the item being inserted, R is the associated vending_product entry. - */ -/obj/machinery/vending/proc/stock(obj/item/weapon/W, var/datum/stored_item/vending_product/R, var/mob/user) - if(!user.unEquip(W)) - return - - to_chat(user, "You insert \the [W] in the product receptor.") - R.add_product(W) - if(has_logs) - do_logging(R, user) - - SStgui.update_uis(src) - -/obj/machinery/vending/process() - if(stat & (BROKEN|NOPOWER)) - return - - if(!active) - return - - if(seconds_electrified > 0) - seconds_electrified-- - - //Pitch to the people! Really sell it! - if(((last_slogan + slogan_delay) <= world.time) && (slogan_list.len > 0) && (!shut_up) && prob(5)) - var/slogan = pick(slogan_list) - speak(slogan) - last_slogan = world.time - - if(shoot_inventory && prob(2)) - throw_item() - - return - -/obj/machinery/vending/proc/speak(var/message) - if(stat & NOPOWER) - return - - if(!message) - return - - for(var/mob/O in hearers(src, null)) - O.show_message("\The [src] beeps, \"[message]\"",2) - return - -/obj/machinery/vending/power_change() - ..() - if(stat & BROKEN) - icon_state = "[initial(icon_state)]-broken" - else - if(!(stat & NOPOWER)) - icon_state = initial(icon_state) - else - spawn(rand(0, 15)) - icon_state = "[initial(icon_state)]-off" - -//Oh no we're malfunctioning! Dump out some product and break. -/obj/machinery/vending/proc/malfunction() - for(var/datum/stored_item/vending_product/R in product_records) - while(R.get_amount()>0) - R.get_product(loc) - break - - stat |= BROKEN - icon_state = "[initial(icon_state)]-broken" - return - -//Somebody cut an important wire and now we're following a new definition of "pitch." -/obj/machinery/vending/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return 0 - - for(var/datum/stored_item/vending_product/R in product_records) - throw_item = R.get_product(loc) - if(!throw_item) - continue - break - if(!throw_item) - return 0 - spawn(0) - throw_item.throw_at(target, 16, 3, src) - visible_message("\The [src] launches \a [throw_item] at \the [target]!") - return 1 - -//Actual machines are in vending_machines.dm +/// +/// A vending machine +/// + +// +// ALL THE VENDING MACHINES ARE IN vending_machines.dm now! +// + +/obj/machinery/vending + name = "Vendomat" + desc = "A generic vending machine." + icon = 'icons/obj/vending.dmi' + icon_state = "generic" + anchored = 1 + density = 1 + clicksound = "button" + + // Power + use_power = USE_POWER_IDLE + idle_power_usage = 10 + var/vend_power_usage = 150 //actuators and stuff + + // Vending-related + var/active = 1 //No sales pitches if off! + var/vend_ready = 1 //Are we ready to vend?? Is it time?? + var/vend_delay = 10 //How long does it take to vend? + var/categories = CAT_NORMAL // Bitmask of cats we're currently showing + var/datum/stored_item/vending_product/currently_vending = null // What we're requesting payment for right now + var/vending_sound = "machines/vending/vending_drop.ogg" + + /* + Variables used to initialize the product list + These are used for initialization only, and so are optional if + product_records is specified + */ + var/list/products = list() // For each, use the following pattern: + var/list/contraband = list() // list(/type/path = amount,/type/path2 = amount2) + var/list/premium = list() // No specified amount = only one in stock + var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. + + // List of vending_product items available. + var/list/product_records = list() + + + // Variables used to initialize advertising + var/product_slogans = "" //String of slogans spoken out loud, separated by semicolons + var/product_ads = "" //String of small ad messages in the vending screen + + var/list/ads_list = list() + + // Stuff relating vocalizations + var/list/slogan_list = list() + var/shut_up = 1 //Stop spouting those godawful pitches! + var/vend_reply //Thank you for shopping! + var/last_reply = 0 + var/last_slogan = 0 //When did we last pitch? + var/slogan_delay = 6000 //How long until we can pitch again? + + // Things that can go wrong + emagged = 0 //Ignores if somebody doesn't have card access to that machine. + var/seconds_electrified = 0 //Shock customers like an airlock. + var/shoot_inventory = 0 //Fire items at customers! We're broken! + + var/scan_id = 1 + var/obj/item/weapon/coin/coin + var/datum/wires/vending/wires = null + + var/list/log = list() + var/req_log_access = access_cargo //default access for checking logs is cargo + var/has_logs = 0 //defaults to 0, set to anything else for vendor to have logs + var/can_rotate = 1 //Defaults to yes, can be set to 0 for vendors without or with unwanted directionals. + + +/obj/machinery/vending/Initialize() + . = ..() + wires = new(src) + if(product_slogans) + slogan_list += splittext(product_slogans, ";") + + // So not all machines speak at the exact same time. + // The first time this machine says something will be at slogantime + this random value, + // so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated. + last_slogan = world.time + rand(0, slogan_delay) + + if(product_ads) + ads_list += splittext(product_ads, ";") + + build_inventory() + power_change() + +GLOBAL_LIST_EMPTY(vending_products) +/** + * Build produdct_records from the products lists + * + * products, contraband, premium, and prices allow specifying + * products that the vending machine is to carry without manually populating + * product_records. + */ +/obj/machinery/vending/proc/build_inventory() + var/list/all_products = list( + list(products, CAT_NORMAL), + list(contraband, CAT_HIDDEN), + list(premium, CAT_COIN)) + + for(var/current_list in all_products) + var/category = current_list[2] + + for(var/entry in current_list[1]) + var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry) + + product.price = (entry in prices) ? prices[entry] : 0 + product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 + product.category = category + + product_records.Add(product) + GLOB.vending_products[entry] = 1 + +/obj/machinery/vending/Destroy() + qdel(wires) + wires = null + qdel(coin) + coin = null + for(var/datum/stored_item/vending_product/R in product_records) + qdel(R) + product_records = null + return ..() + +/obj/machinery/vending/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if(prob(50)) + qdel(src) + return + if(3.0) + if(prob(25)) + spawn(0) + malfunction() + return + return + else + return + +/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + to_chat(user, "You short out \the [src]'s product lock.") + return 1 + +/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob) + var/obj/item/weapon/card/id/I = W.GetID() + + if(I || istype(W, /obj/item/weapon/spacecash)) + attack_hand(user) + return + else if(W.is_screwdriver()) + panel_open = !panel_open + to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") + playsound(src, W.usesound, 50, 1) + if(panel_open) + wires.Interact(user) + add_overlay("[initial(icon_state)]-panel") + else + cut_overlay("[initial(icon_state)]-panel") + + SStgui.update_uis(src) // Speaker switch is on the main UI, not wires UI + return + else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter()) + if(panel_open) + attack_hand(user) + return + else if(istype(W, /obj/item/weapon/coin) && premium.len > 0) + user.drop_item() + W.forceMove(src) + coin = W + categories |= CAT_COIN + to_chat(user, "You insert \the [W] into \the [src].") + SStgui.update_uis(src) + return + else if(W.is_wrench()) + playsound(src, W.usesound, 100, 1) + if(anchored) + user.visible_message("[user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") + else + user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.") + + if(do_after(user, 20 * W.toolspeed)) + if(!src) return + to_chat(user, "You [anchored? "un" : ""]secured \the [src]!") + anchored = !anchored + return + else + + for(var/datum/stored_item/vending_product/R in product_records) + if(istype(W, R.item_path) && (W.name == R.item_name)) + stock(W, R, user) + return + ..() + +/** + * Receive payment with cashmoney. + * + * usr is the mob who gets the change. + */ +/obj/machinery/vending/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, mob/user) + if(currently_vending.price > cashmoney.worth) + + // This is not a status display message, since it's something the character + // themselves is meant to see BEFORE putting the money in + to_chat(usr, "[bicon(cashmoney)] That is not enough money.") + return 0 + + if(istype(cashmoney, /obj/item/weapon/spacecash)) + + visible_message("\The [usr] inserts some cash into \the [src].") + cashmoney.worth -= currently_vending.price + + if(cashmoney.worth <= 0) + usr.drop_from_inventory(cashmoney) + qdel(cashmoney) + else + cashmoney.update_icon() + + // Vending machines have no idea who paid with cash + credit_purchase("(cash)") + return 1 + +/** + * Scan a chargecard and deduct payment from it. + * + * Takes payment for whatever is the currently_vending item. Returns 1 if + * successful, 0 if failed. + */ +/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/weapon/spacecash/ewallet/wallet) + visible_message("\The [usr] swipes \the [wallet] through \the [src].") + playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) + if(currently_vending.price > wallet.worth) + to_chat(usr, "Insufficient funds on chargecard.") + return 0 + else + wallet.worth -= currently_vending.price + credit_purchase("[wallet.owner_name] (chargecard)") + return 1 + +/** + * Scan a card and attempt to transfer payment from associated account. + * + * Takes payment for whatever is the currently_vending item. Returns 1 if + * successful, 0 if failed + */ +/obj/machinery/vending/proc/pay_with_card(obj/item/weapon/card/id/I, mob/M) + visible_message("[M] swipes a card through [src].") + playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) + + var/datum/money_account/customer_account = get_account(I.associated_account_number) + if(!customer_account) + to_chat(M, "Error: Unable to access account. Please contact technical support if problem persists.") + return FALSE + + if(customer_account.suspended) + to_chat(M, "Unable to access account: account suspended.") + return FALSE + + // Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is + // empty at high security levels + if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) + var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2) + + if(!customer_account) + to_chat(M, "Unable to access account: incorrect credentials.") + return FALSE + + if(currently_vending.price > customer_account.money) + to_chat(M, "Insufficient funds in account.") + return FALSE + + // Okay to move the money at this point + + // debit money from the purchaser's account + customer_account.money -= currently_vending.price + + // create entry in the purchaser's account log + var/datum/transaction/T = new() + T.target_name = "[vendor_account.owner_name] (via [name])" + T.purpose = "Purchase of [currently_vending.item_name]" + if(currently_vending.price > 0) + T.amount = "([currently_vending.price])" + else + T.amount = "[currently_vending.price]" + T.source_terminal = name + T.date = current_date_string + T.time = stationtime2text() + customer_account.transaction_log.Add(T) + + // Give the vendor the money. We use the account owner name, which means + // that purchases made with stolen/borrowed card will look like the card + // owner made them + credit_purchase(customer_account.owner_name) + return 1 + +/** + * Add money for current purchase to the vendor account. + * + * Called after the money has already been taken from the customer. + */ +/obj/machinery/vending/proc/credit_purchase(var/target as text) + vendor_account.money += currently_vending.price + + var/datum/transaction/T = new() + T.target_name = target + T.purpose = "Purchase of [currently_vending.item_name]" + T.amount = "[currently_vending.price]" + T.source_terminal = name + T.date = current_date_string + T.time = stationtime2text() + vendor_account.transaction_log.Add(T) + +/obj/machinery/vending/attack_ghost(mob/user) + return attack_hand(user) + +/obj/machinery/vending/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/vending/attack_hand(mob/user as mob) + if(stat & (BROKEN|NOPOWER)) + return + + if(seconds_electrified != 0) + if(shock(user, 100)) + return + + wires.Interact(user) + tgui_interact(user) + +/obj/machinery/vending/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/vending), + ) + +/obj/machinery/vending/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Vending", name) + ui.open() + +/obj/machinery/vending/tgui_data(mob/user) + var/list/data = list() + var/list/listed_products = list() + + data["chargesMoney"] = length(prices) > 0 ? TRUE : FALSE + for(var/key = 1 to product_records.len) + var/datum/stored_item/vending_product/I = product_records[key] + + if(!(I.category & categories)) + continue + + listed_products.Add(list(list( + "key" = key, + "name" = I.item_name, + "price" = I.price, + "color" = I.display_color, + "isatom" = ispath(I.item_path, /atom), + "path" = replacetext(replacetext("[I.item_path]", "/obj/item/", ""), "/", "-"), + "amount" = I.get_amount() + ))) + + data["products"] = listed_products + + if(coin) + data["coin"] = coin.name + else + data["coin"] = FALSE + + if(currently_vending) + data["actively_vending"] = currently_vending.item_name + else + data["actively_vending"] = null + + if(panel_open) + data["panel"] = 1 + data["speaker"] = shut_up ? 0 : 1 + else + data["panel"] = 0 + + var/mob/living/carbon/human/H + var/obj/item/weapon/card/id/C + + data["guestNotice"] = "No valid ID card detected. Wear your ID, or present cash."; + data["userMoney"] = 0 + data["user"] = null + if(ishuman(user)) + H = user + C = H.GetIdCard() + var/obj/item/weapon/spacecash/S = H.get_active_hand() + if(istype(S)) + data["userMoney"] = S.worth + data["guestNotice"] = "Accepting [S.initial_name]. You have: [S.worth]â‚®." + else if(istype(C)) + var/datum/money_account/A = get_account(C.associated_account_number) + if(istype(A)) + data["user"] = list() + data["user"]["name"] = A.owner_name + data["userMoney"] = A.money + data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job" + else + data["guestNotice"] = "Unlinked ID detected. Present cash to pay."; + + return data + +/obj/machinery/vending/tgui_act(action, params) + if(stat & (BROKEN|NOPOWER)) + return + if(usr.stat || usr.restrained()) + return + if(..()) + return TRUE + + . = TRUE + switch(action) + if("remove_coin") + if(issilicon(usr)) + return FALSE + + if(!coin) + to_chat(usr, "There is no coin in this machine.") + return + + coin.forceMove(src.loc) + if(!usr.get_active_hand()) + usr.put_in_hands(coin) + + to_chat(usr, "You remove \the [coin] from \the [src].") + coin = null + categories &= ~CAT_COIN + return TRUE + if("vend") + if(!vend_ready) + to_chat(usr, "[src] is busy!") + return + if(!allowed(usr) && !emagged && scan_id) + to_chat(usr, "Access denied.") //Unless emagged of course + flick("[icon_state]-deny",src) + playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) + return + if(panel_open) + to_chat(usr, "[src] cannot dispense products while its service panel is open!") + return + + var/key = text2num(params["vend"]) + var/datum/stored_item/vending_product/R = product_records[key] + + // This should not happen unless the request from NanoUI was bad + if(!(R.category & categories)) + return + + if(!can_buy(R, usr)) + return + + if(R.price <= 0) + vend(R, usr) + add_fingerprint(usr) + return TRUE + + if(issilicon(usr)) //If the item is not free, provide feedback if a synth is trying to buy something. + to_chat(usr, "Lawed unit recognized. Lawed units cannot complete this transaction. Purchase canceled.") + return + if(!ishuman(usr)) + return + + vend_ready = FALSE // From this point onwards, vendor is locked to performing this transaction only, until it is resolved. + + var/mob/living/carbon/human/H = usr + var/obj/item/weapon/card/id/C = H.GetIdCard() + + if(!vendor_account || vendor_account.suspended) + to_chat(usr, "Vendor account offline. Unable to process transaction.") + flick("[icon_state]-deny",src) + vend_ready = TRUE + return + + currently_vending = R + + var/paid = FALSE + + if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash)) + var/obj/item/weapon/spacecash/cash = usr.get_active_hand() + paid = pay_with_cash(cash, usr) + else if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash/ewallet)) + var/obj/item/weapon/spacecash/ewallet/wallet = usr.get_active_hand() + paid = pay_with_ewallet(wallet) + else if(istype(C, /obj/item/weapon/card)) + paid = pay_with_card(C, usr) + /*else if(usr.can_advanced_admin_interact()) + to_chat(usr, "Vending object due to admin interaction.") + paid = TRUE*/ + else + to_chat(usr, "Payment failure: you have no ID or other method of payment.") + vend_ready = TRUE + flick("[icon_state]-deny",src) + return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update. + if(paid) + vend(currently_vending, usr) // vend will handle vend_ready + . = TRUE + else + to_chat(usr, "Payment failure: unable to process payment.") + vend_ready = TRUE + + if("togglevoice") + if(!panel_open) + return FALSE + shut_up = !shut_up + +/obj/machinery/vending/proc/can_buy(datum/stored_item/vending_product/R, mob/user) + if(!allowed(user) && !emagged && scan_id) + to_chat(user, "Access denied.") //Unless emagged of course + flick("[icon_state]-deny",src) + playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) + return FALSE + return TRUE + +/obj/machinery/vending/proc/vend(datum/stored_item/vending_product/R, mob/user) + if(!can_buy(R, user)) + return + + if(!R.amount) + to_chat(user, "[src] has ran out of that product.") + vend_ready = TRUE + return + + vend_ready = FALSE //One thing at a time!! + SStgui.update_uis(src) + + if(R.category & CAT_COIN) + if(!coin) + to_chat(user, "You need to insert a coin to get this item.") + return + if(coin.string_attached) + if(prob(50)) + to_chat(user, "You successfully pull the coin out before \the [src] could swallow it.") + else + to_chat(user, "You weren't able to pull the coin out fast enough, the machine ate it, string and all.") + qdel(coin) + coin = null + categories &= ~CAT_COIN + else + qdel(coin) + coin = null + categories &= ~CAT_COIN + + if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply) + spawn(0) + speak(vend_reply) + last_reply = world.time + + use_power(vend_power_usage) //actuators and stuff + flick("[icon_state]-vend",src) + addtimer(CALLBACK(src, .proc/delayed_vend, R, user), vend_delay) + +/obj/machinery/vending/proc/delayed_vend(datum/stored_item/vending_product/R, mob/user) + R.get_product(get_turf(src)) + if(has_logs) + do_logging(R, user, 1) + if(prob(1)) + sleep(3) + if(R.get_product(get_turf(src))) + visible_message("\The [src] clunks as it vends an additional item.") + playsound(src, "sound/[vending_sound]", 100, 1, 1) + + GLOB.items_sold_shift_roundstat++ + + vend_ready = 1 + currently_vending = null + SStgui.update_uis(src) + + +/obj/machinery/vending/proc/do_logging(datum/stored_item/vending_product/R, mob/user, var/vending = 0) + if(user.GetIdCard()) + var/obj/item/weapon/card/id/tempid = user.GetIdCard() + var/list/list_item = list() + if(vending) + list_item += "vend" + else + list_item += "stock" + list_item += tempid.registered_name + list_item += stationtime2text() + list_item += R.item_name + log[++log.len] = list_item + +/obj/machinery/vending/proc/show_log(mob/user as mob) + if(user.GetIdCard()) + var/obj/item/weapon/card/id/tempid = user.GetIdCard() + if(req_log_access in tempid.GetAccess()) + var/datum/browser/popup = new(user, "vending_log", "Vending Log", 700, 500) + var/dat = "" + dat += "
[name] Vending Log
" + dat += "
Welcome [user.name]!

" + dat += "Below are the recent vending logs for your vending machine.
" + for(var/i in log) + dat += json_encode(i) + dat += ";
" + popup.set_content(dat) + popup.open() + else + to_chat(user,"You do not have the required access to view the vending logs for this machine.") + + +/obj/machinery/vending/verb/rotate_clockwise() + set name = "Rotate Vending Machine Clockwise" + set category = "Object" + set src in oview(1) + + if (src.can_rotate == 0) + to_chat(usr, "\The [src] cannot be rotated.") + return 0 + + if (src.anchored || usr:stat) + to_chat(usr, "It is bolted down!") + return 0 + src.set_dir(turn(src.dir, 270)) + return 1 + +/obj/machinery/vending/verb/check_logs() + set name = "Check Vending Logs" + set category = "Object" + set src in oview(1) + + show_log(usr) + +/** + * Add item to the machine + * + * Checks if item is vendable in this machine should be performed before + * calling. W is the item being inserted, R is the associated vending_product entry. + */ +/obj/machinery/vending/proc/stock(obj/item/weapon/W, var/datum/stored_item/vending_product/R, var/mob/user) + if(!user.unEquip(W)) + return + + to_chat(user, "You insert \the [W] in the product receptor.") + R.add_product(W) + if(has_logs) + do_logging(R, user) + + SStgui.update_uis(src) + +/obj/machinery/vending/process() + if(stat & (BROKEN|NOPOWER)) + return + + if(!active) + return + + if(seconds_electrified > 0) + seconds_electrified-- + + //Pitch to the people! Really sell it! + if(((last_slogan + slogan_delay) <= world.time) && (slogan_list.len > 0) && (!shut_up) && prob(5)) + var/slogan = pick(slogan_list) + speak(slogan) + last_slogan = world.time + + if(shoot_inventory && prob(2)) + throw_item() + + return + +/obj/machinery/vending/proc/speak(var/message) + if(stat & NOPOWER) + return + + if(!message) + return + + for(var/mob/O in hearers(src, null)) + O.show_message("\The [src] beeps, \"[message]\"",2) + return + +/obj/machinery/vending/power_change() + ..() + if(stat & BROKEN) + icon_state = "[initial(icon_state)]-broken" + else + if(!(stat & NOPOWER)) + icon_state = initial(icon_state) + else + spawn(rand(0, 15)) + icon_state = "[initial(icon_state)]-off" + +//Oh no we're malfunctioning! Dump out some product and break. +/obj/machinery/vending/proc/malfunction() + for(var/datum/stored_item/vending_product/R in product_records) + while(R.get_amount()>0) + R.get_product(loc) + break + + stat |= BROKEN + icon_state = "[initial(icon_state)]-broken" + return + +//Somebody cut an important wire and now we're following a new definition of "pitch." +/obj/machinery/vending/proc/throw_item() + var/obj/throw_item = null + var/mob/living/target = locate() in view(7,src) + if(!target) + return 0 + + for(var/datum/stored_item/vending_product/R in product_records) + throw_item = R.get_product(loc) + if(!throw_item) + continue + break + if(!throw_item) + return 0 + spawn(0) + throw_item.throw_at(target, 16, 3, src) + visible_message("\The [src] launches \a [throw_item] at \the [target]!") + return 1 + +//Actual machines are in vending_machines.dm diff --git a/code/game/machinery/vending_machines.dm b/code/modules/economy/vending_machines.dm similarity index 100% rename from code/game/machinery/vending_machines.dm rename to code/modules/economy/vending_machines.dm diff --git a/code/modules/emotes/definitions/_mob.dm b/code/modules/emotes/definitions/_mob.dm new file mode 100644 index 0000000000..8c10b4cde2 --- /dev/null +++ b/code/modules/emotes/definitions/_mob.dm @@ -0,0 +1,41 @@ +var/list/_default_mob_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible, + /decl/emote/audible/hiss, + /decl/emote/audible/whimper, + /decl/emote/audible/gasp, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/moan, + /decl/emote/audible/gnarl, +) + +/mob + var/list/usable_emotes + +/mob/proc/update_emotes(var/skip_sort) + usable_emotes = list() + for(var/emote in get_default_emotes()) + var/decl/emote/emote_datum = decls_repository.get_decl(emote) + if(emote_datum.check_user(src)) + usable_emotes[emote_datum.key] = emote_datum + if(!skip_sort) + usable_emotes = sortAssoc(usable_emotes) + +/mob/proc/get_default_emotes() + return global._default_mob_emotes diff --git a/code/modules/emotes/definitions/_species.dm b/code/modules/emotes/definitions/_species.dm new file mode 100644 index 0000000000..ff15df2fae --- /dev/null +++ b/code/modules/emotes/definitions/_species.dm @@ -0,0 +1,11 @@ +/datum/species + var/list/default_emotes = list() + +/mob/living/carbon/update_emotes(var/skip_sort) + . = ..(skip_sort = TRUE) + if(species) + for(var/emote in species.default_emotes) + var/decl/emote/emote_datum = decls_repository.get_decl(emote) + if(emote_datum.check_user(src)) + usable_emotes[emote_datum.key] = emote_datum + usable_emotes = sortAssoc(usable_emotes) diff --git a/code/modules/emotes/definitions/audible_cough.dm b/code/modules/emotes/definitions/audible_cough.dm new file mode 100644 index 0000000000..4e28d1db91 --- /dev/null +++ b/code/modules/emotes/definitions/audible_cough.dm @@ -0,0 +1,52 @@ +/decl/emote/audible/cough + key = "cough" + emote_message_1p = "You cough!" + emote_message_1p_target = "You cough on TARGET!" + emote_message_3p = "coughs!" + emote_message_3p_target = "coughs on TARGET!" + emote_message_synthetic_1p_target = "You emit a robotic cough towards TARGET." + emote_message_synthetic_1p = "You emit a robotic cough." + emote_message_synthetic_3p_target = "emits a robotic cough towards TARGET." + emote_message_synthetic_3p = "emits a robotic cough." + emote_volume = 120 + emote_volume_synthetic = 50 + + conscious = FALSE + emote_sound_synthetic = list( + FEMALE = list( + 'sound/effects/mob_effects/f_machine_cougha.ogg', + 'sound/effects/mob_effects/f_machine_coughb.ogg' + ), + MALE = list( + 'sound/effects/mob_effects/m_machine_cougha.ogg', + 'sound/effects/mob_effects/m_machine_coughb.ogg', + 'sound/effects/mob_effects/m_machine_coughc.ogg' + ), + NEUTER = list( + 'sound/effects/mob_effects/m_machine_cougha.ogg', + 'sound/effects/mob_effects/m_machine_coughb.ogg', + 'sound/effects/mob_effects/m_machine_coughc.ogg' + ), + PLURAL = list( + 'sound/effects/mob_effects/m_machine_cougha.ogg', + 'sound/effects/mob_effects/m_machine_coughb.ogg', + 'sound/effects/mob_effects/m_machine_coughc.ogg' + ) + ) + +/decl/emote/audible/cough/get_emote_sound(var/atom/user) + if(ishuman(user) && !check_synthetic(user)) + var/mob/living/carbon/human/H = user + if(H.get_gender() == FEMALE) + if(length(H.species.female_cough_sounds)) + return list( + "sound" = H.species.female_cough_sounds, + "vol" = emote_volume + ) + else + if(length(H.species.male_cough_sounds)) + return list( + "sound" = H.species.male_cough_sounds, + "vol" = emote_volume + ) + return ..() diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm new file mode 100644 index 0000000000..681e9101a2 --- /dev/null +++ b/code/modules/emotes/definitions/audible_furry_vr.dm @@ -0,0 +1,129 @@ +/decl/emote/audible/awoo + key = "awoo" + emote_message_3p = "lets out an awoo." + emote_sound = 'sound/voice/awoo.ogg' +/decl/emote/audible/awoo2 + key = "awoo2" + emote_message_3p = "lets out an awoo." + emote_sound = 'sound/voice/long_awoo.ogg' +/decl/emote/audible/growl + key = "growl" + emote_message_3p = "lets out a growl." + emote_sound = 'sound/voice/growl.ogg' +/decl/emote/audible/woof + key = "woof" + emote_message_3p = "lets out a woof." + emote_sound = 'sound/voice/woof.ogg' +/decl/emote/audible/woof2 + key = "woof2" + emote_message_3p = "lets out a woof." + emote_sound = 'sound/voice/woof2.ogg' +/decl/emote/audible/nya + key = "nya" + emote_message_3p = "lets out a nya." + emote_sound = 'sound/voice/nya.ogg' +/decl/emote/audible/mrowl + key = "mrowl" + emote_message_3p = "mrowls." + emote_sound = 'sound/voice/mrow.ogg' +/decl/emote/audible/peep + key = "peep" + emote_message_3p = "peeps like a bird." + emote_sound = 'sound/voice/peep.ogg' +/decl/emote/audible/chirp + key = "chirp" + emote_message_3p = "chirps!" + emote_sound = 'sound/misc/nymphchirp.ogg' +/decl/emote/audible/hoot + key = "hoot" + emote_message_3p = "hoots!" + emote_sound = 'sound/voice/hoot.ogg' +/decl/emote/audible/weh + key = "weh" + emote_message_3p = "lets out a weh." + emote_sound = 'sound/voice/weh.ogg' +/decl/emote/audible/merp + key = "merp" + emote_message_3p = "lets out a merp." + emote_sound = 'sound/voice/merp.ogg' +/decl/emote/audible/myarp + key = "myarp" + emote_message_3p = "lets out a myarp." + emote_sound = 'sound/voice/myarp.ogg' +/decl/emote/audible/bark + key = "bark" + emote_message_3p = "lets out a bark." + emote_sound = 'sound/voice/bark2.ogg' +/decl/emote/audible/bork + key = "bork" + emote_message_3p = "lets out a bork." + emote_sound = 'sound/voice/bork.ogg' +/decl/emote/audible/mrow + emote_message_3p = "lets out a mrow." + emote_sound = 'sound/voice/mrow.ogg' +/decl/emote/audible/hypno + emote_message_3p = "lets out a mystifying tone." + emote_sound = 'sound/voice/hypno.ogg' +/decl/emote/audible/hiss + key = "hiss" + emote_message_3p = "lets out a hiss." + emote_sound = 'sound/voice/hiss.ogg' +/decl/emote/audible/rattle + key = "rattle" + emote_message_3p = "rattles!" + emote_sound = 'sound/voice/rattle.ogg' +/decl/emote/audible/squeak + key = "squeak" + emote_message_3p = "lets out a squeak." + emote_sound = 'sound/effects/mouse_squeak.ogg' +/decl/emote/audible/geck + key = "geck" + emote_message_3p = "geckers!" + emote_sound = 'sound/voice/geck.ogg' +/decl/emote/audible/baa + key = "baa" + emote_message_3p = "lets out a baa." + emote_sound = 'sound/voice/baa.ogg' +/decl/emote/audible/baa2 + key = "baa2" + emote_message_3p = "bleats." + emote_sound = 'sound/voice/baa2.ogg' +/* +/decl/emote/audible/deathgasp2 + key = "deathgasp2" + emote_message_3p = "[species.get_death_message()]" + m_type = 1 + emote_sound = 'sound/voice/deathgasp2.ogg' +*/ +/decl/emote/audible/mar + key = "mar" + emote_message_3p = "lets out a mar." + emote_sound = 'sound/voice/mar.ogg' +/decl/emote/audible/wurble + key = "wurble" + emote_message_3p = "lets out a wurble." + emote_sound = 'sound/voice/wurble.ogg' +/decl/emote/audible/snort + key = "snort" + emote_message_3p = "snorts!" + emote_sound = 'sound/voice/Snort.ogg' +/decl/emote/audible/meow + key = "meow" + emote_message_3p = "gently meows!" + emote_sound = 'sound/voice/Meow.ogg' +/decl/emote/audible/moo + key = "moo" + emote_message_3p = "takes a breath and lets out a moo." + emote_sound = 'sound/voice/Moo.ogg' +/decl/emote/audible/croak + key = "croak" + emote_message_3p = "rumbles their throat, puffs their cheeks and croaks." + emote_sound = 'sound/voice/Croak.ogg' +/decl/emote/audible/gao + key = "gao" + emote_message_3p = "lets out a gao." + emote_sound = 'sound/voice/gao.ogg' +/decl/emote/audible/cackle + key = "cackle" + emote_message_3p = "cackles hysterically!" + emote_sound = 'sound/voice/YeenCackle.ogg' diff --git a/code/modules/emotes/definitions/audible_scream.dm b/code/modules/emotes/definitions/audible_scream.dm new file mode 100644 index 0000000000..00ed9c29fc --- /dev/null +++ b/code/modules/emotes/definitions/audible_scream.dm @@ -0,0 +1,16 @@ +/decl/emote/audible/scream + key = "scream" + emote_message_1p = "You scream!" + emote_message_3p = "screams!" + +/decl/emote/audible/scream/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + return "You [H.species.scream_verb_1p]!" + . = ..() + +/decl/emote/audible/cough/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + return "[H.species.scream_verb_3p]!" + . = ..() diff --git a/code/modules/emotes/definitions/audible_slap.dm b/code/modules/emotes/definitions/audible_slap.dm new file mode 100644 index 0000000000..d0b5466c30 --- /dev/null +++ b/code/modules/emotes/definitions/audible_slap.dm @@ -0,0 +1,24 @@ +/decl/emote/audible/slap + key = "slap" + emote_message_1p_target = "You slap TARGET across the face. Ouch!" + emote_message_1p = "You slap yourself across the face!" + emote_message_3p_target = "slaps TARGET across the face. Ouch!" + emote_message_3p = "slaps USER_SELF across the face!" + emote_sound = 'sound/effects/snap.ogg' + check_restraints = TRUE + check_range = 1 + +/decl/emote/audible/slap/New() + ..() + emote_message_1p_target = SPAN_DANGER(emote_message_1p_target) + emote_message_1p = SPAN_DANGER(emote_message_1p) + emote_message_3p_target = SPAN_DANGER(emote_message_3p_target) + emote_message_3p = SPAN_DANGER(emote_message_3p) + +/decl/emote/audible/slap/do_extra(var/atom/user, var/atom/target) + . = ..() + if(ishuman(target)) + var/mob/living/carbon/human/H = target + var/obj/item/clothing/mask/smokable/mask = H.wear_mask + if(istype(mask) && H.unEquip(mask)) + mask.forceMove(get_turf(H)) diff --git a/code/modules/emotes/definitions/audible_sneeze.dm b/code/modules/emotes/definitions/audible_sneeze.dm new file mode 100644 index 0000000000..a15cbaf46d --- /dev/null +++ b/code/modules/emotes/definitions/audible_sneeze.dm @@ -0,0 +1,29 @@ +/decl/emote/audible/sneeze + key = "sneeze" + emote_message_1p = "You sneeze." + emote_message_3p = "sneezes." + emote_sound_synthetic = list( + FEMALE = 'sound/effects/mob_effects/machine_sneeze.ogg', + MALE = 'sound/effects/mob_effects/f_machine_sneeze.ogg', + NEUTER = 'sound/effects/mob_effects/f_machine_sneeze.ogg', + PLURAL = 'sound/effects/mob_effects/f_machine_sneeze.ogg' + ) + emote_message_synthetic_1p = "You emit a robotic sneeze." + emote_message_synthetic_1p_target = "You emit a robotic sneeze towards TARGET." + emote_message_synthetic_3p = "emits a robotic sneeze." + emote_message_synthetic_3p_target = "emits a robotic sneeze towards TARGET." + +/decl/emote/audible/sneeze/get_emote_sound(var/atom/user) + if(ishuman(user) && !check_synthetic(user)) + var/mob/living/carbon/human/H = user + if(H.get_gender() == FEMALE) + return list( + "sound" = H.species.female_sneeze_sound, + "vol" = emote_volume + ) + else + return list( + "sound" = H.species.male_sneeze_sound, + "vol" = emote_volume + ) + return ..() diff --git a/code/modules/emotes/definitions/audible_whistle.dm b/code/modules/emotes/definitions/audible_whistle.dm new file mode 100644 index 0000000000..dabd64af59 --- /dev/null +++ b/code/modules/emotes/definitions/audible_whistle.dm @@ -0,0 +1,36 @@ +/decl/emote/audible/whistle + key = "whistle" + emote_message_1p = "You whistle a tune." + emote_message_3p = "whistles a tune." + emote_sound = 'sound/voice/longwhistle.ogg' + emote_message_muffled = "makes a light spitting noise, a poor attempt at a whistle." + emote_sound_synthetic = 'sound/voice/longwhistle_robot.ogg' + emote_message_synthetic_1p = "You whistle a robotic tune." + emote_message_synthetic_3p = "whistles a robotic tune." + +/decl/emote/audible/whistle/quiet + key = "qwhistle" + emote_message_1p = "You whistle quietly." + emote_message_3p = "whistles quietly." + emote_sound = 'sound/voice/shortwhistle.ogg' + emote_message_synthetic_1p = "You whistle robotically." + emote_message_synthetic_3p = "whistles robotically." + emote_sound_synthetic = 'sound/voice/shortwhistle_robot.ogg' + +/decl/emote/audible/whistle/wolf + key = "wwhistle" + emote_message_1p = "You whistle inappropriately." + emote_message_3p = "whistles inappropriately." + emote_sound = 'sound/voice/wolfwhistle.ogg' + emote_message_synthetic_1p = "You beep inappropriately." + emote_message_synthetic_3p = "beeps inappropriately." + emote_sound_synthetic = 'sound/voice/wolfwhistle_robot.ogg' + +/decl/emote/audible/whistle/summon + key = "swhistle" + emote_message_1p = "You whistle a tune." + emote_message_3p = "whistles a tune." + emote_sound = 'sound/voice/summon_whistle.ogg' + emote_message_synthetic_1p = "You whistle a robotic tune." + emote_message_synthetic_3p = "whistles a robotic tune." + emote_sound_synthetic = 'sound/voice/summon_whistle_robot.ogg' diff --git a/code/modules/emotes/definitions/exertion.dm b/code/modules/emotes/definitions/exertion.dm new file mode 100644 index 0000000000..ac0061cca3 --- /dev/null +++ b/code/modules/emotes/definitions/exertion.dm @@ -0,0 +1,40 @@ +/decl/emote/exertion/biological + key = "esweat" + emote_range = 4 + emote_message_1p = "You are sweating heavily." + emote_message_3p = "is sweating heavily." + +/decl/emote/exertion/biological/check_user(mob/living/user) + if(istype(user) && !user.isSynthetic()) + return ..() + return FALSE + +/decl/emote/exertion/biological/breath + key = "ebreath" + emote_message_1p = "You feel out of breath." + emote_message_3p = "looks out of breath." + +/decl/emote/exertion/biological/pant + key = "epant" + emote_range = 3 + message_type = AUDIBLE_MESSAGE + emote_message_1p = "You pant to catch your breath." + emote_message_3p = "pants for air." + emote_message_impaired = "You can see USER breathing heavily." + +/decl/emote/exertion/synthetic + key = "ewhine" + emote_range = 3 + message_type = AUDIBLE_MESSAGE + emote_message_1p = "You overstress your actuators." + emote_message_3p = "USER's actuators whine with strain." + +/decl/emote/exertion/synthetic/check_user(mob/living/user) + if(istype(user) && user.isSynthetic()) + return ..() + return FALSE + +/decl/emote/exertion/synthetic/creak + key = "ecreak" + emote_message_1p = "Your chassis stress indicators spike." + emote_message_3p = "USER's joints creak with stress." diff --git a/code/modules/emotes/definitions/helpers_vr.dm b/code/modules/emotes/definitions/helpers_vr.dm new file mode 100644 index 0000000000..6dc3a79bdd --- /dev/null +++ b/code/modules/emotes/definitions/helpers_vr.dm @@ -0,0 +1,33 @@ +// Not specifically /human type because those won't allow FBPs to use them +/decl/emote/helper/vwag + key = "vwag" + emote_message_3p = "" + +/decl/emote/helper/vwag/check_user(mob/living/carbon/human/user) + if(!istype(user) || (!user.tail_style || !user.tail_style.ani_state)) + return FALSE + return ..() + +/decl/emote/helper/vwag/do_emote(var/mob/living/carbon/human/user, var/extra_params) + if(user.toggle_tail(message = 1)) + return ..() + +/decl/emote/helper/vwag/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params) + return "[user.wagging ? "starts" : "stops"] wagging USER_THEIR tail." + + +/decl/emote/helper/vflap + key = "vflap" + emote_message_3p = "" + +/decl/emote/helper/vflap/check_user(mob/living/carbon/human/user) + if(!istype(user) || (!user.wing_style || !user.wing_style.ani_state)) + return FALSE + return ..() + +/decl/emote/helper/vflap/do_emote(var/mob/living/carbon/human/user, var/extra_params) + if(user.toggle_wing(message = 1)) + return ..() + +/decl/emote/helper/vflap/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params) + return "[user.flapping ? "starts" : "stops"] flapping USER_THEIR wings." diff --git a/code/modules/emotes/definitions/human.dm b/code/modules/emotes/definitions/human.dm new file mode 100644 index 0000000000..982e472c5f --- /dev/null +++ b/code/modules/emotes/definitions/human.dm @@ -0,0 +1,62 @@ +/decl/emote/human + key = "vomit" + +/decl/emote/human/check_user(var/mob/living/carbon/human/user) + return (istype(user))//VOREStation Edit - What does a mouth have to do with wagging?? && user.check_has_mouth() && !user.isSynthetic()) + +/decl/emote/human/do_emote(var/mob/living/carbon/human/user) + user.vomit() + +/decl/emote/human/deathgasp + key = "deathgasp" + +/decl/emote/human/deathgasp/do_emote(mob/living/carbon/human/user) + if(istype(user) && user.species.get_death_message(user) == DEATHGASP_NO_MESSAGE) + to_chat(user, SPAN_WARNING("Your species has no deathgasp.")) + return + . = ..() + +/decl/emote/human/deathgasp/get_emote_message_3p(var/mob/living/carbon/human/user) + return "USER [user.species.get_death_message(user)]" + +/decl/emote/human/swish + key = "swish" + +/decl/emote/human/swish/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_once() + +/decl/emote/human/wag + key = "wag" + +/decl/emote/human/wag/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_start() + +/decl/emote/human/sway + key = "sway" + +/decl/emote/human/sway/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_start() + +/decl/emote/human/qwag + key = "qwag" + +/decl/emote/human/qwag/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_fast() + +/decl/emote/human/fastsway + key = "fastsway" + +/decl/emote/human/fastsway/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_fast() + +/decl/emote/human/swag + key = "swag" + +/decl/emote/human/swag/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_stop() + +/decl/emote/human/stopsway + key = "stopsway" + +/decl/emote/human/stopsway/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_stop() diff --git a/code/modules/emotes/definitions/slimes.dm b/code/modules/emotes/definitions/slimes.dm new file mode 100644 index 0000000000..877422825b --- /dev/null +++ b/code/modules/emotes/definitions/slimes.dm @@ -0,0 +1,32 @@ +/decl/emote/slime + key = "nomood" + var/mood + +/decl/emote/slime/do_extra(var/mob/living/simple_mob/slime/user) + . = ..() + if(istype(user)) + user.mood = mood + user.update_icon() + +/decl/emote/slime/check_user(var/atom/user) + return isslime(user) + +/decl/emote/slime/pout + key = "pout" + mood = "pout" + +/decl/emote/slime/sad + key = "sad" + mood = "sad" + +/decl/emote/slime/angry + key = "angry" + mood = "angry" + +/decl/emote/slime/frown + key = "frown" + mood = "mischevous" + +/decl/emote/slime/smile + key = "smile" + mood = ":3" diff --git a/code/modules/emotes/definitions/visible_animated.dm b/code/modules/emotes/definitions/visible_animated.dm new file mode 100644 index 0000000000..2e035d289c --- /dev/null +++ b/code/modules/emotes/definitions/visible_animated.dm @@ -0,0 +1,76 @@ +/decl/emote/visible/spin + key = "spin" + check_restraints = TRUE + emote_message_3p = "spins!" + +/decl/emote/visible/spin/do_extra(mob/user) + if(istype(user)) + user.spin(20, 1) + +/decl/emote/visible/sidestep + key = "sidestep" + check_restraints = TRUE + emote_message_3p = "steps rhythmically and moves side to side." + +/decl/emote/visible/sidestep/do_extra(mob/user) + if(istype(user)) + animate(user, pixel_x = 5, time = 5) + sleep(3) + animate(user, pixel_x = -5, time = 5) + animate(pixel_x = user.default_pixel_x, pixel_y = user.default_pixel_x, time = 2) + +/decl/emote/visible/flip + key = "flip" + emote_message_1p = "You do a flip!" + emote_message_3p = "does a flip!" + emote_sound = 'sound/effects/bodyfall4.ogg' + +/decl/emote/visible/flip/do_extra(mob/user) + . = ..() + if(istype(user)) + user.SpinAnimation(7,1) + +/decl/emote/visible/floorspin + key = "floorspin" + emote_message_1p = "You spin around on the floor!" + emote_message_3p = "spins around on the floor!" + var/static/list/spin_dirs = list( + NORTH, + SOUTH, + EAST, + WEST, + EAST, + SOUTH, + NORTH, + SOUTH, + EAST, + WEST, + EAST, + SOUTH, + NORTH, + SOUTH, + EAST, + WEST, + EAST, + SOUTH + ) + +/decl/emote/visible/floorspin/proc/spin_dir(var/mob/user) + set waitfor = FALSE + for(var/i in spin_dirs) + user.set_dir(i) + sleep(1) + if(QDELETED(user)) + return + +/decl/emote/visible/floorspin/proc/spin_anim(var/mob/user) + set waitfor = FALSE + sleep(1) + if(!QDELETED(user)) + user.SpinAnimation(10,1) + +/decl/emote/visible/floorspin/do_extra(mob/user) + . = ..() + if(istype(user)) + spin_dir(user) + spin_anim(user) diff --git a/code/modules/emotes/definitions/visible_vomit.dm b/code/modules/emotes/definitions/visible_vomit.dm new file mode 100644 index 0000000000..1ec79dea6a --- /dev/null +++ b/code/modules/emotes/definitions/visible_vomit.dm @@ -0,0 +1,10 @@ +/decl/emote/visible/vomit + key = "vomit" + +/decl/emote/visible/vomit/do_emote(var/atom/user, var/extra_params) + if(isliving(user)) + var/mob/living/M = user + if(!M.isSynthetic()) + M.vomit() + return + to_chat(src, SPAN_WARNING("You are unable to vomit.")) diff --git a/code/modules/emotes/definitions/visible_vr.dm b/code/modules/emotes/definitions/visible_vr.dm new file mode 100644 index 0000000000..69252cf43b --- /dev/null +++ b/code/modules/emotes/definitions/visible_vr.dm @@ -0,0 +1,7 @@ +/decl/emote/visible/mlem + key = "mlem" + emote_message_3p = "mlems USER_THEIR tongue up over USER_THEIR nose. Mlem." + +/decl/emote/visible/blep + key = "blep" + emote_message_3p = "bleps USER_THEIR tongue out. Blep." diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm new file mode 100644 index 0000000000..845a5202d3 --- /dev/null +++ b/code/modules/emotes/emote_define.dm @@ -0,0 +1,181 @@ +// Note about emote messages: +// - USER / TARGET will be replaced with the relevant name, in bold. +// - USER_THEM / TARGET_THEM / USER_THEIR / TARGET_THEIR will be replaced with a +// gender-appropriate version of the same. +// - Impaired messages do not do any substitutions. + +/decl/emote + var/key // Command to use emote ie. '*[key]' + var/emote_message_1p // First person message ('You do a flip!') + var/emote_message_3p // Third person message ('Urist McBackflip does a flip!') + var/emote_message_synthetic_1p // First person message for robits. + var/emote_message_synthetic_3p // Third person message for robits. + + var/emote_message_impaired // Deaf/blind message ('You hear someone flipping out.', 'You see someone opening and closing their mouth') + + var/emote_message_1p_target // 'You do a flip at Urist McTarget!' + var/emote_message_3p_target // 'Urist McShitter does a flip at Urist McTarget!' + var/emote_message_synthetic_1p_target // First person targeted message for robits. + var/emote_message_synthetic_3p_target // Third person targeted message for robits. + + var/emote_message_radio // A message to send over the radio if one picks up this emote. + var/emote_message_radio_synthetic // As above, but for synthetics. + var/emote_message_muffled // A message to show if the emote is audible and the user is muzzled. + + var/list/emote_sound // A sound for the emote to play. + // Can either be a single sound, a list of sounds to pick from, or an + // associative array of gender to single sounds/a list of sounds. + var/list/emote_sound_synthetic // As above, but used when check_synthetic() is true. + var/emote_volume = 50 // Volume of sound to play. + var/emote_volume_synthetic = 50 // As above, but used when check_synthetic() is true. + + var/message_type = VISIBLE_MESSAGE // Audible/visual flag + var/check_restraints // Can this emote be used while restrained? + var/check_range // falsy, or a range outside which the emote will not work + var/conscious = TRUE // Do we need to be awake to emote this? + var/emote_range = 0 // If >0, restricts emote visibility to viewers within range. + +/decl/emote/proc/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params) + if(target) + if(emote_message_synthetic_1p_target && check_synthetic(user)) + return emote_message_synthetic_1p_target + return emote_message_1p_target + if(emote_message_synthetic_1p && check_synthetic(user)) + return emote_message_synthetic_1p + return emote_message_1p + +/decl/emote/proc/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params) + if(target) + if(emote_message_synthetic_3p_target && check_synthetic(user)) + return emote_message_synthetic_3p_target + return emote_message_3p_target + if(emote_message_synthetic_3p && check_synthetic(user)) + return emote_message_synthetic_3p + return emote_message_3p + +/decl/emote/proc/get_emote_sound(var/atom/user) + if(check_synthetic(user) && emote_sound_synthetic) + return list( + "sound" = emote_sound_synthetic, + "vol" = emote_volume_synthetic + ) + if(emote_sound) + return list( + "sound" = emote_sound, + "vol" = emote_volume + ) + +/decl/emote/proc/do_emote(var/atom/user, var/extra_params) + if(ismob(user) && check_restraints) + var/mob/M = user + if(M.restrained()) + to_chat(user, SPAN_WARNING("You are restrained and cannot do that.")) + return + + var/atom/target + if(can_target() && extra_params) + extra_params = lowertext(extra_params) + for(var/atom/thing in view(user)) + if(extra_params == lowertext(thing.name)) + target = thing + break + + if(target && target != user && check_range) + if (get_dist(user, target) > check_range) + to_chat(user, SPAN_WARNING("\The [target] is too far away.")) + return + + var/use_1p = get_emote_message_1p(user, target, extra_params) + if(use_1p) + if(target) + use_1p = replace_target_tokens(use_1p, target) + use_1p = "[capitalize(replace_user_tokens(use_1p, user))]" + var/use_3p = get_emote_message_3p(user, target, extra_params) + if(use_3p) + if(target) + use_3p = replace_target_tokens(use_3p, target) + use_3p = "\The [user] [replace_user_tokens(use_3p, user)]" + var/use_radio = get_radio_message(user) + if(use_radio) + if(target) + use_radio = replace_target_tokens(use_radio, target) + use_radio = replace_user_tokens(use_radio, user) + + var/use_range = emote_range + if (!use_range) + use_range = world.view + + if(ismob(user)) + var/mob/M = user + if(message_type == AUDIBLE_MESSAGE) + if(isliving(user)) + var/mob/living/L = user + if(L.silent) + M.visible_message(message = "[user] opens their mouth silently!", self_message = "You cannot say anything!", blind_message = emote_message_impaired) + return + else + M.audible_message(message = use_3p, self_message = use_1p, deaf_message = emote_message_impaired, hearing_distance = use_range, radio_message = use_radio) + else + M.visible_message(message = use_3p, self_message = use_1p, blind_message = emote_message_impaired, range = use_range) + + do_extra(user, target) + do_sound(user) + +/decl/emote/proc/replace_target_tokens(var/msg, var/atom/target) + . = msg + if(istype(target)) + var/datum/gender/target_gender = gender_datums[target.get_visible_gender()] + . = replacetext(., "TARGET_THEM", target_gender.him) + . = replacetext(., "TARGET_THEIR", target_gender.his) + . = replacetext(., "TARGET_SELF", target_gender.himself) + . = replacetext(., "TARGET", "\the [target]") + +/decl/emote/proc/replace_user_tokens(var/msg, var/atom/user) + . = msg + if(istype(user)) + var/datum/gender/user_gender = gender_datums[user.get_visible_gender()] + . = replacetext(., "USER_THEM", user_gender.him) + . = replacetext(., "USER_THEIR", user_gender.his) + . = replacetext(., "USER_SELF", user_gender.himself) + . = replacetext(., "USER", "\the [user]") + +/decl/emote/proc/get_radio_message(var/atom/user) + if(emote_message_radio_synthetic && check_synthetic(user)) + return emote_message_radio_synthetic + return emote_message_radio + +/decl/emote/proc/do_extra(var/atom/user, var/atom/target) + return + +/decl/emote/proc/do_sound(var/atom/user) + var/list/use_sound = get_emote_sound(user) + if(!islist(use_sound) || length(use_sound) < 2) + return + var/sound_to_play = use_sound["sound"] + if(!sound_to_play) + return + if(islist(sound_to_play)) + if(sound_to_play[user.gender]) + sound_to_play = sound_to_play[user.gender] + if(islist(sound_to_play) && length(sound_to_play)) + sound_to_play = pick(sound_to_play) + if(sound_to_play) + playsound(user.loc, sound_to_play, use_sound["vol"], 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - Preference + +/decl/emote/proc/check_user(var/atom/user) + return TRUE + +/decl/emote/proc/can_target() + return (emote_message_1p_target || emote_message_3p_target) + +/decl/emote/dd_SortValue() + return key + +/decl/emote/proc/check_synthetic(var/mob/living/user) + . = istype(user) && user.isSynthetic() + if(!. && ishuman(user) && message_type == AUDIBLE_MESSAGE) + var/mob/living/carbon/human/H = user + if(H.should_have_organ(O_LUNGS)) + var/obj/item/organ/internal/lungs/L = H.internal_organs_by_name[O_LUNGS] + if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs + . = TRUE diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm new file mode 100644 index 0000000000..3e45f05091 --- /dev/null +++ b/code/modules/emotes/emote_mob.dm @@ -0,0 +1,183 @@ +/mob/proc/can_emote(var/emote_type) + return (stat == CONSCIOUS) + +/mob/living/can_emote(var/emote_type) + return (..() && !(silent && emote_type == AUDIBLE_MESSAGE)) + +/mob/proc/emote(var/act, var/m_type, var/message) + set waitfor = FALSE + // s-s-snowflake + if(src.stat == DEAD && act != "deathgasp") + return + + if(usr == src) //client-called emote + if (client && (client.prefs.muted & MUTE_IC)) + to_chat(src, "You cannot send IC messages (muted).") + return + + if(act == "help") + to_chat(src,"Usable emotes: [english_list(usable_emotes)].") + return + + if(!can_emote(m_type)) + to_chat(src, SPAN_WARNING("You cannot currently [m_type == AUDIBLE_MESSAGE ? "audibly" : "visually"] emote!")) + return + + if(act == "me") + return custom_emote(m_type, message) + + if(act == "custom") + if(!message) + message = sanitize_or_reflect(input(src,"Choose an emote to display.") as text|null, src) //VOREStation Edit - Reflect too long messages, within reason + if(!message) + return + if (!m_type) + if(alert(src, "Is this an audible emote?", "Emote", "Yes", "No") == "No") + m_type = VISIBLE_MESSAGE + else + m_type = AUDIBLE_MESSAGE + return custom_emote(m_type, message) + + var/splitpoint = findtext(act, " ") + if(splitpoint > 0) + var/tempstr = act + act = copytext(tempstr,1,splitpoint) + message = copytext(tempstr,splitpoint+1,0) + + //VOREStation Add - NIF soulcatcher shortcuts + if(act == "nsay") + return nsay(message) + + if(act == "nme") + return nme(message) + //VOREStation Add End + + var/decl/emote/use_emote = usable_emotes[act] + if(!use_emote) + to_chat(src, SPAN_WARNING("Unknown emote '[act]'. Type say *help for a list of usable emotes.")) + return + + if(m_type != use_emote.message_type && use_emote.conscious && stat != CONSCIOUS) + return + + if(use_emote.message_type == AUDIBLE_MESSAGE && is_muzzled()) + audible_message("\The [src] [use_emote.emote_message_muffled || "makes a muffled sound."]") + return + else + use_emote.do_emote(src, message) + + for (var/obj/item/weapon/implant/I in src) + if (I.implanted) + I.trigger(act, src) + +/mob/proc/format_emote(var/emoter = null, var/message = null) + var/pretext + var/subtext + var/nametext + var/end_char + var/start_char + var/name_anchor + + if(!message || !emoter) + return + + message = html_decode(message) + + name_anchor = findtext(message, "*") + if(name_anchor > 0) // User supplied emote with visible_emote token (default ^) + pretext = copytext(message, 1, name_anchor) + subtext = copytext(message, name_anchor + 1, length(message) + 1) + else + // No token. Just the emote as usual. + subtext = message + + // Oh shit, we got this far! Let's see... did the user attempt to use more than one token? + if(findtext(subtext, "*")) + // abort abort! + to_chat(emoter, SPAN_WARNING("You may use only one \"["*"]\" symbol in your emote.")) + return + + if(pretext) + // Add a space at the end if we didn't already supply one. + end_char = copytext(pretext, length(pretext), length(pretext) + 1) + if(end_char != " ") + pretext += " " + + // Grab the last character of the emote message. + end_char = copytext(subtext, length(subtext), length(subtext) + 1) + if(!(end_char in list(".", "?", "!", "\"", "-", "~"))) // gotta include ~ for all you fucking weebs + // No punctuation supplied. Tack a period on the end. + subtext += "." + + // Add a space to the subtext, unless it begins with an apostrophe or comma. + if(subtext != ".") + // First, let's get rid of any existing space, to account for sloppy emoters ("X, ^ , Y") + subtext = trim_left(subtext) + start_char = copytext(subtext, 1, 2) + if(start_char != "," && start_char != "'") + subtext = " " + subtext + + pretext = capitalize(html_encode(pretext)) + nametext = html_encode(nametext) + subtext = html_encode(subtext) + // Store the player's name in a nice bold, naturalement + nametext = "[emoter]" + return pretext + nametext + subtext + +/mob/proc/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message, var/range = world.view) + + if((usr && stat) || (!use_me && usr == src)) + to_chat(src, "You are unable to emote.") + return + + var/input + if(!message) + input = sanitize(input(src,"Choose an emote to display.") as text|null) + else + input = message + + if(input) + message = format_emote(src, message) + else + return + + if(input) + log_emote(message,src) //Log before we add junk + message = "[src] [input]" + else + return + + if(message) + message = encode_html_emphasis(message) + + // Hearing gasp and such every five seconds is not good emotes were not global for a reason. + // Maybe some people are okay with that. + var/turf/T = get_turf(src) + if(!T) return + var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE) + var/list/m_viewers = in_range["mobs"] + var/list/o_viewers = in_range["objs"] + + for(var/mob in m_viewers) + var/mob/M = mob + spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes. + if(M) + if(isobserver(M)) + message = "[src] ([ghost_follow_link(src, M)]) [input]" + M.show_message(message, m_type) + + for(var/obj in o_viewers) + var/obj/O = obj + spawn(0) + if(O) + O.see_emote(src, message, m_type) + + + +// Specific mob type exceptions below. +/mob/living/silicon/ai/emote(var/act, var/type, var/message) + var/obj/machinery/hologram/holopad/T = src.holo + if(T && T.masters[src]) //Is the AI using a holopad? + src.holopad_emote(message) + else //Emote normally, then. + ..() diff --git a/code/modules/events/meteor_strike_vr.dm b/code/modules/events/meteor_strike_vr.dm index 8868c577cd..83b1f8ac2d 100644 --- a/code/modules/events/meteor_strike_vr.dm +++ b/code/modules/events/meteor_strike_vr.dm @@ -61,10 +61,6 @@ var/turf/mob_turf = get_turf(L) if(!mob_turf || !(mob_turf.z in impacted.expected_z_levels)) continue - if(!L.buckled && !issilicon(L)) - if(!L.Check_Shoegrip()) - L.throw_at(get_step_rand(L),1,5) - L.Weaken(5) if(L.client) to_chat(L, "The ground lurches beneath you!") shake_camera(L, 6, 1) diff --git a/code/modules/events/supply_demand_vr.dm b/code/modules/events/supply_demand_vr.dm index 6447630c9e..64d402c443 100644 --- a/code/modules/events/supply_demand_vr.dm +++ b/code/modules/events/supply_demand_vr.dm @@ -274,8 +274,7 @@ /datum/event/supply_demand/proc/choose_chemistry_items(var/differentTypes) // Checking if they show up in health analyzer is good huristic for it being a drug var/list/medicineReagents = list() - for(var/path in typesof(/datum/chemical_reaction) - /datum/chemical_reaction) - var/datum/chemical_reaction/CR = path // Stupid casting required for reading + for(var/decl/chemical_reaction/instant/CR in SSchemistry.chemical_reactions) var/datum/reagent/R = SSchemistry.chemical_reagents[initial(CR.result)] if(R && R.scannable) medicineReagents += R @@ -288,8 +287,7 @@ /datum/event/supply_demand/proc/choose_bar_items(var/differentTypes) var/list/drinkReagents = list() - for(var/path in typesof(/datum/chemical_reaction) - /datum/chemical_reaction) - var/datum/chemical_reaction/CR = path // Stupid casting required for reading + for(var/decl/chemical_reaction/instant/drinks/CR in SSchemistry.chemical_reactions) var/datum/reagent/R = SSchemistry.chemical_reagents[initial(CR.result)] if(istype(R, /datum/reagent/drink) || istype(R, /datum/reagent/ethanol)) drinkReagents += R diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm index 8acb089a4c..747fa0f75f 100644 --- a/code/modules/examine/descriptions/weapons.dm +++ b/code/modules/examine/descriptions/weapons.dm @@ -30,7 +30,7 @@ description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." -/obj/item/weapon/gun/energy/gun/stunrevolver +/obj/item/weapon/gun/energy/stunrevolver description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." diff --git a/code/modules/food/food/cans_vr.dm b/code/modules/food/food/cans_vr.dm new file mode 100644 index 0000000000..4807d021ef --- /dev/null +++ b/code/modules/food/food/cans_vr.dm @@ -0,0 +1,75 @@ +//////////////////////Bepis Drinks (04/29/2021)////////////////////// + +/obj/item/weapon/reagent_containers/food/drinks/cans/bepis + name = "\improper Bepis" + desc = "It has a smell of 'off-brand' whenever you open it..." + description_fluff = "Puts the 'B' in Best Soda! Bepis is the number one competitor to \ + Space Cola and has vendors scattered across the frontier. While the drink is not as \ + popular as Space Cola, many people across known space enjoy the sweet beverage." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "bepis" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/bepis/Initialize() + . = ..() + reagents.add_reagent("bepis", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/astrodew + name = "\improper Astro Dew Spring Water" + desc = "A can of refreshing 'spring' water! Or so the can claims." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "watercan" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/astrodew/Initialize() + . = ..() + reagents.add_reagent("water", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee + name = "\improper Café Del Consumir" + desc = "A can of deliciously sweet iced coffee that originates from Earth." + description_fluff = "Café Del Consumir originates from a small coffee brewery in México \ + that still opperates to this day. Café Del Consumir prides itself on being true to form \ + and retaining its original recipe. They've been producing and selling thier product across \ + the galaxy for decades without fail. NanoTrasen has attempted to by out the small company for \ + years now, howerver all attempts they've made have failed." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "coffeecan" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee/Initialize() + . = ..() + reagents.add_reagent("icecoffee", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/buzz + name = "\improper Buzz Fuzz" + desc = "Uses real honey, making it a sweet tooth's dream drink." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "buzzfuzz" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/buzz/Initialize() + . = ..() + reagents.add_reagent("buzz_fuzz", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/shambler + name = "\improper Shambler's Juice" + desc = "~Shake me up some of that Shambler's Juice!~" + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "shambler" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/shambler/Initialize() + . = ..() + reagents.add_reagent("shamblers", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/cranberry + name = "\improper Sprited Cranberry" + desc = "A delicious blend of fresh cranberry juice and various spices, the perfect drink." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "cranberry" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/cranberry/Initialize() + . = ..() + reagents.add_reagent("sprited_cranberry", 30) \ No newline at end of file diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm index 56d303371a..1f7beec6b9 100644 --- a/code/modules/food/food/drinks/bottle.dm +++ b/code/modules/food/food/drinks/bottle.dm @@ -341,20 +341,20 @@ . = ..() reagents.add_reagent("absinthe", 100) -/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor - name = "Emeraldine Melon Liquor" +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor //MODIFIED ON 04/21/2021 + name = "Emeraldine Melon Liqueur" desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light." - icon_state = "alco-green" //Placeholder. + icon_state = "melon_liqueur" center_of_mass = list("x"=16, "y"=6) /obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/Initialize() . = ..() reagents.add_reagent("melonliquor", 100) -/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao //MODIFIED ON 04/21/2021 name = "Miss Blue Curacao" desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic." - icon_state = "alco-blue" //Placeholder. + icon_state = "blue_curacao" center_of_mass = list("x"=16, "y"=6) /obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/Initialize() @@ -371,36 +371,6 @@ . = ..() reagents.add_reagent("grenadine", 100) -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola - name = "\improper Space Cola" - desc = "Cola. in space" - icon_state = "colabottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/Initialize() - . = ..() - reagents.add_reagent("cola", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up - name = "\improper Space-Up" - desc = "Tastes like a hull breach in your mouth." - icon_state = "space-up_bottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/Initialize() - . = ..() - reagents.add_reagent("space_up", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind - name = "\improper Space Mountain Wind" - desc = "Blows right through you like a space wind." - icon_state = "space_mountain_wind_bottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/Initialize() - . = ..() - reagents.add_reagent("spacemountainwind", 100) - /obj/item/weapon/reagent_containers/food/drinks/bottle/pwine name = "Warlock's Velvet" desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!" @@ -421,7 +391,107 @@ . = ..() reagents.add_reagent("unathiliquor", 100) -//////////////////////////JUICES AND STUFF /////////////////////// +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake + name = "Mono-No-Aware Luxury Sake" + desc = "Dry alcohol made from rice, a favorite of businessmen." + icon_state = "sakebottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/Initialize() + . = ..() + reagents.add_reagent("sake", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne + name = "Gilthari Luxury Champagne" + desc = "For those special occassions." + icon_state = "champagne" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/Initialize() + . = ..() + reagents.add_reagent("champagne", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps + name = "Dr. Bone's Peppermint Schnapps" + desc = "A flavoured grain liqueur with a fresh, minty taste." + icon_state = "schnapps_pep" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_pep", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps + name = "Dr. Bone's Peach Schnapps" + desc = "A flavoured grain liqueur with a fruity peach taste." + icon_state = "schnapps_pea" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_pea", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps + name = "Dr. Bone's Lemonade Schnapps" + desc = "A flavoured grain liqueur with a sweetish, lemon taste." + icon_state = "schnapps_lem" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_lem", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/jager + name = "Schusskonig" + desc = "A complex tasting digestif. Thank god the original's trademark lapsed." + icon_state = "jager_bottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/jager/Initialize() + . = ..() + reagents.add_reagent("jager", 100) + +//////////////////////////JUICES AND STUFF/////////////////////// + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola //MODIFIED ON 04/21/2021 + name = "\improper two-liter Space Cola" + desc = "Cola. In space." + icon_state = "colabottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/Initialize() + . = ..() + reagents.add_reagent("cola", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up //MODIFIED ON 04/21/2021 + name = "\improper two-liter Space-Up" + desc = "Tastes like a hull breach in your mouth." + icon_state = "space-up_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/Initialize() + . = ..() + reagents.add_reagent("space_up", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind //MODIFIED ON 04/21/2021 + name = "\improper two-liter Space Mountain Wind" + desc = "Blows right through you like a space wind." + icon_state = "space_mountain_wind_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/Initialize() + . = ..() + reagents.add_reagent("spacemountainwind", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/dr_gibb //ADDED ON 04/21/2021 + name = "\improper two-liter Dr. Gibb" + desc = "A delicious mixture of 42 different flavors." + icon_state = "dr_gibb_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/dr_gibb/Initialize() + . = ..() + reagents.add_reagent("dr_gibb", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice name = "Orange Juice" @@ -507,7 +577,8 @@ . = ..() reagents.add_reagent("lemonjuice", 100) -//Small bottles +//////////////////////////SMALL BOTTLES/////////////////////// + /obj/item/weapon/reagent_containers/food/drinks/bottle/small volume = 50 smash_duration = 1 @@ -578,63 +649,3 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/hushedwhisper/Initialize() . = ..() reagents.add_reagent("ale", 50) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake - name = "Mono-No-Aware Luxury Sake" - desc = "Dry alcohol made from rice, a favorite of businessmen." - icon_state = "sakebottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/Initialize() - . = ..() - reagents.add_reagent("sake", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne - name = "Gilthari Luxury Champagne" - desc = "For those special occassions." - icon_state = "champagne" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/Initialize() - . = ..() - reagents.add_reagent("champagne", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps - name = "Dr. Bone's Peppermint Schnapps" - desc = "A flavoured grain liqueur with a fresh, minty taste." - icon_state = "schnapps_pep" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps/Initialize() - . = ..() - reagents.add_reagent("schnapps_pep", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps - name = "Dr. Bone's Peach Schnapps" - desc = "A flavoured grain liqueur with a fruity peach taste." - icon_state = "schnapps_pea" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps/Initialize() - . = ..() - reagents.add_reagent("schnapps_pea", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps - name = "Dr. Bone's Lemonade Schnapps" - desc = "A flavoured grain liqueur with a sweetish, lemon taste." - icon_state = "schnapps_lem" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps/Initialize() - . = ..() - reagents.add_reagent("schnapps_lem", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/jager - name = "Schusskonig" - desc = "A complex tasting digestif. Thank god the original's trademark lapsed." - icon_state = "jager_bottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/jager/Initialize() - . = ..() - reagents.add_reagent("jager", 100) diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index df0e6874aa..63dc510eb9 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -8,13 +8,11 @@ //////////////////////// DRINK var/list/drink_recipes = list() - for(var/path in typesof(/datum/chemical_reaction/drinks) - /datum/chemical_reaction/drinks) - var/datum/chemical_reaction/drinks/CR = new path() - drink_recipes[path] = list("Result" = CR.name, + for(var/decl/chemical_reaction/instant/drinks/CR in SSchemistry.chemical_reactions) + drink_recipes[CR.type] = list("Result" = CR.name, "ResAmt" = CR.result_amount, "Reagents" = CR.required_reagents, "Catalysts" = CR.catalysts) - qdel(CR) //////////////////////// FOOD var/list/food_recipes = typesof(/datum/recipe) - /datum/recipe @@ -43,16 +41,14 @@ qdel(R) //////////////////////// FOOD+ (basically condiments, tofu, cheese, soysauce, etc) - for(var/path in typesof(/datum/chemical_reaction/food) - /datum/chemical_reaction/food) - var/datum/chemical_reaction/food/CR = new path() - food_recipes[path] = list("Result" = CR.name, + for(var/decl/chemical_reaction/instant/food/CR in SSchemistry.chemical_reactions) + food_recipes[CR.type] = list("Result" = CR.name, "ResAmt" = CR.result_amount, "Reagents" = CR.required_reagents, "Catalysts" = CR.catalysts, "Fruit" = list(), "Ingredients" = list(), "Image" = null) - qdel(CR) //////////////////////// PROCESSING //Items needs further processing into human-readability. diff --git a/code/game/objects/items/stacks/fifty_spawner.dm b/code/modules/materials/fifty_spawner.dm similarity index 100% rename from code/game/objects/items/stacks/fifty_spawner.dm rename to code/modules/materials/fifty_spawner.dm diff --git a/code/modules/materials/fifty_spawner_mats_vr.dm b/code/modules/materials/fifty_spawner_mats_vr.dm new file mode 100644 index 0000000000..0b6e29ffa0 --- /dev/null +++ b/code/modules/materials/fifty_spawner_mats_vr.dm @@ -0,0 +1,19 @@ +/obj/fiftyspawner/titanium + name = "stack of titanium" + type_to_spawn = /obj/item/stack/material/titanium + +/obj/fiftyspawner/titanium_glass + name = "stack of ti-glass" + type_to_spawn = /obj/item/stack/material/glass/titanium + +/obj/fiftyspawner/plastitanium + name = "stack of plastitanium" + type_to_spawn = /obj/item/stack/material/plastitanium + +/obj/fiftyspawner/plastitanium_hull + name = "stack of plastitanium" + type_to_spawn = /obj/item/stack/material/plastitanium/hull + +/obj/fiftyspawner/plastitanium_glass + name = "stack of plastitanium glass" + type_to_spawn = /obj/item/stack/material/glass/plastitanium diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm deleted file mode 100644 index 8b71551656..0000000000 --- a/code/modules/materials/material_recipes.dm +++ /dev/null @@ -1,279 +0,0 @@ -/datum/material/proc/get_recipes() - if(!recipes) - generate_recipes() - return recipes - -/datum/material/proc/generate_recipes() - recipes = list() - - // If is_brittle() returns true, these are only good for a single strike. - recipes += new/datum/stack_recipe("[display_name] baseball bat", /obj/item/weapon/material/twohanded/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] armor plate insert", /obj/item/weapon/material/armor_plating/insert, 2, time = 40, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - - if(integrity>=50) - recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - - if(hardness>50) - recipes += new/datum/stack_recipe("[display_name] fork", /obj/item/weapon/material/kitchen/utensil/fork/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] knife", /obj/item/weapon/material/knife/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] blade", /obj/item/weapon/material/butterflyblade, 6, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] defense wire", /obj/item/weapon/material/barbedwire, 10, time = 1 MINUTE, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - -/datum/material/steel/generate_recipes() - ..() - recipes += new/datum/stack_recipe_list("office chairs",list( \ - new/datum/stack_recipe("dark office chair", /obj/structure/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("light office chair", /obj/structure/bed/chair/office/light, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") \ - )) - recipes += new/datum/stack_recipe_list("comfy chairs", list( \ - new/datum/stack_recipe("beige comfy chair", /obj/structure/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("black comfy chair", /obj/structure/bed/chair/comfy/black, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("brown comfy chair", /obj/structure/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("lime comfy chair", /obj/structure/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("teal comfy chair", /obj/structure/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("red comfy chair", /obj/structure/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("blue comfy chair", /obj/structure/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("purple comfy chair", /obj/structure/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("yellow comfy chair", /obj/structure/bed/chair/comfy/yellow, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("orange comfy chair", /obj/structure/bed/chair/comfy/orange, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - )) - recipes += new/datum/stack_recipe("table frame", /obj/structure/table, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("bench frame", /obj/structure/table/bench, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("rack", /obj/structure/table/rack, 1, time = 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0, recycle_material = "[name]") - recipes += new/datum/stack_recipe("regular floor tile", /obj/item/stack/tile/floor, 1, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60, recycle_material = "[name]") - recipes += new/datum/stack_recipe("frame", /obj/item/frame, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("mirror frame", /obj/item/frame/mirror, 1, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("fire extinguisher cabinet frame", /obj/item/frame/extinguisher_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") - //recipes += new/datum/stack_recipe("fire axe cabinet frame", /obj/item/frame/fireaxe_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1) - recipes += new/datum/stack_recipe("railing", /obj/structure/railing, 2, time = 50, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe_list("airlock assemblies", list( \ - new/datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("eng atmos airlock assembly", /obj/structure/door_assembly/door_assembly_eat, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("voidcraft airlock assembly horizontal", /obj/structure/door_assembly/door_assembly_voidcraft, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("voidcraft airlock assembly vertical", /obj/structure/door_assembly/door_assembly_voidcraft/vertical, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("emergency shutter", /obj/structure/firedoor_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - )) - //recipes += new/datum/stack_recipe("IV drip", /obj/machinery/iv_drip, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]")//VOREStation Removal - recipes += new/datum/stack_recipe("medical stand", /obj/structure/medical_stand, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]")//VOREStation Replacement - recipes += new/datum/stack_recipe("conveyor switch", /obj/machinery/conveyor_switch, 2, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade, recycle_material = "[name]") - recipes += new/datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2, recycle_material = "[name]") - recipes += new/datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("floor lamp fixture frame", /obj/machinery/light_construct/flamp, 2, recycle_material = "[name]") - recipes += new/datum/stack_recipe("apc frame", /obj/item/frame/apc, 2, recycle_material = "[name]") - recipes += new/datum/stack_recipe_list("modular computer frames", list( \ - new/datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20, recycle_material = "[name]"),\ - new/datum/stack_recipe("modular telescreen frame", /obj/item/modular_computer/telescreen, 10, recycle_material = "[name]"),\ - new/datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10, recycle_material = "[name]"),\ - new/datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5, recycle_material = "[name]"),\ - )) - recipes += new/datum/stack_recipe_list("filing cabinets", list( \ - new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("chest drawer", /obj/structure/filingcabinet/chestdrawer, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - )) - recipes += new/datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") - -/datum/material/plasteel/generate_recipes() - ..() - recipes += new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("knife grip", /obj/item/weapon/material/butterflyhandle, 4, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("dark floor tile", /obj/item/stack/tile/floor/dark, 1, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("roller bed", /obj/item/roller, 5, time = 30, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 10, recycle_material = "[name]") - -/datum/material/stone/generate_recipes() - ..() - recipes += new/datum/stack_recipe("planting bed", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - -/datum/material/stone/marble/generate_recipes() - ..() - recipes += new/datum/stack_recipe("light marble floor tile", /obj/item/stack/tile/wmarble, 1, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("dark marble floor tile", /obj/item/stack/tile/bmarble, 1, 4, 20, recycle_material = "[name]") - -/datum/material/plastic/generate_recipes() - ..() - recipes += new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("blood pack", /obj/item/weapon/reagent_containers/blood/empty, 4, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("reagent dispenser cartridge (large)", /obj/item/weapon/reagent_containers/chem_disp_cartridge, 5, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]") // 500u - recipes += new/datum/stack_recipe("reagent dispenser cartridge (med)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/medium, 3, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]") // 250u - recipes += new/datum/stack_recipe("reagent dispenser cartridge (small)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/small, 1, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]") // 100u - recipes += new/datum/stack_recipe("white floor tile", /obj/item/stack/tile/floor/white, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("freezer floor tile", /obj/item/stack/tile/floor/freezer, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("shower curtain", /obj/structure/curtain, 4, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 4, time = 25, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("lampshade", /obj/item/weapon/lampshade, 1, time = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic net", /obj/item/weapon/material/fishing_net, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic fishtank", /obj/item/glass_jar/fish/plastic, 2, time = 30 SECONDS, recycle_material = "[name]") - recipes += new/datum/stack_recipe("reagent tubing", /obj/item/stack/hose, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("Feeder", /obj/machinery/feeder, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") //CHOMP Addition - -/datum/material/wood/generate_recipes() - ..() - recipes += new/datum/stack_recipe("oar", /obj/item/weapon/oar, 2, time = 30, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("boat", /obj/vehicle/boat, 20, time = 10 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("dragon boat", /obj/vehicle/boat/dragon, 50, time = 30 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wood circlet", /obj/item/clothing/head/woodcirclet, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("beehive assembly", /obj/item/beehive_assembly, 4, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("beehive frame", /obj/item/honey_frame, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("book shelf", /obj/structure/bookcase, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("noticeboard frame", /obj/item/frame/noticeboard, 4, time = 5, one_per_turf = 0, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wooden standup figure", /obj/structure/barricade/cutout, 5, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") //VOREStation Add - recipes += new/datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") - -/datum/material/wood/log/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("bonfire", /obj/structure/bonfire, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE, recycle_material = "[name]") - -/datum/material/cardboard/generate_recipes() - ..() - recipes += new/datum/stack_recipe("box", /obj/item/weapon/storage/box, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("donut box", /obj/item/weapon/storage/box/donut/empty, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("egg box", /obj/item/weapon/storage/fancy/egg_box, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("light tubes box", /obj/item/weapon/storage/box/lights/tubes, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("light bulbs box", /obj/item/weapon/storage/box/lights/bulbs, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("mouse traps box", /obj/item/weapon/storage/box/mousetraps, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("pizza box", /obj/item/pizzabox, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe_list("folders",list( \ - new/datum/stack_recipe("blue folder", /obj/item/weapon/folder/blue, recycle_material = "[name]"), \ - new/datum/stack_recipe("grey folder", /obj/item/weapon/folder, recycle_material = "[name]"), \ - new/datum/stack_recipe("red folder", /obj/item/weapon/folder/red, recycle_material = "[name]"), \ - new/datum/stack_recipe("white folder", /obj/item/weapon/folder/white, recycle_material = "[name]"), \ - new/datum/stack_recipe("yellow folder", /obj/item/weapon/folder/yellow, recycle_material = "[name]"), \ - )) - -/datum/material/snow/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("snowball", /obj/item/weapon/material/snow/snowball, 1, time = 10, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snow brick", /obj/item/stack/material/snowbrick, 2, time = 10, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snowman", /obj/structure/snowman, 2, time = 15, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snow robot", /obj/structure/snowman/borg, 2, time = 10, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snow spider", /obj/structure/snowman/spider, 3, time = 20, recycle_material = "[name]") - -/datum/material/snowbrick/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - -/datum/material/wood/sif/generate_recipes() - ..() - recipes += new/datum/stack_recipe("alien wood floor tile", /obj/item/stack/tile/wood/sif, 1, 4, 20, pass_stack_color = TRUE) - for(var/datum/stack_recipe/r_recipe in recipes) - if(r_recipe.title == "wood floor tile") - recipes -= r_recipe - continue - if(r_recipe.title == "wooden chair") - recipes -= r_recipe - continue - -/datum/material/supermatter/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("supermatter shard", /obj/machinery/power/supermatter/shard, 30 , one_per_turf = 1, time = 600, on_floor = 1, recycle_material = "[name]") - -/datum/material/cloth/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("woven net", /obj/item/weapon/material/fishing_net, 10, time = 30 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") - recipes += new/datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crude bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") - -/datum/material/resin/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door/resin, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] barricade", /obj/effect/alien/resin/wall, 5, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] nest", /obj/structure/bed/nest, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder/resin, 2, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] membrane", /obj/effect/alien/resin/membrane, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] node", /obj/effect/alien/weeds/node, 1, time = 4 SECONDS, recycle_material = "[name]") - -/datum/material/leather/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") - recipes += new/datum/stack_recipe("whip", /obj/item/weapon/material/whip, 5, time = 15 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") diff --git a/code/modules/materials/material_recipes_ch.dm b/code/modules/materials/material_recipes_ch.dm deleted file mode 100644 index 009ac2b9fb..0000000000 --- a/code/modules/materials/material_recipes_ch.dm +++ /dev/null @@ -1,29 +0,0 @@ -//In future consider cleaning up often used recipes by adding them to the general recipe list with material criteria - -/datum/material/plasteel/generate_recipes() - . = ..() -// recipes += new/datum/stack_recipe("Hammer Head", /obj/item/weapon/hammer_head, 2) //CHOMPEdit - Disabled because I had to disable code/game/objects/items/weapons/material/sledgehammer_construction_ch.dm due to lots of errors - recipes += new/datum/stack_recipe_list("sofas", list( \ - new/datum/stack_recipe("sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ - )) - -/datum/material/plastic/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe_list("sofas", list( \ - new/datum/stack_recipe("sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - new/datum/stack_recipe("sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - new/datum/stack_recipe("sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - new/datum/stack_recipe("sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - )) - -/datum/material/wood/generate_recipes() //Is a little sad we cant have lovely wooden sofa - . = ..() - recipes += new/datum/stack_recipe_list("sofas", list( \ - new/datum/stack_recipe("sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - new/datum/stack_recipe("sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - new/datum/stack_recipe("sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - new/datum/stack_recipe("sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ - )) diff --git a/code/modules/materials/material_recipes_vr.dm b/code/modules/materials/material_recipes_vr.dm deleted file mode 100644 index bf5b54d853..0000000000 --- a/code/modules/materials/material_recipes_vr.dm +++ /dev/null @@ -1,90 +0,0 @@ - -/datum/material/steel/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe_list("mounted chairs", list( - new/datum/stack_recipe("mounted chair", /obj/structure/bed/chair/bay/chair, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("red mounted chair", /obj/structure/bed/chair/bay/chair/padded/red, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("brown mounted chair", /obj/structure/bed/chair/bay/chair/padded/brown, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("teal mounted chair", /obj/structure/bed/chair/bay/chair/padded/teal, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("black mounted chair", /obj/structure/bed/chair/bay/chair/padded/black, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("green mounted chair", /obj/structure/bed/chair/bay/chair/padded/green, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("purple mounted chair", /obj/structure/bed/chair/bay/chair/padded/purple, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("blue mounted chair", /obj/structure/bed/chair/bay/chair/padded/blue, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("beige mounted chair", /obj/structure/bed/chair/bay/chair/padded/beige, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("lime mounted chair", /obj/structure/bed/chair/bay/chair/padded/lime, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("yellow mounted chair", /obj/structure/bed/chair/bay/chair/padded/yellow, 2, one_per_turf = 1, on_floor = 1, time = 10) - )) - recipes += new/datum/stack_recipe_list("mounted comfy chairs", list( - new/datum/stack_recipe("mounted comfy chair", /obj/structure/bed/chair/bay/comfy, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("red mounted comfy chair", /obj/structure/bed/chair/bay/comfy/red, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("brown mounted comfy chair", /obj/structure/bed/chair/bay/comfy/brown, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("teal mounted comfy chair", /obj/structure/bed/chair/bay/comfy/teal, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("black mounted comfy chair", /obj/structure/bed/chair/bay/comfy/black, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("green mounted comfy chair", /obj/structure/bed/chair/bay/comfy/green, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("purple mounted comfy chair", /obj/structure/bed/chair/bay/comfy/purple, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("blue mounted comfy chair", /obj/structure/bed/chair/bay/comfy/blue, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("beige mounted comfy chair", /obj/structure/bed/chair/bay/comfy/beige, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("lime mounted comfy chair", /obj/structure/bed/chair/bay/comfy/lime, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("yellow mounted comfy chair", /obj/structure/bed/chair/bay/comfy/yellow, 3, one_per_turf = 1, on_floor = 1, time = 20) - )) - recipes += new/datum/stack_recipe("mounted captain's chair", /obj/structure/bed/chair/bay/comfy/captain, 4, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("dropship seat", /obj/structure/bed/chair/bay/shuttle, 4, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("small teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/smallnest, 2, one_per_turf = 1, on_floor = 1, time = 10) - recipes += new/datum/stack_recipe("large teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/bignest, 4, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("dance pole", /obj/structure/dancepole, 2, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("light switch frame", /obj/item/frame/lightswitch, 2) - recipes += new/datum/stack_recipe_list("sofas", list( - new/datum/stack_recipe("red sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("red sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("red sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("red sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa middle", /obj/structure/bed/chair/sofa/brown, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa left", /obj/structure/bed/chair/sofa/brown/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa right", /obj/structure/bed/chair/sofa/brown/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa corner", /obj/structure/bed/chair/sofa/brown/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa middle", /obj/structure/bed/chair/sofa/teal, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa left", /obj/structure/bed/chair/sofa/teal/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa right", /obj/structure/bed/chair/sofa/teal/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa corner", /obj/structure/bed/chair/sofa/teal/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa middle", /obj/structure/bed/chair/sofa/black, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa left", /obj/structure/bed/chair/sofa/black/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa right", /obj/structure/bed/chair/sofa/black/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa corner", /obj/structure/bed/chair/sofa/black/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa middle", /obj/structure/bed/chair/sofa/green, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa left", /obj/structure/bed/chair/sofa/green/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa right", /obj/structure/bed/chair/sofa/green/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa corner", /obj/structure/bed/chair/sofa/green/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa middle", /obj/structure/bed/chair/sofa/purp, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa left", /obj/structure/bed/chair/sofa/purp/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa right", /obj/structure/bed/chair/sofa/purp/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa corner", /obj/structure/bed/chair/sofa/purp/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa middle", /obj/structure/bed/chair/sofa/blue, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa left", /obj/structure/bed/chair/sofa/blue/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa right", /obj/structure/bed/chair/sofa/blue/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa corner", /obj/structure/bed/chair/sofa/blue/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa middle", /obj/structure/bed/chair/sofa/beige, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa left", /obj/structure/bed/chair/sofa/beige/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa right", /obj/structure/bed/chair/sofa/beige/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa corner", /obj/structure/bed/chair/sofa/beige/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa middle", /obj/structure/bed/chair/sofa/lime, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa left", /obj/structure/bed/chair/sofa/lime/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa right", /obj/structure/bed/chair/sofa/lime/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa corner", /obj/structure/bed/chair/sofa/lime/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa middle", /obj/structure/bed/chair/sofa/yellow, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa left", /obj/structure/bed/chair/sofa/yellow/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa right", /obj/structure/bed/chair/sofa/yellow/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa corner", /obj/structure/bed/chair/sofa/yellow/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa middle", /obj/structure/bed/chair/sofa/orange, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa left", /obj/structure/bed/chair/sofa/orange/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa right", /obj/structure/bed/chair/sofa/orange/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa corner", /obj/structure/bed/chair/sofa/orange/corner, 1, one_per_turf = 1, on_floor = 1), \ - )) - -/datum/material/durasteel/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe("durasteel fishing rod", /obj/item/weapon/material/fishing_rod/modern/strong, 2) - recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 30) - -/datum/material/plastitanium/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 20) diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm deleted file mode 100644 index 3fd995378c..0000000000 --- a/code/modules/materials/material_sheets.dm +++ /dev/null @@ -1,565 +0,0 @@ -// Stacked resources. They use a material datum for a lot of inherited values. -// If you're adding something here, make sure to add it to fifty_spawner_mats.dm as well -/obj/item/stack/material - force = 5.0 - throwforce = 5 - w_class = ITEMSIZE_NORMAL - throw_speed = 3 - throw_range = 3 - center_of_mass = null - max_amount = 50 - item_icons = list( - slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', - slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', - ) - - var/default_type = DEFAULT_WALL_MATERIAL - var/datum/material/material - var/perunit = SHEET_MATERIAL_AMOUNT - var/apply_colour //temp pending icon rewrite - drop_sound = 'sound/items/drop/axe.ogg' - pickup_sound = 'sound/items/pickup/axe.ogg' - -/obj/item/stack/material/Initialize() - . = ..() - - randpixel_xy() - - if(!default_type) - default_type = DEFAULT_WALL_MATERIAL - material = get_material_by_name("[default_type]") - if(!material) - return INITIALIZE_HINT_QDEL - - recipes = material.get_recipes() - stacktype = material.stack_type - if(islist(material.stack_origin_tech)) - origin_tech = material.stack_origin_tech.Copy() - - if(apply_colour) - color = material.icon_colour - - if(!material.conductive) - flags |= NOCONDUCT - - matter = material.get_matter() - update_strings() - -/obj/item/stack/material/get_material() - return material - -/obj/item/stack/material/proc/update_strings() - // Update from material datum. - singular_name = material.sheet_singular_name - - if(amount>1) - name = "[material.use_name] [material.sheet_plural_name]" - desc = "A stack of [material.use_name] [material.sheet_plural_name]." - gender = PLURAL - else - name = "[material.use_name] [material.sheet_singular_name]" - desc = "A [material.sheet_singular_name] of [material.use_name]." - gender = NEUTER - -/obj/item/stack/material/use(var/used) - . = ..() - update_strings() - return - -/obj/item/stack/material/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) - var/obj/item/stack/material/M = S - if(!istype(M) || material.name != M.material.name) - return 0 - var/transfer = ..(S,tamount,1) - if(src) update_strings() - if(M) M.update_strings() - return transfer - -/obj/item/stack/material/attack_self(var/mob/user) - if(!material.build_windows(user, src)) - ..() - -/obj/item/stack/material/attackby(var/obj/item/W, var/mob/user) - if(istype(W,/obj/item/stack/cable_coil)) - material.build_wired_product(user, W, src) - return - else if(istype(W, /obj/item/stack/rods)) - material.build_rod_product(user, W, src) - return - return ..() - -//VOREStation Add -/obj/item/stack/material/attack(mob/living/M as mob, mob/living/user as mob) - if(M.handle_eat_minerals(src, user)) - return - ..() - -/obj/item/stack/material/attack_generic(var/mob/living/user) //Allow adminbussed mobs to eat ore if they click it while NOT on help intent. - if(user.handle_eat_minerals(src)) - return - ..() -//VOREStation Add End - -/obj/item/stack/material/iron - name = "iron" - icon_state = "sheet-ingot" - default_type = "iron" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/lead - name = "lead" - icon_state = "sheet-ingot" - default_type = "lead" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/sandstone - name = "sandstone brick" - icon_state = "sheet-sandstone" - default_type = "sandstone" - no_variants = FALSE - drop_sound = 'sound/items/drop/boots.ogg' - pickup_sound = 'sound/items/pickup/boots.ogg' - -/obj/item/stack/material/marble - name = "marble brick" - icon_state = "sheet-marble" - default_type = "marble" - no_variants = FALSE - drop_sound = 'sound/items/drop/boots.ogg' - pickup_sound = 'sound/items/pickup/boots.ogg' - -/obj/item/stack/material/diamond - name = "diamond" - icon_state = "sheet-diamond" - default_type = "diamond" - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - -/obj/item/stack/material/uranium - name = "uranium" - icon_state = "sheet-uranium" - default_type = "uranium" - no_variants = FALSE - -/obj/item/stack/material/phoron - name = "solid phoron" - icon_state = "sheet-phoron" - default_type = "phoron" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - -/obj/item/stack/material/plastic - name = "plastic" - icon_state = "sheet-plastic" - default_type = "plastic" - no_variants = FALSE - -/obj/item/stack/material/graphite - name = "graphite" - icon_state = "sheet-puck" - default_type = MAT_GRAPHITE - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/gold - name = "gold" - icon_state = "sheet-ingot" - default_type = "gold" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/silver - name = "silver" - icon_state = "sheet-ingot" - default_type = "silver" - no_variants = FALSE - apply_colour = TRUE - -//Valuable resource, cargo can sell it. -/obj/item/stack/material/platinum - name = "platinum" - icon_state = "sheet-adamantine" - default_type = "platinum" - no_variants = FALSE - apply_colour = TRUE - -//Extremely valuable to Research. -/obj/item/stack/material/mhydrogen - name = "metallic hydrogen" - icon_state = "sheet-mythril" - default_type = "mhydrogen" - no_variants = FALSE - -//Fuel for MRSPACMAN generator. -/obj/item/stack/material/tritium - name = "tritium" - icon_state = "sheet-puck" - default_type = "tritium" - apply_colour = TRUE - no_variants = FALSE - -/obj/item/stack/material/osmium - name = "osmium" - icon_state = "sheet-ingot" - default_type = "osmium" - apply_colour = 1 - no_variants = FALSE - -//R-UST port -// Fusion fuel. -/obj/item/stack/material/deuterium - name = "deuterium" - icon_state = "sheet-puck" - default_type = "deuterium" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/steel - name = DEFAULT_WALL_MATERIAL - icon_state = "sheet-refined" - default_type = DEFAULT_WALL_MATERIAL - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/steel/hull - name = MAT_STEELHULL - default_type = MAT_STEELHULL - -/obj/item/stack/material/plasteel - name = "plasteel" - icon_state = "sheet-reinforced" - default_type = "plasteel" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/plasteel/hull - name = MAT_PLASTEELHULL - default_type = MAT_PLASTEELHULL - -/obj/item/stack/material/durasteel - name = "durasteel" - icon_state = "sheet-reinforced" - item_state = "sheet-metal" - default_type = "durasteel" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/durasteel/hull - name = MAT_DURASTEELHULL - -/obj/item/stack/material/titanium - name = MAT_TITANIUM - icon_state = "sheet-refined" - apply_colour = TRUE - item_state = "sheet-silver" - default_type = MAT_TITANIUM - no_variants = FALSE - -/obj/item/stack/material/titanium/hull - name = MAT_TITANIUMHULL - default_type = MAT_TITANIUMHULL - -// Particle Smasher and Exotic material. -/obj/item/stack/material/verdantium - name = MAT_VERDANTIUM - icon_state = "sheet-wavy" - item_state = "mhydrogen" - default_type = MAT_VERDANTIUM - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/morphium - name = MAT_MORPHIUM - icon_state = "sheet-wavy" - item_state = "mhydrogen" - default_type = MAT_MORPHIUM - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/morphium/hull - name = MAT_MORPHIUMHULL - default_type = MAT_MORPHIUMHULL - -/obj/item/stack/material/valhollide - name = MAT_VALHOLLIDE - icon_state = "sheet-gem" - item_state = "diamond" - default_type = MAT_VALHOLLIDE - no_variants = FALSE - apply_colour = TRUE - -// Forged in the equivalent of Hell, one piece at a time. -/obj/item/stack/material/supermatter - name = MAT_SUPERMATTER - icon_state = "sheet-super" - item_state = "diamond" - default_type = MAT_SUPERMATTER - apply_colour = TRUE - -/obj/item/stack/material/supermatter/proc/update_mass() // Due to how dangerous they can be, the item will get heavier and larger the more are in the stack. - slowdown = amount / 10 - w_class = min(5, round(amount / 10) + 1) - throw_range = round(amount / 7) + 1 - -/obj/item/stack/material/supermatter/use(var/used) - . = ..() - update_mass() - return - -/obj/item/stack/material/supermatter/attack_hand(mob/user) - . = ..() - - update_mass() - SSradiation.radiate(src, 5 + amount) - var/mob/living/M = user - if(!istype(M)) - return - - var/burn_user = TRUE - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - var/obj/item/clothing/gloves/G = H.gloves - if(istype(G) && ((G.flags & THICKMATERIAL && prob(70)) || istype(G, /obj/item/clothing/gloves/gauntlets))) - burn_user = FALSE - - if(burn_user) - H.visible_message("\The [src] flashes as it scorches [H]'s hands!") - H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon="Supermatter Chunk") - H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon="Supermatter Chunk") - H.drop_from_inventory(src, get_turf(H)) - return - - if(istype(user, /mob/living/silicon/robot)) - burn_user = FALSE - - if(burn_user) - M.apply_damage(amount, BURN, null, used_weapon="Supermatter Chunk") - -/obj/item/stack/material/supermatter/ex_act(severity) // An incredibly hard to manufacture material, SM chunks are unstable by their 'stabilized' nature. - if(prob((4 / severity) * 20)) - SSradiation.radiate(get_turf(src), amount * 4) - explosion(get_turf(src),round(amount / 12) , round(amount / 6), round(amount / 3), round(amount / 25)) - qdel(src) - return - SSradiation.radiate(get_turf(src), amount * 2) - ..() - -/obj/item/stack/material/wood - name = "wooden plank" - icon_state = "sheet-wood" - default_type = MAT_WOOD - strict_color_stacking = TRUE - apply_colour = 1 - drop_sound = 'sound/items/drop/wooden.ogg' - pickup_sound = 'sound/items/pickup/wooden.ogg' - no_variants = FALSE - -/obj/item/stack/material/wood/sif - name = "alien wooden plank" - color = "#0099cc" - default_type = MAT_SIFWOOD - -/obj/item/stack/material/log - name = "log" - icon_state = "sheet-log" - default_type = MAT_LOG - no_variants = FALSE - color = "#824B28" - max_amount = 25 - w_class = ITEMSIZE_HUGE - description_info = "Use inhand to craft things, or use a sharp and edged object on this to convert it into two wooden planks." - var/plank_type = /obj/item/stack/material/wood - drop_sound = 'sound/items/drop/wooden.ogg' - pickup_sound = 'sound/items/pickup/wooden.ogg' - -/obj/item/stack/material/log/sif - name = "alien log" - default_type = MAT_SIFLOG - color = "#0099cc" - plank_type = /obj/item/stack/material/wood/sif - -/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user) - if(!istype(W) || W.force <= 0) - return ..() - if(W.sharp && W.edge) - var/time = (3 SECONDS / max(W.force / 10, 1)) * W.toolspeed - user.setClickCooldown(time) - if(do_after(user, time, src) && use(1)) - to_chat(user, "You cut up a log into planks.") - playsound(src, 'sound/effects/woodcutting.ogg', 50, 1) - var/obj/item/stack/material/wood/existing_wood = null - for(var/obj/item/stack/material/wood/M in user.loc) - if(M.material.name == src.material.name) - existing_wood = M - break - - var/obj/item/stack/material/wood/new_wood = new plank_type(user.loc) - new_wood.amount = 2 - if(existing_wood && new_wood.transfer_to(existing_wood)) - to_chat(user, "You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.") - else - return ..() - - -/obj/item/stack/material/cloth - name = "cloth" - icon_state = "sheet-cloth" - default_type = "cloth" - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/clothing.ogg' - pickup_sound = 'sound/items/pickup/clothing.ogg' - -/obj/item/stack/material/cloth/diyaab - color = "#c6ccf0" - -/obj/item/stack/material/resin - name = "resin" - icon_state = "sheet-resin" - default_type = "resin" - no_variants = TRUE - apply_colour = TRUE - pass_color = TRUE - strict_color_stacking = TRUE - -/obj/item/stack/material/cardboard - name = "cardboard" - icon_state = "sheet-card" - default_type = "cardboard" - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/cardboardbox.ogg' - pickup_sound = 'sound/items/pickup/cardboardbox.ogg' - -/obj/item/stack/material/snow - name = "snow" - desc = "The temptation to build a snowman rises." - icon_state = "sheet-snow" - drop_sound = 'sound/items/drop/gloves.ogg' - pickup_sound = 'sound/items/pickup/clothing.ogg' - default_type = "snow" - -/obj/item/stack/material/snowbrick - name = "snow brick" - desc = "For all of your igloo building needs." - icon_state = "sheet-snowbrick" - default_type = "packed snow" - drop_sound = 'sound/items/drop/gloves.ogg' - pickup_sound = 'sound/items/pickup/clothing.ogg' - -/obj/item/stack/material/leather - name = "leather" - desc = "The by-product of mob grinding." - icon_state = "sheet-leather" - default_type = MAT_LEATHER - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/leather.ogg' - pickup_sound = 'sound/items/pickup/leather.ogg' - -/obj/item/stack/material/chitin - name = "chitin" - desc = "The by-product of mob grinding." - icon_state = "chitin" - default_type = MAT_CHITIN - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/leather.ogg' - pickup_sound = 'sound/items/pickup/leather.ogg' - -/obj/item/stack/material/glass - name = "glass" - icon_state = "sheet-transparent" - default_type = "glass" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - apply_colour = TRUE - -/obj/item/stack/material/glass/reinforced - name = "reinforced glass" - icon_state = "sheet-rtransparent" - default_type = "rglass" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/glass/phoronglass - name = "borosilicate glass" - desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures" - singular_name = "borosilicate glass sheet" - icon_state = "sheet-transparent" - default_type = "borosilicate glass" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/glass/phoronrglass - name = "reinforced borosilicate glass" - desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods." - singular_name = "reinforced borosilicate glass sheet" - icon_state = "sheet-rtransparent" - default_type = "reinforced borosilicate glass" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/bronze - name = "bronze" - icon_state = "sheet-ingot" - singular_name = "bronze ingot" - default_type = "bronze" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/tin - name = "tin" - icon_state = "sheet-ingot" - singular_name = "tin ingot" - default_type = "tin" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/copper - name = "copper" - icon_state = "sheet-ingot" - singular_name = "copper ingot" - default_type = "copper" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/painite - name = "painite" - icon_state = "sheet-gem" - singular_name = "painite gem" - default_type = "painite" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/void_opal - name = "void opal" - icon_state = "sheet-void_opal" - singular_name = "void opal" - default_type = "void opal" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/quartz - name = "quartz" - icon_state = "sheet-gem" - singular_name = "quartz gem" - default_type = "quartz" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/aluminium - name = "aluminium" - icon_state = "sheet-ingot" - singular_name = "aluminium ingot" - default_type = "aluminium" - apply_colour = 1 - no_variants = FALSE diff --git a/code/modules/materials/material_sheets_vr.dm b/code/modules/materials/material_sheets_vr.dm deleted file mode 100644 index 71d7e7d3ea..0000000000 --- a/code/modules/materials/material_sheets_vr.dm +++ /dev/null @@ -1,66 +0,0 @@ -/obj/item/stack/material/titanium - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-titanium" - no_variants = FALSE - -/obj/fiftyspawner/titanium - name = "stack of titanium" - type_to_spawn = /obj/item/stack/material/titanium - -/obj/item/stack/material/glass/titanium - name = "ti-glass sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-titaniumglass" - item_state = "sheet-silver" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - default_type = MAT_TITANIUMGLASS - -/obj/fiftyspawner/titanium_glass - name = "stack of ti-glass" - type_to_spawn = /obj/item/stack/material/glass/titanium - -/obj/item/stack/material/plastitanium - name = "plastitanium sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitanium" - item_state = "sheet-silver" - no_variants = FALSE - default_type = MAT_PLASTITANIUM - -/obj/fiftyspawner/plastitanium - name = "stack of plastitanium" - type_to_spawn = /obj/item/stack/material/plastitanium - -/obj/item/stack/material/plastitanium/hull - name = "plastitanium hull sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitanium" - item_state = "sheet-silver" - no_variants = FALSE - default_type = MAT_PLASTITANIUMHULL - -/obj/fiftyspawner/plastitanium_hull - name = "stack of plastitanium" - type_to_spawn = /obj/item/stack/material/plastitanium/hull - -/obj/item/stack/material/glass/plastitanium - name = "plastitanium glass sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitaniumglass" - item_state = "sheet-silver" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - default_type = MAT_PLASTITANIUMGLASS - -/obj/fiftyspawner/plastitanium_glass - name = "stack of plastitanium glass" - type_to_spawn = /obj/item/stack/material/glass/plastitanium - -/obj/item/stack/material/gold/hull - name = "gold hull sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitanium" - item_state = "sheet-silver" - no_variants = FALSE - default_type = MAT_GOLDHULL \ No newline at end of file diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm deleted file mode 100644 index acd3c5a809..0000000000 --- a/code/modules/materials/materials.dm +++ /dev/null @@ -1,1299 +0,0 @@ -/* - MATERIAL DATUMS - This data is used by various parts of the game for basic physical properties and behaviors - of the metals/materials used for constructing many objects. Each var is commented and should be pretty - self-explanatory but the various object types may have their own documentation. ~Z - - PATHS THAT USE DATUMS - turf/simulated/wall - obj/item/weapon/material - obj/structure/barricade - obj/item/stack/material - obj/structure/table - - VALID ICONS - WALLS - stone - metal - solid - resin - ONLY WALLS - cult - hull - curvy - jaggy - brick - REINFORCEMENT - reinf_over - reinf_mesh - reinf_cult - reinf_metal - DOORS - stone - metal - resin - wood -*/ - -// Assoc list containing all material datums indexed by name. -var/list/name_to_material - -//Returns the material the object is made of, if applicable. -//Will we ever need to return more than one value here? Or should we just return the "dominant" material. -/obj/proc/get_material() - return null - -//mostly for convenience -/obj/proc/get_material_name() - var/datum/material/material = get_material() - if(material) - return material.name - -// Builds the datum list above. -/proc/populate_material_list(force_remake=0) - if(name_to_material && !force_remake) return // Already set up! - name_to_material = list() - for(var/type in subtypesof(/datum/material)) - var/datum/material/new_mineral = new type - if(!new_mineral.name) - qdel(new_mineral) - continue - name_to_material[lowertext(new_mineral.name)] = new_mineral - return 1 - -// Safety proc to make sure the material list exists before trying to grab from it. -/proc/get_material_by_name(name) - if(!name_to_material) - populate_material_list() - return name_to_material[name] - -/proc/material_display_name(name) - var/datum/material/material = get_material_by_name(name) - if(material) - return material.display_name - return null - -// Material definition and procs follow. -/datum/material - var/name // Unique name for use in indexing the list. - var/display_name // Prettier name for display. - var/use_name - var/flags = 0 // Various status modifiers. - var/sheet_singular_name = "sheet" - var/sheet_plural_name = "sheets" - var/is_fusion_fuel - - // Shards/tables/structures - var/shard_type = SHARD_SHRAPNEL // Path of debris object. - var/shard_icon // Related to above. - var/shard_can_repair = 1 // Can shards be turned into sheets with a welder? - var/list/recipes // Holder for all recipes usable with a sheet of this material. - var/destruction_desc = "breaks apart" // Fancy string for barricades/tables/objects exploding. - - // Icons - var/icon_colour // Colour applied to products of this material. - var/icon_base = "metal" // Wall and table base icon tag. See header. - var/door_icon_base = "metal" // Door base icon tag. See header. - var/icon_reinf = "reinf_metal" // Overlay used - var/list/stack_origin_tech = list(TECH_MATERIAL = 1) // Research level for stacks. - var/pass_stack_colors = FALSE // Will stacks made from this material pass their colors onto objects? - - // Attributes - var/cut_delay = 0 // Delay in ticks when cutting through this wall. - var/radioactivity // Radiation var. Used in wall and object processing to irradiate surroundings. - var/ignition_point // K, point at which the material catches on fire. - var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this - var/integrity = 150 // General-use HP value for products. - var/protectiveness = 10 // How well this material works as armor. Higher numbers are better, diminishing returns applies. - var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors. - var/reflectivity = 0 // How reflective to light is the material? Currently used for laser reflection and defense. - var/explosion_resistance = 5 // Only used by walls currently. - var/negation = 0 // Objects that respect this will randomly absorb impacts with this var as the percent chance. - var/spatial_instability = 0 // Objects that have trouble staying in the same physical space by sheer laws of nature have this. Percent for respecting items to cause teleportation. - var/conductive = 1 // Objects without this var add NOCONDUCT to flags on spawn. - var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. - var/list/composite_material // If set, object matter var will be a list containing these values. - var/luminescence - var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. - var/supply_conversion_value // Supply points per sheet that this material sells for. - - // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. - var/created_window - var/created_fulltile_window - var/rod_product - var/wire_product - var/list/window_options = list() - - // Damage values. - var/hardness = 60 // Prob of wall destruction by hulk, used for edge damage in weapons. Also used for bullet protection in armor. - var/weight = 20 // Determines blunt damage/throwforce for weapons. - - // Noise when someone is faceplanted onto a table made of this material. - var/tableslam_noise = 'sound/weapons/tablehit1.ogg' - // Noise made when a simple door made of this material opens or closes. - var/dooropen_noise = 'sound/effects/stonedoor_openclose.ogg' - // Path to resulting stacktype. Todo remove need for this. - var/stack_type - // Wallrot crumble message. - var/rotting_touch_message = "crumbles under your touch" - -// Placeholders for light tiles and rglass. -/datum/material/proc/build_rod_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) - if(!rod_product) - to_chat(user, "You cannot make anything out of \the [target_stack]") - return - if(used_stack.get_amount() < 1 || target_stack.get_amount() < 1) - to_chat(user, "You need one rod and one sheet of [display_name] to make anything useful.") - return - used_stack.use(1) - target_stack.use(1) - var/obj/item/stack/S = new rod_product(get_turf(user)) - S.add_fingerprint(user) - S.add_to_stacks(user) - -/datum/material/proc/build_wired_product(var/mob/living/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) - if(!wire_product) - to_chat(user, "You cannot make anything out of \the [target_stack]") - return - if(used_stack.get_amount() < 5 || target_stack.get_amount() < 1) - to_chat(user, "You need five wires and one sheet of [display_name] to make anything useful.") - return - - used_stack.use(5) - target_stack.use(1) - to_chat(user, "You attach wire to the [name].") - var/obj/item/product = new wire_product(get_turf(user)) - user.put_in_hands(product) - -// Make sure we have a display name and shard icon even if they aren't explicitly set. -/datum/material/New() - ..() - if(!display_name) - display_name = name - if(!use_name) - use_name = display_name - if(!shard_icon) - shard_icon = shard_type - -// This is a placeholder for proper integration of windows/windoors into the system. -/datum/material/proc/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - return 0 - -// Weapons handle applying a divisor for this value locally. -/datum/material/proc/get_blunt_damage() - return weight //todo - -// Return the matter comprising this material. -/datum/material/proc/get_matter() - var/list/temp_matter = list() - if(islist(composite_material)) - for(var/material_string in composite_material) - temp_matter[material_string] = composite_material[material_string] - else if(SHEET_MATERIAL_AMOUNT) - temp_matter[name] = SHEET_MATERIAL_AMOUNT - return temp_matter - -// As above. -/datum/material/proc/get_edge_damage() - return hardness //todo - -// Snowflakey, only checked for alien doors at the moment. -/datum/material/proc/can_open_material_door(var/mob/living/user) - return 1 - -// Currently used for weapons and objects made of uranium to irradiate things. -/datum/material/proc/products_need_process() - return (radioactivity>0) //todo - -// Used by walls when qdel()ing to avoid neighbor merging. -/datum/material/placeholder - name = "placeholder" - -// Places a girder object when a wall is dismantled, also applies reinforced material. -/datum/material/proc/place_dismantled_girder(var/turf/target, var/datum/material/reinf_material, var/datum/material/girder_material) - var/obj/structure/girder/G = new(target) - if(reinf_material) - G.reinf_material = reinf_material - G.reinforce_girder() - if(girder_material) - if(istype(girder_material, /datum/material)) - girder_material = girder_material.name - G.set_material(girder_material) - - -// General wall debris product placement. -// Not particularly necessary aside from snowflakey cult girders. -/datum/material/proc/place_dismantled_product(var/turf/target) - place_sheet(target) - -// Debris product. Used ALL THE TIME. -/datum/material/proc/place_sheet(var/turf/target) - if(stack_type) - return new stack_type(target) - -// As above. -/datum/material/proc/place_shard(var/turf/target) - if(shard_type) - return new /obj/item/weapon/material/shard(target, src.name) - -// Used by walls and weapons to determine if they break or not. -/datum/material/proc/is_brittle() - return !!(flags & MATERIAL_BRITTLE) - -/datum/material/proc/combustion_effect(var/turf/T, var/temperature) - return - -// Used by walls to do on-touch things, after checking for crumbling and open-ability. -/datum/material/proc/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) - return - -// Datum definitions follow. -/datum/material/uranium - name = "uranium" - stack_type = /obj/item/stack/material/uranium - radioactivity = 12 - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#007A00" - weight = 22 - stack_origin_tech = list(TECH_MATERIAL = 5) - door_icon_base = "stone" - supply_conversion_value = 2 - -/datum/material/diamond - name = "diamond" - stack_type = /obj/item/stack/material/diamond - flags = MATERIAL_UNMELTABLE - cut_delay = 60 - icon_colour = "#00FFE1" - opacity = 0.4 - reflectivity = 0.6 - conductive = 0 - conductivity = 1 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 100 - stack_origin_tech = list(TECH_MATERIAL = 6) - supply_conversion_value = 8 - -/datum/material/gold - name = "gold" - stack_type = /obj/item/stack/material/gold - icon_colour = "#EDD12F" - weight = 24 - hardness = 40 - conductivity = 41 - stack_origin_tech = list(TECH_MATERIAL = 4) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - -/datum/material/gold/bronze //placeholder for ashtrays - name = "bronze" - icon_colour = "#EDD12F" - -/datum/material/silver - name = "silver" - stack_type = /obj/item/stack/material/silver - icon_colour = "#D1E6E3" - weight = 22 - hardness = 50 - conductivity = 63 - stack_origin_tech = list(TECH_MATERIAL = 3) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - -//R-UST port -/datum/material/supermatter - name = "supermatter" - icon_colour = "#FFFF00" - stack_type = /obj/item/stack/material/supermatter - shard_type = SHARD_SHARD - radioactivity = 20 - stack_type = null - luminescence = 3 - ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE - icon_base = "stone" - shard_type = SHARD_SHARD - hardness = 30 - door_icon_base = "stone" - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - is_fusion_fuel = 1 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 5, TECH_BLUESPACE = 4) - -/datum/material/phoron - name = "phoron" - stack_type = /obj/item/stack/material/phoron - ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE - icon_base = "stone" - icon_colour = "#FC2BC5" - shard_type = SHARD_SHARD - hardness = 30 - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_PHORON = 2) - door_icon_base = "stone" - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - supply_conversion_value = 5 - -/* -// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. -/datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) - if(isnull(ignition_point)) - return 0 - if(temperature < ignition_point) - return 0 - var/totalPhoron = 0 - for(var/turf/simulated/floor/target_tile in range(2,T)) - var/phoronToDeduce = (temperature/30) * effect_multiplier - totalPhoron += phoronToDeduce - target_tile.assume_gas("phoron", phoronToDeduce, 200+T0C) - spawn (0) - target_tile.hotspot_expose(temperature, 400) - return round(totalPhoron/100) -*/ - -/datum/material/stone - name = "sandstone" - stack_type = /obj/item/stack/material/sandstone - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#D9C179" - shard_type = SHARD_STONE_PIECE - weight = 22 - hardness = 55 - protectiveness = 5 // 20% - conductive = 0 - conductivity = 5 - door_icon_base = "stone" - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - -/datum/material/stone/marble - name = "marble" - icon_colour = "#AAAAAA" - weight = 26 - hardness = 30 //VOREStation Edit - Please. - integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system - stack_type = /obj/item/stack/material/marble - supply_conversion_value = 2 - -/datum/material/steel - name = DEFAULT_WALL_MATERIAL - stack_type = /obj/item/stack/material/steel - integrity = 150 - conductivity = 11 // Assuming this is carbon steel, it would actually be slightly less conductive than iron, but lets ignore that. - protectiveness = 10 // 33% - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#666666" - -/datum/material/steel/hull - name = MAT_STEELHULL - stack_type = /obj/item/stack/material/steel/hull - integrity = 250 - explosion_resistance = 10 - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#666677" - -/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. - new /obj/item/stack/material/steel(target) - -/datum/material/diona - name = "biomass" - icon_colour = null - stack_type = null - integrity = 600 - icon_base = "diona" - icon_reinf = "noreinf" - -/datum/material/diona/place_dismantled_product() - return - -/datum/material/diona/place_dismantled_girder(var/turf/target) - spawn_diona_nymph(target) - -/datum/material/steel/holographic - name = "holo" + DEFAULT_WALL_MATERIAL - display_name = DEFAULT_WALL_MATERIAL - stack_type = null - shard_type = SHARD_NONE - -/datum/material/plasteel - name = "plasteel" - stack_type = /obj/item/stack/material/plasteel - integrity = 400 - melting_point = 6000 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#777777" - explosion_resistance = 25 - hardness = 80 - weight = 23 - protectiveness = 20 // 50% - conductivity = 13 // For the purposes of balance. - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo - supply_conversion_value = 6 - -/datum/material/plasteel/hull - name = MAT_PLASTEELHULL - stack_type = /obj/item/stack/material/plasteel/hull - integrity = 600 - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#777788" - explosion_resistance = 40 - -/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/plasteel(target) - -// Very rare alloy that is reflective, should be used sparingly. -/datum/material/durasteel - name = "durasteel" - stack_type = /obj/item/stack/material/durasteel/hull - integrity = 600 - melting_point = 7000 - icon_base = "metal" - icon_reinf = "reinf_metal" - icon_colour = "#6EA7BE" - explosion_resistance = 75 - hardness = 100 - weight = 28 - protectiveness = 60 // 75% - reflectivity = 0.7 // Not a perfect mirror, but close. - stack_origin_tech = list(TECH_MATERIAL = 8) - composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug - supply_conversion_value = 9 - -/datum/material/durasteel/hull //The 'Hardball' of starship hulls. - name = MAT_DURASTEELHULL - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#45829a" - explosion_resistance = 90 - reflectivity = 0.9 - -/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. - new /obj/item/stack/material/durasteel(target) - -/datum/material/plasteel/titanium - name = MAT_TITANIUM - stack_type = /obj/item/stack/material/titanium - conductivity = 2.38 - icon_base = "metal" - door_icon_base = "metal" - icon_colour = "#D1E6E3" - icon_reinf = "reinf_metal" - composite_material = null - -/datum/material/plasteel/titanium/hull - name = MAT_TITANIUMHULL - stack_type = /obj/item/stack/material/titanium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - -/datum/material/plasteel/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets. - new /obj/item/stack/material/titanium(target) - -/datum/material/glass - name = "glass" - stack_type = /obj/item/stack/material/glass - flags = MATERIAL_BRITTLE - icon_colour = "#00E1FF" - opacity = 0.3 - integrity = 100 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 30 - weight = 15 - protectiveness = 0 // 0% - conductive = 0 - conductivity = 1 // Glass shards don't conduct. - door_icon_base = "stone" - destruction_desc = "shatters" - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) - created_window = /obj/structure/window/basic - created_fulltile_window = /obj/structure/window/basic/full - rod_product = /obj/item/stack/material/glass/reinforced - -/datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - - if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) - return 0 - - if(!user.IsAdvancedToolUser()) - to_chat(user, "This task is too complex for your clumsy hands.") - return 1 - - var/turf/T = user.loc - if(!istype(T)) - to_chat(user, "You must be standing on open flooring to build a window.") - return 1 - - var/title = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)" - var/choice = input(title, "What would you like to construct?") as null|anything in window_options - - if(!choice || !used_stack || !user || used_stack.loc != user || user.stat || user.loc != T) - return 1 - - // Get data for building windows here. - var/list/possible_directions = cardinal.Copy() - var/window_count = 0 - for (var/obj/structure/window/check_window in user.loc) - window_count++ - possible_directions -= check_window.dir - for (var/obj/structure/windoor_assembly/check_assembly in user.loc) - window_count++ - possible_directions -= check_assembly.dir - for (var/obj/machinery/door/window/check_windoor in user.loc) - window_count++ - possible_directions -= check_windoor.dir - - // Get the closest available dir to the user's current facing. - var/build_dir = SOUTHWEST //Default to southwest for fulltile windows. - var/failed_to_build - - if(window_count >= 4) - failed_to_build = 1 - else - if(choice in list("One Direction","Windoor")) - if(possible_directions.len) - for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180))) - if(direction in possible_directions) - build_dir = direction - break - else - failed_to_build = 1 - if(failed_to_build) - to_chat(user, "There is no room in this location.") - return 1 - - var/build_path = /obj/structure/windoor_assembly - var/sheets_needed = window_options[choice] - if(choice == "Windoor") - if(is_reinforced()) - build_path = /obj/structure/windoor_assembly/secure - else if(choice == "Full Window") - build_path = created_fulltile_window - else - build_path = created_window - - if(used_stack.get_amount() < sheets_needed) - to_chat(user, "You need at least [sheets_needed] sheets to build this.") - return 1 - - // Build the structure and update sheet count etc. - used_stack.use(sheets_needed) - new build_path(T, build_dir, 1) - return 1 - -/datum/material/glass/proc/is_reinforced() - return (hardness > 35) //todo - -/datum/material/glass/reinforced - name = "rglass" - display_name = "reinforced glass" - stack_type = /obj/item/stack/material/glass/reinforced - flags = MATERIAL_BRITTLE - icon_colour = "#00E1FF" - opacity = 0.3 - integrity = 100 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 40 - weight = 30 - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) - created_window = /obj/structure/window/reinforced - created_fulltile_window = /obj/structure/window/reinforced/full - wire_product = null - rod_product = null - -/datum/material/glass/phoron - name = "borosilicate glass" - display_name = "borosilicate glass" - stack_type = /obj/item/stack/material/glass/phoronglass - flags = MATERIAL_BRITTLE - integrity = 100 - icon_colour = "#FC2BC5" - stack_origin_tech = list(TECH_MATERIAL = 4) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/phoronbasic - created_fulltile_window = /obj/structure/window/phoronbasic/full - wire_product = null - rod_product = /obj/item/stack/material/glass/phoronrglass - -/datum/material/glass/phoron/reinforced - name = "reinforced borosilicate glass" - display_name = "reinforced borosilicate glass" - stack_type = /obj/item/stack/material/glass/phoronrglass - stack_origin_tech = list(TECH_MATERIAL = 5) - composite_material = list() //todo - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/phoronreinforced - created_fulltile_window = /obj/structure/window/phoronreinforced/full - hardness = 40 - weight = 30 - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT) - rod_product = null - -/datum/material/plastic - name = "plastic" - stack_type = /obj/item/stack/material/plastic - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#CCCCCC" - hardness = 10 - weight = 12 - protectiveness = 5 // 20% - conductive = 0 - conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator. - melting_point = T0C+371 //assuming heat resistant plastic - stack_origin_tech = list(TECH_MATERIAL = 3) - -/datum/material/plastic/holographic - name = "holoplastic" - display_name = "plastic" - stack_type = null - shard_type = SHARD_NONE - -/datum/material/graphite - name = MAT_GRAPHITE - stack_type = /obj/item/stack/material/graphite - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_mesh" - icon_colour = "#333333" - hardness = 75 - weight = 15 - integrity = 175 - protectiveness = 15 - conductivity = 18 - melting_point = T0C+3600 - radiation_resistance = 15 - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2) - -/datum/material/osmium - name = "osmium" - stack_type = /obj/item/stack/material/osmium - icon_colour = "#9999FF" - stack_origin_tech = list(TECH_MATERIAL = 5) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - conductivity = 100 - supply_conversion_value = 6 - -/datum/material/tritium - name = "tritium" - stack_type = /obj/item/stack/material/tritium - icon_colour = "#777777" - stack_origin_tech = list(TECH_MATERIAL = 5) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - is_fusion_fuel = 1 - conductive = 0 - -/datum/material/deuterium - name = "deuterium" - stack_type = /obj/item/stack/material/deuterium - icon_colour = "#999999" - stack_origin_tech = list(TECH_MATERIAL = 3) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - is_fusion_fuel = 1 - conductive = 0 - -/datum/material/mhydrogen - name = "mhydrogen" - stack_type = /obj/item/stack/material/mhydrogen - icon_colour = "#E6C5DE" - stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) - conductivity = 100 - is_fusion_fuel = 1 - supply_conversion_value = 6 - -/datum/material/platinum - name = "platinum" - stack_type = /obj/item/stack/material/platinum - icon_colour = "#9999FF" - weight = 27 - conductivity = 9.43 - stack_origin_tech = list(TECH_MATERIAL = 2) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 5 - -/datum/material/iron - name = "iron" - stack_type = /obj/item/stack/material/iron - icon_colour = "#5C5454" - weight = 22 - conductivity = 10 - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - -/datum/material/lead - name = MAT_LEAD - stack_type = /obj/item/stack/material/lead - icon_colour = "#273956" - weight = 23 // Lead is a bit more dense than silver IRL, and silver has 22 ingame. - conductivity = 10 - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - radiation_resistance = 25 // Lead is Special and so gets to block more radiation than it normally would with just weight, totalling in 48 protection. - supply_conversion_value = 2 - -// Particle Smasher and other exotic materials. - -/datum/material/verdantium - name = MAT_VERDANTIUM - stack_type = /obj/item/stack/material/verdantium - icon_base = "metal" - door_icon_base = "metal" - icon_reinf = "reinf_metal" - icon_colour = "#4FE95A" - integrity = 80 - protectiveness = 15 - weight = 15 - hardness = 30 - shard_type = SHARD_SHARD - negation = 15 - conductivity = 60 - reflectivity = 0.3 - radiation_resistance = 5 - stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_BIO = 4) - sheet_singular_name = "sheet" - sheet_plural_name = "sheets" - supply_conversion_value = 8 - -/datum/material/morphium - name = MAT_MORPHIUM - stack_type = /obj/item/stack/material/morphium - icon_base = "metal" - door_icon_base = "metal" - icon_colour = "#37115A" - icon_reinf = "reinf_metal" - protectiveness = 60 - integrity = 300 - conductive = 0 - conductivity = 1.5 - hardness = 90 - shard_type = SHARD_SHARD - weight = 30 - negation = 25 - explosion_resistance = 85 - reflectivity = 0.2 - radiation_resistance = 10 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_ILLEGAL = 1, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_ARCANE = 1) - supply_conversion_value = 13 - -/datum/material/morphium/hull - name = MAT_MORPHIUMHULL - stack_type = /obj/item/stack/material/morphium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - -/datum/material/valhollide - name = MAT_VALHOLLIDE - stack_type = /obj/item/stack/material/valhollide - icon_base = "stone" - door_icon_base = "stone" - icon_reinf = "reinf_mesh" - icon_colour = "##FFF3B2" - protectiveness = 30 - integrity = 240 - weight = 30 - hardness = 45 - negation = 2 - conductive = 0 - conductivity = 5 - reflectivity = 0.5 - radiation_resistance = 20 - spatial_instability = 30 - stack_origin_tech = list(TECH_MATERIAL = 7, TECH_PHORON = 5, TECH_BLUESPACE = 5) - sheet_singular_name = "gem" - sheet_plural_name = "gems" - - -// Adminspawn only, do not let anyone get this. -/datum/material/alienalloy - name = "alienalloy" - display_name = "durable alloy" - stack_type = null - flags = MATERIAL_UNMELTABLE - icon_colour = "#6C7364" - integrity = 1200 - melting_point = 6000 // Hull plating. - explosion_resistance = 200 // Hull plating. - hardness = 500 - weight = 500 - protectiveness = 80 // 80% - -// Likewise. -/datum/material/alienalloy/elevatorium - name = "elevatorium" - display_name = "elevator panelling" - icon_colour = "#666666" - -// Ditto. -/datum/material/alienalloy/dungeonium - name = "dungeonium" - display_name = "ultra-durable" - icon_base = "dungeon" - icon_colour = "#FFFFFF" - -/datum/material/alienalloy/bedrock - name = "bedrock" - display_name = "impassable rock" - icon_base = "rock" - icon_colour = "#FFFFFF" - -/datum/material/alienalloy/alium - name = "alium" - display_name = "alien" - icon_base = "alien" - icon_colour = "#FFFFFF" - -/datum/material/resin - name = "resin" - icon_colour = "#35343a" - icon_base = "resin" - dooropen_noise = 'sound/effects/attackblob.ogg' - door_icon_base = "resin" - icon_reinf = "reinf_mesh" - melting_point = T0C+300 - sheet_singular_name = "blob" - sheet_plural_name = "blobs" - conductive = 0 - explosion_resistance = 60 - radiation_resistance = 10 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_BIO = 7) - stack_type = /obj/item/stack/material/resin - -/datum/material/resin/can_open_material_door(var/mob/living/user) - var/mob/living/carbon/M = user - if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - return 1 - return 0 - -/datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) - var/mob/living/carbon/M = L - if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - to_chat(M, "\The [W] shudders under your touch, starting to become porous.") - playsound(W, 'sound/effects/attackblob.ogg', 50, 1) - if(do_after(L, 5 SECONDS)) - spawn(2) - playsound(W, 'sound/effects/attackblob.ogg', 100, 1) - W.dismantle_wall() - return 1 - return 0 - -/datum/material/wood - name = MAT_WOOD - stack_type = /obj/item/stack/material/wood - icon_colour = "#9c5930" - integrity = 50 - icon_base = "wood" - explosion_resistance = 2 - shard_type = SHARD_SPLINTER - shard_can_repair = 0 // you can't weld splinters back into planks - hardness = 15 - weight = 18 - protectiveness = 8 // 28% - conductive = 0 - conductivity = 1 - melting_point = T0C+300 //okay, not melting in this case, but hot enough to destroy wood - ignition_point = T0C+288 - stack_origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) - dooropen_noise = 'sound/effects/doorcreaky.ogg' - door_icon_base = "wood" - destruction_desc = "splinters" - sheet_singular_name = "plank" - sheet_plural_name = "planks" - -/datum/material/wood/log - name = MAT_LOG - icon_base = "log" - stack_type = /obj/item/stack/material/log - sheet_singular_name = null - sheet_plural_name = "pile" - pass_stack_colors = TRUE - supply_conversion_value = 1 - -/datum/material/wood/log/sif - name = MAT_SIFLOG - icon_colour = "#0099cc" // Cyan-ish - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) - stack_type = /obj/item/stack/material/log/sif - -/datum/material/wood/holographic - name = "holowood" - display_name = "wood" - stack_type = null - shard_type = SHARD_NONE - -/datum/material/wood/sif - name = MAT_SIFWOOD - stack_type = /obj/item/stack/material/wood/sif - icon_colour = "#0099cc" // Cyan-ish - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. - -/datum/material/cardboard - name = "cardboard" - stack_type = /obj/item/stack/material/cardboard - flags = MATERIAL_BRITTLE - integrity = 10 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#AAAAAA" - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - conductive = 0 - ignition_point = T0C+232 //"the temperature at which book-paper catches fire, and burns." close enough - melting_point = T0C+232 //temperature at which cardboard walls would be destroyed - stack_origin_tech = list(TECH_MATERIAL = 1) - door_icon_base = "wood" - destruction_desc = "crumples" - radiation_resistance = 1 - pass_stack_colors = TRUE - -/datum/material/snow - name = MAT_SNOW - stack_type = /obj/item/stack/material/snow - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#FFFFFF" - integrity = 1 - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - stack_origin_tech = list(TECH_MATERIAL = 1) - melting_point = T0C+1 - destruction_desc = "crumples" - sheet_singular_name = "pile" - sheet_plural_name = "pile" //Just a bigger pile - radiation_resistance = 1 - -/datum/material/snowbrick //only slightly stronger than snow, used to make igloos mostly - name = "packed snow" - flags = MATERIAL_BRITTLE - stack_type = /obj/item/stack/material/snowbrick - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#D8FDFF" - integrity = 50 - weight = 2 - hardness = 2 - protectiveness = 0 // 0% - stack_origin_tech = list(TECH_MATERIAL = 1) - melting_point = T0C+1 - destruction_desc = "crumbles" - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - radiation_resistance = 1 - -/datum/material/cloth //todo - name = "cloth" - stack_origin_tech = list(TECH_MATERIAL = 2) - door_icon_base = "wood" - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - flags = MATERIAL_PADDING - conductive = 0 - integrity = 40 - pass_stack_colors = TRUE - supply_conversion_value = 2 - -/datum/material/cloth/syncloth - name = "syncloth" - stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 2) - door_icon_base = "wood" - ignition_point = T0C+532 - melting_point = T0C+600 - integrity = 200 - protectiveness = 15 // 4% - flags = MATERIAL_PADDING - conductive = 0 - pass_stack_colors = TRUE - supply_conversion_value = 3 - -/datum/material/cult - name = "cult" - display_name = "disturbing stone" - icon_base = "cult" - icon_colour = "#402821" - icon_reinf = "reinf_cult" - shard_type = SHARD_STONE_PIECE - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - conductive = 0 - -/datum/material/cult/place_dismantled_girder(var/turf/target) - new /obj/structure/girder/cult(target, "cult") - -/datum/material/cult/place_dismantled_product(var/turf/target) - new /obj/effect/decal/cleanable/blood(target) - -/datum/material/cult/reinf - name = "cult2" - display_name = "human remains" - -/datum/material/cult/reinf/place_dismantled_product(var/turf/target) - new /obj/effect/decal/remains/human(target) - -/datum/material/chitin - name = MAT_CHITIN - icon_colour = "#8d6653" - stack_type = /obj/item/stack/material/chitin - stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4) - icon_base = "solid" - icon_reinf = "reinf_mesh" - integrity = 60 - weight = 10 - ignition_point = T0C+400 - melting_point = T0C+500 - protectiveness = 20 - conductive = 0 - supply_conversion_value = 4 - -//TODO PLACEHOLDERS: -/datum/material/leather - name = MAT_LEATHER - display_name = "plainleather" - icon_colour = "#5C4831" - stack_type = /obj/item/stack/material/leather - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) - flags = MATERIAL_PADDING - ignition_point = T0C+300 - melting_point = T0C+300 - protectiveness = 3 // 13% - conductive = 0 - integrity = 40 - supply_conversion_value = 3 - -//CHOMPstation Removal Start: Moved to materials_ch and changed to allow for material var -/* -/material/carpet - name = "carpet" - display_name = "comfy" - use_name = "red upholstery" - icon_colour = "#DA020A" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - sheet_singular_name = "tile" - sheet_plural_name = "tiles" - protectiveness = 1 // 4% - conductive = 0 -*/ -//CHOMPstation Removal End - -/datum/material/cotton - name = "cotton" - display_name ="cotton" - icon_colour = "#FFFFFF" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -// This all needs to be OOP'd and use inheritence if its ever used in the future. -/datum/material/cloth_teal - name = "teal" - display_name ="teal" - use_name = "teal cloth" - icon_colour = "#00EAFA" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_black - name = "black" - display_name = "black" - use_name = "black cloth" - icon_colour = "#505050" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_green - name = "green" - display_name = "green" - use_name = "green cloth" - icon_colour = "#01C608" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_puple - name = "purple" - display_name = "purple" - use_name = "purple cloth" - icon_colour = "#9C56C4" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_blue - name = "blue" - display_name = "blue" - use_name = "blue cloth" - icon_colour = "#6B6FE3" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_beige - name = "beige" - display_name = "beige" - use_name = "beige cloth" - icon_colour = "#E8E7C8" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_lime - name = "lime" - display_name = "lime" - use_name = "lime cloth" - icon_colour = "#62E36C" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_yellow - name = "yellow" - display_name = "yellow" - use_name = "yellow cloth" - icon_colour = "#EEF573" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_orange - name = "orange" - display_name = "orange" - use_name = "orange cloth" - icon_colour = "#E3BF49" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/toy_foam - name = "foam" - display_name = "foam" - use_name = "foam" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - icon_colour = "#ff9900" - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - conductive = 0 - -/datum/material/void_opal - name = "void opal" - display_name = "void opal" - use_name = "void opal" - icon_colour = "#0f0f0f" - stack_type = /obj/item/stack/material/void_opal - flags = MATERIAL_UNMELTABLE - cut_delay = 60 - reflectivity = 0 - conductivity = 1 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 100 - stack_origin_tech = list(TECH_ARCANE = 1, TECH_MATERIAL = 6) - sheet_singular_name = "gem" - sheet_plural_name = "gems" - supply_conversion_value = 30 // These are hilariously rare. - -/datum/material/painite - name = "painite" - display_name = "painite" - use_name = "painite" - icon_colour = "#6b4947" - stack_type = /obj/item/stack/material/painite - flags = MATERIAL_UNMELTABLE - reflectivity = 0.3 - tableslam_noise = 'sound/effects/Glasshit.ogg' - sheet_singular_name = "gem" - sheet_plural_name = "gems" - supply_conversion_value = 4 - -/datum/material/tin - name = "tin" - display_name = "tin" - use_name = "tin" - stack_type = /obj/item/stack/material/tin - icon_colour = "#b2afaf" - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 1 - hardness = 50 - weight = 13 - -/datum/material/copper - name = "copper" - display_name = "copper" - use_name = "copper" - stack_type = /obj/item/stack/material/copper - conductivity = 52 - icon_colour = "#af633e" - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 1 - weight = 13 - hardness = 50 - -/datum/material/quartz - name = "quartz" - display_name = "quartz" - use_name = "quartz" - icon_colour = "#e6d7df" - stack_type = /obj/item/stack/material/quartz - tableslam_noise = 'sound/effects/Glasshit.ogg' - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - supply_conversion_value = 4 - -/datum/material/aluminium - name = "aluminium" - display_name = "aluminium" - use_name = "aluminium" - icon_colour = "#e5e2d0" - stack_type = /obj/item/stack/material/aluminium - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - weight = 10 diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm new file mode 100644 index 0000000000..1b6cabffd9 --- /dev/null +++ b/code/modules/materials/materials/_materials.dm @@ -0,0 +1,284 @@ +/* + MATERIAL DATUMS + This data is used by various parts of the game for basic physical properties and behaviors + of the metals/materials used for constructing many objects. Each var is commented and should be pretty + self-explanatory but the various object types may have their own documentation. ~Z + + PATHS THAT USE DATUMS + turf/simulated/wall + obj/item/weapon/material + obj/structure/barricade + obj/item/stack/material + obj/structure/table + + VALID ICONS + WALLS + stone + metal + solid + resin + ONLY WALLS + cult + hull + curvy + jaggy + brick + REINFORCEMENT + reinf_over + reinf_mesh + reinf_cult + reinf_metal + DOORS + stone + metal + resin + wood +*/ + +// Assoc list containing all material datums indexed by name. +var/list/name_to_material + +//Returns the material the object is made of, if applicable. +//Will we ever need to return more than one value here? Or should we just return the "dominant" material. +/obj/proc/get_material() + return null + +//mostly for convenience +/obj/proc/get_material_name() + var/datum/material/material = get_material() + if(material) + return material.name + +// Builds the datum list above. +/proc/populate_material_list(force_remake=0) + if(name_to_material && !force_remake) return // Already set up! + name_to_material = list() + for(var/type in subtypesof(/datum/material)) + var/datum/material/new_mineral = new type + if(!new_mineral.name) + continue + name_to_material[lowertext(new_mineral.name)] = new_mineral + return 1 + +// Safety proc to make sure the material list exists before trying to grab from it. +/proc/get_material_by_name(name) + if(!name_to_material) + populate_material_list() + return name_to_material[name] + +/proc/material_display_name(name) + var/datum/material/material = get_material_by_name(name) + if(material) + return material.display_name + return null + +// Material definition and procs follow. +/datum/material + var/name // Unique name for use in indexing the list. + var/display_name // Prettier name for display. + var/use_name + var/flags = 0 // Various status modifiers. + var/sheet_singular_name = "sheet" + var/sheet_plural_name = "sheets" + var/is_fusion_fuel + + // Shards/tables/structures + var/shard_type = SHARD_SHRAPNEL // Path of debris object. + var/shard_icon // Related to above. + var/shard_can_repair = 1 // Can shards be turned into sheets with a welder? + var/list/recipes // Holder for all recipes usable with a sheet of this material. + var/destruction_desc = "breaks apart" // Fancy string for barricades/tables/objects exploding. + + // Icons + var/icon_colour // Colour applied to products of this material. + var/icon_base = "metal" // Wall and table base icon tag. See header. + var/door_icon_base = "metal" // Door base icon tag. See header. + var/icon_reinf = "reinf_metal" // Overlay used + var/list/stack_origin_tech = list(TECH_MATERIAL = 1) // Research level for stacks. + var/pass_stack_colors = FALSE // Will stacks made from this material pass their colors onto objects? + + // Attributes + var/cut_delay = 0 // Delay in ticks when cutting through this wall. + var/radioactivity // Radiation var. Used in wall and object processing to irradiate surroundings. + var/ignition_point // K, point at which the material catches on fire. + var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this + var/integrity = 150 // General-use HP value for products. + var/protectiveness = 10 // How well this material works as armor. Higher numbers are better, diminishing returns applies. + var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors. + var/reflectivity = 0 // How reflective to light is the material? Currently used for laser reflection and defense. + var/explosion_resistance = 5 // Only used by walls currently. + var/negation = 0 // Objects that respect this will randomly absorb impacts with this var as the percent chance. + var/spatial_instability = 0 // Objects that have trouble staying in the same physical space by sheer laws of nature have this. Percent for respecting items to cause teleportation. + var/conductive = 1 // Objects without this var add NOCONDUCT to flags on spawn. + var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. + var/list/composite_material // If set, object matter var will be a list containing these values. + var/luminescence + var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. + var/supply_conversion_value // Supply points per sheet that this material sells for. + + // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. + var/created_window + var/created_fulltile_window + var/rod_product + var/wire_product + var/list/window_options = list() + + // Damage values. + var/hardness = 60 // Prob of wall destruction by hulk, used for edge damage in weapons. Also used for bullet protection in armor. + var/weight = 20 // Determines blunt damage/throwforce for weapons. + + // Noise when someone is faceplanted onto a table made of this material. + var/tableslam_noise = 'sound/weapons/tablehit1.ogg' + // Noise made when a simple door made of this material opens or closes. + var/dooropen_noise = 'sound/effects/stonedoor_openclose.ogg' + // Path to resulting stacktype. Todo remove need for this. + var/stack_type + // Wallrot crumble message. + var/rotting_touch_message = "crumbles under your touch" + +// Placeholders for light tiles and rglass. +/datum/material/proc/build_rod_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) + if(!rod_product) + to_chat(user, "You cannot make anything out of \the [target_stack]") + return + if(used_stack.get_amount() < 1 || target_stack.get_amount() < 1) + to_chat(user, "You need one rod and one sheet of [display_name] to make anything useful.") + return + used_stack.use(1) + target_stack.use(1) + var/obj/item/stack/S = new rod_product(get_turf(user)) + S.add_fingerprint(user) + S.add_to_stacks(user) + +/datum/material/proc/build_wired_product(var/mob/living/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) + if(!wire_product) + to_chat(user, "You cannot make anything out of \the [target_stack]") + return + if(used_stack.get_amount() < 5 || target_stack.get_amount() < 1) + to_chat(user, "You need five wires and one sheet of [display_name] to make anything useful.") + return + + used_stack.use(5) + target_stack.use(1) + to_chat(user, "You attach wire to the [name].") + var/obj/item/product = new wire_product(get_turf(user)) + user.put_in_hands(product) + +// Make sure we have a display name and shard icon even if they aren't explicitly set. +/datum/material/New() + ..() + if(!display_name) + display_name = name + if(!use_name) + use_name = display_name + if(!shard_icon) + shard_icon = shard_type + +// This is a placeholder for proper integration of windows/windoors into the system. +/datum/material/proc/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) + return 0 + +// Weapons handle applying a divisor for this value locally. +/datum/material/proc/get_blunt_damage() + return weight //todo + +// Return the matter comprising this material. +/datum/material/proc/get_matter() + var/list/temp_matter = list() + if(islist(composite_material)) + for(var/material_string in composite_material) + temp_matter[material_string] = composite_material[material_string] + else if(SHEET_MATERIAL_AMOUNT) + temp_matter[name] = SHEET_MATERIAL_AMOUNT + return temp_matter + +// As above. +/datum/material/proc/get_edge_damage() + return hardness //todo + +// Snowflakey, only checked for alien doors at the moment. +/datum/material/proc/can_open_material_door(var/mob/living/user) + return 1 + +// Currently used for weapons and objects made of uranium to irradiate things. +/datum/material/proc/products_need_process() + return (radioactivity>0) //todo + +// Used by walls when qdel()ing to avoid neighbor merging. +/datum/material/placeholder + name = "placeholder" + +// Places a girder object when a wall is dismantled, also applies reinforced material. +/datum/material/proc/place_dismantled_girder(var/turf/target, var/datum/material/reinf_material, var/datum/material/girder_material) + var/obj/structure/girder/G = new(target) + if(reinf_material) + G.reinf_material = reinf_material + G.reinforce_girder() + if(girder_material) + if(istype(girder_material, /datum/material)) + girder_material = girder_material.name + G.set_material(girder_material) + + +// General wall debris product placement. +// Not particularly necessary aside from snowflakey cult girders. +/datum/material/proc/place_dismantled_product(var/turf/target) + place_sheet(target) + +// Debris product. Used ALL THE TIME. +/datum/material/proc/place_sheet(var/turf/target) + if(stack_type) + return new stack_type(target) + +// As above. +/datum/material/proc/place_shard(var/turf/target) + if(shard_type) + return new /obj/item/weapon/material/shard(target, src.name) + +// Used by walls and weapons to determine if they break or not. +/datum/material/proc/is_brittle() + return !!(flags & MATERIAL_BRITTLE) + +/datum/material/proc/combustion_effect(var/turf/T, var/temperature) + return + +// Used by walls to do on-touch things, after checking for crumbling and open-ability. +/datum/material/proc/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) + return + +/datum/material/proc/get_recipes() + if(!recipes) + generate_recipes() + return recipes + +/datum/material/proc/generate_recipes() + // If is_brittle() returns true, these are only good for a single strike. + recipes = list( + new /datum/stack_recipe("[display_name] baseball bat", /obj/item/weapon/material/twohanded/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] armor plate insert", /obj/item/weapon/material/armor_plating/insert, 2, time = 40, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + ) + + if(integrity>=50) + recipes += list( + new /datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + ) + + if(hardness>50) + recipes += list( + new /datum/stack_recipe("[display_name] fork", /obj/item/weapon/material/kitchen/utensil/fork/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] knife", /obj/item/weapon/material/knife/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] blade", /obj/item/weapon/material/butterflyblade, 6, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] defense wire", /obj/item/weapon/material/barbedwire, 10, time = 1 MINUTE, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + ) \ No newline at end of file diff --git a/code/modules/materials/materials/_materials_vr.dm b/code/modules/materials/materials/_materials_vr.dm new file mode 100644 index 0000000000..8c91622fb3 --- /dev/null +++ b/code/modules/materials/materials/_materials_vr.dm @@ -0,0 +1,9 @@ +/obj/item/stack/material/attack(mob/living/M as mob, mob/living/user as mob) + if(M.handle_eat_minerals(src, user)) + return + ..() + +/obj/item/stack/material/attack_generic(var/mob/living/user) //Allow adminbussed mobs to eat ore if they click it while NOT on help intent. + if(user.handle_eat_minerals(src)) + return + ..() diff --git a/code/modules/materials/materials/alien_alloy.dm b/code/modules/materials/materials/alien_alloy.dm new file mode 100644 index 0000000000..741f0275b7 --- /dev/null +++ b/code/modules/materials/materials/alien_alloy.dm @@ -0,0 +1,36 @@ +// Adminspawn only, do not let anyone get this. +/datum/material/alienalloy + name = "alienalloy" + display_name = "durable alloy" + stack_type = null + flags = MATERIAL_UNMELTABLE + icon_colour = "#6C7364" + integrity = 1200 + melting_point = 6000 // Hull plating. + explosion_resistance = 200 // Hull plating. + hardness = 500 + weight = 500 + protectiveness = 80 // 80% + +/datum/material/alienalloy/elevatorium + name = "elevatorium" + display_name = "elevator panelling" + icon_colour = "#666666" + +/datum/material/alienalloy/dungeonium + name = "dungeonium" + display_name = "ultra-durable" + icon_base = "dungeon" + icon_colour = "#FFFFFF" + +/datum/material/alienalloy/bedrock + name = "bedrock" + display_name = "impassable rock" + icon_base = "rock" + icon_colour = "#FFFFFF" + +/datum/material/alienalloy/alium + name = "alium" + display_name = "alien" + icon_base = "alien" + icon_colour = "#FFFFFF" \ No newline at end of file diff --git a/code/modules/materials/materials/cult.dm b/code/modules/materials/materials/cult.dm new file mode 100644 index 0000000000..7d8d4be9f2 --- /dev/null +++ b/code/modules/materials/materials/cult.dm @@ -0,0 +1,23 @@ +/datum/material/cult + name = "cult" + display_name = "disturbing stone" + icon_base = "cult" + icon_colour = "#402821" + icon_reinf = "reinf_cult" + shard_type = SHARD_STONE_PIECE + sheet_singular_name = "brick" + sheet_plural_name = "bricks" + conductive = 0 + +/datum/material/cult/place_dismantled_girder(var/turf/target) + new /obj/structure/girder/cult(target, "cult") + +/datum/material/cult/place_dismantled_product(var/turf/target) + new /obj/effect/decal/cleanable/blood(target) + +/datum/material/cult/reinf + name = "cult2" + display_name = "human remains" + +/datum/material/cult/reinf/place_dismantled_product(var/turf/target) + new /obj/effect/decal/remains/human(target) \ No newline at end of file diff --git a/code/modules/materials/materials/gems.dm b/code/modules/materials/materials/gems.dm new file mode 100644 index 0000000000..9ec22a86b1 --- /dev/null +++ b/code/modules/materials/materials/gems.dm @@ -0,0 +1,154 @@ +/datum/material/phoron + name = "phoron" + stack_type = /obj/item/stack/material/phoron + ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE + icon_base = "stone" + icon_colour = "#FC2BC5" + shard_type = SHARD_SHARD + hardness = 30 + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_PHORON = 2) + door_icon_base = "stone" + sheet_singular_name = "crystal" + sheet_plural_name = "crystals" + supply_conversion_value = 5 + +/* +// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. +/datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) + if(isnull(ignition_point)) + return 0 + if(temperature < ignition_point) + return 0 + var/totalPhoron = 0 + for(var/turf/simulated/floor/target_tile in range(2,T)) + var/phoronToDeduce = (temperature/30) * effect_multiplier + totalPhoron += phoronToDeduce + target_tile.assume_gas("phoron", phoronToDeduce, 200+T0C) + spawn (0) + target_tile.hotspot_expose(temperature, 400) + return round(totalPhoron/100) +*/ + +/datum/material/diamond + name = "diamond" + stack_type = /obj/item/stack/material/diamond + flags = MATERIAL_UNMELTABLE + cut_delay = 60 + icon_colour = "#00FFE1" + opacity = 0.4 + reflectivity = 0.6 + conductive = 0 + conductivity = 1 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 100 + stack_origin_tech = list(TECH_MATERIAL = 6) + supply_conversion_value = 8 + +/datum/material/quartz + name = "quartz" + display_name = "quartz" + use_name = "quartz" + icon_colour = "#e6d7df" + stack_type = /obj/item/stack/material/quartz + tableslam_noise = 'sound/effects/Glasshit.ogg' + sheet_singular_name = "crystal" + sheet_plural_name = "crystals" + supply_conversion_value = 4 + +/datum/material/painite + name = "painite" + display_name = "painite" + use_name = "painite" + icon_colour = "#6b4947" + stack_type = /obj/item/stack/material/painite + flags = MATERIAL_UNMELTABLE + reflectivity = 0.3 + tableslam_noise = 'sound/effects/Glasshit.ogg' + sheet_singular_name = "gem" + sheet_plural_name = "gems" + supply_conversion_value = 4 + +/datum/material/void_opal + name = "void opal" + display_name = "void opal" + use_name = "void opal" + icon_colour = "#0f0f0f" + stack_type = /obj/item/stack/material/void_opal + flags = MATERIAL_UNMELTABLE + cut_delay = 60 + reflectivity = 0 + conductivity = 1 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 100 + stack_origin_tech = list(TECH_ARCANE = 1, TECH_MATERIAL = 6) + sheet_singular_name = "gem" + sheet_plural_name = "gems" + supply_conversion_value = 30 // These are hilariously rare. + +// Particle Smasher and other exotic materials. +/datum/material/valhollide + name = MAT_VALHOLLIDE + stack_type = /obj/item/stack/material/valhollide + icon_base = "stone" + door_icon_base = "stone" + icon_reinf = "reinf_mesh" + icon_colour = "##FFF3B2" + protectiveness = 30 + integrity = 240 + weight = 30 + hardness = 45 + negation = 2 + conductive = 0 + conductivity = 5 + reflectivity = 0.5 + radiation_resistance = 20 + spatial_instability = 30 + stack_origin_tech = list(TECH_MATERIAL = 7, TECH_PHORON = 5, TECH_BLUESPACE = 5) + sheet_singular_name = "gem" + sheet_plural_name = "gems" + +/datum/material/verdantium + name = MAT_VERDANTIUM + stack_type = /obj/item/stack/material/verdantium + icon_base = "metal" + door_icon_base = "metal" + icon_reinf = "reinf_metal" + icon_colour = "#4FE95A" + integrity = 80 + protectiveness = 15 + weight = 15 + hardness = 30 + shard_type = SHARD_SHARD + negation = 15 + conductivity = 60 + reflectivity = 0.3 + radiation_resistance = 5 + stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_BIO = 4) + sheet_singular_name = "sheet" + sheet_plural_name = "sheets" + supply_conversion_value = 8 + +/datum/material/morphium + name = MAT_MORPHIUM + stack_type = /obj/item/stack/material/morphium + icon_base = "metal" + door_icon_base = "metal" + icon_colour = "#37115A" + icon_reinf = "reinf_metal" + protectiveness = 60 + integrity = 300 + conductive = 0 + conductivity = 1.5 + hardness = 90 + shard_type = SHARD_SHARD + weight = 30 + negation = 25 + explosion_resistance = 85 + reflectivity = 0.2 + radiation_resistance = 10 + stack_origin_tech = list(TECH_MATERIAL = 8, TECH_ILLEGAL = 1, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_ARCANE = 1) + supply_conversion_value = 13 + + diff --git a/code/modules/materials/materials/glass.dm b/code/modules/materials/materials/glass.dm new file mode 100644 index 0000000000..7953542278 --- /dev/null +++ b/code/modules/materials/materials/glass.dm @@ -0,0 +1,143 @@ +/datum/material/glass + name = "glass" + stack_type = /obj/item/stack/material/glass + flags = MATERIAL_BRITTLE + icon_colour = "#00E1FF" + opacity = 0.3 + integrity = 100 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 30 + weight = 15 + protectiveness = 0 // 0% + conductive = 0 + conductivity = 1 // Glass shards don't conduct. + door_icon_base = "stone" + destruction_desc = "shatters" + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) + created_window = /obj/structure/window/basic + created_fulltile_window = /obj/structure/window/basic/full + rod_product = /obj/item/stack/material/glass/reinforced + +/datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) + + if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) + return 0 + + if(!user.IsAdvancedToolUser()) + to_chat(user, "This task is too complex for your clumsy hands.") + return 1 + + var/turf/T = user.loc + if(!istype(T)) + to_chat(user, "You must be standing on open flooring to build a window.") + return 1 + + var/title = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)" + var/choice = input(title, "What would you like to construct?") as null|anything in window_options + + if(!choice || !used_stack || !user || used_stack.loc != user || user.stat || user.loc != T) + return 1 + + // Get data for building windows here. + var/list/possible_directions = cardinal.Copy() + var/window_count = 0 + for (var/obj/structure/window/check_window in user.loc) + window_count++ + possible_directions -= check_window.dir + for (var/obj/structure/windoor_assembly/check_assembly in user.loc) + window_count++ + possible_directions -= check_assembly.dir + for (var/obj/machinery/door/window/check_windoor in user.loc) + window_count++ + possible_directions -= check_windoor.dir + + // Get the closest available dir to the user's current facing. + var/build_dir = SOUTHWEST //Default to southwest for fulltile windows. + var/failed_to_build + + if(window_count >= 4) + failed_to_build = 1 + else + if(choice in list("One Direction","Windoor")) + if(possible_directions.len) + for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180))) + if(direction in possible_directions) + build_dir = direction + break + else + failed_to_build = 1 + if(failed_to_build) + to_chat(user, "There is no room in this location.") + return 1 + + var/build_path = /obj/structure/windoor_assembly + var/sheets_needed = window_options[choice] + if(choice == "Windoor") + if(is_reinforced()) + build_path = /obj/structure/windoor_assembly/secure + else if(choice == "Full Window") + build_path = created_fulltile_window + else + build_path = created_window + + if(used_stack.get_amount() < sheets_needed) + to_chat(user, "You need at least [sheets_needed] sheets to build this.") + return 1 + + // Build the structure and update sheet count etc. + used_stack.use(sheets_needed) + new build_path(T, build_dir, 1) + return 1 + +/datum/material/glass/proc/is_reinforced() + return (hardness > 35) //todo + +/datum/material/glass/reinforced + name = "rglass" + display_name = "reinforced glass" + stack_type = /obj/item/stack/material/glass/reinforced + flags = MATERIAL_BRITTLE + icon_colour = "#00E1FF" + opacity = 0.3 + integrity = 100 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 40 + weight = 30 + stack_origin_tech = list(TECH_MATERIAL = 2) + composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) + created_window = /obj/structure/window/reinforced + created_fulltile_window = /obj/structure/window/reinforced/full + wire_product = null + rod_product = null + +/datum/material/glass/phoron + name = "borosilicate glass" + display_name = "borosilicate glass" + stack_type = /obj/item/stack/material/glass/phoronglass + flags = MATERIAL_BRITTLE + integrity = 100 + icon_colour = "#FC2BC5" + stack_origin_tech = list(TECH_MATERIAL = 4) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/phoronbasic + created_fulltile_window = /obj/structure/window/phoronbasic/full + wire_product = null + rod_product = /obj/item/stack/material/glass/phoronrglass + +/datum/material/glass/phoron/reinforced + name = "reinforced borosilicate glass" + display_name = "reinforced borosilicate glass" + stack_type = /obj/item/stack/material/glass/phoronrglass + stack_origin_tech = list(TECH_MATERIAL = 5) + composite_material = list() //todo + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/phoronreinforced + created_fulltile_window = /obj/structure/window/phoronreinforced/full + hardness = 40 + weight = 30 + stack_origin_tech = list(TECH_MATERIAL = 2) + composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT) + rod_product = null diff --git a/code/modules/materials/materials/glass_vr.dm b/code/modules/materials/materials/glass_vr.dm new file mode 100644 index 0000000000..9d7cd81879 --- /dev/null +++ b/code/modules/materials/materials/glass_vr.dm @@ -0,0 +1,33 @@ +/datum/material/glass/titaniumglass + name = MAT_TITANIUMGLASS + display_name = "titanium glass" + stack_type = /obj/item/stack/material/glass/titanium + integrity = 150 + hardness = 50 + weight = 50 + flags = MATERIAL_BRITTLE + icon_colour = "#A7A3A6" + stack_origin_tech = list(TECH_MATERIAL = 5) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/titanium + created_fulltile_window = /obj/structure/window/titanium/full + wire_product = null + rod_product = /obj/item/stack/material/glass/titanium + composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) + +/datum/material/glass/plastaniumglass + name = MAT_PLASTITANIUMGLASS + display_name = "plas-titanium glass" + stack_type = /obj/item/stack/material/glass/plastitanium + integrity = 200 + hardness = 60 + weight = 80 + flags = MATERIAL_BRITTLE + icon_colour = "#676366" + stack_origin_tech = list(TECH_MATERIAL = 6) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/plastitanium + created_fulltile_window = /obj/structure/window/plastitanium/full + wire_product = null + rod_product = /obj/item/stack/material/glass/plastitanium + composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) diff --git a/code/modules/materials/materials/holographic.dm b/code/modules/materials/materials/holographic.dm new file mode 100644 index 0000000000..ff6474ec1e --- /dev/null +++ b/code/modules/materials/materials/holographic.dm @@ -0,0 +1,17 @@ +/datum/material/steel/holographic + name = "holo" + DEFAULT_WALL_MATERIAL + display_name = DEFAULT_WALL_MATERIAL + stack_type = null + shard_type = SHARD_NONE + +/datum/material/plastic/holographic + name = "holoplastic" + display_name = "plastic" + stack_type = null + shard_type = SHARD_NONE + +/datum/material/wood/holographic + name = "holowood" + display_name = "wood" + stack_type = null + shard_type = SHARD_NONE \ No newline at end of file diff --git a/code/modules/materials/materials/metals/hull.dm b/code/modules/materials/materials/metals/hull.dm new file mode 100644 index 0000000000..caf8f13de7 --- /dev/null +++ b/code/modules/materials/materials/metals/hull.dm @@ -0,0 +1,53 @@ +/datum/material/steel/hull + name = MAT_STEELHULL + stack_type = /obj/item/stack/material/steel/hull + integrity = 250 + explosion_resistance = 10 + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#666677" + +/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. + new /obj/item/stack/material/steel(target) + +/datum/material/plasteel/hull + name = MAT_PLASTEELHULL + stack_type = /obj/item/stack/material/plasteel/hull + integrity = 600 + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#777788" + explosion_resistance = 40 + +/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. + new /obj/item/stack/material/plasteel(target) + +/datum/material/durasteel/hull //The 'Hardball' of starship hulls. + name = MAT_DURASTEELHULL + stack_type = /obj/item/stack/material/durasteel/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#45829a" + explosion_resistance = 90 + reflectivity = 0.9 + +/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. + new /obj/item/stack/material/durasteel(target) + +/datum/material/titanium/hull + name = MAT_TITANIUMHULL + stack_type = /obj/item/stack/material/titanium/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + +/datum/material/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets. + new /obj/item/stack/material/titanium(target) + +/datum/material/morphium/hull + name = MAT_MORPHIUMHULL + stack_type = /obj/item/stack/material/morphium/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + +/datum/material/morphium/hull/place_sheet(var/turf/target) + new /obj/item/stack/material/morphium(target) \ No newline at end of file diff --git a/code/modules/materials/materials/metals/hull_vr.dm b/code/modules/materials/materials/metals/hull_vr.dm new file mode 100644 index 0000000000..3c35b3cf39 --- /dev/null +++ b/code/modules/materials/materials/metals/hull_vr.dm @@ -0,0 +1,20 @@ +/datum/material/plastitanium/hull + name = MAT_PLASTITANIUMHULL + stack_type = /obj/item/stack/material/plastitanium/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#585658" + explosion_resistance = 50 + +/datum/material/plastitanium/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. + new /obj/item/stack/material/plastitanium(target) + +/datum/material/gold/hull + name = MAT_GOLDHULL + stack_type = /obj/item/stack/material/gold/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + explosion_resistance = 50 + +/datum/material/gold/hull/place_sheet(var/turf/target) //Deconstructed into normal gold sheets. + new /obj/item/stack/material/gold(target) diff --git a/code/modules/materials/materials/metals/metals.dm b/code/modules/materials/materials/metals/metals.dm new file mode 100644 index 0000000000..a36ffef5c1 --- /dev/null +++ b/code/modules/materials/materials/metals/metals.dm @@ -0,0 +1,199 @@ + + + + +// Very rare alloy that is reflective, should be used sparingly. +/datum/material/durasteel + name = "durasteel" + stack_type = /obj/item/stack/material/durasteel + integrity = 600 + melting_point = 7000 + icon_base = "metal" + icon_reinf = "reinf_metal" + icon_colour = "#6EA7BE" + explosion_resistance = 75 + hardness = 100 + weight = 28 + protectiveness = 60 // 75% + reflectivity = 0.7 // Not a perfect mirror, but close. + stack_origin_tech = list(TECH_MATERIAL = 8) + composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug + supply_conversion_value = 9 + +/datum/material/titanium + name = MAT_TITANIUM + stack_type = /obj/item/stack/material/titanium + conductivity = 2.38 + icon_base = "metal" + door_icon_base = "metal" + icon_colour = "#D1E6E3" + icon_reinf = "reinf_metal" + composite_material = null + +/datum/material/iron + name = "iron" + stack_type = /obj/item/stack/material/iron + icon_colour = "#5C5454" + weight = 22 + conductivity = 10 + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + +/datum/material/lead + name = MAT_LEAD + stack_type = /obj/item/stack/material/lead + icon_colour = "#273956" + weight = 23 // Lead is a bit more dense than silver IRL, and silver has 22 ingame. + conductivity = 10 + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + radiation_resistance = 25 // Lead is Special and so gets to block more radiation than it normally would with just weight, totalling in 48 protection. + supply_conversion_value = 2 + +/datum/material/gold + name = "gold" + stack_type = /obj/item/stack/material/gold + icon_colour = "#EDD12F" + weight = 24 + hardness = 40 + conductivity = 41 + stack_origin_tech = list(TECH_MATERIAL = 4) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 2 + +/datum/material/silver + name = "silver" + stack_type = /obj/item/stack/material/silver + icon_colour = "#D1E6E3" + weight = 22 + hardness = 50 + conductivity = 63 + stack_origin_tech = list(TECH_MATERIAL = 3) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 2 + +/datum/material/platinum + name = "platinum" + stack_type = /obj/item/stack/material/platinum + icon_colour = "#9999FF" + weight = 27 + conductivity = 9.43 + stack_origin_tech = list(TECH_MATERIAL = 2) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 5 + +/datum/material/uranium + name = "uranium" + stack_type = /obj/item/stack/material/uranium + radioactivity = 12 + icon_base = "stone" + icon_reinf = "reinf_stone" + icon_colour = "#007A00" + weight = 22 + stack_origin_tech = list(TECH_MATERIAL = 5) + door_icon_base = "stone" + supply_conversion_value = 2 + +/datum/material/mhydrogen + name = "mhydrogen" + stack_type = /obj/item/stack/material/mhydrogen + icon_colour = "#E6C5DE" + stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) + conductivity = 100 + is_fusion_fuel = 1 + supply_conversion_value = 6 + +/datum/material/deuterium + name = "deuterium" + stack_type = /obj/item/stack/material/deuterium + icon_colour = "#999999" + stack_origin_tech = list(TECH_MATERIAL = 3) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + is_fusion_fuel = 1 + conductive = 0 + +/datum/material/tritium + name = "tritium" + stack_type = /obj/item/stack/material/tritium + icon_colour = "#777777" + stack_origin_tech = list(TECH_MATERIAL = 5) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + is_fusion_fuel = 1 + conductive = 0 + +/datum/material/osmium + name = "osmium" + stack_type = /obj/item/stack/material/osmium + icon_colour = "#9999FF" + stack_origin_tech = list(TECH_MATERIAL = 5) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + conductivity = 100 + supply_conversion_value = 6 + +/datum/material/graphite + name = MAT_GRAPHITE + stack_type = /obj/item/stack/material/graphite + flags = MATERIAL_BRITTLE + icon_base = "solid" + icon_reinf = "reinf_mesh" + icon_colour = "#333333" + hardness = 75 + weight = 15 + integrity = 175 + protectiveness = 15 + conductivity = 18 + melting_point = T0C+3600 + radiation_resistance = 15 + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2) + +/datum/material/bronze + name = "bronze" + stack_type = /obj/item/stack/material/bronze + icon_colour = "#EDD12F" + icon_base = "solid" + icon_reinf = "reinf_over" + integrity = 120 + conductivity = 12 + protectiveness = 9 // 33% + +/datum/material/tin + name = "tin" + display_name = "tin" + use_name = "tin" + stack_type = /obj/item/stack/material/tin + icon_colour = "#b2afaf" + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 1 + hardness = 50 + weight = 13 + +/datum/material/copper + name = "copper" + display_name = "copper" + use_name = "copper" + stack_type = /obj/item/stack/material/copper + conductivity = 52 + icon_colour = "#af633e" + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 1 + weight = 13 + hardness = 50 + +/datum/material/aluminium + name = "aluminium" + display_name = "aluminium" + use_name = "aluminium" + icon_colour = "#e5e2d0" + stack_type = /obj/item/stack/material/aluminium + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 2 + weight = 10 \ No newline at end of file diff --git a/code/modules/materials/materials/metals/metals_vr.dm b/code/modules/materials/materials/metals/metals_vr.dm new file mode 100644 index 0000000000..f600b2fe02 --- /dev/null +++ b/code/modules/materials/materials/metals/metals_vr.dm @@ -0,0 +1,6 @@ +/datum/material/durasteel/generate_recipes() + . = ..() + recipes += list( + new /datum/stack_recipe("durasteel fishing rod", /obj/item/weapon/material/fishing_rod/modern/strong, 2), + new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 30), + ) diff --git a/code/modules/materials/materials/metals/plasteel.dm b/code/modules/materials/materials/metals/plasteel.dm new file mode 100644 index 0000000000..6fc7ed29de --- /dev/null +++ b/code/modules/materials/materials/metals/plasteel.dm @@ -0,0 +1,27 @@ +/datum/material/plasteel + name = "plasteel" + stack_type = /obj/item/stack/material/plasteel + integrity = 400 + melting_point = 6000 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#777777" + explosion_resistance = 25 + hardness = 80 + weight = 23 + protectiveness = 20 // 50% + conductivity = 13 // For the purposes of balance. + stack_origin_tech = list(TECH_MATERIAL = 2) + composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo + supply_conversion_value = 6 + +/datum/material/plasteel/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1, recycle_material = "[name]"), + new /datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1, recycle_material = "[name]"), + new /datum/stack_recipe("knife grip", /obj/item/weapon/material/butterflyhandle, 4, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("dark floor tile", /obj/item/stack/tile/floor/dark, 1, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("roller bed", /obj/item/roller, 5, time = 30, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 10, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/metals/plasteel_ch.dm b/code/modules/materials/materials/metals/plasteel_ch.dm new file mode 100644 index 0000000000..03ee58b424 --- /dev/null +++ b/code/modules/materials/materials/metals/plasteel_ch.dm @@ -0,0 +1,9 @@ +/datum/material/plasteel/generate_recipes() + . = ..() +// recipes += new /datum/stack_recipe("Hammer Head", /obj/item/weapon/hammer_head, 2) //CHOMPEdit - Disabled because I had to disable code/game/objects/items/weapons/material/sledgehammer_construction_ch.dm due to lots of errors + recipes += new /datum/stack_recipe_list("sofas", list( \ + new /datum/stack_recipe("sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ + )) diff --git a/code/modules/materials/materials/metals/plasteel_vr.dm b/code/modules/materials/materials/metals/plasteel_vr.dm new file mode 100644 index 0000000000..bca3fdf27b --- /dev/null +++ b/code/modules/materials/materials/metals/plasteel_vr.dm @@ -0,0 +1,22 @@ +/datum/material/plastitanium + name = MAT_PLASTITANIUM + stack_type = /obj/item/stack/material/plastitanium + integrity = 600 + melting_point = 9000 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#585658" + explosion_resistance = 35 + hardness = 90 + weight = 40 + protectiveness = 30 + conductivity = 7 + stack_origin_tech = list(TECH_MATERIAL = 5) + composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT) + supply_conversion_value = 8 + +/datum/material/plastitanium/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 20), + ) diff --git a/code/modules/materials/materials/metals/steel.dm b/code/modules/materials/materials/metals/steel.dm new file mode 100644 index 0000000000..ca323c8137 --- /dev/null +++ b/code/modules/materials/materials/metals/steel.dm @@ -0,0 +1,87 @@ +/datum/material/steel + name = DEFAULT_WALL_MATERIAL + stack_type = /obj/item/stack/material/steel + integrity = 150 + conductivity = 11 // Assuming this is carbon steel, it would actually be slightly less conductive than iron, but lets ignore that. + protectiveness = 10 // 33% + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#666666" + +/datum/material/steel/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe_list("office chairs",list( + new /datum/stack_recipe("dark office chair", /obj/structure/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("light office chair", /obj/structure/bed/chair/office/light, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") + )), + new /datum/stack_recipe_list("comfy chairs", list( + new /datum/stack_recipe("beige comfy chair", /obj/structure/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("black comfy chair", /obj/structure/bed/chair/comfy/black, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("brown comfy chair", /obj/structure/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("lime comfy chair", /obj/structure/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("teal comfy chair", /obj/structure/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("red comfy chair", /obj/structure/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("blue comfy chair", /obj/structure/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("purple comfy chair", /obj/structure/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("yellow comfy chair", /obj/structure/bed/chair/comfy/yellow, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("orange comfy chair", /obj/structure/bed/chair/comfy/orange, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + )), + new /datum/stack_recipe_list("airlock assemblies", list( + new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("eng atmos airlock assembly", /obj/structure/door_assembly/door_assembly_eat, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("voidcraft airlock assembly horizontal", /obj/structure/door_assembly/door_assembly_voidcraft, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("voidcraft airlock assembly vertical", /obj/structure/door_assembly/door_assembly_voidcraft/vertical, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("emergency shutter", /obj/structure/firedoor_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + )), + new /datum/stack_recipe_list("modular computer frames", list( + new /datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20, recycle_material = "[name]"),\ + new /datum/stack_recipe("modular telescreen frame", /obj/item/modular_computer/telescreen, 10, recycle_material = "[name]"),\ + new /datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10, recycle_material = "[name]"),\ + new /datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5, recycle_material = "[name]"),\ + )), + new /datum/stack_recipe_list("filing cabinets", list( + new /datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("chest drawer", /obj/structure/filingcabinet/chestdrawer, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + )), + new /datum/stack_recipe("table frame", /obj/structure/table, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("bench frame", /obj/structure/table/bench, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("rack", /obj/structure/table/rack, 1, time = 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0, recycle_material = "[name]"), + new /datum/stack_recipe("regular floor tile", /obj/item/stack/tile/floor, 1, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60, recycle_material = "[name]"), + new /datum/stack_recipe("frame", /obj/item/frame, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("mirror frame", /obj/item/frame/mirror, 1, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("fire extinguisher cabinet frame", /obj/item/frame/extinguisher_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("railing", /obj/structure/railing, 2, time = 50, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + //new /datum/stack_recipe("IV drip", /obj/machinery/iv_drip, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), //VOREStation Removal + new /datum/stack_recipe("medical stand", /obj/structure/medical_stand, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), //VOREStation Replacement, + new /datum/stack_recipe("conveyor switch", /obj/machinery/conveyor_switch, 2, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade, recycle_material = "[name]"), + new /datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2, recycle_material = "[name]"), + new /datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1, recycle_material = "[name]"), + new /datum/stack_recipe("floor lamp fixture frame", /obj/machinery/light_construct/flamp, 2, recycle_material = "[name]"), + new /datum/stack_recipe("apc frame", /obj/item/frame/apc, 2, recycle_material = "[name]"), + new /datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/metals/steel_vr.dm b/code/modules/materials/materials/metals/steel_vr.dm new file mode 100644 index 0000000000..b112f36217 --- /dev/null +++ b/code/modules/materials/materials/metals/steel_vr.dm @@ -0,0 +1,82 @@ +/datum/material/steel/generate_recipes() + . = ..() + recipes += list( + new /datum/stack_recipe_list("mounted chairs",list( + new /datum/stack_recipe("mounted chair", /obj/structure/bed/chair/bay/chair, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("red mounted chair", /obj/structure/bed/chair/bay/chair/padded/red, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("brown mounted chair", /obj/structure/bed/chair/bay/chair/padded/brown, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("teal mounted chair", /obj/structure/bed/chair/bay/chair/padded/teal, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("black mounted chair", /obj/structure/bed/chair/bay/chair/padded/black, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("green mounted chair", /obj/structure/bed/chair/bay/chair/padded/green, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("purple mounted chair", /obj/structure/bed/chair/bay/chair/padded/purple, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("blue mounted chair", /obj/structure/bed/chair/bay/chair/padded/blue, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("beige mounted chair", /obj/structure/bed/chair/bay/chair/padded/beige, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("lime mounted chair", /obj/structure/bed/chair/bay/chair/padded/lime, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("yellow mounted chair", /obj/structure/bed/chair/bay/chair/padded/yellow, 2, one_per_turf = 1, on_floor = 1, time = 10) + )), + new /datum/stack_recipe_list("mounted comfy chairs",list( + new /datum/stack_recipe("mounted comfy chair", /obj/structure/bed/chair/bay/comfy, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("red mounted comfy chair", /obj/structure/bed/chair/bay/comfy/red, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("brown mounted comfy chair", /obj/structure/bed/chair/bay/comfy/brown, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("teal mounted comfy chair", /obj/structure/bed/chair/bay/comfy/teal, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("black mounted comfy chair", /obj/structure/bed/chair/bay/comfy/black, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("green mounted comfy chair", /obj/structure/bed/chair/bay/comfy/green, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("purple mounted comfy chair", /obj/structure/bed/chair/bay/comfy/purple, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("blue mounted comfy chair", /obj/structure/bed/chair/bay/comfy/blue, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("beige mounted comfy chair", /obj/structure/bed/chair/bay/comfy/beige, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("lime mounted comfy chair", /obj/structure/bed/chair/bay/comfy/lime, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("yellow mounted comfy chair", /obj/structure/bed/chair/bay/comfy/yellow, 3, one_per_turf = 1, on_floor = 1, time = 20) + )), + new /datum/stack_recipe("mounted captain's chair", /obj/structure/bed/chair/bay/comfy/captain, 4, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("dropship seat", /obj/structure/bed/chair/bay/shuttle, 4, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("small teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/smallnest, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("large teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/bignest, 4, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("dance pole", /obj/structure/dancepole, 2, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("light switch frame", /obj/item/frame/lightswitch, 2), + new /datum/stack_recipe_list("sofas",list( + new /datum/stack_recipe("red sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("red sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("red sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("red sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa middle", /obj/structure/bed/chair/sofa/brown, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa left", /obj/structure/bed/chair/sofa/brown/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa right", /obj/structure/bed/chair/sofa/brown/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa corner", /obj/structure/bed/chair/sofa/brown/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa middle", /obj/structure/bed/chair/sofa/teal, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa left", /obj/structure/bed/chair/sofa/teal/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa right", /obj/structure/bed/chair/sofa/teal/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa corner", /obj/structure/bed/chair/sofa/teal/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa middle", /obj/structure/bed/chair/sofa/black, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa left", /obj/structure/bed/chair/sofa/black/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa right", /obj/structure/bed/chair/sofa/black/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa corner", /obj/structure/bed/chair/sofa/black/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa middle", /obj/structure/bed/chair/sofa/green, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa left", /obj/structure/bed/chair/sofa/green/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa right", /obj/structure/bed/chair/sofa/green/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa corner", /obj/structure/bed/chair/sofa/green/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa middle", /obj/structure/bed/chair/sofa/purp, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa left", /obj/structure/bed/chair/sofa/purp/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa right", /obj/structure/bed/chair/sofa/purp/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa corner", /obj/structure/bed/chair/sofa/purp/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa middle", /obj/structure/bed/chair/sofa/blue, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa left", /obj/structure/bed/chair/sofa/blue/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa right", /obj/structure/bed/chair/sofa/blue/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa corner", /obj/structure/bed/chair/sofa/blue/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa middle", /obj/structure/bed/chair/sofa/beige, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa left", /obj/structure/bed/chair/sofa/beige/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa right", /obj/structure/bed/chair/sofa/beige/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa corner", /obj/structure/bed/chair/sofa/beige/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa middle", /obj/structure/bed/chair/sofa/lime, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa left", /obj/structure/bed/chair/sofa/lime/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa right", /obj/structure/bed/chair/sofa/lime/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa corner", /obj/structure/bed/chair/sofa/lime/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa middle", /obj/structure/bed/chair/sofa/yellow, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa left", /obj/structure/bed/chair/sofa/yellow/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa right", /obj/structure/bed/chair/sofa/yellow/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa corner", /obj/structure/bed/chair/sofa/yellow/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa middle", /obj/structure/bed/chair/sofa/orange, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa left", /obj/structure/bed/chair/sofa/orange/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa right", /obj/structure/bed/chair/sofa/orange/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa corner", /obj/structure/bed/chair/sofa/orange/corner, 1, one_per_turf = 1, on_floor = 1), \ + )), + ) diff --git a/code/modules/materials/materials/organic/animal_products.dm b/code/modules/materials/materials/organic/animal_products.dm new file mode 100644 index 0000000000..592cc6bc7b --- /dev/null +++ b/code/modules/materials/materials/organic/animal_products.dm @@ -0,0 +1,28 @@ +/datum/material/diona + name = "biomass" + icon_colour = null + stack_type = null + integrity = 600 + icon_base = "diona" + icon_reinf = "noreinf" + +/datum/material/diona/place_dismantled_product() + return + +/datum/material/diona/place_dismantled_girder(var/turf/target) + spawn_diona_nymph(target) + +/datum/material/chitin + name = MAT_CHITIN + icon_colour = "#8d6653" + stack_type = /obj/item/stack/material/chitin + stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4) + icon_base = "solid" + icon_reinf = "reinf_mesh" + integrity = 60 + weight = 10 + ignition_point = T0C+400 + melting_point = T0C+500 + protectiveness = 20 + conductive = 0 + supply_conversion_value = 4 diff --git a/code/modules/materials/materials/organic/cloth.dm b/code/modules/materials/materials/organic/cloth.dm new file mode 100644 index 0000000000..5c25b281c0 --- /dev/null +++ b/code/modules/materials/materials/organic/cloth.dm @@ -0,0 +1,125 @@ +/datum/material/cloth + name = "cloth" + stack_origin_tech = list(TECH_MATERIAL = 2) + door_icon_base = "wood" + ignition_point = T0C+232 + melting_point = T0C+300 + protectiveness = 1 // 4% + flags = MATERIAL_PADDING + conductive = 0 + integrity = 40 + pass_stack_colors = TRUE + supply_conversion_value = 2 + +/datum/material/cloth/generate_recipes() + recipes = list( + new /datum/stack_recipe("woven net", /obj/item/weapon/material/fishing_net, 10, time = 30 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]"), + new /datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crude bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") + ) + +/datum/material/cloth/syncloth + name = "syncloth" + stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 2) + ignition_point = T0C+532 + melting_point = T0C+600 + integrity = 200 + protectiveness = 15 // 4% + pass_stack_colors = TRUE + supply_conversion_value = 3 + +/datum/material/cloth/teal + name = "teal" + display_name ="teal" + use_name = "teal cloth" + icon_colour = "#00EAFA" + +/datum/material/cloth/black + name = "black" + display_name = "black" + use_name = "black cloth" + icon_colour = "#505050" + +/datum/material/cloth/green + name = "green" + display_name = "green" + use_name = "green cloth" + icon_colour = "#01C608" + +/datum/material/cloth/puple + name = "purple" + display_name = "purple" + use_name = "purple cloth" + icon_colour = "#9C56C4" + +/datum/material/cloth/blue + name = "blue" + display_name = "blue" + use_name = "blue cloth" + icon_colour = "#6B6FE3" + +/datum/material/cloth/beige + name = "beige" + display_name = "beige" + use_name = "beige cloth" + icon_colour = "#E8E7C8" + +/datum/material/cloth/lime + name = "lime" + display_name = "lime" + use_name = "lime cloth" + icon_colour = "#62E36C" + +/datum/material/cloth/yellow + name = "yellow" + display_name = "yellow" + use_name = "yellow cloth" + icon_colour = "#EEF573" + +/datum/material/cloth/orange + name = "orange" + display_name = "orange" + use_name = "orange cloth" + icon_colour = "#E3BF49" + + + +//CHOMPstation Removal Start: Moved to materials_ch and changed to allow for material var +/* +/material/carpet + name = "carpet" + display_name = "comfy" + use_name = "red upholstery" + icon_colour = "#DA020A" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + sheet_singular_name = "tile" + sheet_plural_name = "tiles" + protectiveness = 1 // 4% + conductive = 0 +*/ +//CHOMPstation Removal End + +/datum/material/cotton + name = "cotton" + display_name ="cotton" + icon_colour = "#FFFFFF" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + protectiveness = 1 // 4% + conductive = 0 diff --git a/code/modules/materials/materials_ch.dm b/code/modules/materials/materials/organic/cloth_ch.dm similarity index 96% rename from code/modules/materials/materials_ch.dm rename to code/modules/materials/materials/organic/cloth_ch.dm index aa583c9f53..e17d01c2d0 100644 --- a/code/modules/materials/materials_ch.dm +++ b/code/modules/materials/materials/organic/cloth_ch.dm @@ -1,67 +1,67 @@ -//Red Color Fix -/datum/material/cloth_red - name = "carpet" //This is the easiest fix but god do i hate it -shark - display_name = "red" - use_name = "red cloth" - icon_colour = "#DA020A" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -//CARPET materials - -/datum/material/carpet - name = MAT_CARPET - display_name = "comfy" - use_name = "upholstery" - icon_colour = "#DB2626" - flags = MATERIAL_PADDING - stack_type = /obj/item/stack/tile/carpet - ignition_point = T0C+232 - melting_point = T0C+300 - sheet_singular_name = "tile" - sheet_plural_name = "tiles" - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/carpet/teal - name = MAT_CARPET_TEAL - icon_colour = "#007575" - stack_type = /obj/item/stack/tile/carpet/teal - -/datum/material/carpet/bcarpet - name = MAT_CARPET_BLACK - icon_colour = "#1B171E" - stack_type = /obj/item/stack/tile/carpet/bcarpet - -/datum/material/carpet/blucarpet - name = MAT_CARPET_BLUE - icon_colour = "#122CDF" - stack_type = /obj/item/stack/tile/carpet/blucarpet - -/datum/material/carpet/turcarpet - name = MAT_CARPET_TURQUOISE - icon_colour = "#41A997" - stack_type = /obj/item/stack/tile/carpet/turcarpet - -/datum/material/carpet/sblucarpet - name = MAT_CARPET_SILVERBLUE - icon_colour = "#547EC6" - stack_type = /obj/item/stack/tile/carpet/sblucarpet - -/datum/material/carpet/gaycarpet - name = MAT_CARPET_PINK - icon_colour = "#E12C87" - stack_type = /obj/item/stack/tile/carpet/gaycarpet - -/datum/material/carpet/purcarpet - name = MAT_CARPET_PURPLE - icon_colour = "#B500A6" - stack_type = /obj/item/stack/tile/carpet/purcarpet - -/datum/material/carpet/oracarpet - name = MAT_CARPET_ORANGE - icon_colour = "#D1D000" - stack_type = /obj/item/stack/tile/carpet/oracarpet +//Red Color Fix +/datum/material/cloth_red + name = "carpet" //This is the easiest fix but god do i hate it -shark + display_name = "red" + use_name = "red cloth" + icon_colour = "#DA020A" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + protectiveness = 1 // 4% + conductive = 0 + +//CARPET materials + +/datum/material/carpet + name = MAT_CARPET + display_name = "comfy" + use_name = "upholstery" + icon_colour = "#DB2626" + flags = MATERIAL_PADDING + stack_type = /obj/item/stack/tile/carpet + ignition_point = T0C+232 + melting_point = T0C+300 + sheet_singular_name = "tile" + sheet_plural_name = "tiles" + protectiveness = 1 // 4% + conductive = 0 + +/datum/material/carpet/teal + name = MAT_CARPET_TEAL + icon_colour = "#007575" + stack_type = /obj/item/stack/tile/carpet/teal + +/datum/material/carpet/bcarpet + name = MAT_CARPET_BLACK + icon_colour = "#1B171E" + stack_type = /obj/item/stack/tile/carpet/bcarpet + +/datum/material/carpet/blucarpet + name = MAT_CARPET_BLUE + icon_colour = "#122CDF" + stack_type = /obj/item/stack/tile/carpet/blucarpet + +/datum/material/carpet/turcarpet + name = MAT_CARPET_TURQUOISE + icon_colour = "#41A997" + stack_type = /obj/item/stack/tile/carpet/turcarpet + +/datum/material/carpet/sblucarpet + name = MAT_CARPET_SILVERBLUE + icon_colour = "#547EC6" + stack_type = /obj/item/stack/tile/carpet/sblucarpet + +/datum/material/carpet/gaycarpet + name = MAT_CARPET_PINK + icon_colour = "#E12C87" + stack_type = /obj/item/stack/tile/carpet/gaycarpet + +/datum/material/carpet/purcarpet + name = MAT_CARPET_PURPLE + icon_colour = "#B500A6" + stack_type = /obj/item/stack/tile/carpet/purcarpet + +/datum/material/carpet/oracarpet + name = MAT_CARPET_ORANGE + icon_colour = "#D1D000" + stack_type = /obj/item/stack/tile/carpet/oracarpet diff --git a/code/modules/materials/materials/organic/leather.dm b/code/modules/materials/materials/organic/leather.dm new file mode 100644 index 0000000000..f5fc8cb2f9 --- /dev/null +++ b/code/modules/materials/materials/organic/leather.dm @@ -0,0 +1,37 @@ +/datum/material/leather + name = MAT_LEATHER + display_name = "plainleather" + icon_colour = "#5C4831" + stack_type = /obj/item/stack/material/leather + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) + flags = MATERIAL_PADDING + ignition_point = T0C+300 + melting_point = T0C+300 + protectiveness = 3 // 13% + conductive = 0 + integrity = 40 + supply_conversion_value = 3 + +/datum/material/leather/generate_recipes() + recipes = list( + new /datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]"), + new /datum/stack_recipe("whip", /obj/item/weapon/material/whip, 5, time = 15 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/organic/resin.dm b/code/modules/materials/materials/organic/resin.dm new file mode 100644 index 0000000000..a42735627a --- /dev/null +++ b/code/modules/materials/materials/organic/resin.dm @@ -0,0 +1,45 @@ +/datum/material/resin + name = "resin" + icon_colour = "#35343a" + icon_base = "resin" + dooropen_noise = 'sound/effects/attackblob.ogg' + door_icon_base = "resin" + icon_reinf = "reinf_mesh" + melting_point = T0C+300 + sheet_singular_name = "blob" + sheet_plural_name = "blobs" + conductive = 0 + explosion_resistance = 60 + radiation_resistance = 10 + stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_BIO = 7) + stack_type = /obj/item/stack/material/resin + +/datum/material/resin/can_open_material_door(var/mob/living/user) + var/mob/living/carbon/M = user + if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) + return TRUE + return FALSE + +/datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) + var/mob/living/carbon/M = L + if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) + to_chat(M, "\The [W] shudders under your touch, starting to become porous.") + playsound(W, 'sound/effects/attackblob.ogg', 50, 1) + if(do_after(L, 5 SECONDS)) + spawn(2) + playsound(W, 'sound/effects/attackblob.ogg', 100, 1) + W.dismantle_wall() + return TRUE + return FALSE + +/datum/material/resin/generate_recipes() + recipes = list( + new /datum/stack_recipe("[display_name] door", /obj/structure/simple_door/resin, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] barricade", /obj/effect/alien/resin/wall, 5, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] nest", /obj/structure/bed/nest, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] wall girders", /obj/structure/girder/resin, 2, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] membrane", /obj/effect/alien/resin/membrane, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] node", /obj/effect/alien/weeds/node, 1, time = 4 SECONDS, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm new file mode 100644 index 0000000000..ecdad547ca --- /dev/null +++ b/code/modules/materials/materials/organic/wood.dm @@ -0,0 +1,84 @@ +/datum/material/wood + name = MAT_WOOD + stack_type = /obj/item/stack/material/wood + icon_colour = "#9c5930" + integrity = 50 + icon_base = "wood" + explosion_resistance = 2 + shard_type = SHARD_SPLINTER + shard_can_repair = 0 // you can't weld splinters back into planks + hardness = 15 + weight = 18 + protectiveness = 8 // 28% + conductive = 0 + conductivity = 1 + melting_point = T0C+300 //okay, not melting in this case, but hot enough to destroy wood + ignition_point = T0C+288 + stack_origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) + dooropen_noise = 'sound/effects/doorcreaky.ogg' + door_icon_base = "wood" + destruction_desc = "splinters" + sheet_singular_name = "plank" + sheet_plural_name = "planks" + +/datum/material/wood/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("oar", /obj/item/weapon/oar, 2, time = 30, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("boat", /obj/vehicle/boat, 20, time = 10 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("dragon boat", /obj/vehicle/boat/dragon, 50, time = 30 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wood circlet", /obj/item/clothing/head/woodcirclet, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("beehive assembly", /obj/item/beehive_assembly, 4, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("beehive frame", /obj/item/honey_frame, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("book shelf", /obj/structure/bookcase, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("noticeboard frame", /obj/item/frame/noticeboard, 4, time = 5, one_per_turf = 0, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wooden standup figure", /obj/structure/barricade/cutout, 5, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), //VOREStation Add + new /datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]"), + new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") + ) + +/datum/material/wood/sif + name = MAT_SIFWOOD + stack_type = /obj/item/stack/material/wood/sif + icon_colour = "#0099cc" // Cyan-ish + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. + +/datum/material/wood/sif/generate_recipes() + ..() + recipes += new /datum/stack_recipe("alien wood floor tile", /obj/item/stack/tile/wood/sif, 1, 4, 20, pass_stack_color = TRUE) + for(var/datum/stack_recipe/r_recipe in recipes) + if(r_recipe.title == "wood floor tile") + recipes -= r_recipe + continue + if(r_recipe.title == "wooden chair") + recipes -= r_recipe + continue + +/datum/material/wood/log + name = MAT_LOG + icon_base = "log" + stack_type = /obj/item/stack/material/log + sheet_singular_name = null + sheet_plural_name = "pile" + pass_stack_colors = TRUE + supply_conversion_value = 1 + +/datum/material/wood/log/generate_recipes() + recipes = list( + new /datum/stack_recipe("bonfire", /obj/structure/bonfire, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE, recycle_material = "[name]") + ) + +/datum/material/wood/log/sif + name = MAT_SIFLOG + icon_colour = "#0099cc" // Cyan-ish + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) + stack_type = /obj/item/stack/material/log/sif \ No newline at end of file diff --git a/code/modules/materials/materials/organic/wood_ch.dm b/code/modules/materials/materials/organic/wood_ch.dm new file mode 100644 index 0000000000..0d518400f4 --- /dev/null +++ b/code/modules/materials/materials/organic/wood_ch.dm @@ -0,0 +1,9 @@ + +/datum/material/wood/generate_recipes() //Is a little sad we cant have lovely wooden sofa + . = ..() + recipes += new/datum/stack_recipe_list("sofas", list( \ + new /datum/stack_recipe("sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + )) diff --git a/code/modules/materials/materials/other_vr.dm b/code/modules/materials/materials/other_vr.dm new file mode 100644 index 0000000000..d54dd4f726 --- /dev/null +++ b/code/modules/materials/materials/other_vr.dm @@ -0,0 +1,32 @@ +/datum/material/flesh + name = "flesh" + display_name = "chunk of flesh" + icon_colour = "#dd90aa" + sheet_singular_name = "meat" + sheet_plural_name = "meats" + integrity = 1200 + melting_point = 6000 + explosion_resistance = 200 + hardness = 500 + weight = 500 + +/datum/material/fluff //This is to allow for 2 handed weapons that don't want to have a prefix. + name = " " + display_name = "" + icon_colour = "#000000" + sheet_singular_name = "fluff" + sheet_plural_name = "fluffs" + hardness = 60 + weight = 20 //Strong as iron. + +/datum/material/darkglass + name = "darkglass" + display_name = "darkglass" + icon_base = "darkglass" + icon_colour = "#FFFFFF" + +/datum/material/fancyblack + name = "fancyblack" + display_name = "fancyblack" + icon_base = "fancyblack" + icon_colour = "#FFFFFF" diff --git a/code/modules/materials/materials/plastic.dm b/code/modules/materials/materials/plastic.dm new file mode 100644 index 0000000000..558b414a8d --- /dev/null +++ b/code/modules/materials/materials/plastic.dm @@ -0,0 +1,88 @@ +/datum/material/plastic + name = "plastic" + stack_type = /obj/item/stack/material/plastic + flags = MATERIAL_BRITTLE + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#CCCCCC" + hardness = 10 + weight = 12 + protectiveness = 5 // 20% + conductive = 0 + conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator. + melting_point = T0C+371 //assuming heat resistant plastic + stack_origin_tech = list(TECH_MATERIAL = 3) + +/datum/material/plastic/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("blood pack", /obj/item/weapon/reagent_containers/blood/empty, 4, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("reagent dispenser cartridge (large)", /obj/item/weapon/reagent_containers/chem_disp_cartridge, 5, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]"), // 500u + new /datum/stack_recipe("reagent dispenser cartridge (med)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/medium, 3, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]"), // 250u + new /datum/stack_recipe("reagent dispenser cartridge (small)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/small, 1, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]"), // 100u + new /datum/stack_recipe("white floor tile", /obj/item/stack/tile/floor/white, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("freezer floor tile", /obj/item/stack/tile/floor/freezer, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("shower curtain", /obj/structure/curtain, 4, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 4, time = 25, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("lampshade", /obj/item/weapon/lampshade, 1, time = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic net", /obj/item/weapon/material/fishing_net, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic fishtank", /obj/item/glass_jar/fish/plastic, 2, time = 30 SECONDS, recycle_material = "[name]"), + new /datum/stack_recipe("reagent tubing", /obj/item/stack/hose, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") + ) + +/datum/material/cardboard + name = "cardboard" + stack_type = /obj/item/stack/material/cardboard + flags = MATERIAL_BRITTLE + integrity = 10 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#AAAAAA" + hardness = 1 + weight = 1 + protectiveness = 0 // 0% + conductive = 0 + ignition_point = T0C+232 //"the temperature at which book-paper catches fire, and burns." close enough + melting_point = T0C+232 //temperature at which cardboard walls would be destroyed + stack_origin_tech = list(TECH_MATERIAL = 1) + door_icon_base = "wood" + destruction_desc = "crumples" + radiation_resistance = 1 + pass_stack_colors = TRUE + +/datum/material/cardboard/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("box", /obj/item/weapon/storage/box, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("donut box", /obj/item/weapon/storage/box/donut/empty, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("egg box", /obj/item/weapon/storage/fancy/egg_box, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("light tubes box", /obj/item/weapon/storage/box/lights/tubes, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("light bulbs box", /obj/item/weapon/storage/box/lights/bulbs, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("mouse traps box", /obj/item/weapon/storage/box/mousetraps, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("pizza box", /obj/item/pizzabox, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe_list("folders",list( + new /datum/stack_recipe("blue folder", /obj/item/weapon/folder/blue, recycle_material = "[name]"), + new /datum/stack_recipe("grey folder", /obj/item/weapon/folder, recycle_material = "[name]"), + new /datum/stack_recipe("red folder", /obj/item/weapon/folder/red, recycle_material = "[name]"), + new /datum/stack_recipe("white folder", /obj/item/weapon/folder/white, recycle_material = "[name]"), + new /datum/stack_recipe("yellow folder", /obj/item/weapon/folder/yellow, recycle_material = "[name]") + )) + ) + +/datum/material/toy_foam + name = "foam" + display_name = "foam" + use_name = "foam" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + icon_colour = "#ff9900" + hardness = 1 + weight = 1 + protectiveness = 0 // 0% + conductive = 0 diff --git a/code/modules/materials/materials/plastic_ch.dm b/code/modules/materials/materials/plastic_ch.dm new file mode 100644 index 0000000000..9cf1a4b918 --- /dev/null +++ b/code/modules/materials/materials/plastic_ch.dm @@ -0,0 +1,9 @@ +/datum/material/plastic/generate_recipes() + . = ..() + recipes += new/datum/stack_recipe_list("sofas", list( \ + new /datum/stack_recipe("sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), \ + new /datum/stack_recipe("Feeder", /obj/machinery/feeder, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ + )) diff --git a/code/modules/materials/materials/snow.dm b/code/modules/materials/materials/snow.dm new file mode 100644 index 0000000000..bd53579811 --- /dev/null +++ b/code/modules/materials/materials/snow.dm @@ -0,0 +1,56 @@ +/datum/material/snow + name = MAT_SNOW + stack_type = /obj/item/stack/material/snow + flags = MATERIAL_BRITTLE + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#FFFFFF" + integrity = 1 + hardness = 1 + weight = 1 + protectiveness = 0 // 0% + stack_origin_tech = list(TECH_MATERIAL = 1) + melting_point = T0C+1 + destruction_desc = "crumples" + sheet_singular_name = "pile" + sheet_plural_name = "pile" //Just a bigger pile + radiation_resistance = 1 + +/datum/material/snow/generate_recipes() + recipes = list( + new /datum/stack_recipe("snowball", /obj/item/weapon/material/snow/snowball, 1, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("snow brick", /obj/item/stack/material/snowbrick, 2, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("snowman", /obj/structure/snowman, 2, time = 15, recycle_material = "[name]"), + new /datum/stack_recipe("snow robot", /obj/structure/snowman/borg, 2, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("snow spider", /obj/structure/snowman/spider, 3, time = 20, recycle_material = "[name]") + ) + +/datum/material/snowbrick //only slightly stronger than snow, used to make igloos mostly + name = "packed snow" + flags = MATERIAL_BRITTLE + stack_type = /obj/item/stack/material/snowbrick + icon_base = "stone" + icon_reinf = "reinf_stone" + icon_colour = "#D8FDFF" + integrity = 50 + weight = 2 + hardness = 2 + protectiveness = 0 // 0% + stack_origin_tech = list(TECH_MATERIAL = 1) + melting_point = T0C+1 + destruction_desc = "crumbles" + sheet_singular_name = "brick" + sheet_plural_name = "bricks" + radiation_resistance = 1 + +/datum/material/snowbrick/generate_recipes() + recipes = list( + new /datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/stone.dm b/code/modules/materials/materials/stone.dm new file mode 100644 index 0000000000..823dd19914 --- /dev/null +++ b/code/modules/materials/materials/stone.dm @@ -0,0 +1,35 @@ +/datum/material/stone + name = "sandstone" + stack_type = /obj/item/stack/material/sandstone + icon_base = "stone" + icon_reinf = "reinf_stone" + icon_colour = "#D9C179" + shard_type = SHARD_STONE_PIECE + weight = 22 + hardness = 55 + protectiveness = 5 // 20% + conductive = 0 + conductivity = 5 + door_icon_base = "stone" + sheet_singular_name = "brick" + sheet_plural_name = "bricks" + +/datum/material/stone/generate_recipes() + ..() + recipes += new /datum/stack_recipe("planting bed", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") + +/datum/material/stone/marble + name = "marble" + icon_colour = "#AAAAAA" + weight = 26 + hardness = 30 //VOREStation Edit - Please. + integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system + stack_type = /obj/item/stack/material/marble + supply_conversion_value = 2 + +/datum/material/stone/marble/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("light marble floor tile", /obj/item/stack/tile/wmarble, 1, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("dark marble floor tile", /obj/item/stack/tile/bmarble, 1, 4, 20, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/supermatter.dm b/code/modules/materials/materials/supermatter.dm new file mode 100644 index 0000000000..5ee3b34671 --- /dev/null +++ b/code/modules/materials/materials/supermatter.dm @@ -0,0 +1,23 @@ +//R-UST port +/datum/material/supermatter + name = "supermatter" + icon_colour = "#FFFF00" + stack_type = /obj/item/stack/material/supermatter + shard_type = SHARD_SHARD + radioactivity = 20 + stack_type = null + luminescence = 3 + ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE + icon_base = "stone" + shard_type = SHARD_SHARD + hardness = 30 + door_icon_base = "stone" + sheet_singular_name = "crystal" + sheet_plural_name = "crystals" + is_fusion_fuel = 1 + stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 5, TECH_BLUESPACE = 4) + +/datum/material/supermatter/generate_recipes() + recipes = list( + new /datum/stack_recipe("supermatter shard", /obj/machinery/power/supermatter/shard, 30 , one_per_turf = 1, time = 600, on_floor = 1, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials_vr.dm b/code/modules/materials/materials_vr.dm deleted file mode 100644 index e66f1ebfa8..0000000000 --- a/code/modules/materials/materials_vr.dm +++ /dev/null @@ -1,104 +0,0 @@ -/datum/material/flesh - name = "flesh" - display_name = "chunk of flesh" - icon_colour = "#dd90aa" - sheet_singular_name = "meat" - sheet_plural_name = "meats" - integrity = 1200 - melting_point = 6000 - explosion_resistance = 200 - hardness = 500 - weight = 500 - -/datum/material/fluff //This is to allow for 2 handed weapons that don't want to have a prefix. - name = " " - display_name = "" - icon_colour = "#000000" - sheet_singular_name = "fluff" - sheet_plural_name = "fluffs" - hardness = 60 - weight = 20 //Strong as iron. - -/datum/material/darkglass - name = "darkglass" - display_name = "darkglass" - icon_base = "darkglass" - icon_colour = "#FFFFFF" - -/datum/material/fancyblack - name = "fancyblack" - display_name = "fancyblack" - icon_base = "fancyblack" - icon_colour = "#FFFFFF" - -/datum/material/glass/titaniumglass - name = MAT_TITANIUMGLASS - display_name = "titanium glass" - stack_type = /obj/item/stack/material/glass/titanium - integrity = 150 - hardness = 50 - weight = 50 - flags = MATERIAL_BRITTLE - icon_colour = "#A7A3A6" - stack_origin_tech = list(TECH_MATERIAL = 5) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/titanium - created_fulltile_window = /obj/structure/window/titanium/full - wire_product = null - rod_product = /obj/item/stack/material/glass/titanium - composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) - -/datum/material/plastitanium - name = MAT_PLASTITANIUM - stack_type = /obj/item/stack/material/plastitanium - integrity = 600 - melting_point = 9000 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#585658" - explosion_resistance = 35 - hardness = 90 - weight = 40 - protectiveness = 30 - conductivity = 7 - stack_origin_tech = list(TECH_MATERIAL = 5) - composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT) - supply_conversion_value = 8 - -/datum/material/plastitanium/hull - name = MAT_PLASTITANIUMHULL - stack_type = /obj/item/stack/material/plastitanium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#585658" - explosion_resistance = 50 - -/datum/material/plastitanium/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/plastitanium(target) - -/datum/material/glass/plastaniumglass - name = MAT_PLASTITANIUMGLASS - display_name = "plas-titanium glass" - stack_type = /obj/item/stack/material/glass/plastitanium - integrity = 200 - hardness = 60 - weight = 80 - flags = MATERIAL_BRITTLE - icon_colour = "#676366" - stack_origin_tech = list(TECH_MATERIAL = 6) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/plastitanium - created_fulltile_window = /obj/structure/window/plastitanium/full - wire_product = null - rod_product = /obj/item/stack/material/glass/plastitanium - composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) - -/datum/material/gold/hull - name = MAT_GOLDHULL - stack_type = /obj/item/stack/material/gold/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - explosion_resistance = 50 - -/datum/material/gold/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/gold(target) \ No newline at end of file diff --git a/code/modules/materials/sheets/_sheets.dm b/code/modules/materials/sheets/_sheets.dm new file mode 100644 index 0000000000..7572d0e654 --- /dev/null +++ b/code/modules/materials/sheets/_sheets.dm @@ -0,0 +1,89 @@ +// Stacked resources. They use a material datum for a lot of inherited values. +// If you're adding something here, make sure to add it to fifty_spawner_mats.dm as well +/obj/item/stack/material + force = 5.0 + throwforce = 5 + w_class = ITEMSIZE_NORMAL + throw_speed = 3 + throw_range = 3 + center_of_mass = null + max_amount = 50 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) + + var/default_type = DEFAULT_WALL_MATERIAL + var/datum/material/material + var/perunit = SHEET_MATERIAL_AMOUNT + var/apply_colour //temp pending icon rewrite + drop_sound = 'sound/items/drop/axe.ogg' + pickup_sound = 'sound/items/pickup/axe.ogg' + +/obj/item/stack/material/Initialize() + . = ..() + + randpixel_xy() + + if(!default_type) + default_type = DEFAULT_WALL_MATERIAL + material = get_material_by_name("[default_type]") + if(!material) + return INITIALIZE_HINT_QDEL + + recipes = material.get_recipes() + stacktype = material.stack_type + if(islist(material.stack_origin_tech)) + origin_tech = material.stack_origin_tech.Copy() + + if(apply_colour) + color = material.icon_colour + + if(!material.conductive) + flags |= NOCONDUCT + + matter = material.get_matter() + update_strings() + +/obj/item/stack/material/get_material() + return material + +/obj/item/stack/material/proc/update_strings() + // Update from material datum. + singular_name = material.sheet_singular_name + + if(amount>1) + name = "[material.use_name] [material.sheet_plural_name]" + desc = "A stack of [material.use_name] [material.sheet_plural_name]." + gender = PLURAL + else + name = "[material.use_name] [material.sheet_singular_name]" + desc = "A [material.sheet_singular_name] of [material.use_name]." + gender = NEUTER + +/obj/item/stack/material/use(var/used) + . = ..() + update_strings() + return + +/obj/item/stack/material/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) + var/obj/item/stack/material/M = S + if(!istype(M) || material.name != M.material.name) + return 0 + var/transfer = ..(S,tamount,1) + if(src) update_strings() + if(M) M.update_strings() + return transfer + +/obj/item/stack/material/attack_self(var/mob/user) + if(!material.build_windows(user, src)) + ..() + +/obj/item/stack/material/attackby(var/obj/item/W, var/mob/user) + if(istype(W,/obj/item/stack/cable_coil)) + material.build_wired_product(user, W, src) + return + else if(istype(W, /obj/item/stack/rods)) + material.build_rod_product(user, W, src) + return + return ..() \ No newline at end of file diff --git a/code/modules/materials/sheets/gems.dm b/code/modules/materials/sheets/gems.dm new file mode 100644 index 0000000000..1906da8eab --- /dev/null +++ b/code/modules/materials/sheets/gems.dm @@ -0,0 +1,66 @@ +/obj/item/stack/material/phoron + name = "solid phoron" + icon_state = "sheet-phoron" + default_type = "phoron" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + +/obj/item/stack/material/diamond + name = "diamond" + icon_state = "sheet-diamond" + default_type = "diamond" + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + +/obj/item/stack/material/painite + name = "painite" + icon_state = "sheet-gem" + singular_name = "painite gem" + default_type = "painite" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/void_opal + name = "void opal" + icon_state = "sheet-void_opal" + singular_name = "void opal" + default_type = "void opal" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/quartz + name = "quartz" + icon_state = "sheet-gem" + singular_name = "quartz gem" + default_type = "quartz" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/valhollide + name = MAT_VALHOLLIDE + icon_state = "sheet-gem" + item_state = "diamond" + default_type = MAT_VALHOLLIDE + no_variants = FALSE + apply_colour = TRUE + +// Particle Smasher and Exotic material. +/obj/item/stack/material/verdantium + name = MAT_VERDANTIUM + icon_state = "sheet-wavy" + item_state = "mhydrogen" + default_type = MAT_VERDANTIUM + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/morphium + name = MAT_MORPHIUM + icon_state = "sheet-wavy" + item_state = "mhydrogen" + default_type = MAT_MORPHIUM + no_variants = FALSE + apply_colour = TRUE + + + diff --git a/code/modules/materials/sheets/glass.dm b/code/modules/materials/sheets/glass.dm new file mode 100644 index 0000000000..bf891347ea --- /dev/null +++ b/code/modules/materials/sheets/glass.dm @@ -0,0 +1,33 @@ +/obj/item/stack/material/glass + name = "glass" + icon_state = "sheet-transparent" + default_type = "glass" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + apply_colour = TRUE + +/obj/item/stack/material/glass/reinforced + name = "reinforced glass" + icon_state = "sheet-rtransparent" + default_type = "rglass" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/glass/phoronglass + name = "borosilicate glass" + desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures" + singular_name = "borosilicate glass sheet" + icon_state = "sheet-transparent" + default_type = "borosilicate glass" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/glass/phoronrglass + name = "reinforced borosilicate glass" + desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods." + singular_name = "reinforced borosilicate glass sheet" + icon_state = "sheet-rtransparent" + default_type = "reinforced borosilicate glass" + no_variants = FALSE + apply_colour = TRUE \ No newline at end of file diff --git a/code/modules/materials/sheets/glass_vr.dm b/code/modules/materials/sheets/glass_vr.dm new file mode 100644 index 0000000000..23aad9c0cc --- /dev/null +++ b/code/modules/materials/sheets/glass_vr.dm @@ -0,0 +1,17 @@ +/obj/item/stack/material/glass/titanium + name = "ti-glass sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-titaniumglass" + item_state = "sheet-silver" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + default_type = MAT_TITANIUMGLASS + +/obj/item/stack/material/glass/plastitanium + name = "plastitanium glass sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitaniumglass" + item_state = "sheet-silver" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + default_type = MAT_PLASTITANIUMGLASS diff --git a/code/modules/materials/sheets/metals/hull.dm b/code/modules/materials/sheets/metals/hull.dm new file mode 100644 index 0000000000..5a6d429f44 --- /dev/null +++ b/code/modules/materials/sheets/metals/hull.dm @@ -0,0 +1,18 @@ +/obj/item/stack/material/steel/hull + name = MAT_STEELHULL + default_type = MAT_STEELHULL + +/obj/item/stack/material/plasteel/hull + name = MAT_PLASTEELHULL + default_type = MAT_PLASTEELHULL + +/obj/item/stack/material/durasteel/hull + name = MAT_DURASTEELHULL + +/obj/item/stack/material/titanium/hull + name = MAT_TITANIUMHULL + default_type = MAT_TITANIUMHULL + +/obj/item/stack/material/morphium/hull + name = MAT_MORPHIUMHULL + default_type = MAT_MORPHIUMHULL \ No newline at end of file diff --git a/code/modules/materials/sheets/metals/hull_vr.dm b/code/modules/materials/sheets/metals/hull_vr.dm new file mode 100644 index 0000000000..29e267ab81 --- /dev/null +++ b/code/modules/materials/sheets/metals/hull_vr.dm @@ -0,0 +1,15 @@ +/obj/item/stack/material/plastitanium/hull + name = "plastitanium hull sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_PLASTITANIUMHULL + +/obj/item/stack/material/gold/hull + name = "gold hull sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_GOLDHULL diff --git a/code/modules/materials/sheets/metals/metal.dm b/code/modules/materials/sheets/metals/metal.dm new file mode 100644 index 0000000000..bbad559c12 --- /dev/null +++ b/code/modules/materials/sheets/metals/metal.dm @@ -0,0 +1,140 @@ +/obj/item/stack/material/steel + name = DEFAULT_WALL_MATERIAL + icon_state = "sheet-refined" + default_type = DEFAULT_WALL_MATERIAL + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/plasteel + name = "plasteel" + icon_state = "sheet-reinforced" + default_type = "plasteel" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/durasteel + name = "durasteel" + icon_state = "sheet-reinforced" + item_state = "sheet-metal" + default_type = "durasteel" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/titanium + name = MAT_TITANIUM + icon_state = "sheet-refined" + apply_colour = TRUE + item_state = "sheet-silver" + default_type = MAT_TITANIUM + no_variants = FALSE + +/obj/item/stack/material/iron + name = "iron" + icon_state = "sheet-ingot" + default_type = "iron" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/lead + name = "lead" + icon_state = "sheet-ingot" + default_type = "lead" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/gold + name = "gold" + icon_state = "sheet-ingot" + default_type = "gold" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/silver + name = "silver" + icon_state = "sheet-ingot" + default_type = "silver" + no_variants = FALSE + apply_colour = TRUE + +//Valuable resource, cargo can sell it. +/obj/item/stack/material/platinum + name = "platinum" + icon_state = "sheet-adamantine" + default_type = "platinum" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/uranium + name = "uranium" + icon_state = "sheet-uranium" + default_type = "uranium" + no_variants = FALSE + +//Extremely valuable to Research. +/obj/item/stack/material/mhydrogen + name = "metallic hydrogen" + icon_state = "sheet-mythril" + default_type = "mhydrogen" + no_variants = FALSE + +// Fusion fuel. +/obj/item/stack/material/deuterium + name = "deuterium" + icon_state = "sheet-puck" + default_type = "deuterium" + apply_colour = 1 + no_variants = FALSE + +//Fuel for MRSPACMAN generator. +/obj/item/stack/material/tritium + name = "tritium" + icon_state = "sheet-puck" + default_type = "tritium" + apply_colour = TRUE + no_variants = FALSE + +/obj/item/stack/material/osmium + name = "osmium" + icon_state = "sheet-ingot" + default_type = "osmium" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/graphite + name = "graphite" + icon_state = "sheet-puck" + default_type = MAT_GRAPHITE + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/bronze + name = "bronze" + icon_state = "sheet-ingot" + singular_name = "bronze ingot" + default_type = "bronze" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/tin + name = "tin" + icon_state = "sheet-ingot" + singular_name = "tin ingot" + default_type = "tin" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/copper + name = "copper" + icon_state = "sheet-ingot" + singular_name = "copper ingot" + default_type = "copper" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/aluminium + name = "aluminium" + icon_state = "sheet-ingot" + singular_name = "aluminium ingot" + default_type = "aluminium" + apply_colour = 1 + no_variants = FALSE diff --git a/code/modules/materials/sheets/metals/metal_vr.dm b/code/modules/materials/sheets/metals/metal_vr.dm new file mode 100644 index 0000000000..1a867ea957 --- /dev/null +++ b/code/modules/materials/sheets/metals/metal_vr.dm @@ -0,0 +1,12 @@ +/obj/item/stack/material/titanium + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-titanium" + no_variants = FALSE + +/obj/item/stack/material/plastitanium + name = "plastitanium sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_PLASTITANIUM diff --git a/code/game/objects/items/stacks/rods.dm b/code/modules/materials/sheets/metals/rods.dm similarity index 96% rename from code/game/objects/items/stacks/rods.dm rename to code/modules/materials/sheets/metals/rods.dm index 9844ae1cba..d1c4a1ee24 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/modules/materials/sheets/metals/rods.dm @@ -1,109 +1,109 @@ -/obj/item/stack/rods - name = "metal rod" - desc = "Some rods. Can be used for building, or something." - singular_name = "metal rod" - icon_state = "rods" - w_class = ITEMSIZE_NORMAL - force = 9.0 - throwforce = 15.0 - throw_speed = 5 - throw_range = 20 - drop_sound = 'sound/items/drop/metalweapon.ogg' - pickup_sound = 'sound/items/pickup/metalweapon.ogg' - matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2) - max_amount = 60 - attack_verb = list("hit", "bludgeoned", "whacked") - - color = "#666666" - -/obj/item/stack/rods/cyborg - name = "metal rod synthesizer" - desc = "A device that makes metal rods." - gender = NEUTER - matter = null - uses_charge = 1 - charge_costs = list(500) - stacktype = /obj/item/stack/rods - no_variants = TRUE - -/obj/item/stack/rods/Initialize() - . = ..() - recipes = rods_recipes - update_icon() - -/obj/item/stack/rods/update_icon() - var/amount = get_amount() - if((amount <= 5) && (amount > 0)) - icon_state = "rods-[amount]" - else - icon_state = "rods" - -var/global/list/datum/stack_recipe/rods_recipes = list( \ - new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 0), - new/datum/stack_recipe("catwalk", /obj/structure/catwalk, 2, time = 80, one_per_turf = 1, on_floor = 1)) - -/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - - if(get_amount() < 2) - to_chat(user, "You need at least two rods to do this.") - return - - if(WT.remove_fuel(0,user)) - var/obj/item/stack/material/steel/new_item = new(usr.loc) - new_item.add_to_stacks(usr) - for (var/mob/M in viewers(src)) - M.show_message("[src] is shaped into metal by [user.name] with the weldingtool.", 3, "You hear welding.", 2) - var/obj/item/stack/rods/R = src - src = null - var/replace = (user.get_inactive_hand()==R) - R.use(2) - if (!R && replace) - user.put_in_hands(new_item) - return - - if (istype(W, /obj/item/weapon/tape_roll)) - var/obj/item/stack/medical/splint/ghetto/new_splint = new(get_turf(user)) - new_splint.add_fingerprint(user) - - user.visible_message("\The [user] constructs \a [new_splint] out of a [singular_name].", \ - "You use make \a [new_splint] out of a [singular_name].") - src.use(1) - return - - ..() - -/* -/obj/item/stack/rods/attack_self(mob/user as mob) - src.add_fingerprint(user) - - if(!istype(user.loc,/turf)) return 0 - - if (locate(/obj/structure/grille, usr.loc)) - for(var/obj/structure/grille/G in usr.loc) - if (G.destroyed) - G.health = 10 - G.density = 1 - G.destroyed = 0 - G.icon_state = "grille" - use(1) - else - return 1 - - else if(!in_use) - if(get_amount() < 2) - to_chat(user, "You need at least two rods to do this.") - return - to_chat(usr, "Assembling grille...") - in_use = 1 - if (!do_after(usr, 10)) - in_use = 0 - return - var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc ) - to_chat(usr, "You assemble a grille") - in_use = 0 - F.add_fingerprint(usr) - use(2) - return +/obj/item/stack/rods + name = "metal rod" + desc = "Some rods. Can be used for building, or something." + singular_name = "metal rod" + icon_state = "rods" + w_class = ITEMSIZE_NORMAL + force = 9.0 + throwforce = 15.0 + throw_speed = 5 + throw_range = 20 + drop_sound = 'sound/items/drop/metalweapon.ogg' + pickup_sound = 'sound/items/pickup/metalweapon.ogg' + matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2) + max_amount = 60 + attack_verb = list("hit", "bludgeoned", "whacked") + + color = "#666666" + +/obj/item/stack/rods/cyborg + name = "metal rod synthesizer" + desc = "A device that makes metal rods." + gender = NEUTER + matter = null + uses_charge = 1 + charge_costs = list(500) + stacktype = /obj/item/stack/rods + no_variants = TRUE + +/obj/item/stack/rods/Initialize() + . = ..() + recipes = rods_recipes + update_icon() + +/obj/item/stack/rods/update_icon() + var/amount = get_amount() + if((amount <= 5) && (amount > 0)) + icon_state = "rods-[amount]" + else + icon_state = "rods" + +var/global/list/datum/stack_recipe/rods_recipes = list( \ + new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 0), + new/datum/stack_recipe("catwalk", /obj/structure/catwalk, 2, time = 80, one_per_turf = 1, on_floor = 1)) + +/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + + if(get_amount() < 2) + to_chat(user, "You need at least two rods to do this.") + return + + if(WT.remove_fuel(0,user)) + var/obj/item/stack/material/steel/new_item = new(usr.loc) + new_item.add_to_stacks(usr) + for (var/mob/M in viewers(src)) + M.show_message("[src] is shaped into metal by [user.name] with the weldingtool.", 3, "You hear welding.", 2) + var/obj/item/stack/rods/R = src + src = null + var/replace = (user.get_inactive_hand()==R) + R.use(2) + if (!R && replace) + user.put_in_hands(new_item) + return + + if (istype(W, /obj/item/weapon/tape_roll)) + var/obj/item/stack/medical/splint/ghetto/new_splint = new(get_turf(user)) + new_splint.add_fingerprint(user) + + user.visible_message("\The [user] constructs \a [new_splint] out of a [singular_name].", \ + "You use make \a [new_splint] out of a [singular_name].") + src.use(1) + return + + ..() + +/* +/obj/item/stack/rods/attack_self(mob/user as mob) + src.add_fingerprint(user) + + if(!istype(user.loc,/turf)) return 0 + + if (locate(/obj/structure/grille, usr.loc)) + for(var/obj/structure/grille/G in usr.loc) + if (G.destroyed) + G.health = 10 + G.density = 1 + G.destroyed = 0 + G.icon_state = "grille" + use(1) + else + return 1 + + else if(!in_use) + if(get_amount() < 2) + to_chat(user, "You need at least two rods to do this.") + return + to_chat(usr, "Assembling grille...") + in_use = 1 + if (!do_after(usr, 10)) + in_use = 0 + return + var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc ) + to_chat(usr, "You assemble a grille") + in_use = 0 + F.add_fingerprint(usr) + use(2) + return */ \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/animal_products.dm b/code/modules/materials/sheets/organic/animal_products.dm new file mode 100644 index 0000000000..4620da5ea9 --- /dev/null +++ b/code/modules/materials/sheets/organic/animal_products.dm @@ -0,0 +1,31 @@ +/obj/item/stack/material/chitin + name = "chitin" + desc = "The by-product of mob grinding." + icon_state = "chitin" + default_type = MAT_CHITIN + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/leather.ogg' + pickup_sound = 'sound/items/pickup/leather.ogg' + +//don't see anywhere else to put these, maybe together they could be used to make the xenos suit? +/obj/item/stack/xenochitin + name = "alien chitin" + desc = "A piece of the hide of a terrible creature." + singular_name = "alien chitin piece" + icon = 'icons/mob/alien.dmi' + icon_state = "chitin" + stacktype = "hide-chitin" + +/obj/item/xenos_claw + name = "alien claw" + desc = "The claw of a terrible creature." + icon = 'icons/mob/alien.dmi' + icon_state = "claw" + +/obj/item/weed_extract + name = "weed extract" + desc = "A piece of slimy, purplish weed." + icon = 'icons/mob/alien.dmi' + icon_state = "weed_extract" \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/resin.dm b/code/modules/materials/sheets/organic/resin.dm new file mode 100644 index 0000000000..7120911f2d --- /dev/null +++ b/code/modules/materials/sheets/organic/resin.dm @@ -0,0 +1,8 @@ +/obj/item/stack/material/resin + name = "resin" + icon_state = "sheet-resin" + default_type = "resin" + no_variants = TRUE + apply_colour = TRUE + pass_color = TRUE + strict_color_stacking = TRUE \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/tanning/hide.dm b/code/modules/materials/sheets/organic/tanning/hide.dm new file mode 100644 index 0000000000..a8b229c9eb --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/hide.dm @@ -0,0 +1,90 @@ +/obj/item/stack/animalhide + name = "hide" + desc = "The hide of some creature." + description_info = "Use something sharp, like a knife, to scrape the hairs/feathers/etc off this hide to prepare it for tanning." + icon_state = "sheet-hide" + drop_sound = 'sound/items/drop/cloth.ogg' + pickup_sound = 'sound/items/pickup/cloth.ogg' + amount = 1 + max_amount = 20 + stacktype = "hide" + no_variants = TRUE +// This needs to be very clearly documented for players. Whether it should stay in the main description is up for debate. +/obj/item/stack/animalhide/examine(var/mob/user) + . = ..() + . += description_info + +//Step one - dehairing. +/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(has_edge(W) || is_sharp(W)) + //visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message) + user.visible_message("\The [user] starts cutting hair off \the [src]", "You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh") + var/scraped = 0 + while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide + //Try locating an exisitng stack on the tile and add to there if possible + var/obj/item/stack/hairlesshide/H = null + for(var/obj/item/stack/hairlesshide/HS in user.loc) // Could be scraping something inside a locker, hence the .loc, not get_turf + if(HS.amount < HS.max_amount) + H = HS + break + + // Either we found a valid stack, in which case increment amount, + // Or we need to make a new stack + if(istype(H)) + H.amount++ + else + H = new /obj/item/stack/hairlesshide(user.loc) + + // Increment the amount + src.use(1) + scraped++ + + if(scraped) + to_chat(user, SPAN_NOTICE("You scrape the hair off [scraped] hide\s.")) + else + ..() + +/obj/item/stack/animalhide/human + name = "skin" + desc = "The by-product of sapient farming." + singular_name = "skin piece" + icon_state = "sheet-hide" + no_variants = FALSE + drop_sound = 'sound/items/drop/leather.ogg' + pickup_sound = 'sound/items/pickup/leather.ogg' + stacktype = "hide-human" + +/obj/item/stack/animalhide/corgi + name = "corgi hide" + desc = "The by-product of corgi farming." + singular_name = "corgi hide piece" + icon_state = "sheet-corgi" + stacktype = "hide-corgi" + +/obj/item/stack/animalhide/cat + name = "cat hide" + desc = "The by-product of cat farming." + singular_name = "cat hide piece" + icon_state = "sheet-cat" + stacktype = "hide-cat" + +/obj/item/stack/animalhide/monkey + name = "monkey hide" + desc = "The by-product of monkey farming." + singular_name = "monkey hide piece" + icon_state = "sheet-monkey" + stacktype = "hide-monkey" + +/obj/item/stack/animalhide/lizard + name = "lizard skin" + desc = "Sssssss..." + singular_name = "lizard skin piece" + icon_state = "sheet-lizard" + stacktype = "hide-lizard" + +/obj/item/stack/animalhide/xeno + name = "alien hide" + desc = "The skin of a terrible creature." + singular_name = "alien hide piece" + icon_state = "sheet-xeno" + stacktype = "hide-xeno" \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/tanning/hide_hairless.dm b/code/modules/materials/sheets/organic/tanning/hide_hairless.dm new file mode 100644 index 0000000000..72b235e415 --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/hide_hairless.dm @@ -0,0 +1,48 @@ +//Step two - washing..... it's actually in washing machine code, and ere. + +/obj/item/stack/hairlesshide + name = "hairless hide" + desc = "This hide was stripped of it's hair, but still needs tanning." + description_info = "Get it wet to continue tanning this into leather.
\ + You could set it in a river, wash it with a sink, or just splash water on it with a bucket." + singular_name = "hairless hide piece" + icon_state = "sheet-hairlesshide" + no_variants = FALSE + max_amount = 20 + stacktype = "hairlesshide" + +/obj/item/stack/hairlesshide/examine(var/mob/user) + . = ..() + . += description_info + +/obj/item/stack/hairlesshide/water_act(var/wateramount) + . = ..() + wateramount = min(amount, round(wateramount)) + for(var/i in 1 to wateramount) + var/obj/item/stack/wetleather/H = null + for(var/obj/item/stack/wetleather/HS in get_turf(src)) // Doesn't have a user, can't just use their loc + if(HS.amount < HS.max_amount) + H = HS + break + + // Either we found a valid stack, in which case increment amount, + // Or we need to make a new stack + if(istype(H)) + H.amount++ + else + H = new /obj/item/stack/wetleather(get_turf(src)) + + // Increment the amount + src.use(1) + +/obj/item/stack/hairlesshide/proc/rapidcure(var/stacknum = 1) + stacknum = min(stacknum, amount) + + while(stacknum) + var/obj/item/stack/wetleather/I = new /obj/item/stack/wetleather(get_turf(src)) + + if(istype(I)) + I.dry() + + use(1) + stacknum -= 1 \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/tanning/leather_wet.dm b/code/modules/materials/sheets/organic/tanning/leather_wet.dm new file mode 100644 index 0000000000..64f672512c --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/leather_wet.dm @@ -0,0 +1,51 @@ +//Step three - drying +/obj/item/stack/wetleather + name = "wet leather" + desc = "This leather has been cleaned but still needs to be dried." + description_info = "To finish tanning the leather, you need to dry it. \ + You could place it under a fire, \ + put it in a drying rack, \ + or build a tanning rack from steel or wooden boards." + singular_name = "wet leather piece" + icon_state = "sheet-wetleather" + var/wetness = 30 //Reduced when exposed to high temperautres + var/drying_threshold_temperature = 500 //Kelvin to start drying + no_variants = FALSE + max_amount = 20 + stacktype = "wetleather" + + var/dry_type = /obj/item/stack/material/leather + +/obj/item/stack/wetleather/examine(var/mob/user) + . = ..() + . += description_info + . += "\The [src] is [get_dryness_text()]." + +/obj/item/stack/wetleather/proc/get_dryness_text() + if(wetness > 20) + return "wet" + if(wetness > 10) + return "damp" + if(wetness) + return "almost dry" + return "dry" + +/obj/item/stack/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + if(exposed_temperature >= drying_threshold_temperature) + wetness-- + if(wetness == 0) + dry() + +/obj/item/stack/wetleather/proc/dry() + var/obj/item/stack/material/leather/L = new(src.loc) + L.amount = amount + use(amount) + return L + +/obj/item/stack/wetleather/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) + . = ..() + if(.) // If it transfers any, do a weighted average of the wetness + var/obj/item/stack/wetleather/W = S + var/oldamt = W.amount - . + W.wetness = round(((oldamt * W.wetness) + (. * wetness)) / W.amount) diff --git a/code/modules/materials/sheets/organic/tanning/tanning_rack.dm b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm new file mode 100644 index 0000000000..96d70d9096 --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm @@ -0,0 +1,70 @@ +/obj/structure/tanning_rack + name = "tanning rack" + desc = "A rack used to stretch leather out and hold it taut during the tanning process." + icon = 'icons/obj/kitchen.dmi' + icon_state = "spike" + + var/obj/item/stack/wetleather/drying = null + +/obj/structure/tanning_rack/Initialize() + . = ..() + START_PROCESSING(SSobj, src) // SSObj fires ~every 2s , starting from wetness 30 takes ~1m + +/obj/structure/tanning_rack/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/structure/tanning_rack/process() + if(drying && drying.wetness) + drying.wetness = max(drying.wetness - 1, 0) + if(!drying.wetness) + visible_message("The [drying] is dry!") + update_icon() + +/obj/structure/tanning_rack/examine(var/mob/user) + . = ..() + if(drying) + . += "\The [drying] is [drying.get_dryness_text()]." + +/obj/structure/tanning_rack/update_icon() + overlays.Cut() + if(drying) + var/image/I + if(drying.wetness) + I = image(icon, "leather_wet") + else + I = image(icon, "leather_dry") + add_overlay(I) + +/obj/structure/tanning_rack/attackby(var/atom/A, var/mob/user) + if(istype(A, /obj/item/stack/wetleather)) + if(!drying) // If not drying anything, start drying the thing + if(user.unEquip(A, target = src)) + drying = A + else // Drying something, add if possible + var/obj/item/stack/wetleather/W = A + W.transfer_to(drying, W.amount, TRUE) + update_icon() + return TRUE + return ..() + +/obj/structure/tanning_rack/attack_hand(var/mob/user) + if(drying) + var/obj/item/stack/S = drying + if(!drying.wetness) // If it's dry, make a stack of dry leather and prepare to put that in their hands + var/obj/item/stack/material/leather/L = new(src) + L.amount = drying.amount + drying.use(drying.amount) + S = L + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(!H.put_in_any_hand_if_possible(S)) + S.forceMove(get_turf(src)) + else + S.forceMove(get_turf(src)) + drying = null + update_icon() + +/obj/structure/tanning_rack/attack_robot(var/mob/user) + attack_hand(user) // That has checks to \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/textiles.dm b/code/modules/materials/sheets/organic/textiles.dm new file mode 100644 index 0000000000..a534ee19b1 --- /dev/null +++ b/code/modules/materials/sheets/organic/textiles.dm @@ -0,0 +1,23 @@ +/obj/item/stack/material/leather + name = "leather" + desc = "The by-product of mob grinding." + icon_state = "sheet-leather" + default_type = MAT_LEATHER + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/leather.ogg' + pickup_sound = 'sound/items/pickup/leather.ogg' + +/obj/item/stack/material/cloth + name = "cloth" + icon_state = "sheet-cloth" + default_type = "cloth" + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/clothing.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' + +/obj/item/stack/material/cloth/diyaab + color = "#c6ccf0" diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm new file mode 100644 index 0000000000..d3d1fd6418 --- /dev/null +++ b/code/modules/materials/sheets/organic/wood.dm @@ -0,0 +1,55 @@ +/obj/item/stack/material/wood + name = "wooden plank" + icon_state = "sheet-wood" + default_type = MAT_WOOD + strict_color_stacking = TRUE + apply_colour = 1 + drop_sound = 'sound/items/drop/wooden.ogg' + pickup_sound = 'sound/items/pickup/wooden.ogg' + no_variants = FALSE + +/obj/item/stack/material/wood/sif + name = "alien wooden plank" + color = "#0099cc" + default_type = MAT_SIFWOOD + +/obj/item/stack/material/log + name = "log" + icon_state = "sheet-log" + default_type = MAT_LOG + no_variants = FALSE + color = "#824B28" + max_amount = 25 + w_class = ITEMSIZE_HUGE + description_info = "Use inhand to craft things, or use a sharp and edged object on this to convert it into two wooden planks." + var/plank_type = /obj/item/stack/material/wood + drop_sound = 'sound/items/drop/wooden.ogg' + pickup_sound = 'sound/items/pickup/wooden.ogg' + +/obj/item/stack/material/log/sif + name = "alien log" + default_type = MAT_SIFLOG + color = "#0099cc" + plank_type = /obj/item/stack/material/wood/sif + +/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user) + if(!istype(W) || W.force <= 0) + return ..() + if(W.sharp && W.edge) + var/time = (3 SECONDS / max(W.force / 10, 1)) * W.toolspeed + user.setClickCooldown(time) + if(do_after(user, time, src) && use(1)) + to_chat(user, "You cut up a log into planks.") + playsound(src, 'sound/effects/woodcutting.ogg', 50, 1) + var/obj/item/stack/material/wood/existing_wood = null + for(var/obj/item/stack/material/wood/M in user.loc) + if(M.material.name == src.material.name) + existing_wood = M + break + + var/obj/item/stack/material/wood/new_wood = new plank_type(user.loc) + new_wood.amount = 2 + if(existing_wood && new_wood.transfer_to(existing_wood)) + to_chat(user, "You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.") + else + return ..() diff --git a/code/modules/materials/sheets/plastic.dm b/code/modules/materials/sheets/plastic.dm new file mode 100644 index 0000000000..41415af606 --- /dev/null +++ b/code/modules/materials/sheets/plastic.dm @@ -0,0 +1,15 @@ +/obj/item/stack/material/plastic + name = "plastic" + icon_state = "sheet-plastic" + default_type = "plastic" + no_variants = FALSE + +/obj/item/stack/material/cardboard + name = "cardboard" + icon_state = "sheet-card" + default_type = "cardboard" + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/cardboardbox.ogg' + pickup_sound = 'sound/items/pickup/cardboardbox.ogg' diff --git a/code/modules/materials/sheets/snow.dm b/code/modules/materials/sheets/snow.dm new file mode 100644 index 0000000000..7ecc4c4e64 --- /dev/null +++ b/code/modules/materials/sheets/snow.dm @@ -0,0 +1,16 @@ +// Ok, technically not stones, but the snowbrick's function is similar to sandstone and marble +/obj/item/stack/material/snow + name = "snow" + desc = "The temptation to build a snowman rises." + icon_state = "sheet-snow" + drop_sound = 'sound/items/drop/gloves.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' + default_type = "snow" + +/obj/item/stack/material/snowbrick + name = "snow brick" + desc = "For all of your igloo building needs." + icon_state = "sheet-snowbrick" + default_type = "packed snow" + drop_sound = 'sound/items/drop/gloves.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' \ No newline at end of file diff --git a/code/modules/materials/sheets/stone.dm b/code/modules/materials/sheets/stone.dm new file mode 100644 index 0000000000..17347ff9d8 --- /dev/null +++ b/code/modules/materials/sheets/stone.dm @@ -0,0 +1,15 @@ +/obj/item/stack/material/sandstone + name = "sandstone brick" + icon_state = "sheet-sandstone" + default_type = "sandstone" + no_variants = FALSE + drop_sound = 'sound/items/drop/boots.ogg' + pickup_sound = 'sound/items/pickup/boots.ogg' + +/obj/item/stack/material/marble + name = "marble brick" + icon_state = "sheet-marble" + default_type = "marble" + no_variants = FALSE + drop_sound = 'sound/items/drop/boots.ogg' + pickup_sound = 'sound/items/pickup/boots.ogg' diff --git a/code/modules/materials/sheets/supermatter.dm b/code/modules/materials/sheets/supermatter.dm new file mode 100644 index 0000000000..c56f298088 --- /dev/null +++ b/code/modules/materials/sheets/supermatter.dm @@ -0,0 +1,55 @@ +// Forged in the equivalent of Hell, one piece at a time. +/obj/item/stack/material/supermatter + name = MAT_SUPERMATTER + icon_state = "sheet-super" + item_state = "diamond" + default_type = MAT_SUPERMATTER + apply_colour = TRUE + +/obj/item/stack/material/supermatter/proc/update_mass() // Due to how dangerous they can be, the item will get heavier and larger the more are in the stack. + slowdown = amount / 10 + w_class = min(5, round(amount / 10) + 1) + throw_range = round(amount / 7) + 1 + +/obj/item/stack/material/supermatter/use(var/used) + . = ..() + update_mass() + return + +/obj/item/stack/material/supermatter/attack_hand(mob/user) + . = ..() + + update_mass() + SSradiation.radiate(src, 5 + amount) + var/mob/living/M = user + if(!istype(M)) + return + + var/burn_user = TRUE + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + var/obj/item/clothing/gloves/G = H.gloves + if(istype(G) && ((G.flags & THICKMATERIAL && prob(70)) || istype(G, /obj/item/clothing/gloves/gauntlets))) + burn_user = FALSE + + if(burn_user) + H.visible_message("\The [src] flashes as it scorches [H]'s hands!") + H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon="Supermatter Chunk") + H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon="Supermatter Chunk") + H.drop_from_inventory(src, get_turf(H)) + return + + if(istype(user, /mob/living/silicon/robot)) + burn_user = FALSE + + if(burn_user) + M.apply_damage(amount, BURN, null, used_weapon="Supermatter Chunk") + +/obj/item/stack/material/supermatter/ex_act(severity) // An incredibly hard to manufacture material, SM chunks are unstable by their 'stabilized' nature. + if(prob((4 / severity) * 20)) + SSradiation.radiate(get_turf(src), amount * 4) + explosion(get_turf(src),round(amount / 12) , round(amount / 6), round(amount / 3), round(amount / 25)) + qdel(src) + return + SSradiation.radiate(get_turf(src), amount * 2) + ..() \ No newline at end of file diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index f57ec998c5..9a2e618ed1 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -117,7 +117,7 @@ var/total_harvest = harvest_speed //Ore harvest-per-tick. var/found_resource = 0 //If this doesn't get set, the area is depleted and the drill errors out. - for(var/metal in GLOB.ore_types) + for(var/metal in ore_types) if(contents.len >= capacity) system_error("Insufficient storage space.") @@ -145,7 +145,7 @@ harvesting.resources[metal] = 0 for(var/i=1, i <= create_ore, i++) - var/oretype = GLOB.ore_types[metal] + var/oretype = ore_types[metal] new oretype(src) if(!found_resource) // If a drill can't see an advanced material, it will destroy it while going through. diff --git a/code/modules/mining/machine_input_output_plates.dm b/code/modules/mining/machinery/machine_input_output_plates.dm similarity index 90% rename from code/modules/mining/machine_input_output_plates.dm rename to code/modules/mining/machinery/machine_input_output_plates.dm index d8693a1316..0e7680e672 100644 --- a/code/modules/mining/machine_input_output_plates.dm +++ b/code/modules/mining/machinery/machine_input_output_plates.dm @@ -1,19 +1,19 @@ -/**********************Input and output plates**************************/ - -/obj/machinery/mineral/input - icon = 'icons/mob/screen1.dmi' - icon_state = "x2" - name = "Input area" - density = 0 - anchored = 1.0 - New() - icon_state = "blank" - -/obj/machinery/mineral/output - icon = 'icons/mob/screen1.dmi' - icon_state = "x" - name = "Output area" - density = 0 - anchored = 1.0 - New() +/**********************Input and output plates**************************/ + +/obj/machinery/mineral/input + icon = 'icons/mob/screen1.dmi' + icon_state = "x2" + name = "Input area" + density = 0 + anchored = 1.0 + New() + icon_state = "blank" + +/obj/machinery/mineral/output + icon = 'icons/mob/screen1.dmi' + icon_state = "x" + name = "Output area" + density = 0 + anchored = 1.0 + New() icon_state = "blank" \ No newline at end of file diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machinery/machine_processing.dm similarity index 100% rename from code/modules/mining/machine_processing.dm rename to code/modules/mining/machinery/machine_processing.dm diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machinery/machine_stacking.dm similarity index 100% rename from code/modules/mining/machine_stacking.dm rename to code/modules/mining/machinery/machine_stacking.dm diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machinery/machine_unloading.dm similarity index 100% rename from code/modules/mining/machine_unloading.dm rename to code/modules/mining/machinery/machine_unloading.dm diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index ee3c514ade..399a5a4812 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -8,13 +8,13 @@ var/list/mining_overlay_cache = list() density = 1 opacity = 1 // YW edit. Stops all my unsimulated tiles from being seethrough. +//YW add start /turf/unsimulated/mineral/ice name = "Ice wall" desc = "Frigid Ice that seems to be stronger than most manmade structures." icon = 'icons/turf/snow_new.dmi' icon_state = "Icerock" - - +//YW add end /turf/simulated/mineral //wall piece name = "rock" @@ -49,7 +49,7 @@ var/list/mining_overlay_cache = list() var/datum/artifact_find/artifact_find var/ignore_mapgen - var/ore_types = list( + var/static/list/ore_types = list( "hematite" = /obj/item/weapon/ore/iron, "uranium" = /obj/item/weapon/ore/uranium, "gold" = /obj/item/weapon/ore/gold, @@ -250,7 +250,7 @@ turf/simulated/mineral/floor/light_corner for(var/ore in resources) var/amount_to_give = rand(CEILING(resources[ore]/2, 1), resources[ore]) // Should result in at least one piece of ore. for(var/i=1, i <= amount_to_give, i++) - var/oretype = GLOB.ore_types[ore] + var/oretype = ore_types[ore] new oretype(src) resources[ore] = 0 diff --git a/code/modules/mining/ore_redemption_machine/survey_vendor.dm b/code/modules/mining/ore_redemption_machine/survey_vendor.dm index ac050b367d..f62e81060a 100644 --- a/code/modules/mining/ore_redemption_machine/survey_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/survey_vendor.dm @@ -18,6 +18,7 @@ EQUIPMENT("Defense Equipment - Plasteel Machete", /obj/item/weapon/material/knife/machete, 50), EQUIPMENT("Defense Equipment - Razor Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked, 100), EQUIPMENT("Defense Equipment - Sentry Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/ward, 150), + EQUIPMENT("Defense Equipment - Frontier Carbine", /obj/item/weapon/gun/energy/locked/frontier/carbine, 750), EQUIPMENT("Fishing Net", /obj/item/weapon/material/fishing_net, 50), EQUIPMENT("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 100), EQUIPMENT("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 750), @@ -47,6 +48,7 @@ prize_list["Digging Tools"] = list( EQUIPMENT("Survey Tools - Shovel", /obj/item/weapon/shovel, 40), EQUIPMENT("Survey Tools - Mechanical Trap", /obj/item/weapon/beartrap, 50), + EQUIPMENT("Survey Tools - Binoculars", /obj/item/device/binoculars,40), ) prize_list["Miscellaneous"] = list( EQUIPMENT("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 10), diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 2e1eb29517..b3ccb1898e 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -73,7 +73,7 @@ if(src.loc && istype(loc,/obj/belly) || istype(loc,/obj/item/device/dogborg/sleeper)) deathmessage = "no message" //VOREStation Add - Prevents death messages from inside mobs facing_dir = null - if(!gibbed && deathmessage != "no message") // This is gross, but reliable. Only brains use it. + if(!gibbed && deathmessage != DEATHGASP_NO_MESSAGE) src.visible_message("\The [src.name] [deathmessage]") set_stat(DEAD) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 2a8af56080..f59ebf612c 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,64 +1,9 @@ -// All mobs should have custom emote, really.. -//m_type == 1 --> visual. -//m_type == 2 --> audible -/mob/proc/custom_emote(var/m_type=1,var/message = null,var/range=world.view) - if(stat || !use_me && usr == src) - to_chat(src, "You are unable to emote.") - return - - var/muzzled = is_muzzled() - if(m_type == 2 && muzzled) return - - var/input - if(!message) - input = sanitize_or_reflect(input(src,"Choose an emote to display.") as text|null, src) //VOREStation Edit - Reflect too long messages, within reason - else - input = message - if(input) - log_emote(message,src) //Log before we add junk - message = "[src] [input]" - else - return - - - if (message) - message = encode_html_emphasis(message) - - // Hearing gasp and such every five seconds is not good emotes were not global for a reason. - // Maybe some people are okay with that. - - var/turf/T = get_turf(src) - if(!T) return - var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE) - var/list/m_viewers = in_range["mobs"] - var/list/o_viewers = in_range["objs"] - - for(var/mob in m_viewers) - var/mob/M = mob - spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes. - if(M) - if(isobserver(M)) - //VOREStation Edit Start - var/mob/observer/dead/D = M - if(ckey || (src in view(D))) - M.show_message(message, m_type) - message = "[src] ([ghost_follow_link(src, M)]) [input]" - else - M.show_message(message, m_type) - //VOREStation Edit End - - for(var/obj in o_viewers) - var/obj/O = obj - spawn(0) - if(O) - O.see_emote(src, message, m_type) - // Shortcuts for above proc /mob/proc/visible_emote(var/act_desc) - custom_emote(1, act_desc) + custom_emote(VISIBLE_MESSAGE, act_desc) /mob/proc/audible_emote(var/act_desc) - custom_emote(2, act_desc) + custom_emote(AUDIBLE_MESSAGE, act_desc) /mob/proc/emote_dead(var/message) diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm index 8071c184ee..f520e80fa6 100644 --- a/code/modules/mob/living/bot/cleanbot.dm +++ b/code/modules/mob/living/bot/cleanbot.dm @@ -11,6 +11,7 @@ wait_if_pulled = 1 min_target_dist = 0 + var/vocal = 1 var/cleaning = 0 var/wet_floors = 0 var/spray_blood = 0 @@ -27,7 +28,7 @@ return ..() /mob/living/bot/cleanbot/handleIdle() - if(!wet_floors && !spray_blood && prob(2)) + if(!wet_floors && !spray_blood && vocal && prob(2)) custom_emote(2, "makes an excited booping sound!") playsound(src, 'sound/machines/synth_yes.ogg', 50, 0) @@ -164,9 +165,10 @@ data["on"] = on data["open"] = open data["locked"] = locked - + data["blood"] = blood data["patrol"] = will_patrol + data["vocal"] = vocal data["wet_floors"] = wet_floors data["spray_blood"] = spray_blood @@ -193,6 +195,9 @@ will_patrol = !will_patrol patrol_path = null . = TRUE + if("vocal") + vocal = !vocal + . = TRUE if("wet_floors") wet_floors = !wet_floors to_chat(usr, "You twiddle the screw.") diff --git a/code/modules/mob/living/bot/edCLNbot.dm b/code/modules/mob/living/bot/edCLNbot.dm index b4d3dfbcca..a0b0dc3145 100644 --- a/code/modules/mob/living/bot/edCLNbot.dm +++ b/code/modules/mob/living/bot/edCLNbot.dm @@ -12,6 +12,7 @@ patrol_speed = 3 target_speed = 6 + vocal = 1 cleaning = 0 blood = 0 var/red_switch = 0 @@ -25,7 +26,7 @@ icon_state = "edCLN[on]" /mob/living/bot/cleanbot/edCLN/handleIdle() - if(prob(10)) + if(vocal && prob(10)) custom_emote(2, "makes a less than thrilled beeping sound.") playsound(src, 'sound/machines/synth_yes.ogg', 50, 0) diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index 9334fbbcec..01d9702aa8 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -96,9 +96,18 @@ turn_on() . = TRUE + switch(action) + if("power") + if(!access_scanner.allowed(src)) + return FALSE + if(on) + turn_off() + else + turn_on() + . = TRUE + if(locked) return TRUE - switch(action) if("water") waters_trays = !waters_trays diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm index 31d1dc0e25..54fbc8403c 100644 --- a/code/modules/mob/living/bot/floorbot.dm +++ b/code/modules/mob/living/bot/floorbot.dm @@ -12,6 +12,7 @@ wait_if_pulled = 1 min_target_dist = 0 + var/vocal = 1 var/amount = 10 // 1 for tile, 2 for lattice var/maxAmount = 60 var/tilemake = 0 // When it reaches 100, bot makes a tile @@ -41,7 +42,8 @@ data["on"] = on data["open"] = open data["locked"] = locked - + + data["vocal"] = vocal data["amount"] = amount data["possible_bmode"] = list("NORTH", "EAST", "SOUTH", "WEST") @@ -56,7 +58,6 @@ data["eattiles"] = eattiles data["maketiles"] = maketiles data["bmode"] = dir2text(targetdirection) - return data /mob/living/bot/floorbot/attack_hand(var/mob/user) @@ -74,8 +75,8 @@ /mob/living/bot/floorbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) return TRUE - - add_fingerprint(usr) + + add_fingerprint(src) switch(action) if("start") @@ -84,11 +85,14 @@ else turn_on() . = TRUE - + if(locked && !issilicon(usr)) return switch(action) + if("vocal") + vocal = !vocal + . = TRUE if("improve") improvefloors = !improvefloors . = TRUE @@ -108,7 +112,7 @@ tilemake = 0 addTiles(1) - if(prob(1)) + if(vocal && prob(1)) custom_emote(2, "makes an excited beeping sound!") playsound(src, 'sound/machines/twobeep.ogg', 50, 0) diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm index 22871209db..d1a9c567e9 100644 --- a/code/modules/mob/living/bot/medbot.dm +++ b/code/modules/mob/living/bot/medbot.dm @@ -313,7 +313,6 @@ declare_treatment = !declare_treatment . = TRUE - /mob/living/bot/medbot/emag_act(var/remaining_uses, var/mob/user) . = ..() if(!emagged) diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm index fa0b76009f..92cc55f7f0 100644 --- a/code/modules/mob/living/bot/mulebot.dm +++ b/code/modules/mob/living/bot/mulebot.dm @@ -70,17 +70,16 @@ ui.open() /mob/living/bot/mulebot/tgui_data(mob/user) - var/list/data = list( - "suffix" = suffix, - "power" = on, - "issilicon" = issilicon(user), - "load" = load, - "locked" = locked, - "auto_return" = auto_return, - "crates_only" = crates_only, - "hatch" = open, - "safety" = safety, - ) + var/list/data = ..() + data["suffix"] = suffix + data["power"] = on + data["issillicon"] = issilicon(user) + data["load"] = load + data["locked"] = locked + data["auto_return"] = auto_return + data["crates_only"] = crates_only + data["hatch"] = open + data["safety"] = safety return data /mob/living/bot/mulebot/tgui_act(action, params) diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index f5fd98615f..396ddf53d0 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -109,6 +109,7 @@ data["check_arrest"] = null data["arrest_type"] = null data["declare_arrests"] = null + data["bot_patrolling"] = null data["will_patrol"] = null if(!locked || issilicon(user)) @@ -117,8 +118,8 @@ data["check_arrest"] = check_arrest data["arrest_type"] = arrest_type data["declare_arrests"] = declare_arrests - if(using_map.bot_patrolling) - data["will_patrol"] = will_patrol + data["bot_patrolling"] = using_map.bot_patrolling + data["patrol"] = will_patrol return data @@ -128,7 +129,7 @@ /mob/living/bot/secbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) return - + add_fingerprint(usr) switch(action) diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index 01f1d2f57d..739c3b09c6 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -1,3 +1,29 @@ +var/list/_nymph_default_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/hiss, + /decl/emote/audible, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/gnarl, + /decl/emote/audible/bug_hiss, + /decl/emote/audible/bug_chitter, + /decl/emote/audible/chirp +) + /mob/living/carbon/alien/diona name = "diona nymph" voice_name = "diona nymph" @@ -20,6 +46,9 @@ holder_type = /obj/item/weapon/holder/diona var/obj/item/hat +/mob/living/carbon/alien/diona/get_default_emotes() + return global._nymph_default_emotes + /mob/living/carbon/alien/diona/Initialize() . = ..() species = GLOB.all_species[SPECIES_DIONA] diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm index 5cff048e10..b0517e7a95 100644 --- a/code/modules/mob/living/carbon/alien/emote.dm +++ b/code/modules/mob/living/carbon/alien/emote.dm @@ -1,108 +1,31 @@ -/mob/living/carbon/alien/emote(var/act, var/m_type=1, var/message = null) - var/param = null - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) +var/list/_alien_default_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/hiss, + /decl/emote/audible, + /decl/emote/audible/deathgasp_alien, + /decl/emote/audible/whimper, + /decl/emote/audible/gasp, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/moan, + /decl/emote/audible/gnarl, + /decl/emote/audible/chirp +) - var/muzzled = is_muzzled() - act = lowertext(act) - - switch(act) - if("sign") - if(!restrained()) - var/num = null - if(text2num(param)) - num = "the number [text2num(param)]" - if(num) - message = "[src] signs [num]." - m_type = 1 - if("burp") - if(!muzzled) - message = "[src] burps." - m_type = 2 - if("deathgasp") - message = "[src] lets out a waning guttural screech, green blood bubbling from its maw." - m_type = 2 - if("scratch") - if(!restrained()) - message = "[src] scratches." - m_type = 1 - if("whimper") - if(!muzzled) - message = "[src] whimpers." - m_type = 2 - if("tail") - message = "[src] waves its tail." - m_type = 1 - if("gasp") - message = "[src] gasps." - m_type = 2 - if("shiver") - message = "[src] shivers." - m_type = 2 - if("drool") - message = "[src] drools." - m_type = 1 - if("scretch") - if(!muzzled) - message = "[src] scretches." - m_type = 2 - if("choke") - message = "[src] chokes." - m_type = 2 - if("moan") - message = "[src] moans!" - m_type = 2 - if("nod") - message = "[src] nods its head." - m_type = 1 -// if("sit") -// message = "[src] sits down." //Larvan can't sit down, /N -// m_type = 1 - if("sway") - message = "[src] sways around dizzily." - m_type = 1 - if("sulk") - message = "[src] sulks down sadly." - m_type = 1 - if("twitch") - message = "[src] twitches." - m_type = 1 - if("twitch_v") - message = "[src] twitches violently." - m_type = 1 - if("dance") - if(!restrained()) - message = "[src] dances around happily." - m_type = 1 - if("roll") - if(!restrained()) - message = "[src] rolls." - m_type = 1 - if("shake") - message = "[src] shakes its head." - m_type = 1 - if("gnarl") - if(!muzzled) - message = "[src] gnarls and shows its teeth.." - m_type = 2 - if("jump") - message = "[src] jumps!" - m_type = 1 - if("hiss_") - message = "[src] hisses softly." - m_type = 1 - if("collapse") - Paralyse(2) - message = "[src] collapses!" - m_type = 2 - if("chirp") - message = "[src] chirps!" - playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0) - m_type = 2 - if("help") - to_chat(src, "burp, chirp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roll, scratch,\nscretch, shake, sign-#, sulk, sway, tail, twitch, whimper") - - if(!stat) - ..(act, m_type, message) +/mob/living/carbon/alien/get_default_emotes() + . = global._alien_default_emotes diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 8b6e7f7175..687372c6ee 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -3,7 +3,7 @@ container.icon_state = "mmi_dead" return ..(gibbed,"beeps shrilly as the MMI flatlines!") else - return ..(gibbed,"no message") + return ..(gibbed, DEATHGASP_NO_MESSAGE) /mob/living/carbon/brain/gib() if(istype(container, /obj/item/device/mmi)) diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index 05706fe299..cb6ed6a1b7 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -1,47 +1,17 @@ -/mob/living/carbon/brain/emote(var/act,var/m_type=1,var/message = null) - if(!(container && istype(container, /obj/item/device/mmi)))//No MMI, no emotes - return +var/list/_brain_default_emotes = list( + /decl/emote/audible/alarm, + /decl/emote/audible/alert, + /decl/emote/audible/notice, + /decl/emote/audible/whistle, + /decl/emote/audible/synth, + /decl/emote/audible/beep, + /decl/emote/audible/boop, + /decl/emote/visible/blink, + /decl/emote/visible/flash +) - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - act = copytext(act, 1, t1) +/mob/living/carbon/brain/can_emote() + return (istype(container, /obj/item/device/mmi) && ..()) - if(stat == DEAD) - return - switch(act) - if("alarm") - to_chat(src, "You sound an alarm.") - message = "[src] sounds an alarm." - m_type = 2 - if("alert") - to_chat(src, "You let out a distressed noise.") - message = "[src] lets out a distressed noise." - m_type = 2 - if("notice") - to_chat(src, "You play a loud tone.") - message = "[src] plays a loud tone." - m_type = 2 - if("flash") - message = "The lights on [src] flash quickly." - m_type = 1 - if("blink") - message = "[src] blinks." - m_type = 1 - if("whistle") - to_chat(src, "You whistle.") - message = "[src] whistles." - m_type = 2 - if("beep") - to_chat(src, "You beep.") - message = "[src] beeps." - m_type = 2 - if("boop") - to_chat(src, "You boop.") - message = "[src] boops." - m_type = 2 - if("help") - to_chat(src, "alarm, alert, notice, flash, blink, whistle, beep, boop") - - if(!stat) - ..(act, m_type, message) - \ No newline at end of file +/mob/living/carbon/brain/get_default_emotes() + return global._brain_default_emotes diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 81a49ae6fe..a705f03450 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,861 +1,140 @@ -/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null) - var/param = null - - var/datum/gender/T = gender_datums[get_visible_gender()] - - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) - - var/muzzled = is_muzzled() - //var/m_type = 1 - - for(var/obj/item/organ/O in organs) - for(var/obj/item/weapon/implant/I in O) - if(I.implanted) - I.trigger(act, src) - - if(stat == DEAD && (act != "deathgasp")) - return - - if(attempt_vr(src, "handle_emote_vr", list(act, m_type, message))) return //VOREStation Add - Custom Emote Handler - - switch(act) - if("airguitar") - if(!restrained()) - message = "is strumming the air and headbanging like a safari chimp." - m_type = 1 - - //Machine-only emotes - if("ping", "beep", "buzz", "yes", "ye", "dwoop", "no", "rcough", "rsneeze") - - if(!isSynthetic()) - to_chat(src, "You are not a synthetic.") - return - - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - var/display_msg = "beeps" - var/use_sound = 'sound/machines/twobeep.ogg' - if(act == "buzz") - display_msg = "buzzes" - use_sound = 'sound/machines/buzz-sigh.ogg' - else if(act == "ping") - display_msg = "pings" - use_sound = 'sound/machines/ping.ogg' - else if(act == "yes" || act == "ye") - display_msg = "emits an affirmative blip" - use_sound = 'sound/machines/synth_yes.ogg' - else if(act == "dwoop") - display_msg = "chirps happily" - use_sound = 'sound/machines/dwoop.ogg' - else if(act == "no") - display_msg = "emits a negative blip" - use_sound = 'sound/machines/synth_no.ogg' - else if(act == "rcough") - display_msg = "emits a robotic cough" - if(get_gender() == FEMALE) - use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') - else - use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') - else if(act == "rsneeze") - display_msg = "emits a robotic sneeze" - if(get_gender() == FEMALE) - use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' - else - use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' - - if(param) - message = "[display_msg] at [param]." - else - message = "[display_msg]." - playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - m_type = 1 - - //Promethean-only emotes - if("squish") - /* VOREStation Removal Start - Eh. People can squish maybe. - if(species.bump_flag != SLIME) //This should definitely do it. - to_chat(src, "You are not a slime thing!") - return - */ //VOREStation Removal End - playsound(src, 'sound/effects/slime_squish.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add //Credit to DrMinky (freesound.org) for the sound. - message = "squishes." - m_type = 1 - - if("chirp") - /* VOREStation Removal Start - Eh. People can chirp maybe. - if ((species.bump_flag != SLIME) && (species.name != SPECIES_DIONA)) - to_chat(src, "You are not a diona or slime!") - return - */ //VOREStation Removal End - playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0) - message = "chirps." - m_type = 2 - - //Skrell-only emotes - if("warble") - if(species.name != SPECIES_SKRELL) - to_chat(src, "You are not a Skrell!") - return - - playsound(src, 'sound/effects/warble.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound. - message = "warbles." - m_type = 2 - - if("blink") - message = "blinks." - m_type = 1 - - if("blink_r") - message = "blinks rapidly." - m_type = 1 - - if("bow") - if(!buckled) - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "bows to [param]." - else - message = "bows." - m_type = 1 - - if("custom") - var/input = sanitize(input("Choose an emote to display.") as text|null) - if(!input) - return - var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") - if(input2 == "Visible") - m_type = 1 - else if(input2 == "Hearable") - if(miming) - return - m_type = 2 - else - alert("Unable to use this emote, must be either hearable or visible.") - return - return custom_emote(m_type, input) - - if("me") - - //if(silent && silent > 0 && findtext(message,"\"",1, null) > 0) - // return //This check does not work and I have no idea why, I'm leaving it in for reference. - - if(client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot send IC messages (muted).") - return - if(stat) - return - if(!(message)) - return - return custom_emote(m_type, message) - - if("salute") - if(!buckled) - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "salutes to [param]." - else - message = "salutes." - m_type = 1 - - if("choke") - if(miming) - message = "clutches [T.his] throat desperately!" - m_type = 1 - else - if(!muzzled) - message = "chokes!" - m_type = 2 - else - message = "makes a strong noise." - m_type = 2 - - if("clap") - if(!restrained()) - message = "claps." - playsound(src, 'sound/misc/clapping.ogg') - m_type = 2 - if(miming) - m_type = 1 - - if("flap") - if(!restrained()) - message = "flaps [T.his] wings." - m_type = 2 - if(miming) - m_type = 1 - - if("aflap") - if(!restrained()) - message = "flaps [T.his] wings ANGRILY!" - m_type = 2 - if(miming) - m_type = 1 - - if("drool") - message = "drools." - m_type = 1 - - if("eyebrow") - message = "raises an eyebrow." - m_type = 1 - - if("chuckle") - if(miming) - message = "appears to chuckle." - m_type = 1 - else - if(!muzzled) - message = "chuckles." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("twitch") - message = "twitches." - m_type = 1 - - if("twitch_v") - message = "twitches violently." - m_type = 1 - - if("faint") - message = "faints." - if(sleeping) - return //Can't faint while asleep - Sleeping(10) - m_type = 1 - - if("cough", "coughs") - if(miming) - message = "appears to cough!" - m_type = 1 - else - if(!muzzled) - var/robotic = 0 - m_type = 2 - if(should_have_organ(O_LUNGS)) - var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS] - if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs - robotic = 1 - if(!robotic && !isSynthetic()) - message = "coughs!" - if(get_gender() == FEMALE) - if(species.female_cough_sounds) - playsound(src, pick(species.female_cough_sounds), 120, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - if(species.male_cough_sounds) - playsound(src, pick(species.male_cough_sounds), 120, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - message = "emits a robotic cough" - var/use_sound - if(get_gender() == FEMALE) - use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') - else - use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') - playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - message = "makes a strong noise." - m_type = 2 - - if ("cross") //YAWN addtion - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if (!M) - param = null - - if (param) - message = "crosses their arms at [param]." - else - message = "crosses their arms." - //End of YAWN Addtions - if ("frown") - message = "frowns." - m_type = 1 - - if("nod") - message = "nods." - m_type = 1 - - if("blush") - message = "blushes." - m_type = 1 - - if("wave") - message = "waves." - m_type = 1 - - if("gasp") - if(miming) - message = "appears to be gasping!" - m_type = 1 - else - if(!muzzled) - message = "gasps!" - m_type = 2 - else - message = "makes a weak noise." - m_type = 2 - - if("deathgasp") - message = "[species.get_death_message()]" - m_type = 1 - - if("giggle") - if(miming) - message = "giggles silently!" - m_type = 1 - else - if(!muzzled) - message = "giggles." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("glare") - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "glares at [param]." - else - message = "glares." - - if("stare") - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "stares at [param]." - else - message = "stares." - - if("look") - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - - if(!M) - param = null - - if(param) - message = "looks at [param]." - else - message = "looks." - m_type = 1 - - if("grin") - message = "grins." - m_type = 1 - - if("cry") - if(miming) - message = "cries." - m_type = 1 - else - if(!muzzled) - message = "cries." - m_type = 2 - else - message = "makes a weak noise. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment - m_type = 2 - - if("sigh") - if(miming) - message = "sighs." - m_type = 1 - else - if(!muzzled) - message = "sighs." - m_type = 2 - else - message = "makes a weak noise." - m_type = 2 - - if("laugh") - if(miming) - message = "acts out a laugh." - m_type = 1 - else - if(!muzzled) - message = "laughs." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("mumble") - message = "mumbles!" - m_type = 2 - if(miming) - m_type = 1 - - if("grumble") - if(miming) - message = "grumbles!" - m_type = 1 - if(!muzzled) - message = "grumbles!" - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("groan") - if(miming) - message = "appears to groan!" - m_type = 1 - else - if(!muzzled) - message = "groans!" - m_type = 2 - else - message = "makes a loud noise." - m_type = 2 - - if("moan") - if(miming) - message = "appears to moan!" - m_type = 1 - else - message = "moans!" - m_type = 2 - - if("johnny") - var/M - if(param) - M = param - if(!M) - param = null - else - if(miming) - message = "takes a drag from a cigarette and blows \"[M]\" out in smoke." - m_type = 1 - else - message = "says, \"[M], please. He had a family.\" [name] takes a drag from a cigarette and blows his name out in smoke." - m_type = 2 - - if("point") - if(!restrained()) - var/mob/M = null - if(param) - for(var/atom/A as mob|obj|turf|area in view(null, null)) - if(param == A.name) - M = A - break - - if(!M) - message = "points." - else - pointed(M) - - if(M) - message = "points to [M]." - else - m_type = 1 - - if("crack") - if(!restrained()) - message = "cracks [T.his] knuckles." - playsound(src, 'sound/voice/knuckles.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - m_type = 1 - - if("raise") - if(!restrained()) - message = "raises a hand." - m_type = 1 - - if("shake") - message = "shakes [T.his] head." - m_type = 1 - - if("shrug") - message = "shrugs." - m_type = 1 - - if("signal") - if(!restrained()) - var/t1 = round(text2num(param)) - if(isnum(t1)) - if(t1 <= 5 && (!r_hand || !l_hand)) - message = "raises [t1] finger\s." - else if(t1 <= 10 && (!r_hand && !l_hand)) - message = "raises [t1] finger\s." - m_type = 1 - - if("smile") - message = "smiles." - m_type = 1 - - if("shiver") - message = "shivers." - m_type = 2 - if(miming) - m_type = 1 - - if("pale") - message = "goes pale for a second." - m_type = 1 - - if("tremble") - message = "trembles in fear!" - m_type = 1 - - if("sneeze", "sneezes") - if(miming) - message = "sneezes." - m_type = 1 - else - if(!muzzled) - var/robotic = 0 - m_type = 2 - if(should_have_organ(O_LUNGS)) - var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS] - if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs - robotic = 1 - if(!robotic && !isSynthetic()) - message = "sneezes." - if(get_gender() == FEMALE) - playsound(src, species.female_sneeze_sound, 70, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - playsound(src, species.male_sneeze_sound, 70, preference = /datum/client_preference/emote_noises) //VOREStation Add - m_type = 2 - else - message = "emits a robotic sneeze" - var/use_sound - if(get_gender() == FEMALE) - use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' - else - use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' - playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - message = "makes a strange noise." - m_type = 2 - - if("sniff") - message = "sniffs." - m_type = 2 - if(miming) - m_type = 1 - - if("snore") - if(miming) - message = "sleeps soundly." - m_type = 1 - else - if(!muzzled) - message = "snores." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("whimper") - if(miming) - message = "appears hurt." - m_type = 1 - else - if(!muzzled) - message = "whimpers." - m_type = 2 - else - message = "makes a weak noise." - m_type = 2 - - if("wink") - message = "winks." - m_type = 1 - - if("yawn") - if(!muzzled) - message = "yawns." - m_type = 2 - if(miming) - m_type = 1 - - if("collapse") - Paralyse(2) - message = "collapses!" - m_type = 2 - if(miming) - m_type = 1 - - if("hug") - m_type = 1 - if(!restrained()) - var/M = null - if(param) - for(var/mob/A in view(1, null)) - if(param == A.name) - M = A - break - if(M == src) - M = null - - if(M) - message = "hugs [M]." - else - message = "hugs [T.himself]." - - if("handshake") - m_type = 1 - if(!restrained() && !r_hand) - var/mob/living/M = null - if(param) - for(var/mob/living/A in view(1, null)) - if(param == A.name) - M = A - break - if(M == src) - M = null - - if(M) - if(M.canmove && !M.r_hand && !M.restrained()) - message = "shakes hands with [M]." - else - message = "holds out [T.his] hand to [M]." - - if("dap") - m_type = 1 - if(!restrained()) - var/M = null - if(param) - for(var/mob/A in view(1, null)) - if(param == A.name) - M = A - break - if(M) - message = "gives daps to [M]." - else - message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful." - - if("slap", "slaps") - m_type = 1 - if(!restrained()) - var/M = null - if(param) - for(var/mob/A in view(1, null)) - if(param == A.name) - M = A - break - if(M) - message = "slaps [M] across the face. Ouch!" - playsound(src, 'sound/effects/snap.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //VOREStation Add - if(ishuman(M)) //Snowflakey! - var/mob/living/carbon/human/H = M - if(istype(H.wear_mask,/obj/item/clothing/mask/smokable)) - H.drop_from_inventory(H.wear_mask) - else - message = "slaps [T.himself]!" - playsound(src, 'sound/effects/snap.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //VOREStation Add - - if("scream", "screams") - if(miming) - message = "acts out a scream!" - m_type = 1 - else - if(!muzzled) - message = "[species.scream_verb]!" - m_type = 2 - if(get_gender() == FEMALE) //CHOMPedit start : fixed scream sounds by giving them the ability to grab from a list, and a way to turn them off in preferences - playsound(src, pick(species.female_scream_sound), 80, preference = /datum/client_preference/emote_noises) - else - playsound(src, pick(species.male_scream_sound), 80, preference = /datum/client_preference/emote_noises) //default to male screams if no gender is present. - //CHOMPedit end - else - message = "makes a very loud noise." - m_type = 2 - - if("snap", "snaps") - m_type = 2 - var/mob/living/carbon/human/H = src - var/obj/item/organ/external/L = H.get_organ("l_hand") - var/obj/item/organ/external/R = H.get_organ("r_hand") - var/left_hand_good = 0 - var/right_hand_good = 0 - if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.splinted)) && (!(L.status & ORGAN_BROKEN))) - left_hand_good = 1 - if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.splinted)) && (!(R.status & ORGAN_BROKEN))) - right_hand_good = 1 - - if(!left_hand_good && !right_hand_good) - to_chat(usr, "You need at least one hand in good working order to snap your fingers.") - return - - message = "snaps [T.his] fingers." - playsound(src, 'sound/effects/fingersnap.ogg', 50, 1, -3, preference = /datum/client_preference/emote_noises) //VOREStation Add - if(prob(0.0000000001)) // CHOMPStation edit - src.say("I don't feel so good...") - sleep(5 SECONDS) - src.gib() - - if("swish") - animate_tail_once() - - if("wag", "sway") - animate_tail_start() - - if("qwag", "fastsway") - animate_tail_fast() - - if("swag", "stopsway") - animate_tail_stop() - - if("vomit") - if(isSynthetic()) - to_chat(src, "You are unable to vomit.") - return - vomit() - return - - if("whistle" || "whistles") - if(!muzzled) - if(!isSynthetic()) - message = "whistles a tune." - playsound(src, 'sound/voice/longwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //praying this doesn't get abused - else - message = "whistles a robotic tune." - playsound(src, 'sound/voice/longwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("qwhistle") - if(!muzzled) - if(!isSynthetic()) - message = "whistles quietly." - playsound(src, 'sound/voice/shortwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "whistles robotically." - playsound(src, 'sound/voice/shortwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("wwhistle") - if(!muzzled) - if(!isSynthetic()) - message = "whistles inappropriately." - playsound(src, 'sound/voice/wolfwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "beeps inappropriately." - playsound(src, 'sound/voice/wolfwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("swhistle") - if(!muzzled) - if(!isSynthetic()) - message = "summon whistles." - playsound(src, 'sound/voice/summon_whistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "summon whistles robotically." - playsound(src, 'sound/voice/summon_whistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("flip") - m_type = 1 - if (!src.restrained()) - //message = "performs an amazing, gravity-defying backflip before landing skillfully back to the ground." - playsound(src.loc, 'sound/effects/bodyfall4.ogg', 50, 1) - src.SpinAnimation(7,1) - else - to_chat(usr, "You can't quite do something as difficult as a backflip while so... restricted.") - - if("spin") - m_type = 1 - if (!src.restrained()) - //message = "spins in a dance smoothly on their feet. Wow!" - src.spin(20, 1) - else - to_chat(usr, "You can't quite do something as difficult as a spin while so... restricted.") - - if("floorspin") - m_type = 1 - if (!src.restrained()) - //message = "gets down on the floor and spins their entire body around!" - spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) - set_dir(i) - sleep(1) - src.SpinAnimation(20,1) - else - to_chat(usr, "You can't quite do something as difficult as a spin while so... restricted.") - - if("sidestep") - m_type = 1 - if (!src.restrained()) - //message = "steps rhymatically and conservatively as they move side to side." - playsound(src.loc, 'sound/effects/bodyfall4.ogg', 50, 1) - var/default_pixel_x = initial(pixel_x) - var/default_pixel_y = initial(pixel_y) - default_pixel_x = src.default_pixel_x - default_pixel_y = src.default_pixel_y - - animate(src, pixel_x = 5, time = 20) - sleep(3) - animate(src, pixel_x = -5, time = 20) - animate(pixel_x = default_pixel_x, pixel_y = default_pixel_y, time = 2) - else - to_chat(usr, "Sidestepping sure seems unachieveable when you're this restricted.") - - if("help") - to_chat(src, "blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, cross, cry, custom, deathgasp, drool, eyebrow, fastsway/qwag, \ - frown, gasp, giggle, glare-(none)/mob, grin, groan, grumble, handshake, hug-(none)/mob, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, \ - qwhistle, raise, salute, scream, sneeze, shake, shiver, shrug, sigh, signal-#1-10, slap-(none)/mob, smile, sneeze, sniff, snore, stare-(none)/mob, stopsway/swag, sway/wag, swish, swhistle, \ - tremble, twitch, twitch_v, vomit, whimper, wink, whistle, wwhistle, yawn. Prometheans: squish Synthetics: beep, buzz, dwoop, yes, no, rcough, rsneeze, ping. Skrell: warble") - - else - to_chat(src, "Unusable emote '[act]'. Say *help or *vhelp for a list.") //VOREStation Edit, mention *vhelp for Virgo-specific emotes located in emote_vr.dm. - - if(message) - custom_emote(m_type,message) +var/list/_human_default_emotes = list( + /decl/emote/visible/blink, + /decl/emote/audible/synth, + /decl/emote/audible/synth/ping, + /decl/emote/audible/synth/buzz, + /decl/emote/audible/synth/confirm, + /decl/emote/audible/synth/deny, + /decl/emote/visible/nod, + /decl/emote/visible/shake, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/audible/gasp, + /decl/emote/audible/choke, + /decl/emote/audible/sneeze, + /decl/emote/audible/sniff, + /decl/emote/audible/snore, + /decl/emote/audible/whimper, + /decl/emote/audible/whistle, + /decl/emote/audible/whistle/quiet, + /decl/emote/audible/whistle/wolf, + /decl/emote/audible/whistle/summon, + /decl/emote/audible/yawn, + /decl/emote/audible/clap, + /decl/emote/audible/chuckle, + /decl/emote/audible/cough, + /decl/emote/audible/cry, + /decl/emote/audible/sigh, + /decl/emote/audible/laugh, + /decl/emote/audible/mumble, + /decl/emote/audible/grumble, + /decl/emote/audible/groan, + /decl/emote/audible/moan, + /decl/emote/audible/grunt, + /decl/emote/audible/slap, + /decl/emote/audible/crack, + /decl/emote/human, + /decl/emote/human/deathgasp, + /decl/emote/audible/giggle, + /decl/emote/audible/scream, + /decl/emote/visible/airguitar, + /decl/emote/visible/blink_r, + /decl/emote/visible/bow, + /decl/emote/visible/salute, + /decl/emote/visible/flap, + /decl/emote/visible/aflap, + /decl/emote/visible/drool, + /decl/emote/visible/eyebrow, + /decl/emote/visible/twitch, + /decl/emote/visible/dance, + /decl/emote/visible/twitch_v, + /decl/emote/visible/faint, + /decl/emote/visible/frown, + /decl/emote/visible/blush, + /decl/emote/visible/wave, + /decl/emote/visible/glare, + /decl/emote/visible/stare, + /decl/emote/visible/look, + /decl/emote/visible/point, + /decl/emote/visible/raise, + /decl/emote/visible/grin, + /decl/emote/visible/shrug, + /decl/emote/visible/smile, + /decl/emote/visible/pale, + /decl/emote/visible/tremble, + /decl/emote/visible/wink, + /decl/emote/visible/hug, + /decl/emote/visible/dap, + /decl/emote/visible/signal, + /decl/emote/visible/handshake, + /decl/emote/visible/afold, + /decl/emote/visible/alook, + /decl/emote/visible/eroll, + /decl/emote/visible/hbow, + /decl/emote/visible/hip, + /decl/emote/visible/holdup, + /decl/emote/visible/hshrug, + /decl/emote/visible/crub, + /decl/emote/visible/erub, + /decl/emote/visible/fslap, + /decl/emote/visible/ftap, + /decl/emote/visible/hrub, + /decl/emote/visible/hspread, + /decl/emote/visible/pocket, + /decl/emote/visible/rsalute, + /decl/emote/visible/rshoulder, + /decl/emote/visible/squint, + /decl/emote/visible/tfist, + /decl/emote/visible/tilt, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/snap, + /decl/emote/visible/vomit, + /decl/emote/visible/floorspin, + /decl/emote/visible/flip, + //VOREStation Add + /decl/emote/audible/awoo, + /decl/emote/audible/awoo2, + /decl/emote/audible/growl, + /decl/emote/audible/woof, + /decl/emote/audible/woof2, + /decl/emote/audible/nya, + /decl/emote/audible/mrowl, + /decl/emote/audible/peep, + /decl/emote/audible/chirp, + /decl/emote/audible/hoot, + /decl/emote/audible/weh, + /decl/emote/audible/merp, + /decl/emote/audible/myarp, + /decl/emote/audible/bark, + /decl/emote/audible/bork, + /decl/emote/audible/mrow, + /decl/emote/audible/hypno, + /decl/emote/audible/hiss, + /decl/emote/audible/rattle, + /decl/emote/audible/squeak, + /decl/emote/audible/geck, + /decl/emote/audible/baa, + /decl/emote/audible/baa2, + /decl/emote/audible/mar, + /decl/emote/audible/wurble, + /decl/emote/audible/snort, + /decl/emote/audible/meow, + /decl/emote/audible/moo, + /decl/emote/audible/croak, + /decl/emote/audible/gao, + /decl/emote/audible/cackle, + + /decl/emote/visible/mlem, + /decl/emote/visible/blep, + + /decl/emote/helper/vwag, + /decl/emote/helper/vflap + //VOREStation Add End +) + +/mob/living/carbon/human/get_default_emotes() + return global._human_default_emotes /mob/living/carbon/human/verb/pose() set name = "Set Pose" diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index e8df964590..b11a11f584 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -1,211 +1,11 @@ -/mob - var/nextemote = 1 +/mob/living/carbon/human/verb/toggle_resizing_immunity() + set name = "Toggle Resizing Immunity" + set desc = "Toggles your ability to resist resizing attempts" + set category = "IC" -/mob/living/carbon/human/proc/handle_emote_vr(var/act,var/m_type=1,var/message = null) - //Reduces emote spamming - if(nextemote >= world.time)// || user.stat != CONSCIOUS - return 1 - nextemote = world.time + 12 + resizable = !resizable + to_chat(src, "You are now [resizable ? "susceptible" : "immune"] to being resized.") - switch(act) - if("vwag") - if(toggle_tail(message = 1)) - m_type = 1 - message = "[wagging ? "starts" : "stops"] wagging their tail." - else - return 1 - if("vflap") - if(toggle_wing(message = 1)) - m_type = 1 - message = "[flapping ? "starts" : "stops"] flapping their wings." - else - return 1 - if("mlem") - message = "mlems [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue up over [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] nose. Mlem." - m_type = 1 - if("blep") - message = "bleps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue out. Blep." - m_type = 1 - if("awoo") - m_type = 2 - message = "lets out an awoo." - playsound(src, 'sound/voice/awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("awoo2") - m_type = 2 - message = "lets out an awoo." - playsound(src, 'sound/voice/long_awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("growl") - m_type = 2 - message = "lets out a growl." - playsound(src, 'sound/voice/growl.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("woof") - m_type = 2 - message = "lets out a woof." - playsound(src, 'sound/voice/woof.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("woof2") - m_type = 2 - message = "lets out a woof." - playsound(src, 'sound/voice/woof2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("nya") - message = "lets out a nya." - m_type = 2 - playsound(src, 'sound/voice/nya.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("mrowl") - message = "mrowls." - m_type = 2 - playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("peep") - message = "peeps like a bird." - m_type = 2 - playsound(src, 'sound/voice/peep.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("chirp") - message = "chirps!" - playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - m_type = 2 - if("hoot") - message = "hoots!" - playsound(src, 'sound/voice/hoot.ogg', 50, 1, ,-1, preference = /datum/client_preference/emote_noises) - m_type = 2 - if("weh") - message = "lets out a weh." - m_type = 2 - playsound(src, 'sound/voice/weh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("merp") - message = "lets out a merp." - m_type = 2 - playsound(src, 'sound/voice/merp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("myarp") - message = "lets out a myarp." - m_type = 2 - playsound(src, 'sound/voice/myarp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("bark") - message = "lets out a bark." - m_type = 2 - playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("bork") - m_type = 2 - message = "lets out a bork." - playsound(src, 'sound/voice/bork.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("mrow") - m_type = 2 - message = "lets out a mrow." - playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("hypno") - m_type = 2 - message = "lets out a mystifying tone." - playsound(src, 'sound/voice/hypno.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("hiss") - message = "lets out a hiss." - m_type = 2 - playsound(src, 'sound/voice/hiss.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("rattle") - message = "rattles!" - m_type = 2 - playsound(src, 'sound/voice/rattle.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("squeak") - message = "lets out a squeak." - m_type = 2 - playsound(src, 'sound/effects/mouse_squeak.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("geck") - message = "geckers!" - m_type = 2 - playsound(src, 'sound/voice/geck.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("baa") - message = "lets out a baa." - m_type = 2 - playsound(src, 'sound/voice/baa.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("baa2") - message = "bleats." - m_type = 2 - playsound(src, 'sound/voice/baa2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("deathgasp2") - message = "[species.get_death_message()]" - m_type = 1 - playsound(src, 'sound/voice/deathgasp2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("mar") - message = "lets out a mar." - m_type = 2 - playsound(src, 'sound/voice/mar.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("wurble") - message = "lets out a wurble." - m_type = 2 - playsound(src, 'sound/voice/wurble.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("snort") - message = "snorts!" - m_type = 2 - playsound(src, 'sound/voice/Snort.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("meow") - message = "gently meows!" - m_type = 2 - playsound(src, 'sound/voice/Meow.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("moo") - message = "takes a breath and lets out a moo." - m_type = 2 - playsound(src, 'sound/voice/Moo.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("croak") - message = "rumbles their throat, puffs their cheeks and croaks." - m_type = 2 - playsound(src, 'sound/voice/Croak.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("gao") - message = "lets out a gao." - m_type = 2 - playsound(src, 'sound/voice/gao.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("cackle") - message = "cackles hysterically!" - m_type = 2 - playsound(src, 'sound/voice/YeenCackle.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("nsay") - nsay() - return TRUE - if("nme") - nme() - return TRUE - if("chirp") //Yawn Addtion - message = "chirps!" - playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - m_type = 2 - // CHOMP Removal: Begone demons - /*if ("hooh") - message = "lets out a hooh!" - playsound(src.loc, 'sound/items/hooh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - m_type = 2 - if ("ack") - message = "Acks!" - playsound(src.loc, 'sound/misc/ack.ogg', 50, 1 ,-1, preference = /datum/client_preference/emote_noises) - m_type = 2 - if ("ough") - message = "makes a weird noise!" - playsound(src.loc, 'sound/misc/ough.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - m_type = 2 //End of Yawn Addtion - */ - if ("howl") // YW add begins - m_type = 2 - message = "lets out a howl." - playsound(loc, 'sound/voice/howl.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) // YW add ends - if("flip") - var/list/involved_parts = list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT) - //Check if they are physically capable - if(sleeping || resting || buckled || weakened || restrained() || involved_parts.len < 2) - to_chat(src, "You can't *flip in your current state!") - return 1 - else - nextemote += 12 //Double delay - handle_flip_vr() - message = "does a flip!" - m_type = 1 - if("roarbark") //Roarbark is CHOMP Addition - message = "lets out a roar-bark!" - m_type = 2 //Also full disclosure this sounds AWFUL with the normal pitch shifting - playsound(loc, 'sound/voice/roarbark.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("vhelp") //Help for Virgo-specific emotes. - to_chat(src, "vwag, vflap, mlem, blep, awoo, awoo2, growl, nya, peep, chirp, hoot, weh, merp, myarp, bark, bork, mrow, mrowl, hypno, howl, hiss, rattle, squeak, geck, baa, baa2, mar, wurble, snort, meow, moo, croak, gao, cackle, nsay, nme, flip, roarbark") //CHOMP Addition: adds howl to list since YW didn't - return TRUE - - if(message) - custom_emote(m_type,message) - return TRUE - - return FALSE /mob/living/carbon/human/proc/handle_flip_vr() var/original_density = density diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index edd6641101..f9788b9634 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1165,6 +1165,9 @@ //A slew of bits that may be affected by our species change regenerate_icons() + // Update our available emote list. + update_emotes() + if(species) //if(mind) //VOREStation Removal //apply_traits() //VOREStation Removal diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 34b93b2573..15ea6a4554 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -81,7 +81,6 @@ var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life() - var/miming = null //Toggle for the mime's abilities. var/special_voice = "" // For changing our voice. Used by a symptom. var/last_dam = -1 //Used for determining if we need to process all organs or just some or even none. @@ -156,4 +155,3 @@ // Custom Species Name var/custom_species - diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 4f8fa428de..83a5b301ab 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -98,7 +98,8 @@ // This is the 'mechanical' check for synthetic-ness, not appearance // Returns the company that made the synthetic /mob/living/carbon/human/isSynthetic() - if(synthetic) return synthetic //Your synthetic-ness is not going away + if(synthetic) + return synthetic //Your synthetic-ness is not going away var/obj/item/organ/external/T = organs_by_name[BP_TORSO] if(T && T.robotic >= ORGAN_ROBOT) src.verbs += /mob/living/carbon/human/proc/self_diagnostics @@ -107,9 +108,9 @@ src.verbs += /mob/living/carbon/human/proc/setmonitor_state var/datum/robolimb/R = all_robolimbs[T.model] synthetic = R + update_emotes() return synthetic - - return 0 + return FALSE // Would an onlooker know this person is synthetic? // Based on sort of logical reasoning, 'Look at head, look at torso' diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index ad9fc8f0bc..6cba5f8cee 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -25,7 +25,8 @@ speech_sounds = list('sound/voice/shriek1.ogg') speech_chance = 20 - scream_verb = "shrieks" + scream_verb_1p = "shriek" + scream_verb_3p = "shrieks" male_scream_sound = 'sound/voice/shriek1.ogg' female_scream_sound = 'sound/voice/shriek1.ogg' male_cough_sounds = list('sound/voice/shriekcough.ogg') @@ -85,7 +86,11 @@ /datum/mob_descriptor/height = -1, /datum/mob_descriptor/build = 1, /datum/mob_descriptor/vox_markings = 0 - ) + ) + + default_emotes = list( + /decl/emote/audible/vox_shriek + ) /datum/species/vox/get_random_name(var/gender) var/datum/language/species_language = GLOB.all_languages[default_language] diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm index 75a0846ebc..20ac126489 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm @@ -2,7 +2,7 @@ allowed_species = list(SPECIES_SHADEKIN) var/color = BLUE_EYES name = "Shadekin Blue Adaptation" - desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light amd unchanged health!" + desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light and unchanged health!" cost = 0 var_changes = list( "total_health" = 100, "energy_light" = 0.5, @@ -13,7 +13,7 @@ /datum/trait/kintype/red name = "Shadekin Red Adaptation" color = RED_EYES - desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate regeneration in the light amd increased health!" + desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate degeneration in the light and increased health!" var_changes = list( "total_health" = 200, "energy_light" = -1, "energy_dark" = 0.1, @@ -22,37 +22,37 @@ /datum/trait/kintype/purple name = "Shadekin Purple Adaptation" color = PURPLE_EYES - desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light amd increased health!" + desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light and increased health!" var_changes = list( "total_health" = 150, - "energy_light" = 1, - "energy_dark" = -0.5, + "energy_light" = -0.5, + "energy_dark" = 1, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/yellow name = "Shadekin Yellow Adaptation" color = YELLOW_EYES - desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light amd unchanged health!" + desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light and unchanged health!" var_changes = list( "total_health" = 100, - "energy_light" = 3, - "energy_dark" = -2, + "energy_light" = -2, + "energy_dark" = 3, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/green name = "Shadekin Green Adaptation" color = GREEN_EYES - desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light amd unchanged health!" + desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light and unchanged health!" var_changes = list( "total_health" = 100, - "energy_light" = 2, - "energy_dark" = 0.125, + "energy_light" = 0.125, + "energy_dark" = 2, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/orange name = "Shadekin Orange Adaptation" color = ORANGE_EYES - desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, modeate degeneration in the light amd increased health!" + desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, moderate degeneration in the light and increased health!" var_changes = list( "total_health" = 175, - "energy_light" = 0.25, - "energy_dark" = -0.5, + "energy_light" = -0.5, + "energy_dark" = 0.25, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/apply(var/datum/species/shadekin/S,var/mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index b125d6ad20..10c7b53dcb 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -78,7 +78,8 @@ var/list/assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //VOREStation Edit //Soundy emotey things. - var/scream_verb = "screams" + var/scream_verb_1p = "scream" + var/scream_verb_3p = "screams" var/male_scream_sound = list('sound/effects/mob_effects/m_scream_1.ogg','sound/effects/mob_effects/m_scream_2.ogg','sound/effects/mob_effects/m_scream_3.ogg','sound/effects/mob_effects/m_scream_4.ogg') //CHOMpedit start : Added tgstation screams var/female_scream_sound = list('sound/effects/mob_effects/f_scream_1.ogg','sound/effects/mob_effects/f_scream_2.ogg','sound/effects/mob_effects/f_scream_3.ogg','sound/effects/mob_effects/f_scream_4.ogg') //CHOMPedit end var/male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg') diff --git a/code/modules/mob/living/carbon/human/species/species_getters.dm b/code/modules/mob/living/carbon/human/species/species_getters.dm index 0eeea4f9d4..7b635613ea 100644 --- a/code/modules/mob/living/carbon/human/species/species_getters.dm +++ b/code/modules/mob/living/carbon/human/species/species_getters.dm @@ -44,7 +44,7 @@ if(config.show_human_death_message) return ((H && H.isSynthetic()) ? "gives one shrill beep before falling lifeless." : death_message) else - return "no message" + return DEATHGASP_NO_MESSAGE /datum/species/proc/get_ssd(var/mob/living/carbon/human/H) if(H) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 92cba4c86c..c76a0a2732 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -122,6 +122,15 @@ var/datum/species/shapeshifter/promethean/prometheans var/heal_rate = 0.5 // Temp. Regen per tick. + default_emotes = list( + /decl/emote/audible/squish, + /decl/emote/audible/chirp, + /decl/emote/visible/bounce, + /decl/emote/visible/jiggle, + /decl/emote/visible/lightup, + /decl/emote/visible/vibrate + ) + /datum/species/shapeshifter/promethean/New() ..() prometheans = src diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index b48dbb9926..28f2eaffed 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -165,12 +165,14 @@ return ..() /mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount) + amount *= 1.5 if(humanform) return humanform.adjustBruteLoss(amount) else return ..() /mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount) + amount *= 1.5 if(humanform) return humanform.adjustFireLoss(amount) else diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm index c216f97515..79314bfec6 100755 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -328,8 +328,8 @@ CHOMP Removal end*/ material_name = MAT_STEEL /datum/modifier/protean/steel/tick() - holder.adjustBruteLoss(-2,include_robo = TRUE) //Looks high, but these ARE modified by species resistances, so this is really 20% of this - holder.adjustFireLoss(-1,include_robo = TRUE) //And this is really double this + holder.adjustBruteLoss(-1,include_robo = TRUE) //Modified by species resistances + holder.adjustFireLoss(-0.5,include_robo = TRUE) //Modified by species resistances var/mob/living/carbon/human/H = holder for(var/organ in H.internal_organs) var/obj/item/organ/O = organ diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index f38c8844e7..d7fa304204 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -163,6 +163,16 @@ /datum/mob_descriptor/build = 2 ) + default_emotes = list( + /decl/emote/human/swish, + /decl/emote/human/wag, + /decl/emote/human/sway, + /decl/emote/human/qwag, + /decl/emote/human/fastsway, + /decl/emote/human/swag, + /decl/emote/human/stopsway + ) + /datum/species/unathi/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) @@ -256,6 +266,16 @@ O_INTESTINE = /obj/item/organ/internal/intestine ) + default_emotes = list( + /decl/emote/human/swish, + /decl/emote/human/wag, + /decl/emote/human/sway, + /decl/emote/human/qwag, + /decl/emote/human/fastsway, + /decl/emote/human/swag, + /decl/emote/human/stopsway + ) + /datum/species/tajaran/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) @@ -548,6 +568,11 @@ genders = list(PLURAL) + default_emotes = list( + /decl/emote/audible/chirp, + /decl/emote/audible/multichirp + ) + /datum/species/diona/can_understand(var/mob/other) if(istype(other, /mob/living/carbon/alien/diona)) return TRUE diff --git a/code/modules/mob/living/carbon/human/species/station/teshari.dm b/code/modules/mob/living/carbon/human/species/station/teshari.dm index 22af812057..09d5e2dc10 100644 --- a/code/modules/mob/living/carbon/human/species/station/teshari.dm +++ b/code/modules/mob/living/carbon/human/species/station/teshari.dm @@ -144,7 +144,7 @@ descriptors = list( /datum/mob_descriptor/height = -3, /datum/mob_descriptor/build = -3 - ) + ) var/static/list/flight_bodyparts = list( BP_L_ARM, @@ -157,14 +157,21 @@ /obj/item/clothing/suit/straight_jacket ) + default_emotes = list( + /decl/emote/audible/teshsqueak, + /decl/emote/audible/teshchirp, + /decl/emote/audible/teshtrill + ) + /datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) + /* //CHOMPedit: disabling for now /datum/species/teshari/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary) // Tesh can glide to save themselves from some falls. Basejumping bird - // without parachute, or falling bird without free wings goes splat. + // without parachute, or falling bird without free wings, goes splat. // Are we landing from orbit, or handcuffed/unconscious/tied to something? if(planetary || !istype(H) || H.incapacitated(INCAPACITATION_DEFAULT|INCAPACITATION_DISABLED)) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 257b1204c9..36fa0f02b8 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -438,38 +438,5 @@ proc/get_radio_key_from_channel(var/channel) /mob/proc/GetVoice() return name -/mob/living/emote(var/act, var/type, var/message) //emote code is terrible, this is so that anything that isn't - if(stat) //already snowflaked to shit can call the parent and handle emoting sanely - return FALSE - - if(..(act, type, message)) - return TRUE - - if(act && type && message) - log_emote(message, src) - - for(var/mob/M in dead_mob_list) - if(!M.client) - continue - - if(isnewplayer(M)) - continue - - if(isobserver(M) && M.is_preference_enabled(/datum/client_preference/ghost_sight)) - M.show_message(message) - - switch(type) - if(1) // Visible - visible_message(message) - return TRUE - if(2) // Audible - audible_message(message) - return TRUE - else - if(act == "help") - return // Mobs handle this individually - to_chat(src, "Unusable emote '[act]'. Say *help for a list.") - - /mob/proc/speech_bubble_appearance() return "normal" diff --git a/code/modules/mob/living/silicon/emote.dm b/code/modules/mob/living/silicon/emote.dm index 00a5e42993..6aa6ae2150 100644 --- a/code/modules/mob/living/silicon/emote.dm +++ b/code/modules/mob/living/silicon/emote.dm @@ -1,113 +1,13 @@ -/mob/living/silicon/emote(var/act, var/m_type = 1,var/message = null) - var/param = null - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) +var/list/_silicon_default_emotes = list( + /decl/emote/audible/synth, + /decl/emote/audible/synth/ping, + /decl/emote/audible/synth/buzz, + /decl/emote/audible/synth/confirm, + /decl/emote/audible/synth/deny, + /decl/emote/audible/synth/dwoop, + /decl/emote/audible/synth/security, + /decl/emote/audible/synth/security/halt +) - if(findtext(act, "s", -1) && !findtext(act, "_", -2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act, 1, length(act)) - - switch(act) - if("beep") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] beeps at [param]." - else - message = "[src] beeps." - playsound(src, 'sound/machines/twobeep.ogg', 50, 0) - m_type = 1 - - if("ping") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] pings at [param]." - else - message = "[src] pings." - playsound(src, 'sound/machines/ping.ogg', 50, 0) - m_type = 1 - - if("buzz") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] buzzes at [param]." - else - message = "[src] buzzes." - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - m_type = 1 - - if("yes", "ye") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] emits an affirmative blip at [param]." - else - message = "[src] emits an affirmative blip." - playsound(src, 'sound/machines/synth_yes.ogg', 50, 0) - m_type = 1 - - if("dwoop") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] chirps happily at [param]" - else - message = "[src] chirps happily." - playsound(src, 'sound/machines/dwoop.ogg', 50, 0) - m_type = 1 - - if("no") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] emits a negative blip at [param]." - else - message = "[src] emits a negative blip." - playsound(src, 'sound/machines/synth_no.ogg', 50, 0) - m_type = 1 - - ..(act, m_type, message) \ No newline at end of file +/mob/living/silicon/get_default_emotes() + return global._silicon_default_emotes diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 423d91a6e1..2b83568e7b 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,155 +1,33 @@ -/mob/living/silicon/robot/emote(var/act,var/m_type=1,var/message = null) - var/param = null - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) +var/list/_robot_default_emotes = list( + /decl/emote/audible/clap, + /decl/emote/visible/bow, + /decl/emote/visible/salute, + /decl/emote/visible/flap, + /decl/emote/visible/aflap, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/nod, + /decl/emote/visible/shake, + /decl/emote/visible/glare, + /decl/emote/visible/look, + /decl/emote/visible/stare, + /decl/emote/visible/deathgasp_robot, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/synth, + /decl/emote/audible/synth/ping, + /decl/emote/audible/synth/buzz, + /decl/emote/audible/synth/confirm, + /decl/emote/audible/synth/deny, + /decl/emote/audible/synth/dwoop, + /decl/emote/audible/synth/security, + /decl/emote/audible/synth/security/halt, + //VOREStation Add + /decl/emote/visible/mlem, + /decl/emote/visible/blep + //VOREStation Add End +) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - - switch(act) - if("salute") - if(!src.buckled) - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] salutes to [param]." - else - message = "[src] salutes." - m_type = 1 - if("bow") - if(!src.buckled) - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] bows to [param]." - else - message = "[src] bows." - m_type = 1 - - if("clap") - if(!src.restrained()) - message = "[src] claps." - m_type = 2 - if("flap") - if(!src.restrained()) - message = "[src] flaps its wings." - m_type = 2 - - if("aflap") - if(!src.restrained()) - message = "[src] flaps its wings ANGRILY!" - m_type = 2 - - if("twitch") - message = "[src] twitches." - m_type = 1 - - if("twitch_v") - message = "[src] twitches violently." - m_type = 1 - - if("nod") - message = "[src] nods." - m_type = 1 - - if("deathgasp") - message = "[src] shudders violently for a moment, then becomes motionless, its eyes slowly darkening." - m_type = 1 - - if("glare") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] glares at [param]." - else - message = "[src] glares." - - if("stare") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] stares at [param]." - else - message = "[src] stares." - - if("look") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - - if(!M) - param = null - - if(param) - message = "[src] looks at [param]." - else - message = "[src] looks." - m_type = 1 - - if("law") - if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9 - message = "[src] shows its legal authorization barcode." - - playsound(src, 'sound/voice/biamthelaw.ogg', 50, 0) - m_type = 2 - else - to_chat(src, "You are not THE LAW, pal.") - - if("halt") - if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9 - message = "[src] 's speakers skreech, \"Halt! Security!\"." - - playsound(src, 'sound/voice/halt.ogg', 50, 0) - m_type = 2 - else - to_chat(src, "You are not security.") - //Vorestation addition start - if("bark") - if (istype(module,/obj/item/weapon/robot_module/robot/knine) || istype(module,/obj/item/weapon/robot_module/robot/medihound) || istype(module,/obj/item/weapon/robot_module/robot/scrubpup) || istype(module,/obj/item/weapon/robot_module/robot/ert) || istype(module,/obj/item/weapon/robot_module/robot/science) || istype(module,/obj/item/weapon/robot_module/robot/engiedog) || istype(module,/obj/item/weapon/robot_module/robot/clerical/brodog) || istype(module,/obj/item/weapon/robot_module/robot/kmine) || istype(module,/obj/item/weapon/robot_module/robot/booze)) //YW added booze - message = "[src] lets out a bark." - - playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - m_type = 2 - else - to_chat(src, "You're not a dog!") - //Vorestation addition end - - - - if("help") - to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt, yes, dwoop, no") - - ..(act, m_type, message) +/mob/living/silicon/robot/get_default_emotes() + return global._robot_default_emotes diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index ef870cb1f3..34f6096ede 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -114,7 +114,7 @@ return 0 return 1 -/mob/living/silicon/ai/emote(var/act, var/type, var/message) +/mob/living/silicon/ai/emote(var/act, var/m_type, var/message) var/obj/machinery/hologram/holopad/T = holo if(T && T.masters[src]) //Is the AI using a holopad? . = holopad_emote(message) diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index f14a8cedfd..d0a2f8ed4b 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -86,6 +86,7 @@ icon_state = "[icon_dead]-[vore_fullness]" else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest && (vore_icons & SA_ICON_REST)) icon_state = "[icon_rest]-[vore_fullness]" + update_transform() /mob/living/simple_mob/proc/will_eat(var/mob/living/M) if(client) //You do this yourself, dick! diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm index 9db6a6bffa..c48f94bf27 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm @@ -1,3 +1,32 @@ +var/list/_cat_default_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible, + /decl/emote/audible/hiss, + /decl/emote/audible/whimper, + /decl/emote/audible/gasp, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/moan, + /decl/emote/audible/gnarl, + /decl/emote/audible/purr, + /decl/emote/audible/purrlong +) + /mob/living/simple_mob/animal/passive/cat name = "cat" desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers." @@ -28,6 +57,9 @@ update_icon() return ..() +/mob/living/simple_mob/animal/passive/cat/get_default_emotes() + return global._cat_default_emotes + /mob/living/simple_mob/animal/passive/cat/handle_special() if(!stat && prob(2)) // spooky var/mob/observer/dead/spook = locate() in range(src, 5) diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm index a5419bc559..f8d47a4b2d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm @@ -1,5 +1,21 @@ -// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this. +var/list/_slime_default_emotes = list( + /decl/emote/audible/moan, + /decl/emote/visible/twitch, + /decl/emote/visible/sway, + /decl/emote/visible/shiver, + /decl/emote/visible/bounce, + /decl/emote/visible/jiggle, + /decl/emote/visible/lightup, + /decl/emote/visible/vibrate, + /decl/emote/slime, + /decl/emote/slime/pout, + /decl/emote/slime/sad, + /decl/emote/slime/angry, + /decl/emote/slime/frown, + /decl/emote/slime/smile +) +// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this. /mob/living/simple_mob/slime name = "slime" desc = "It's a slime." @@ -64,6 +80,9 @@ can_enter_vent_with = list(/obj/item/clothing/head) +/mob/living/simple_mob/slime/get_default_emotes() + return global._slime_default_emotes + /datum/say_list/slime speak = list("Blorp...", "Blop...") emote_see = list("bounces", "jiggles", "sways") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm index a49309e713..4d268567b8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm @@ -34,7 +34,6 @@ // Vore vars vore_active = 1 - vore_bump_chance = 10 vore_bump_emote = "playfully lunges at" vore_pounce_chance = 40 vore_pounce_maxhealth = 100 // They won't pounce by default, as they're passive. This is just so the nom check succeeds. :u @@ -140,6 +139,7 @@ movement_cooldown = 0.5 // very fast bunbun. + vore_bump_chance = 10 vore_pounce_chance = 100 vore_pounce_falloff = 0.2 @@ -149,4 +149,4 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive /mob/living/simple_mob/vore/rabbit/killer/ex_act() - gib() \ No newline at end of file + gib() diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 2d070d1a29..9caa58cb33 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -137,6 +137,6 @@ return TRUE return ..() -/mob/living/voice/custom_emote(var/m_type=1,var/message = null,var/range=world.view) +/mob/living/voice/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message = null, var/range = world.view) if(!comm) return ..(m_type,message,comm.video_range) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 11caab736b..f21ada00f7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -42,6 +42,7 @@ lastarea = get_area(src) hook_vr("mob_new",list(src)) //VOREStation Code update_transform() // Some mobs may start bigger or smaller than normal. + update_emotes() return ..() /mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) @@ -49,19 +50,19 @@ if(!client && !teleop) return if (type) - if((type & 1) && (is_blind() || paralysis) )//Vision related + if((type & VISIBLE_MESSAGE) && (is_blind() || paralysis) )//Vision related if (!( alt )) return else msg = alt type = alt_type - if ((type & 2) && is_deaf())//Hearing related + if ((type & AUDIBLE_MESSAGE) && is_deaf())//Hearing related if (!( alt )) return else msg = alt type = alt_type - if ((type & 1) && (sdisabilities & BLIND)) + if ((type & VISIBLE_MESSAGE) && (sdisabilities & BLIND)) return // Added voice muffling for Issue 41. if(stat == UNCONSCIOUS || sleeping > 0) @@ -77,14 +78,17 @@ // message is the message output to anyone who can see e.g. "[src] does something!" // self_message (optional) is what the src mob sees e.g. "You do something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null) +/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null, var/range = world.view) if(self_message) if(LAZYLEN(exclude_mobs)) exclude_mobs |= src else exclude_mobs = list(src) src.show_message(self_message, 1, blind_message, 2) - . = ..(message, blind_message, exclude_mobs) + // Transfer messages about what we are doing to upstairs + if(shadow) + shadow.visible_message(message, self_message, blind_message, exclude_mobs, range) + . = ..(message, blind_message, exclude_mobs, range) // Really not ideal that atom/visible_message has different arg numbering :( // Returns an amount of power drawn from the object (-1 if it's not viable). // If drain_check is set it will not actually drain power, just return a value. @@ -99,7 +103,7 @@ // self_message (optional) is what the src mob hears. // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message) +/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message, var/radio_message) var/range = hearing_distance || world.view var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE) @@ -107,16 +111,21 @@ var/list/hearing_mobs = hear["mobs"] var/list/hearing_objs = hear["objs"] - for(var/obj in hearing_objs) - var/obj/O = obj - O.show_message(message, 2, deaf_message, 1) + if(radio_message) + for(var/obj in hearing_objs) + var/obj/O = obj + O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) + else + for(var/obj in hearing_objs) + var/obj/O = obj + O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) for(var/mob in hearing_mobs) var/mob/M = mob var/msg = message if(self_message && M==src) msg = self_message - M.show_message(msg, 2, deaf_message, 1) + M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) /mob/proc/findname(msg) for(var/mob/M in mob_list) @@ -576,9 +585,6 @@ /mob/proc/get_gender() return gender -/mob/proc/get_visible_gender() - return gender - /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index ebcc9cf35a..259aaf75c8 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -477,19 +477,26 @@ /mob/proc/update_gravity() return +#define DO_MOVE(this_dir) var/final_dir = turn(this_dir, -dir2angle(dir)); Move(get_step(mob, final_dir), final_dir); + /client/verb/moveup() set name = ".moveup" set instant = 1 - Move(get_step(mob, NORTH), NORTH) + DO_MOVE(NORTH) + /client/verb/movedown() set name = ".movedown" set instant = 1 - Move(get_step(mob, SOUTH), SOUTH) + DO_MOVE(SOUTH) + /client/verb/moveright() set name = ".moveright" set instant = 1 - Move(get_step(mob, EAST), EAST) + DO_MOVE(EAST) + /client/verb/moveleft() set name = ".moveleft" set instant = 1 - Move(get_step(mob, WEST), WEST) + DO_MOVE(WEST) + +#undef DO_MOVE diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index c127e03e08..04577865e1 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -28,8 +28,10 @@ /mob/new_player/proc/new_player_panel_proc() var/output = "
" + /* VOREStation Removal output += "[using_map.get_map_info()]" output +="
" + VOREStation Removal End */ output += "

Character Setup

" if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) @@ -79,7 +81,7 @@ if(GLOB.news_data.station_newspaper && !client.seen_news) show_latest_news(GLOB.news_data.station_newspaper) - panel = new(src, "Welcome","Welcome", 500, 480, src) + panel = new(src, "Welcome","Welcome", 210, 300, src) // VOREStation Edit panel.set_window_options("can_close=0") panel.set_content(output) panel.open() diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 52e843a9ee..c30d256c59 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -105,11 +105,6 @@ verb = "asks" return verb - -/mob/proc/emote(var/act, var/type, var/message) - if(act == "me") - return custom_emote(type, message) - /mob/proc/get_ear() // returns an atom representing a location on the map from which this // mob can hear things diff --git a/code/modules/multiz/zshadow.dm b/code/modules/multiz/zshadow.dm index fcc5ecad65..e43ab21939 100644 --- a/code/modules/multiz/zshadow.dm +++ b/code/modules/multiz/zshadow.dm @@ -113,12 +113,6 @@ if(shadow) shadow.set_dir(new_dir) -// Transfer messages about what we are doing to upstairs -/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null) - . = ..() - if(shadow) - shadow.visible_message(message, self_message, blind_message, exclude_mobs) - /mob/zshadow/set_typing_indicator(var/state) if(!typing_indicator) init_typing_indicator("typing") diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index 916923a796..aeeb8199ce 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -88,8 +88,9 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable qdel(src) return FALSE else - //Free commlink for return customers + //Free commlink and soulcatcher for return customers new /datum/nifsoft/commlink(src) + new /datum/nifsoft/soulcatcher(src) //Free civilian AR included new /datum/nifsoft/ar_civ(src) diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm index 7a792009f4..c68a6feb0c 100644 --- a/code/modules/nifsoft/software/01_vision.dm +++ b/code/modules/nifsoft/software/01_vision.dm @@ -34,9 +34,9 @@ /datum/nifsoft/ar_eng name = "AR Overlay (Eng)" - desc = "Like the civilian model, but provides station alert notices." + desc = "Like the civilian model, but provides ... well, nothing. For now." list_pos = NIF_ENGINE_AR - cost = 375 + cost = 250 access = access_engine a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) @@ -47,7 +47,7 @@ name = "AR Overlay (Sci)" desc = "Like the civilian model, but provides ... well, nothing. For now." list_pos = NIF_SCIENCE_AR - cost = 375 + cost = 250 access = access_research a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index c1de085532..ce9dfccf44 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -14,10 +14,10 @@ desc = "A mind storage and processing system capable of capturing and supporting human-level minds in a small VR space." list_pos = NIF_SOULCATCHER cost = 100 //If I wanna trap people's minds and lood them, then by god I'll do so. - wear = 1 + wear = 0 p_drain = 0.01 - var/setting_flags = (NIF_SC_CATCHING_OTHERS|NIF_SC_ALLOW_EARS|NIF_SC_ALLOW_EYES|NIF_SC_BACKUPS|NIF_SC_PROJECTING) + var/setting_flags = (NIF_SC_ALLOW_EARS|NIF_SC_ALLOW_EYES|NIF_SC_BACKUPS|NIF_SC_PROJECTING) var/list/brainmobs = list() var/inside_flavor = "A small completely white room with a couch, and a window to what seems to be the outside world. A small sign in the corner says 'Configure Me'." @@ -45,14 +45,14 @@ /datum/nifsoft/soulcatcher/install() if((. = ..())) nif.set_flag(NIF_O_SCOTHERS,NIF_FLAGS_OTHER) //Required on install, because other_flags aren't sufficient for our complicated settings. - nif.human.verbs |= /mob/living/carbon/human/proc/nsay - nif.human.verbs |= /mob/living/carbon/human/proc/nme + nif.human.verbs |= /mob/living/carbon/human/nsay + nif.human.verbs |= /mob/living/carbon/human/nme /datum/nifsoft/soulcatcher/uninstall() QDEL_LIST_NULL(brainmobs) if((. = ..()) && nif && nif.human) //Sometimes NIFs are deleted outside of a human - nif.human.verbs -= /mob/living/carbon/human/proc/nsay - nif.human.verbs -= /mob/living/carbon/human/proc/nme + nif.human.verbs -= /mob/living/carbon/human/nsay + nif.human.verbs -= /mob/living/carbon/human/nme /datum/nifsoft/soulcatcher/proc/save_settings() if(!nif) @@ -476,20 +476,26 @@ /////////////////// //Verbs for humans -/mob/living/carbon/human/proc/nsay(message as text|null) +/mob/proc/nsay(message as text|null) set name = "NSay" set desc = "Speak into your NIF's Soulcatcher." set category = "IC" + to_chat(src, SPAN_WARNING("You must be a humanoid with a NIF implanted to use that.")) + +/mob/living/carbon/human/nsay(message as text|null) + if(stat != CONSCIOUS) + to_chat(src,SPAN_WARNING("You can't use NSay while unconscious.")) + return if(!nif) - to_chat(src,"You can't use NSay without a NIF.") + to_chat(src,SPAN_WARNING("You can't use NSay without a NIF.")) return var/datum/nifsoft/soulcatcher/SC = nif.imp_check(NIF_SOULCATCHER) if(!SC) - to_chat(src,"You need the Soulcatcher software to use NSay.") + to_chat(src,SPAN_WARNING("You need the Soulcatcher software to use NSay.")) return if(!SC.brainmobs.len) - to_chat(src,"You need a loaded mind to use NSay.") + to_chat(src,SPAN_WARNING("You need a loaded mind to use NSay.")) return if(!message) message = input("Type a message to say.","Speak into Soulcatcher") as text|null @@ -497,20 +503,26 @@ var/sane_message = sanitize(message) SC.say_into(sane_message,src) -/mob/living/carbon/human/proc/nme(message as text|null) +/mob/proc/nme(message as text|null) set name = "NMe" set desc = "Emote into your NIF's Soulcatcher." set category = "IC" + + to_chat(src, SPAN_WARNING("You must be a humanoid with a NIF implanted to use that.")) +/mob/living/carbon/human/nme(message as text|null) + if(stat != CONSCIOUS) + to_chat(src,SPAN_WARNING("You can't use NMe while unconscious.")) + return if(!nif) - to_chat(src,"You can't use NMe without a NIF.") + to_chat(src,SPAN_WARNING("You can't use NMe without a NIF.")) return var/datum/nifsoft/soulcatcher/SC = nif.imp_check(NIF_SOULCATCHER) if(!SC) - to_chat(src,"You need the Soulcatcher software to use NMe.") + to_chat(src,SPAN_WARNING("You need the Soulcatcher software to use NMe.")) return if(!SC.brainmobs.len) - to_chat(src,"You need a loaded mind to use NMe.") + to_chat(src,SPAN_WARNING("You need a loaded mind to use NMe.")) return if(!message) @@ -563,7 +575,7 @@ QDEL_NULL(eyeobj) soulcatcher.notify_into("[src] ended AR projection.") -/mob/living/carbon/brain/caught_soul/verb/nsay(message as text|null) +/mob/living/carbon/brain/caught_soul/verb/nsay_brain(message as text|null) set name = "NSay" set desc = "Speak into the NIF's Soulcatcher (circumventing AR speaking)." set category = "Soulcatcher" @@ -574,7 +586,7 @@ var/sane_message = sanitize(message) soulcatcher.say_into(sane_message,src,null) -/mob/living/carbon/brain/caught_soul/verb/nme(message as text|null) +/mob/living/carbon/brain/caught_soul/verb/nme_brain(message as text|null) set name = "NMe" set desc = "Emote into the NIF's Soulcatcher (circumventing AR speaking)." set category = "Soulcatcher" diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index 3f2dc7efe2..11ce2fbb45 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -276,19 +276,19 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) qdel(src) return 1 -/datum/chemical_reaction/promethean_brain_revival +/decl/chemical_reaction/instant/promethean_brain_revival name = "Promethean Revival" id = "prom_revival" result = null required_reagents = list("phoron" = 40) result_amount = 1 -/datum/chemical_reaction/promethean_brain_revival/can_happen(var/datum/reagents/holder) +/decl/chemical_reaction/instant/promethean_brain_revival/can_happen(var/datum/reagents/holder) if(holder.my_atom && istype(holder.my_atom, /obj/item/organ/internal/brain/slime)) return ..() return FALSE -/datum/chemical_reaction/promethean_brain_revival/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/promethean_brain_revival/on_reaction(var/datum/reagents/holder) var/obj/item/organ/internal/brain/slime/brain = holder.my_atom if(brain.reviveBody()) brain.visible_message("[brain] bubbles, surrounding itself with a rapidly expanding mass of slime!") diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index b7c4f7f3b7..cefc549d2a 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -156,6 +156,9 @@ var/datum/planet/sif/planet_sif = null sky_visible = TRUE observed_message = "The sky is clear." + outdoor_sounds_type = /datum/looping_sound/weather/wind/gentle + indoor_sounds_type = /datum/looping_sound/weather/wind/gentle/indoors + /datum/weather/sif/overcast name = "overcast" light_modifier = 0.8 @@ -174,6 +177,9 @@ var/datum/planet/sif/planet_sif = null "It's very cloudy." ) + outdoor_sounds_type = /datum/looping_sound/weather/wind/gentle + indoor_sounds_type = /datum/looping_sound/weather/wind/gentle/indoors + /datum/weather/sif/light_snow name = "light snow" icon_state = "snowfall_light" @@ -192,6 +198,9 @@ var/datum/planet/sif/planet_sif = null "It begins to snow lightly.", ) + outdoor_sounds_type = /datum/looping_sound/weather/wind/gentle + indoor_sounds_type = /datum/looping_sound/weather/wind/gentle/indoors + /datum/weather/sif/snow name = "moderate snow" icon_state = "snowfall_med" @@ -327,8 +336,8 @@ var/datum/planet/sif/planet_sif = null "Loud thunder is heard in the distance.", "A bright flash heralds the approach of a storm." ) - outdoor_sounds_type = /datum/looping_sound/weather/rain - indoor_sounds_type = /datum/looping_sound/weather/rain/indoors + outdoor_sounds_type = /datum/looping_sound/weather/rain/heavy + indoor_sounds_type = /datum/looping_sound/weather/rain/heavy/indoors transition_chances = list( diff --git a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm index a8c4d0445a..f7e6018448 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm @@ -1,3 +1,4 @@ +#define FUSION_ROD_SHEET_AMT 15 /obj/machinery/fusion_fuel_compressor var/blitzprogress = 0 //CHOMPEdit name = "fuel compressor" @@ -55,7 +56,7 @@ if(!mat.is_fusion_fuel) to_chat(user, "It would be pointless to make a fuel rod out of [mat.use_name].") return - if(M.get_amount() < 25) + if(M.get_amount() < FUSION_ROD_SHEET_AMT) if(mat.name=="supermatter") visible_message("\The [user] places the [mat.use_name] into the compressor.") M.use(1) @@ -66,7 +67,7 @@ return var/obj/item/weapon/fuel_assembly/F = new(get_turf(src), mat.name) visible_message("\The [src] compresses the [mat.use_name] into a new fuel assembly.") - M.use(25) + M.use(FUSION_ROD_SHEET_AMT) user.put_in_hands(F) else if(mat.name=="phoron") @@ -98,3 +99,5 @@ verbs -= /obj/machinery/fusion_fuel_compressor/verb/eject_sheet blitzprogress = 0 //CHOMPEdit End + +#undef FUSION_ROD_SHEET_AMT diff --git a/code/modules/power/fusion/fusion_reagents.dm b/code/modules/power/fusion/fusion_reagents.dm deleted file mode 100644 index 80b1cbb336..0000000000 --- a/code/modules/power/fusion/fusion_reagents.dm +++ /dev/null @@ -1,18 +0,0 @@ -//Additional fusion reagents. These likely don't have any other use aside from the RUST, but if you want to make stuff with 'em, be my guest. - -/datum/reagent/helium3 - name = "helium-3" - description = "A colorless, odorless, tasteless and generally inert gas used in fusion reactors. Non-radioactive." - id = "helium-3" - reagent_state = GAS - color = "#808080" - -/obj/structure/reagent_dispensers/he3 - name = "fueltank" - desc = "A fueltank." - icon = 'icons/obj/objects.dmi' - icon_state = "weldtank" - amount_per_transfer_from_this = 10 - New() - ..() - reagents.add_reagent("helium-3",1000) \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/laser_vr.dm b/code/modules/projectiles/guns/energy/laser_vr.dm index 1c231d1c08..6a564dbe0f 100644 --- a/code/modules/projectiles/guns/energy/laser_vr.dm +++ b/code/modules/projectiles/guns/energy/laser_vr.dm @@ -189,12 +189,14 @@ return 0 return ..() -//Expedition Frontier Phaser +////////////////Expedition Frontier Phaser//////////////// + /obj/item/weapon/gun/energy/locked/frontier name = "frontier phaser" desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + description_fluff = "The NT Brand Model E2 Secured Phaser System, a specialty phaser that has an intergrated chip that prevents the user from opperating the weapon within the vicinity of any NanoTrasen opperated outposts/stations/bases. However, this chip can be disabled so the weapon CAN BE used in the vicinity of any NanoTrasen opperated outposts/stations/bases. The weapon doesn't use traditional weapon power cells and instead works via a pump action that recharges the internal cells. It is a staple amongst exploration personell who usually don't have the license to opperate a lethal weapon through NT and provides them with a weapon that can be recharged away from civilization." icon = 'icons/obj/gun_vr.dmi' - icon_state = "phaser" + icon_state = "phaserkill" item_state = "phaser" item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') fire_sound = 'sound/weapons/laser2.ogg' @@ -211,7 +213,7 @@ //CHOMP Edit: Changed beam type to new phaser beam type. firemodes = list( list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, charge_cost = 60), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, charge_cost = 80), ) recoil_mode = 0 //CHOMP Addition: Removes recoil for micros. @@ -251,20 +253,23 @@ locked = 0 lockable = 0 -//Phaser Carbine - Reskinned phaser +////////////////Phaser Carbine//////////////// + /obj/item/weapon/gun/energy/locked/frontier/carbine name = "frontier carbine" desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + description_fluff = "The NT Brand Model AT2 Secured Phaser System, a specialty phaser that has an intergrated chip that prevents the user from opperating the weapon within the vicinity of any NanoTrasen opperated outposts/stations/bases. However, this chip can be disabled so the weapon CAN BE used in the vicinity of any NanoTrasen opperated outposts/stations/bases. The weapon doesn't use traditional weapon power cells and instead works via a pump action that recharges the internal cells. It is a staple amongst exploration personell who usually don't have the license to opperate a lethal weapon through NT and provides them with a weapon that can be recharged away from civilization." icon = 'icons/obj/gun_vr.dmi' icon_state = "carbinekill" - item_state = "retro" + item_state = "energykill" item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi') + phase_power = 150 modifystate = "carbinekill" //CHOMP Edit: Changed beam type to new phaser beam type. firemodes = list( list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, modifystate="carbinekill", charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, modifystate="carbinestun", charge_cost = 60), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, modifystate="carbinestun", charge_cost = 80), ) /obj/item/weapon/gun/energy/locked/frontier/carbine/update_icon() @@ -275,12 +280,13 @@ ..() /obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked - desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far." + desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization." req_access = newlist() //for toggling safety locked = 0 lockable = 0 -//Expeditionary Holdout Phaser Pistol +////////////////Expeditionary Holdout Phaser Pistol//////////////// + /obj/item/weapon/gun/energy/locked/frontier/holdout name = "holdout frontier phaser" desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." @@ -304,3 +310,51 @@ req_access = newlist() //for toggling safety locked = 0 lockable = 0 + +////////////////Phaser Rifle//////////////// + +/obj/item/weapon/gun/energy/locked/frontier/rifle + name = "frontier marksman rifle" + desc = "A much larger, heavier weapon than the typical frontier-type weapons, this DMR can be fired both from the hip, and in scope. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "riflekill" + item_state = "sniper" + item_state_slots = list(slot_r_hand_str = "lsniper", slot_l_hand_str = "lsniper") + wielded_item_state = "lsniper-wielded" + action_button_name = "Use Scope" + w_class = ITEMSIZE_LARGE + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi') + accuracy = -15 //better than most snipers but still has penalty + scoped_accuracy = 40 + one_handed_penalty = 50 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. + phase_power = 150 //efficient crank charger + projectile_type = /obj/item/projectile/beam/phaser/heavy //CHOMPEdit + modifystate = "riflekill" + //CHOMP Edit: Changed beam type to new phaser beam type. + firemodes = list( + list(mode_name="sniper", fire_delay=35, projectile_type=/obj/item/projectile/beam/phaser/heavy, modifystate="riflekill", charge_cost = 600), + list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, modifystate="riflestun", charge_cost = 200), + ) + +/obj/item/weapon/gun/energy/locked/frontier/rifle/ui_action_click() + scope() + +/obj/item/weapon/gun/energy/locked/frontier/rifle/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + +/obj/item/weapon/gun/energy/locked/frontier/rifle/update_icon() + if(recharging) + icon_state = "[modifystate]_pump" + update_held_icon() + return + ..() + +/obj/item/weapon/gun/energy/locked/frontier/rifle/unlocked + desc = "A much larger, heavier weapon than the typical frontier-type weapons, this DMR can be fired both from the hip, and in scope. Includes a built-in crank charger for recharging away from civilization." + req_access = newlist() //for toggling safety + locked = 0 + lockable = 0 diff --git a/code/modules/projectiles/guns/energy/stun_vr.dm b/code/modules/projectiles/guns/energy/stun_vr.dm index b0bfd53e46..db038e58fd 100644 --- a/code/modules/projectiles/guns/energy/stun_vr.dm +++ b/code/modules/projectiles/guns/energy/stun_vr.dm @@ -3,4 +3,5 @@ fire_delay = 4 /obj/item/weapon/gun/energy/stunrevolver + icon = 'icons/obj/gun_vr.dmi' charge_cost = 400 \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 775659596a..37f3f5629c 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -389,9 +389,18 @@ ) /obj/item/weapon/gun/projectile/automatic/tommygun/update_icon() - ..() - icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty" -// update_held_icon() + //VOREStation Edit Start - vr sprite + if(istype(ammo_magazine,/obj/item/ammo_magazine/m45tommy)) + icon_state = "tommygun-mag" + item_state = icon_state + else if(istype(ammo_magazine,/obj/item/ammo_magazine/m45tommydrum)) + icon_state = "tommygun-drum" + item_state = icon_state + else + icon_state = "tommygun-empty" + item_state = icon_state + update_held_icon() + //VOREStation Edit End /obj/item/weapon/gun/projectile/automatic/bullpup // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start. name = "bullpup rifle" diff --git a/code/modules/projectiles/guns/projectile/automatic_vr.dm b/code/modules/projectiles/guns/projectile/automatic_vr.dm index dd72f4f24b..9833ab3ee0 100644 --- a/code/modules/projectiles/guns/projectile/automatic_vr.dm +++ b/code/modules/projectiles/guns/projectile/automatic_vr.dm @@ -1,6 +1,9 @@ /obj/item/weapon/gun/projectile/automatic/wt550/lethal magazine_type = /obj/item/ammo_magazine/m9mmt +/obj/item/weapon/gun/projectile/automatic/tommygun + icon = 'icons/obj/gun_vr.dmi' + //////////////////////////////////////////////////////////// //////////////////// Projectile Weapons //////////////////// //////////////////////////////////////////////////////////// diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm index 1aa8e83957..52e8c17ca9 100644 --- a/code/modules/projectiles/guns/projectile/boltaction.dm +++ b/code/modules/projectiles/guns/projectile/boltaction.dm @@ -16,7 +16,7 @@ action_sound = 'sound/weapons/riflebolt.ogg' pump_animation = null -/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice // For target practice +/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice //For target practice desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 7.62mm rounds." ammo_type = /obj/item/ammo_casing/a762/practice diff --git a/code/modules/projectiles/guns/projectile/boltaction_vr.dm b/code/modules/projectiles/guns/projectile/boltaction_vr.dm new file mode 100644 index 0000000000..3e538adf4e --- /dev/null +++ b/code/modules/projectiles/guns/projectile/boltaction_vr.dm @@ -0,0 +1,55 @@ +/obj/item/weapon/gun/projectile/shotgun/pump/rifle + desc = "The Weissen Company Type-19 is a modern interpretation of an almost ancient weapon design. The model is popular among hunters and collectors due to its reliability. Uses 7.62mm rounds." + description_fluff = "The frontier’s largest home-grown firearms manufacturer, the APEX Arms Company offers a range of high-quality, high-cost hunting rifles and shotguns designed with the wild frontier wilderness - and its wildlife - in mind. \ + The company operates just one production plant in the Mytis system, but their weapons have found popularity on garden worlds as far afield as the Tajaran homeworld due to their excellent build quality, precision, and stopping power." + icon = 'icons/obj/gun_vr.dmi' + +/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice //For target practice + name = "practice rifle" + icon = 'icons/obj/gun_vr.dmi' + icon_state = "boltaction_p" + item_state = "boltaction_p" + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi') + max_shells = 4 + +/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial + max_shells = 5 + +/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever + desc = "The Weissen Company Thunderking is the latest version of an almost ancient weapon design from the 19th century, popular with some due to its simplistic design. This one uses a lever-action to move new rounds into the chamber. Uses 7.62mm rounds." + description_fluff = "The frontier’s largest home-grown firearms manufacturer, the Weissen Company offers a range of high-quality, high-cost hunting rifles and shotguns designed with the wild frontier wilderness - and its wildlife - in mind. \ + The company operates just one production plant in the Mytis system, but their weapons have found popularity on garden worlds as far afield as the Tajaran homeworld due to their excellent build quality, precision, and stopping power." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "levergun" + max_shells = 6 + +/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever/vintage + desc = "The Weissen Company's version of an iconic manually operated lever action rifle, the Bushhog, offering adequate stopping power due to it's still powerful cartridge while at the same time having a rather respectable firing rate due to it's mechanism. It is very probable this is a replica instead of a museum piece, but rifles of this pattern still see usage as colonist guns in some far off regions. Uses 7.62mm rounds." + description_fluff = "The frontier’s largest home-grown firearms manufacturer, the Weissen Company offers a range of high-quality, high-cost hunting rifles and shotguns designed with the wild frontier wilderness - and its wildlife - in mind. \ + The company operates just one production plant in the Mytis system, but their weapons have found popularity on garden worlds as far afield as the Tajaran homeworld due to their excellent build quality, precision, and stopping power." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "levergunv" + item_state = "leveraction" + max_shells = 5 + caliber = "7.62mm" + load_method = SINGLE_CASING + pump_animation = null + +////////////////////////surplus gun - for derelicts (04/26/2021)//////////////////////// + +/obj/item/weapon/gun/projectile/shotgun/pump/surplus + name = "surplus rifle" + desc = "An ancient weapon from an era long pas, crude in design, but still just as effective as any modern interpretation. Uses 7.62mm rounds." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "boltaction_s" + item_state = "boltaction_p" + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi') + fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg' + max_shells = 4 + slot_flags = null + caliber = "7.62mm" + origin_tech = list(TECH_COMBAT = 1) // Old(er) as shit rifle doesn't have very good tech. + ammo_type = /obj/item/ammo_casing/a762 + load_method = SINGLE_CASING|SPEEDLOADER + action_sound = 'sound/weapons/riflebolt.ogg' + pump_animation = null diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 1cd279ef61..8e92bb6e9d 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -42,7 +42,7 @@ damage = 30 armor_penetration = 10 - + /obj/item/projectile/beam/midlaser damage = 40 armor_penetration = 10 diff --git a/code/modules/projectiles/projectile/beams_vr.dm b/code/modules/projectiles/projectile/beams_vr.dm index 8930260e9e..a3a149502c 100644 --- a/code/modules/projectiles/projectile/beams_vr.dm +++ b/code/modules/projectiles/projectile/beams_vr.dm @@ -42,6 +42,14 @@ tracer_type = /obj/effect/projectile/tracer/laser_blue impact_type = /obj/effect/projectile/impact/laser_blue +/obj/item/projectile/beam/weaklaser/blue + icon_state = "bluelaser" + light_color = "#0066FF" + + muzzle_type = /obj/effect/projectile/muzzle/laser_blue + tracer_type = /obj/effect/projectile/tracer/laser_blue + impact_type = /obj/effect/projectile/impact/laser_blue + /obj/item/projectile/beam/medigun name = "healing beam" icon_state = "healbeam" @@ -74,4 +82,4 @@ M.adjustFireLoss(-15) M.adjustToxLoss(-5) M.adjustOxyLoss(-5) - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/reagents/Chemistry-Logging.dm b/code/modules/reagents/Chemistry-Logging.dm index cccf37bb6f..4c7b2343ad 100644 --- a/code/modules/reagents/Chemistry-Logging.dm +++ b/code/modules/reagents/Chemistry-Logging.dm @@ -1,7 +1,7 @@ /var/list/chemical_reaction_logs = list() -/proc/log_chemical_reaction(atom/A, datum/chemical_reaction/R, multiplier) +/proc/log_chemical_reaction(atom/A, decl/chemical_reaction/R, multiplier) if(!A || !R) return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_ch.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_ch.dm deleted file mode 100644 index 3fc98a069f..0000000000 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_ch.dm +++ /dev/null @@ -1,24 +0,0 @@ -//We need to port our own food and drinks over sometime - Jack - -/datum/reagent/ethanol/snaps - name = "Akvavit" - id = "snaps" - description = "Burns the nose and throat and soothes it with a herby aftertaste...Barely." - taste_description = "strong spirit and a little dill" - color = "e6d670" // rgb: 230, 214, 112 - strength = 15 - - glass_name = "akvavit" - glass_desc = "Burns the nose and throat, and soothes it with a herby aftertaste...Barely." - -/datum/reagent/cinnamonpowder - name = "ground cinnamon" - id = "cinnamonpowder" - description = "Cinnamon, a spice made from tree bark, ground into a fine powder. Probably not a good idea to eat on its own!" - taste_description= "sweet spice with a hint of wood" - color = "#a96622" - - glass_name = "ground cinnamon" - glass_desc = "A glass of ground cinnamon. Dare you take the challenge?" - -//TODO: Make eating it on its own make you cough. \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm deleted file mode 100644 index 13c987a149..0000000000 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm +++ /dev/null @@ -1,29 +0,0 @@ -/datum/reagent/drink/lovepotion_yw - name = "Strawberry Love Potion" - id = "strawberrylovepotion" - description = "Creamy strawberries and sugar, simple and sweet." - taste_description = "strawberries and cream" - color = "#fc8a8a" // rgb(252, 138, 138) - - glass_name = "Love Potion" - glass_desc = "Love me tender, love me sweet." - - -/datum/reagent/ethanol/wormblood - name = "Worm Blood" - id = "wormblood" - description = "Who had the grand idea to bottle THE BLOOD OF A WORM." - taste_description = "Wriggly cave fungus" - color = "#827A00" - strength = 30 - druggy = 10 - - glass_name = "Worm blood" - glass_desc = "Who had the grand idea to bottle THE BLOOD OF A WORM." - glass_icon_state = "wormblood" - glass_center_of_mass = list("x"=16, "y"=8) - glass_icon_file = 'icons/obj/drinks_yw.dmi' - - - - diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm deleted file mode 100644 index b88c9ec7a4..0000000000 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ /dev/null @@ -1,2684 +0,0 @@ -//helper that ensures the reaction rate holds after iterating -//Ex. REACTION_RATE(0.3) means that 30% of the reagents will react each chemistry tick (~2 seconds by default). -#define REACTION_RATE(rate) (1.0 - (1.0-rate)**(1.0/PROCESS_REACTION_ITER)) - -//helper to define reaction rate in terms of half-life -//Ex. -//HALF_LIFE(0) -> Reaction completes immediately (default chems) -//HALF_LIFE(1) -> Half of the reagents react immediately, the rest over the following ticks. -//HALF_LIFE(2) -> Half of the reagents are consumed after 2 chemistry ticks. -//HALF_LIFE(3) -> Half of the reagents are consumed after 3 chemistry ticks. -#define HALF_LIFE(ticks) (ticks? 1.0 - (0.5)**(1.0/(ticks*PROCESS_REACTION_ITER)) : 1.0) - -/datum/chemical_reaction - var/name = null - var/id = null - var/result = null - var/list/required_reagents = list() - var/list/catalysts = list() - var/list/inhibitors = list() - var/result_amount = 0 - - //how far the reaction proceeds each time it is processed. Used with either REACTION_RATE or HALF_LIFE macros. - var/reaction_rate = HALF_LIFE(0) - - //if less than 1, the reaction will be inhibited if the ratio of products/reagents is too high. - //0.5 = 50% yield -> reaction will only proceed halfway until products are removed. - var/yield = 1.0 - - //If limits on reaction rate would leave less than this amount of any reagent (adjusted by the reaction ratios), - //the reaction goes to completion. This is to prevent reactions from going on forever with tiny reagent amounts. - var/min_reaction = 2 - - var/mix_message = "The solution begins to bubble." - var/reaction_sound = 'sound/effects/bubbles.ogg' - - var/log_is_important = 0 // If this reaction should be considered important for logging. Important recipes message admins when mixed, non-important ones just log to file. - -/datum/chemical_reaction/proc/can_happen(var/datum/reagents/holder) - //check that all the required reagents are present - if(!holder.has_all_reagents(required_reagents)) - return 0 - - //check that all the required catalysts are present in the required amount - if(!holder.has_all_reagents(catalysts)) - return 0 - - //check that none of the inhibitors are present in the required amount - if(holder.has_any_reagent(inhibitors)) - return 0 - - return 1 - -/datum/chemical_reaction/proc/calc_reaction_progress(var/datum/reagents/holder, var/reaction_limit) - var/progress = reaction_limit * reaction_rate //simple exponential progression - - //calculate yield - if(1-yield > 0.001) //if yield ratio is big enough just assume it goes to completion - /* - Determine the max amount of product by applying the yield condition: - (max_product/result_amount) / reaction_limit == yield/(1-yield) - - We make use of the fact that: - reaction_limit = (holder.get_reagent_amount(reactant) / required_reagents[reactant]) of the limiting reagent. - */ - var/yield_ratio = yield/(1-yield) - var/max_product = yield_ratio * reaction_limit * result_amount //rearrange to obtain max_product - var/yield_limit = max(0, max_product - holder.get_reagent_amount(result))/result_amount - - progress = min(progress, yield_limit) //apply yield limit - - //apply min reaction progress - wasn't sure if this should go before or after applying yield - //I guess people can just have their miniscule reactions go to completion regardless of yield. - for(var/reactant in required_reagents) - var/remainder = holder.get_reagent_amount(reactant) - progress*required_reagents[reactant] - if(remainder <= min_reaction*required_reagents[reactant]) - progress = reaction_limit - break - - return progress - -/datum/chemical_reaction/process(var/datum/reagents/holder) - //determine how far the reaction can proceed - var/list/reaction_limits = list() - for(var/reactant in required_reagents) - reaction_limits += holder.get_reagent_amount(reactant) / required_reagents[reactant] - - //determine how far the reaction proceeds - var/reaction_limit = min(reaction_limits) - var/progress_limit = calc_reaction_progress(holder, reaction_limit) - - var/reaction_progress = min(reaction_limit, progress_limit) //no matter what, the reaction progress cannot exceed the stoichiometric limit. - - //need to obtain the new reagent's data before anything is altered - var/data = send_data(holder, reaction_progress) - - //remove the reactants - for(var/reactant in required_reagents) - var/amt_used = required_reagents[reactant] * reaction_progress - holder.remove_reagent(reactant, amt_used, safety = 1) - - //add the product - var/amt_produced = result_amount * reaction_progress - if(result) - holder.add_reagent(result, amt_produced, data, safety = 1) - - on_reaction(holder, amt_produced) - - return reaction_progress - -//called when a reaction processes -/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume) - return - -//called after processing reactions, if they occurred -/datum/chemical_reaction/proc/post_reaction(var/datum/reagents/holder) - var/atom/container = holder.my_atom - if(mix_message && container && !ismob(container)) - var/turf/T = get_turf(container) - var/list/seen = viewers(4, T) - for(var/mob/M in seen) - M.show_message("[bicon(container)] [mix_message]", 1) - playsound(T, reaction_sound, 80, 1) - -//obtains any special data that will be provided to the reaction products -//this is called just before reactants are removed. -/datum/chemical_reaction/proc/send_data(var/datum/reagents/holder, var/reaction_limit) - return null - -/* Common reactions */ - -/datum/chemical_reaction/inaprovaline - name = "Inaprovaline" - id = "inaprovaline" - result = "inaprovaline" - required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/dylovene - name = "Dylovene" - id = "anti_toxin" - result = "anti_toxin" - required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1) - result_amount = 3 - -/datum/chemical_reaction/carthatoline - name = "Carthatoline" - id = "carthatoline" - result = "carthatoline" - required_reagents = list("anti_toxin" = 1, "carbon" = 2, "phoron" = 0.1) - catalysts = list("phoron" = 1) - result_amount = 2 - -/datum/chemical_reaction/paracetamol - name = "Paracetamol" - id = "paracetamol" - result = "paracetamol" - required_reagents = list("inaprovaline" = 1, "nitrogen" = 1, "water" = 1) - result_amount = 2 - -/datum/chemical_reaction/tramadol - name = "Tramadol" - id = "tramadol" - result = "tramadol" - required_reagents = list("paracetamol" = 1, "ethanol" = 1, "oxygen" = 1) - result_amount = 3 - -/datum/chemical_reaction/oxycodone - name = "Oxycodone" - id = "oxycodone" - result = "oxycodone" - required_reagents = list("ethanol" = 1, "tramadol" = 1) - catalysts = list("phoron" = 5) - result_amount = 1 - -/datum/chemical_reaction/sterilizine - name = "Sterilizine" - id = "sterilizine" - result = "sterilizine" - required_reagents = list("ethanol" = 1, "anti_toxin" = 1, "chlorine" = 1) - result_amount = 3 - -/datum/chemical_reaction/silicate - name = "Silicate" - id = "silicate" - result = "silicate" - required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) - result_amount = 3 - -/datum/chemical_reaction/mutagen - name = "Unstable mutagen" - id = "mutagen" - result = "mutagen" - required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) - result_amount = 3 - -/datum/chemical_reaction/water - name = "Water" - id = "water" - result = "water" - required_reagents = list("oxygen" = 1, "hydrogen" = 2) - result_amount = 1 - -/datum/chemical_reaction/thermite - name = "Thermite" - id = "thermite" - result = "thermite" - required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) - result_amount = 3 - -/datum/chemical_reaction/space_drugs - name = "Space Drugs" - id = "space_drugs" - result = "space_drugs" - required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) - result_amount = 3 - -/datum/chemical_reaction/lube - name = "Space Lube" - id = "lube" - result = "lube" - required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) - result_amount = 4 - -/datum/chemical_reaction/pacid - name = "Polytrinic acid" - id = "pacid" - result = "pacid" - required_reagents = list("sacid" = 1, "chlorine" = 1, "potassium" = 1) - result_amount = 3 - -/datum/chemical_reaction/synaptizine - name = "Synaptizine" - id = "synaptizine" - result = "synaptizine" - required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) - result_amount = 3 - -/datum/chemical_reaction/hyronalin - name = "Hyronalin" - id = "hyronalin" - result = "hyronalin" - required_reagents = list("radium" = 1, "anti_toxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/arithrazine - name = "Arithrazine" - id = "arithrazine" - result = "arithrazine" - required_reagents = list("hyronalin" = 1, "hydrogen" = 1) - result_amount = 2 - -/datum/chemical_reaction/impedrezene - name = "Impedrezene" - id = "impedrezene" - result = "impedrezene" - required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) - result_amount = 2 - -/datum/chemical_reaction/kelotane - name = "Kelotane" - id = "kelotane" - result = "kelotane" - required_reagents = list("silicon" = 1, "carbon" = 1) - result_amount = 2 - log_is_important = 1 - -/datum/chemical_reaction/peridaxon - name = "Peridaxon" - id = "peridaxon" - result = "peridaxon" - required_reagents = list("bicaridine" = 2, "clonexadone" = 2) - catalysts = list("phoron" = 5) - result_amount = 2 - -/datum/chemical_reaction/osteodaxon - name = "Osteodaxon" - id = "osteodaxon" - result = "osteodaxon" - required_reagents = list("bicaridine" = 2, "phoron" = 0.1, "carpotoxin" = 1) - catalysts = list("phoron" = 5) - inhibitors = list("clonexadone" = 1) // Messes with cryox - result_amount = 2 - -/datum/chemical_reaction/respirodaxon - name = "Respirodaxon" - id = "respirodaxon" - result = "respirodaxon" - required_reagents = list("dexalinp" = 2, "biomass" = 2, "phoron" = 1) - catalysts = list("phoron" = 5) - inhibitors = list("dexalin" = 1) - result_amount = 2 - -/datum/chemical_reaction/gastirodaxon - name = "Gastirodaxon" - id = "gastirodaxon" - result = "gastirodaxon" - required_reagents = list("carthatoline" = 1, "biomass" = 2, "tungsten" = 2) - catalysts = list("phoron" = 5) - inhibitors = list("lithium" = 1) - result_amount = 3 - -/datum/chemical_reaction/hepanephrodaxon - name = "Hepanephrodaxon" - id = "hepanephrodaxon" - result = "hepanephrodaxon" - required_reagents = list("carthatoline" = 2, "biomass" = 2, "lithium" = 1) - catalysts = list("phoron" = 5) - inhibitors = list("tungsten" = 1) - result_amount = 2 - -/datum/chemical_reaction/cordradaxon - name = "Cordradaxon" - id = "cordradaxon" - result = "cordradaxon" - required_reagents = list("potassium_chlorophoride" = 1, "biomass" = 2, "bicaridine" = 2) - catalysts = list("phoron" = 5) - inhibitors = list("clonexadone" = 1) - result_amount = 2 - -/datum/chemical_reaction/virus_food - name = "Virus Food" - id = "virusfood" - result = "virusfood" - required_reagents = list("water" = 1, "milk" = 1) - result_amount = 5 - -/datum/chemical_reaction/leporazine - name = "Leporazine" - id = "leporazine" - result = "leporazine" - required_reagents = list("silicon" = 1, "copper" = 1) - catalysts = list("phoron" = 5) - result_amount = 2 - -/datum/chemical_reaction/cryptobiolin - name = "Cryptobiolin" - id = "cryptobiolin" - result = "cryptobiolin" - required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/tricordrazine - name = "Tricordrazine" - id = "tricordrazine" - result = "tricordrazine" - required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/alkysine - name = "Alkysine" - id = "alkysine" - result = "alkysine" - required_reagents = list("chlorine" = 1, "nitrogen" = 1, "anti_toxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/dexalin - name = "Dexalin" - id = "dexalin" - result = "dexalin" - required_reagents = list("oxygen" = 2, "phoron" = 0.1) - catalysts = list("phoron" = 1) - inhibitors = list("water" = 1) // Messes with cryox - result_amount = 1 - -/datum/chemical_reaction/dermaline - name = "Dermaline" - id = "dermaline" - result = "dermaline" - required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1) - result_amount = 3 - -/datum/chemical_reaction/dexalinp - name = "Dexalin Plus" - id = "dexalinp" - result = "dexalinp" - required_reagents = list("dexalin" = 1, "carbon" = 1, "iron" = 1) - result_amount = 3 - -/datum/chemical_reaction/bicaridine - name = "Bicaridine" - id = "bicaridine" - result = "bicaridine" - required_reagents = list("inaprovaline" = 1, "carbon" = 1) - inhibitors = list("sugar" = 1) // Messes up with inaprovaline - result_amount = 2 - -/datum/chemical_reaction/myelamine - name = "Myelamine" - id = "myelamine" - result = "myelamine" - required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/hyperzine - name = "Hyperzine" - id = "hyperzine" - result = "hyperzine" - required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1) - result_amount = 3 - -/datum/chemical_reaction/stimm - name = "Stimm" - id = "stimm" - result = "stimm" - required_reagents = list("left4zed" = 1, "fuel" = 1) - catalysts = list("fuel" = 5) - result_amount = 2 - -/datum/chemical_reaction/ryetalyn - name = "Ryetalyn" - id = "ryetalyn" - result = "ryetalyn" - required_reagents = list("arithrazine" = 1, "carbon" = 1) - result_amount = 2 - -/datum/chemical_reaction/cryoxadone - name = "Cryoxadone" - id = "cryoxadone" - result = "cryoxadone" - required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1) - result_amount = 3 - -/datum/chemical_reaction/clonexadone - name = "Clonexadone" - id = "clonexadone" - result = "clonexadone" - required_reagents = list("cryoxadone" = 1, "sodium" = 1, "phoron" = 0.1) - catalysts = list("phoron" = 5) - result_amount = 2 - -/datum/chemical_reaction/mortiferin - name = "Mortiferin" - id = "mortiferin" - result = "mortiferin" - required_reagents = list("cryptobiolin" = 1, "clonexadone" = 1, "corophizine" = 1) - result_amount = 2 - catalysts = list("phoron" = 5) - -/datum/chemical_reaction/spaceacillin - name = "Spaceacillin" - id = "spaceacillin" - result = "spaceacillin" - required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1) - result_amount = 2 - -/datum/chemical_reaction/corophizine - name = "Corophizine" - id = "corophizine" - result = "corophizine" - required_reagents = list("spaceacillin" = 1, "carbon" = 1, "phoron" = 0.1) - catalysts = list("phoron" = 5) - result_amount = 2 - -/datum/chemical_reaction/immunosuprizine - name = "Immunosuprizine" - id = "immunosuprizine" - result = "immunosuprizine" - required_reagents = list("corophizine" = 1, "tungsten" = 1, "sacid" = 1) - catalysts = list("phoron" = 5) - result_amount = 2 - -/datum/chemical_reaction/imidazoline - name = "imidazoline" - id = "imidazoline" - result = "imidazoline" - required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/ethylredoxrazine - name = "Ethylredoxrazine" - id = "ethylredoxrazine" - result = "ethylredoxrazine" - required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1) - result_amount = 3 - -/datum/chemical_reaction/calciumcarbonate - name = "Calcium Carbonate" - id = "calciumcarbonate" - result = "calciumcarbonate" - required_reagents = list("oxygen" = 3, "calcium" = 1, "carbon" = 1) - result_amount = 2 - -/datum/chemical_reaction/soporific - name = "Soporific" - id = "stoxin" - result = "stoxin" - required_reagents = list("chloralhydrate" = 1, "sugar" = 4) - inhibitors = list("phosphorus") // Messes with the smoke - result_amount = 5 - -/datum/chemical_reaction/chloralhydrate - name = "Chloral Hydrate" - id = "chloralhydrate" - result = "chloralhydrate" - required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) - result_amount = 1 - -/datum/chemical_reaction/potassium_chloride - name = "Potassium Chloride" - id = "potassium_chloride" - result = "potassium_chloride" - required_reagents = list("sodiumchloride" = 1, "potassium" = 1) - result_amount = 2 - -/datum/chemical_reaction/potassium_chlorophoride - name = "Potassium Chlorophoride" - id = "potassium_chlorophoride" - result = "potassium_chlorophoride" - required_reagents = list("potassium_chloride" = 1, "phoron" = 1, "chloralhydrate" = 1) - result_amount = 4 - -/datum/chemical_reaction/zombiepowder - name = "Zombie Powder" - id = "zombiepowder" - result = "zombiepowder" - required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5) - result_amount = 2 - -/datum/chemical_reaction/carpotoxin - name = "Carpotoxin" - id = "carpotoxin" - result = "carpotoxin" - required_reagents = list("spidertoxin" = 2, "biomass" = 1, "sifsap" = 2) - catalysts = list("sifsap" = 10) - inhibitors = list("radium" = 1) - result_amount = 2 - -/datum/chemical_reaction/mindbreaker - name = "Mindbreaker Toxin" - id = "mindbreaker" - result = "mindbreaker" - required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1) - result_amount = 3 - -/datum/chemical_reaction/lipozine - name = "Lipozine" - id = "Lipozine" - result = "lipozine" - required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1) - result_amount = 3 - -/datum/chemical_reaction/surfactant - name = "Foam surfactant" - id = "foam surfactant" - result = "fluorosurfactant" - required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/ammonia - name = "Ammonia" - id = "ammonia" - result = "ammonia" - required_reagents = list("hydrogen" = 3, "nitrogen" = 1) - inhibitors = list("phoron" = 1) // Messes with lexorin - result_amount = 3 - -/datum/chemical_reaction/diethylamine - name = "Diethylamine" - id = "diethylamine" - result = "diethylamine" - required_reagents = list ("ammonia" = 1, "ethanol" = 1) - result_amount = 2 - -/datum/chemical_reaction/left4zed - name = "Left4Zed" - id = "left4zed" - result = "left4zed" - required_reagents = list ("diethylamine" = 2, "mutagen" = 1) - result_amount = 3 - -/datum/chemical_reaction/robustharvest - name = "RobustHarvest" - id = "robustharvest" - result = "robustharvest" - required_reagents = list ("ammonia" = 1, "calcium" = 1, "neurotoxic_protein" = 1) - result_amount = 3 - -/datum/chemical_reaction/space_cleaner - name = "Space cleaner" - id = "cleaner" - result = "cleaner" - required_reagents = list("ammonia" = 1, "water" = 1) - result_amount = 2 - -/datum/chemical_reaction/plantbgone - name = "Plant-B-Gone" - id = "plantbgone" - result = "plantbgone" - required_reagents = list("pacid" = 1, "diethylamine" = 4) //YW Edit - result_amount = 5 - -/datum/chemical_reaction/foaming_agent - name = "Foaming Agent" - id = "foaming_agent" - result = "foaming_agent" - required_reagents = list("lithium" = 1, "hydrogen" = 1) - result_amount = 1 - -/datum/chemical_reaction/glycerol - name = "Glycerol" - id = "glycerol" - result = "glycerol" - required_reagents = list("cornoil" = 3, "sacid" = 1) - result_amount = 1 - -/datum/chemical_reaction/sodiumchloride - name = "Sodium Chloride" - id = "sodiumchloride" - result = "sodiumchloride" - required_reagents = list("sodium" = 1, "chlorine" = 1) - result_amount = 2 - -/datum/chemical_reaction/condensedcapsaicin - name = "Condensed Capsaicin" - id = "condensedcapsaicin" - result = "condensedcapsaicin" - required_reagents = list("capsaicin" = 2) - catalysts = list("phoron" = 5) - result_amount = 1 - -/datum/chemical_reaction/coolant - name = "Coolant" - id = "coolant" - result = "coolant" - required_reagents = list("tungsten" = 1, "oxygen" = 1, "water" = 1) - result_amount = 3 - log_is_important = 1 - -/datum/chemical_reaction/rezadone - name = "Rezadone" - id = "rezadone" - result = "rezadone" - required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) - result_amount = 3 - -/datum/chemical_reaction/lexorin - name = "Lexorin" - id = "lexorin" - result = "lexorin" - required_reagents = list("phoron" = 1, "hydrogen" = 1, "nitrogen" = 1) - result_amount = 3 - -/datum/chemical_reaction/methylphenidate - name = "Methylphenidate" - id = "methylphenidate" - result = "methylphenidate" - required_reagents = list("mindbreaker" = 1, "hydrogen" = 1) - result_amount = 3 - -/datum/chemical_reaction/citalopram - name = "Citalopram" - id = "citalopram" - result = "citalopram" - required_reagents = list("mindbreaker" = 1, "carbon" = 1) - result_amount = 3 - -/datum/chemical_reaction/paroxetine - name = "Paroxetine" - id = "paroxetine" - result = "paroxetine" - required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1) - result_amount = 3 - -/datum/chemical_reaction/neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - result = "neurotoxin" - required_reagents = list("gargleblaster" = 1, "stoxin" = 1) - result_amount = 2 - -/datum/chemical_reaction/luminol - name = "Luminol" - id = "luminol" - result = "luminol" - required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2) - result_amount = 6 - -/* Solidification */ - -/datum/chemical_reaction/solidification - name = "Solid Iron" - id = "solidiron" - result = null - required_reagents = list("frostoil" = 5, "iron" = REAGENTS_PER_SHEET) - result_amount = 1 - var/sheet_to_give = /obj/item/stack/material/iron - -/datum/chemical_reaction/solidification/on_reaction(var/datum/reagents/holder, var/created_volume) - new sheet_to_give(get_turf(holder.my_atom), created_volume) - return - - -/datum/chemical_reaction/solidification/phoron - name = "Solid Phoron" - id = "solidphoron" - required_reagents = list("frostoil" = 5, "phoron" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/phoron - - -/datum/chemical_reaction/solidification/silver - name = "Solid Silver" - id = "solidsilver" - required_reagents = list("frostoil" = 5, "silver" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/silver - - -/datum/chemical_reaction/solidification/gold - name = "Solid Gold" - id = "solidgold" - required_reagents = list("frostoil" = 5, "gold" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/gold - - -/datum/chemical_reaction/solidification/platinum - name = "Solid Platinum" - id = "solidplatinum" - required_reagents = list("frostoil" = 5, "platinum" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/platinum - - -/datum/chemical_reaction/solidification/uranium - name = "Solid Uranium" - id = "soliduranium" - required_reagents = list("frostoil" = 5, "uranium" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/uranium - - -/datum/chemical_reaction/solidification/hydrogen - name = "Solid Hydrogen" - id = "solidhydrogen" - required_reagents = list("frostoil" = 100, "hydrogen" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/mhydrogen - - -// These are from Xenobio. -/datum/chemical_reaction/solidification/steel - name = "Solid Steel" - id = "solidsteel" - required_reagents = list("frostoil" = 5, "steel" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/steel - - -/datum/chemical_reaction/solidification/plasteel - name = "Solid Plasteel" - id = "solidplasteel" - required_reagents = list("frostoil" = 10, "plasteel" = REAGENTS_PER_SHEET) - sheet_to_give = /obj/item/stack/material/plasteel - - -/datum/chemical_reaction/plastication - name = "Plastic" - id = "solidplastic" - result = null - required_reagents = list("pacid" = 1, "plasticide" = 2) - result_amount = 1 - -/datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder, var/created_volume) - new /obj/item/stack/material/plastic(get_turf(holder.my_atom), created_volume) - return - -/* Grenade reactions */ - -/datum/chemical_reaction/explosion_potassium - name = "Explosion" - id = "explosion_potassium" - result = null - required_reagents = list("water" = 1, "potassium" = 1) - result_amount = 2 - mix_message = null - -/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0) - if(isliving(holder.my_atom)) - e.amount *= 0.5 - var/mob/living/L = holder.my_atom - if(L.stat != DEAD) - e.amount *= 0.5 - //VOREStation Add Start - else - holder.clear_reagents() //No more powergaming by creating a tiny amount of this - //VORESTation Add End - e.start() - //holder.clear_reagents() //VOREStation Removal - return - -/datum/chemical_reaction/flash_powder - name = "Flash powder" - id = "flash_powder" - result = null - required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 ) - result_amount = null - -/datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, location) - s.start() - for(var/mob/living/carbon/M in viewers(world.view, location)) - switch(get_dist(M, location)) - if(0 to 3) - if(hasvar(M, "glasses")) - if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) - continue - - M.flash_eyes() - M.Weaken(15) - - if(4 to 5) - if(hasvar(M, "glasses")) - if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) - continue - - M.flash_eyes() - M.Stun(5) - -/datum/chemical_reaction/emp_pulse - name = "EMP Pulse" - id = "emp_pulse" - result = null - required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense - result_amount = 2 - -/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. - // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. - empulse(location, round(created_volume / 24), round(created_volume / 20), round(created_volume / 18), round(created_volume / 14), 1) - //VOREStation Edit Start - if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this - holder.clear_reagents() - //VOREStation Edit End - return - -/datum/chemical_reaction/nitroglycerin - name = "Nitroglycerin" - id = "nitroglycerin" - result = "nitroglycerin" - required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1) - result_amount = 2 - log_is_important = 1 - -/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0) - if(isliving(holder.my_atom)) - e.amount *= 0.5 - var/mob/living/L = holder.my_atom - if(L.stat!=DEAD) - e.amount *= 0.5 - //VOREStation Add Start - else - holder.clear_reagents() //No more powergaming by creating a tiny amount of this - //VOREStation Add End - e.start() - - //holder.clear_reagents() //VOREStation Removal - return - -/datum/chemical_reaction/napalm - name = "Napalm" - id = "napalm" - result = null - required_reagents = list("aluminum" = 1, "phoron" = 1, "sacid" = 1 ) - result_amount = 1 - -/datum/chemical_reaction/napalm/on_reaction(var/datum/reagents/holder, var/created_volume) - var/turf/location = get_turf(holder.my_atom.loc) - for(var/turf/simulated/floor/target_tile in range(0,location)) - target_tile.assume_gas("volatile_fuel", created_volume, 400+T0C) - spawn (0) target_tile.hotspot_expose(700, 400) - holder.del_reagent("napalm") - return - -/datum/chemical_reaction/chemsmoke - name = "Chemsmoke" - id = "chemsmoke" - result = null - required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) - result_amount = 0.4 - -/datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem - S.attach(location) - S.set_up(holder, created_volume, 0, location) - playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) - spawn(0) - S.start() - //VOREStation Edit Start - if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this - holder.clear_reagents() - //VOREStation Edit End - return - -/datum/chemical_reaction/foam - name = "Foam" - id = "foam" - result = null - required_reagents = list("fluorosurfactant" = 1, "water" = 1) - result_amount = 2 - mix_message = "The solution violently bubbles!" - -/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - to_chat(M, "The solution spews out foam!") - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 0) - s.start() - //VOREStation Edit Start - if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this - holder.clear_reagents() - //VOREStation Edit End - return - -/datum/chemical_reaction/metalfoam - name = "Metal Foam" - id = "metalfoam" - result = null - required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - to_chat(M, "The solution spews out a metalic foam!") - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 1) - s.start() - return - -/datum/chemical_reaction/ironfoam - name = "Iron Foam" - id = "ironlfoam" - result = null - required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - to_chat(M, "The solution spews out a metalic foam!") - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 2) - s.start() - return - -/* Paint */ - -/datum/chemical_reaction/red_paint - name = "Red paint" - id = "red_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_red" = 1) - result_amount = 5 - -/datum/chemical_reaction/red_paint/send_data() - return "#FE191A" - -/datum/chemical_reaction/orange_paint - name = "Orange paint" - id = "orange_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_orange" = 1) - result_amount = 5 - -/datum/chemical_reaction/orange_paint/send_data() - return "#FFBE4F" - -/datum/chemical_reaction/yellow_paint - name = "Yellow paint" - id = "yellow_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_yellow" = 1) - result_amount = 5 - -/datum/chemical_reaction/yellow_paint/send_data() - return "#FDFE7D" - -/datum/chemical_reaction/green_paint - name = "Green paint" - id = "green_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_green" = 1) - result_amount = 5 - -/datum/chemical_reaction/green_paint/send_data() - return "#18A31A" - -/datum/chemical_reaction/blue_paint - name = "Blue paint" - id = "blue_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_blue" = 1) - result_amount = 5 - -/datum/chemical_reaction/blue_paint/send_data() - return "#247CFF" - -/datum/chemical_reaction/purple_paint - name = "Purple paint" - id = "purple_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_purple" = 1) - result_amount = 5 - -/datum/chemical_reaction/purple_paint/send_data() - return "#CC0099" - -/datum/chemical_reaction/grey_paint //mime - name = "Grey paint" - id = "grey_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_grey" = 1) - result_amount = 5 - -/datum/chemical_reaction/grey_paint/send_data() - return "#808080" - -/datum/chemical_reaction/brown_paint - name = "Brown paint" - id = "brown_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_brown" = 1) - result_amount = 5 - -/datum/chemical_reaction/brown_paint/send_data() - return "#846F35" - -/datum/chemical_reaction/blood_paint - name = "Blood paint" - id = "blood_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2) - result_amount = 5 - -/datum/chemical_reaction/blood_paint/send_data(var/datum/reagents/T) - var/t = T.get_data("blood") - if(t && t["blood_colour"]) - return t["blood_colour"] - return "#FE191A" // Probably red - -/datum/chemical_reaction/milk_paint - name = "Milk paint" - id = "milk_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5) - result_amount = 5 - -/datum/chemical_reaction/milk_paint/send_data() - return "#F0F8FF" - -/datum/chemical_reaction/orange_juice_paint - name = "Orange juice paint" - id = "orange_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/orange_juice_paint/send_data() - return "#E78108" - -/datum/chemical_reaction/tomato_juice_paint - name = "Tomato juice paint" - id = "tomato_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/tomato_juice_paint/send_data() - return "#731008" - -/datum/chemical_reaction/lime_juice_paint - name = "Lime juice paint" - id = "lime_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/lime_juice_paint/send_data() - return "#365E30" - -/datum/chemical_reaction/carrot_juice_paint - name = "Carrot juice paint" - id = "carrot_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/carrot_juice_paint/send_data() - return "#973800" - -/datum/chemical_reaction/berry_juice_paint - name = "Berry juice paint" - id = "berry_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/berry_juice_paint/send_data() - return "#990066" - -/datum/chemical_reaction/grape_juice_paint - name = "Grape juice paint" - id = "grape_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/grape_juice_paint/send_data() - return "#863333" - -/datum/chemical_reaction/poisonberry_juice_paint - name = "Poison berry juice paint" - id = "poisonberry_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/poisonberry_juice_paint/send_data() - return "#863353" - -/datum/chemical_reaction/watermelon_juice_paint - name = "Watermelon juice paint" - id = "watermelon_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/watermelon_juice_paint/send_data() - return "#B83333" - -/datum/chemical_reaction/lemon_juice_paint - name = "Lemon juice paint" - id = "lemon_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/lemon_juice_paint/send_data() - return "#AFAF00" - -/datum/chemical_reaction/banana_juice_paint - name = "Banana juice paint" - id = "banana_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5) - result_amount = 5 - -/datum/chemical_reaction/banana_juice_paint/send_data() - return "#C3AF00" - -/datum/chemical_reaction/potato_juice_paint - name = "Potato juice paint" - id = "potato_juice_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5) - result_amount = 5 - -/datum/chemical_reaction/potato_juice_paint/send_data() - return "#302000" - -/datum/chemical_reaction/carbon_paint - name = "Carbon paint" - id = "carbon_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1) - result_amount = 5 - -/datum/chemical_reaction/carbon_paint/send_data() - return "#333333" - -/datum/chemical_reaction/aluminum_paint - name = "Aluminum paint" - id = "aluminum_paint" - result = "paint" - required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1) - result_amount = 5 - -/datum/chemical_reaction/aluminum_paint/send_data() - return "#F0F8FF" - -/* Food */ - -/datum/chemical_reaction/food/tofu - name = "Tofu" - id = "tofu" - result = null - required_reagents = list("soymilk" = 10) - catalysts = list("enzyme" = 5) - result_amount = 1 - -/datum/chemical_reaction/food/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) - return - -/datum/chemical_reaction/food/chocolate_bar - name = "Chocolate Bar" - id = "chocolate_bar" - result = null - required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) - result_amount = 1 - -/datum/chemical_reaction/food/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) - return - -/datum/chemical_reaction/food/chocolate_bar2 - name = "Chocolate Bar" - id = "chocolate_bar" - result = null - required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) - result_amount = 1 - -/datum/chemical_reaction/food/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) - return - -/datum/chemical_reaction/drinks/coffee - name = "Coffee" - id = "coffee" - result = "coffee" - required_reagents = list("water" = 5, "coffeepowder" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/tea - name = "Black tea" - id = "tea" - result = "tea" - required_reagents = list("water" = 5, "teapowder" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/hot_coco - name = "Hot Coco" - id = "hot_coco" - result = "hot_coco" - required_reagents = list("water" = 5, "coco" = 1) - result_amount = 5 - -/datum/chemical_reaction/food/soysauce - name = "Soy Sauce" - id = "soysauce" - result = "soysauce" - required_reagents = list("soymilk" = 4, "sacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/grapejuice - name = "Grape Juice" - id = "grapejuice" - result = "grapejuice" - required_reagents = list("water" = 3, "instantgrape" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/orangejuice - name = "Orange Juice" - id = "orangejuice" - result = "orangejuice" - required_reagents = list("water" = 3, "instantorange" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/watermelonjuice - name = "Watermelon Juice" - id = "watermelonjuice" - result = "watermelonjuice" - required_reagents = list("water" = 3, "instantwatermelon" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/applejuice - name = "Apple Juice" - id = "applejuice" - result = "applejuice" - required_reagents = list("water" = 3, "instantapple" = 1) - result_amount = 3 - -/datum/chemical_reaction/food/ketchup - name = "Ketchup" - id = "ketchup" - result = "ketchup" - required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1) - result_amount = 4 - -/datum/chemical_reaction/food/barbecue - name = "Barbeque Sauce" - id = "barbecue" - result = "barbecue" - required_reagents = list("tomatojuice" = 2, "applejuice" = 1, "sugar" = 1, "spacespice" = 1) - result_amount = 4 - -/datum/chemical_reaction/food/peanutbutter - name = "Peanut Butter" - id = "peanutbutter" - result = "peanutbutter" - required_reagents = list("peanutoil" = 2, "sugar" = 1, "sodiumchloride" = 1) - catalysts = list("enzyme" = 5) - result_amount = 3 - -/datum/chemical_reaction/food/mayonnaise - name = "mayonnaise" - id = "mayo" - result = "mayo" - required_reagents = list("egg" = 9, "cornoil" = 5, "lemonjuice" = 5, "sodiumchloride" = 1) - result_amount = 15 - -/datum/chemical_reaction/food/cheesewheel - name = "Cheesewheel" - id = "cheesewheel" - result = null - required_reagents = list("milk" = 40) - catalysts = list("enzyme" = 5) - result_amount = 1 - -/datum/chemical_reaction/food/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) - return - -/datum/chemical_reaction/food/meatball - name = "Meatball" - id = "meatball" - result = null - required_reagents = list("protein" = 3, "flour" = 5) - result_amount = 3 - -/datum/chemical_reaction/food/meatball/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/meatball(location) - return - -/datum/chemical_reaction/food/dough - name = "Dough" - id = "dough" - result = null - required_reagents = list("egg" = 3, "flour" = 10) - inhibitors = list("water" = 1, "beer" = 1) //To prevent it messing with batter recipes - result_amount = 1 - -/datum/chemical_reaction/food/dough/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/dough(location) - return - -/datum/chemical_reaction/food/syntiflesh - name = "Syntiflesh" - id = "syntiflesh" - result = null - required_reagents = list("blood" = 5, "clonexadone" = 5) - result_amount = 1 - -/datum/chemical_reaction/food/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) - return - -/datum/chemical_reaction/hot_ramen - name = "Hot Ramen" - id = "hot_ramen" - result = "hot_ramen" - required_reagents = list("water" = 1, "dry_ramen" = 3) - result_amount = 3 - -/datum/chemical_reaction/hell_ramen - name = "Hell Ramen" - id = "hell_ramen" - result = "hell_ramen" - required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) - result_amount = 6 - -/* Alcohol */ - -/datum/chemical_reaction/drinks/goldschlager - name = "Goldschlager" - id = "goldschlager" - result = "goldschlager" - required_reagents = list("vodka" = 10, "gold" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/patron - name = "Patron" - id = "patron" - result = "patron" - required_reagents = list("tequilla" = 10, "silver" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/bilk - name = "Bilk" - id = "bilk" - result = "bilk" - required_reagents = list("milk" = 1, "beer" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/icetea - name = "Iced Tea" - id = "icetea" - result = "icetea" - required_reagents = list("ice" = 1, "tea" = 2) - result_amount = 3 - -/datum/chemical_reaction/drinks/icecoffee - name = "Iced Coffee" - id = "icecoffee" - result = "icecoffee" - required_reagents = list("ice" = 1, "coffee" = 2) - result_amount = 3 - -/datum/chemical_reaction/drinks/nuka_cola - name = "Nuclear Cola" - id = "nuka_cola" - result = "nuka_cola" - required_reagents = list("uranium" = 1, "cola" = 5) - result_amount = 5 - -/datum/chemical_reaction/drinks/moonshine - name = "Moonshine" - id = "moonshine" - result = "moonshine" - required_reagents = list("nutriment" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/grenadine - name = "Grenadine Syrup" - id = "grenadine" - result = "grenadine" - required_reagents = list("berryjuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/wine - name = "Wine" - id = "wine" - result = "wine" - required_reagents = list("grapejuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/pwine - name = "Poison Wine" - id = "pwine" - result = "pwine" - required_reagents = list("poisonberryjuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/melonliquor - name = "Melon Liquor" - id = "melonliquor" - result = "melonliquor" - required_reagents = list("watermelonjuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/bluecuracao - name = "Blue Curacao" - id = "bluecuracao" - result = "bluecuracao" - required_reagents = list("orangejuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/spacebeer - name = "Space Beer" - id = "spacebeer" - result = "beer" - required_reagents = list("cornoil" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/vodka - name = "Vodka" - id = "vodka" - result = "vodka" - required_reagents = list("potatojuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/cider - name = "Cider" - id = "cider" - result = "cider" - required_reagents = list("applejuice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - - -/datum/chemical_reaction/drinks/sake - name = "Sake" - id = "sake" - result = "sake" - required_reagents = list("rice" = 10) - catalysts = list("enzyme" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/kahlua - name = "Kahlua" - id = "kahlua" - result = "kahlua" - required_reagents = list("coffee" = 5, "sugar" = 5) - catalysts = list("enzyme" = 5) - result_amount = 5 - -/datum/chemical_reaction/drinks/gin_tonic - name = "Gin and Tonic" - id = "gintonic" - result = "gintonic" - required_reagents = list("gin" = 2, "tonic" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/cuba_libre - name = "Cuba Libre" - id = "cubalibre" - result = "cubalibre" - required_reagents = list("rum" = 2, "cola" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/martini - name = "Classic Martini" - id = "martini" - result = "martini" - required_reagents = list("gin" = 2, "vermouth" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/vodkamartini - name = "Vodka Martini" - id = "vodkamartini" - result = "vodkamartini" - required_reagents = list("vodka" = 2, "vermouth" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/white_russian - name = "White Russian" - id = "whiterussian" - result = "whiterussian" - required_reagents = list("blackrussian" = 2, "cream" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/whiskey_cola - name = "Whiskey Cola" - id = "whiskeycola" - result = "whiskeycola" - required_reagents = list("whiskey" = 2, "cola" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/screwdriver - name = "Screwdriver" - id = "screwdrivercocktail" - result = "screwdrivercocktail" - required_reagents = list("vodka" = 2, "orangejuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/bloody_mary - name = "Bloody Mary" - id = "bloodymary" - result = "bloodymary" - required_reagents = list("vodka" = 2, "tomatojuice" = 3, "limejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/gargle_blaster - name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - result = "gargleblaster" - required_reagents = list("vodka" = 2, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/brave_bull - name = "Brave Bull" - id = "bravebull" - result = "bravebull" - required_reagents = list("tequilla" = 2, "kahlua" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/tequilla_sunrise - name = "Tequilla Sunrise" - id = "tequillasunrise" - result = "tequillasunrise" - required_reagents = list("tequilla" = 2, "orangejuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/phoron_special - name = "Toxins Special" - id = "phoronspecial" - result = "phoronspecial" - required_reagents = list("rum" = 2, "vermouth" = 2, "phoron" = 2) - result_amount = 6 - -/datum/chemical_reaction/drinks/beepsky_smash - name = "Beepksy Smash" - id = "beepksysmash" - result = "beepskysmash" - required_reagents = list("limejuice" = 1, "whiskey" = 1, "iron" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/doctor_delight - name = "The Doctor's Delight" - id = "doctordelight" - result = "doctorsdelight" - required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 2, "tricordrazine" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/irish_cream - name = "Irish Cream" - id = "irishcream" - result = "irishcream" - required_reagents = list("whiskey" = 2, "cream" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/manly_dorf - name = "The Manly Dorf" - id = "manlydorf" - result = "manlydorf" - required_reagents = list ("beer" = 1, "ale" = 2) - result_amount = 3 - -/datum/chemical_reaction/drinks/hooch - name = "Hooch" - id = "hooch" - result = "hooch" - required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/irish_coffee - name = "Irish Coffee" - id = "irishcoffee" - result = "irishcoffee" - required_reagents = list("irishcream" = 1, "coffee" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/b52 - name = "B-52" - id = "b52" - result = "b52" - required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/atomicbomb - name = "Atomic Bomb" - id = "atomicbomb" - result = "atomicbomb" - required_reagents = list("b52" = 10, "uranium" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/margarita - name = "Margarita" - id = "margarita" - result = "margarita" - required_reagents = list("tequilla" = 2, "limejuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/longislandicedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - result = "longislandicedtea" - required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) - result_amount = 6 - -/datum/chemical_reaction/drinks/icedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - result = "longislandicedtea" - required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) - result_amount = 6 - -/datum/chemical_reaction/drinks/threemileisland - name = "Three Mile Island Iced Tea" - id = "threemileisland" - result = "threemileisland" - required_reagents = list("longislandicedtea" = 10, "uranium" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/whiskeysoda - name = "Whiskey Soda" - id = "whiskeysoda" - result = "whiskeysoda" - required_reagents = list("whiskey" = 2, "sodawater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/black_russian - name = "Black Russian" - id = "blackrussian" - result = "blackrussian" - required_reagents = list("vodka" = 2, "kahlua" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/manhattan - name = "Manhattan" - id = "manhattan" - result = "manhattan" - required_reagents = list("whiskey" = 2, "vermouth" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/manhattan_proj - name = "Manhattan Project" - id = "manhattan_proj" - result = "manhattan_proj" - required_reagents = list("manhattan" = 10, "uranium" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/vodka_tonic - name = "Vodka and Tonic" - id = "vodkatonic" - result = "vodkatonic" - required_reagents = list("vodka" = 2, "tonic" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/gin_fizz - name = "Gin Fizz" - id = "ginfizz" - result = "ginfizz" - required_reagents = list("gin" = 1, "sodawater" = 1, "limejuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/bahama_mama - name = "Bahama mama" - id = "bahama_mama" - result = "bahama_mama" - required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/singulo - name = "Singulo" - id = "singulo" - result = "singulo" - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/alliescocktail - name = "Allies Cocktail" - id = "alliescocktail" - result = "alliescocktail" - required_reagents = list("martini" = 1, "vodka" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/demonsblood - name = "Demons Blood" - id = "demonsblood" - result = "demonsblood" - required_reagents = list("rum" = 3, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/booger - name = "Booger" - id = "booger" - result = "booger" - required_reagents = list("cream" = 2, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/antifreeze - name = "Anti-freeze" - id = "antifreeze" - result = "antifreeze" - required_reagents = list("vodka" = 1, "cream" = 1, "ice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/barefoot - name = "Barefoot" - id = "barefoot" - result = "barefoot" - required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/grapesoda - name = "Grape Soda" - id = "grapesoda" - result = "grapesoda" - required_reagents = list("grapejuice" = 2, "cola" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/sbiten - name = "Sbiten" - id = "sbiten" - result = "sbiten" - required_reagents = list("vodka" = 10, "capsaicin" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/red_mead - name = "Red Mead" - id = "red_mead" - result = "red_mead" - required_reagents = list("blood" = 1, "mead" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/mead - name = "Mead" - id = "mead" - result = "mead" - required_reagents = list("sugar" = 1, "water" = 1) - catalysts = list("enzyme" = 5) - result_amount = 2 - -/datum/chemical_reaction/drinks/iced_beer - name = "Iced Beer" - id = "iced_beer" - result = "iced_beer" - required_reagents = list("beer" = 10, "frostoil" = 1) - result_amount = 10 - -/datum/chemical_reaction/drinks/iced_beer2 - name = "Iced Beer" - id = "iced_beer" - result = "iced_beer" - required_reagents = list("beer" = 5, "ice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/grog - name = "Grog" - id = "grog" - result = "grog" - required_reagents = list("rum" = 1, "water" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/soy_latte - name = "Soy Latte" - id = "soy_latte" - result = "soy_latte" - required_reagents = list("coffee" = 1, "soymilk" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/cafe_latte - name = "Cafe Latte" - id = "cafe_latte" - result = "cafe_latte" - required_reagents = list("coffee" = 1, "milk" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/acidspit - name = "Acid Spit" - id = "acidspit" - result = "acidspit" - required_reagents = list("sacid" = 1, "wine" = 5) - result_amount = 6 - -/datum/chemical_reaction/drinks/amasec - name = "Amasec" - id = "amasec" - result = "amasec" - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/changelingsting - name = "Changeling Sting" - id = "changelingsting" - result = "changelingsting" - required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/aloe - name = "Aloe" - id = "aloe" - result = "aloe" - required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/andalusia - name = "Andalusia" - id = "andalusia" - result = "andalusia" - required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/snowwhite - name = "Snow White" - id = "snowwhite" - result = "snowwhite" - required_reagents = list("pineapplejuice" = 1, "rum" = 1, "lemon_lime" = 1, "egg" = 1, "kahlua" = 1, "sugar" = 1) //VoreStation Edit - result_amount = 2 - -/datum/chemical_reaction/drinks/irishcarbomb - name = "Irish Car Bomb" - id = "irishcarbomb" - result = "irishcarbomb" - required_reagents = list("ale" = 1, "irishcream" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/syndicatebomb - name = "Syndicate Bomb" - id = "syndicatebomb" - result = "syndicatebomb" - required_reagents = list("beer" = 1, "whiskeycola" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - result = "erikasurprise" - required_reagents = list("ale" = 2, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/devilskiss - name = "Devils Kiss" - id = "devilskiss" - result = "devilskiss" - required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/hippiesdelight - name = "Hippies Delight" - id = "hippiesdelight" - result = "hippiesdelight" - required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/bananahonk - name = "Banana Honk" - id = "bananahonk" - result = "bananahonk" - required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/silencer - name = "Silencer" - id = "silencer" - result = "silencer" - required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/driestmartini - name = "Driest Martini" - id = "driestmartini" - result = "driestmartini" - required_reagents = list("nothing" = 1, "gin" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/lemonade - name = "Lemonade" - id = "lemonade" - result = "lemonade" - required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/melonade - name = "Melonade" - id = "melonade" - result = "melonade" - required_reagents = list("watermelonjuice" = 1, "sugar" = 1, "sodawater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/appleade - name = "Appleade" - id = "appleade" - result = "appleade" - required_reagents = list("applejuice" = 1, "sugar" = 1, "sodawater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/pineappleade - name = "Pineappleade" - id = "pineappleade" - result = "pineappleade" - required_reagents = list("pineapplejuice" = 2, "limejuice" = 1, "sodawater" = 2, "honey" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/driverspunch - name = "Driver`s Punch" - id = "driverspunch" - result = "driverspunch" - required_reagents = list("appleade" = 2, "orangejuice" = 1, "mint" = 1, "sodawater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/mintapplesparkle - name = "Mint Apple Sparkle" - id = "mintapplesparkle" - result = "mintapplesparkle" - required_reagents = list("appleade" = 2, "mint" = 1) - inhibitors = list("sodawater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/berrycordial - name = "Berry Cordial" - id = "berrycordial" - result = "berrycordial" - required_reagents = list("berryjuice" = 4, "sugar" = 1, "lemonjuice" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/tropicalfizz - name = "Tropical Fizz" - id = "tropicalfizz" - result = "tropicalfizz" - required_reagents = list("sodawater" = 6, "berryjuice" = 1, "mint" = 1, "limejuice" = 1, "lemonjuice" = 1, "pineapplejuice" = 1) - inhibitors = list("sugar" = 1) - result_amount = 8 - -/datum/chemical_reaction/drinks/melonspritzer - name = "Melon Spritzer" - id = "melonspritzer" - result = "melonspritzer" - required_reagents = list("watermelonjuice" = 2, "wine" = 2, "applejuice" = 1, "limejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/fauxfizz - name = "Faux Fizz" - id = "fauxfizz" - result = "fauxfizz" - required_reagents = list("sodawater" = 2, "berryjuice" = 1, "applejuice" = 1, "limejuice" = 1, "honey" = 1) - inhibitors = list("sugar" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/firepunch - name = "Fire Punch" - id = "firepunch" - result = "firepunch" - required_reagents = list("sugar" = 1, "rum" = 2) - result_amount = 3 - -/datum/chemical_reaction/drinks/kiraspecial - name = "Kira Special" - id = "kiraspecial" - result = "kiraspecial" - required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/brownstar - name = "Brown Star" - id = "brownstar" - result = "brownstar" - required_reagents = list("orangejuice" = 2, "cola" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/milkshake - name = "Milkshake" - id = "milkshake" - result = "milkshake" - required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) - result_amount = 5 - -/datum/chemical_reaction/drinks/peanutmilkshake - name = "Peanutbutter Milkshake" - id = "peanutmilkshake" - result = "peanutmilkshake" - required_reagents = list("cream" = 1, "ice" = 1, "peanutbutter" = 2, "milk" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/rewriter - name = "Rewriter" - id = "rewriter" - result = "rewriter" - required_reagents = list("spacemountainwind" = 1, "coffee" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/suidream - name = "Sui Dream" - id = "suidream" - result = "suidream" - required_reagents = list("space_up" = 1, "bluecuracao" = 1, "melonliquor" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/shirleytemple - name = "Shirley Temple" - id = "shirley_temple" - result = "shirley_temple" - required_reagents = list("gingerale" = 4, "grenadine" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/royrogers - name = "Roy Rogers" - id = "roy_rogers" - result = "roy_rogers" - required_reagents = list("shirley_temple" = 5, "lemon_lime" = 2) - result_amount = 7 - -/datum/chemical_reaction/drinks/collinsmix - name = "Collins Mix" - id = "collins_mix" - result = "collins_mix" - required_reagents = list("lemon_lime" = 3, "sodawater" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/arnoldpalmer - name = "Arnold Palmer" - id = "arnold_palmer" - result = "arnold_palmer" - required_reagents = list("icetea" = 1, "lemonade" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/minttea - name = "Mint Tea" - id = "minttea" - result = "minttea" - required_reagents = list("tea" = 5, "mint" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/lemontea - name = "Lemon Tea" - id = "lemontea" - result = "lemontea" - required_reagents = list("tea" = 5, "lemonjuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/limetea - name = "Lime Tea" - id = "limetea" - result = "limetea" - required_reagents = list("tea" = 5, "limejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/orangetea - name = "Orange Tea" - id = "orangetea" - result = "orangetea" - required_reagents = list("tea" = 5, "orangejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/berrytea - name = "Berry Tea" - id = "berrytea" - result = "berrytea" - required_reagents = list("tea" = 5, "berryjuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/sakebomb - name = "Sake Bomb" - id = "sakebomb" - result = "sakebomb" - required_reagents = list("beer" = 2, "sake" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/tamagozake - name = "Tamagozake" - id = "tamagozake" - result = "tamagozake" - required_reagents = list("sake" = 10, "sugar" = 5, "egg" = 3) - result_amount = 15 - -/datum/chemical_reaction/drinks/ginzamary - name = "Ginza Mary" - id = "ginzamary" - result = "ginzamary" - required_reagents = list("sake" = 2, "vodka" = 2, "tomatojuice" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/tokyorose - name = "Tokyo Rose" - id = "tokyorose" - result = "tokyorose" - required_reagents = list("sake" = 1, "berryjuice" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/saketini - name = "Saketini" - id = "saketini" - result = "saketini" - required_reagents = list("sake" = 1, "gin" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/elysiumfacepunch - name = "Elysium Facepunch" - id = "elysiumfacepunch" - result = "elysiumfacepunch" - required_reagents = list("kahlua" = 1, "lemonjuice" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/erebusmoonrise - name = "Erebus Moonrise" - id = "erebusmoonrise" - result = "erebusmoonrise" - required_reagents = list("whiskey" = 1, "vodka" = 1, "tequilla" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/balloon - name = "Balloon" - id = "balloon" - result = "balloon" - required_reagents = list("cream" = 1, "bluecuracao" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/natunabrandy - name = "Natuna Brandy" - id = "natunabrandy" - result = "natunabrandy" - required_reagents = list("beer" = 1, "sodawater" = 2) - result_amount = 3 - -/datum/chemical_reaction/drinks/euphoria - name = "Euphoria" - id = "euphoria" - result = "euphoria" - required_reagents = list("specialwhiskey" = 1, "cognac" = 2) - result_amount = 3 - -/datum/chemical_reaction/drinks/xanaducannon - name = "Xanadu Cannon" - id = "xanaducannon" - result = "xanaducannon" - required_reagents = list("ale" = 1, "dr_gibb" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/debugger - name = "Debugger" - id = "debugger" - result = "debugger" - required_reagents = list("fuel" = 1, "sugar" = 2, "cornoil" = 2) - result_amount = 5 - -/datum/chemical_reaction/drinks/spacersbrew - name = "Spacer's Brew" - id = "spacersbrew" - result = "spacersbrew" - required_reagents = list("brownstar" = 4, "ethanol" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/binmanbliss - name = "Binman Bliss" - id = "binmanbliss" - result = "binmanbliss" - required_reagents = list("sake" = 1, "tequilla" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/chrysanthemum - name = "Chrysanthemum" - id = "chrysanthemum" - result = "chrysanthemum" - required_reagents = list("sake" = 1, "melonliquor" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/deathbell - name = "Deathbell" - id = "deathbell" - result = "deathbell" - required_reagents = list("antifreeze" = 1, "gargleblaster" = 1, "syndicatebomb" =1) - result_amount = 3 - -/datum/chemical_reaction/bitters - name = "Bitters" - id = "bitters" - result = "bitters" - required_reagents = list("mint" = 5) - catalysts = list("enzyme" = 5) - result_amount = 5 - -/datum/chemical_reaction/drinks/soemmerfire - name = "Soemmer Fire" - id = "soemmerfire" - result = "soemmerfire" - required_reagents = list("manhattan" = 2, "condensedcapsaicin" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/winebrandy - name = "Wine brandy" - id = "winebrandy" - result = "winebrandy" - required_reagents = list("wine" = 10) - catalysts = list("enzyme" = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe - result_amount = 5 - -/datum/chemical_reaction/drinks/lovepotion - name = "Love Potion" - id = "lovepotion" - result = "lovepotion" - required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/morningafter - name = "Morning After" - id = "morningafter" - result = "morningafter" - required_reagents = list("sbiten" = 1, "coffee" = 5) - result_amount = 6 - -/datum/chemical_reaction/drinks/vesper - name = "Vesper" - id = "vesper" - result = "vesper" - required_reagents = list("gin" = 3, "vodka" = 1, "wine" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/rotgut - name = "Rotgut Fever Dream" - id = "rotgut" - result = "rotgut" - required_reagents = list("vodka" = 3, "rum" = 1, "whiskey" = 1, "cola" = 3) - result_amount = 8 - -/datum/chemical_reaction/drinks/entdraught - name = "Ent's Draught" - id = "entdraught" - result = "entdraught" - required_reagents = list("tonic" = 1, "holywater" = 1, "honey" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/voxdelight - name = "Vox's Delight" - id = "voxdelight" - result = "voxdelight" - required_reagents = list("phoron" = 3, "fuel" = 1, "water" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/screamingviking - name = "Screaming Viking" - id = "screamingviking" - result = "screamingviking" - required_reagents = list("martini" = 2, "vodkatonic" = 2, "limejuice" = 1, "rum" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/vilelemon - name = "Vile Lemon" - id = "vilelemon" - result = "vilelemon" - required_reagents = list("lemonade" = 5, "spacemountainwind" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/dreamcream - name = "Dream Cream" - id = "dreamcream" - result = "dreamcream" - required_reagents = list("milk" = 2, "cream" = 1, "honey" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/robustin - name = "Robustin" - id = "robustin" - result = "robustin" - required_reagents = list("antifreeze" = 1, "phoron" = 1, "fuel" = 1, "vodka" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/virginsip - name = "Virgin Sip" - id = "virginsip" - result = "virginsip" - required_reagents = list("driestmartini" = 1, "water" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/chocoshake - name = "Chocolate Milkshake" - id = "chocoshake" - result = "chocoshake" - required_reagents = list("milkshake" = 1, "coco" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/berryshake - name = "Berry Milkshake" - id = "berryshake" - result = "berryshake" - required_reagents = list("milkshake" = 1, "berryjuice" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/coffeeshake - name = "Coffee Milkshake" - id = "coffeeshake" - result = "coffeeshake" - required_reagents = list("milkshake" = 1, "coffee" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/jellyshot - name = "Jelly Shot" - id = "jellyshot" - result = "jellyshot" - required_reagents = list("cherryjelly" = 4, "vodka" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/slimeshot - name = "Named Bullet" - id = "slimeshot" - result = "slimeshot" - required_reagents = list("slimejelly" = 4, "vodka" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/negroni - name = "Negroni" - id = "negroni" - result = "negroni" - required_reagents = list("gin" = 1, "bitters" = 1, "vermouth" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/cloverclub - name = "Clover Club" - id = "cloverclub" - result = "cloverclub" - required_reagents = list("berryjuice" = 1, "lemonjuice" = 1, "gin" = 3) - result_amount = 5 - -/datum/chemical_reaction/drinks/oldfashioned - name = "Old Fashioned" - id = "oldfashioned" - result = "oldfashioned" - required_reagents = list("whiskey" = 3, "bitters" = 1, "sugar" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/whiskeysour - name = "Whiskey Sour" - id = "whiskeysour" - result = "whiskeysour" - required_reagents = list("whiskey" = 2, "lemonjuice" = 1, "sugar" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/daiquiri - name = "Daiquiri" - id = "daiquiri" - result = "daiquiri" - required_reagents = list("rum" = 3, "limejuice" = 2, "sugar" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/mintjulep - name = "Mint Julep" - id = "mintjulep" - result = "mintjulep" - required_reagents = list("whiskey" = 2, "water" = 1, "mint" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/paloma - name = "Paloma" - id = "paloma" - result = "paloma" - required_reagents = list("orangejuice" = 1, "sodawater" = 1, "tequilla" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/mojito - name = "Mojito" - id = "mojito" - result = "mojito" - required_reagents = list("rum" = 3, "limejuice" = 1, "mint" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/virginmojito - name = "Mojito" - id = "virginmojito" - result = "virginmojito" - required_reagents = list("sodawater" = 3, "limejuice" = 1, "mint" = 1, "sugar" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/piscosour - name = "Pisco Sour" - id = "piscosour" - result = "piscosour" - required_reagents = list("winebrandy" = 1, "lemonjuice" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/coldfront - name = "Cold Front" - id = "coldfront" - result = "coldfront" - required_reagents = list("icecoffee" = 1, "whiskey" = 1, "mint" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/godsake - name = "Gods Sake" - id = "godsake" - result = "godsake" - required_reagents = list("sake" = 2, "holywater" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/godka //Why you would put this in your body, I don't know. - name = "Godka" - id = "godka" - result = "godka" - required_reagents = list("vodka" = 1, "holywater" = 1, "ethanol" = 1, "carthatoline" = 1) - catalysts = list("enzyme" = 5, "holywater" = 5) - result_amount = 1 - -/datum/chemical_reaction/drinks/holywine - name = "Angel Ichor" - id = "holywine" - result = "holywine" - required_reagents = list("grapejuice" = 5, "gold" = 5) - catalysts = list("holywater" = 5) - result_amount = 10 - -/datum/chemical_reaction/drinks/holy_mary - name = "Holy Mary" - id = "holymary" - result = "holymary" - required_reagents = list("vodka" = 2, "holywine" = 3, "limejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/angelskiss - name = "Angels Kiss" - id = "angelskiss" - result = "angelskiss" - required_reagents = list("holywine" = 1, "kahlua" = 1, "rum" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/angelswrath - name = "Angels Wrath" - id = "angelswrath" - result = "angelswrath" - required_reagents = list("rum" = 3, "spacemountainwind" = 1, "holywine" = 1, "dr_gibb" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/ichor_mead - name = "Ichor Mead" - id = "ichor_mead" - result = "ichor_mead" - required_reagents = list("holywine" = 1, "mead" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/oilslick - name = "Oil Slick" - id = "oilslick" - result = "oilslick" - required_reagents = list("cornoil" = 2, "honey" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/slimeslam - name = "Slick Slime Slammer" - id = "slimeslammer" - result = "slimeslammer" - required_reagents = list("cornoil" = 2, "peanutbutter" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/virginsexonthebeach - name = "Virgin Sex On The Beach" - id = "virginsexonthebeach" - result = "virginsexonthebeach" - required_reagents = list("orangejuice" = 3, "grenadine" = 2) - result_amount = 5 - -/datum/chemical_reaction/drinks/sexonthebeach - name = "Sex On The Beach" - id = "sexonthebeach" - result = "sexonthebeach" - required_reagents = list("virginsexonthebeach" = 5, "vodka" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/eggnog - name = "Eggnog" - id = "eggnog" - result = "eggnog" - required_reagents = list("milk" = 5, "cream" = 5, "sugar" = 5, "egg" = 3) - result_amount = 15 - -/datum/chemical_reaction/drinks/nuclearwaste_radium - name = "Nuclear Waste" - id = "nuclearwasterad" - result = "nuclearwaste" - required_reagents = list("oilslick" = 1, "radium" = 1, "limejuice" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/nuclearwaste_uranium - name = "Nuclear Waste" - id = "nuclearwasteuran" - result = "nuclearwaste" - required_reagents = list("oilslick" = 2, "uranium" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/sodaoil - name = "Soda Oil" - id = "sodaoil" - result = "sodaoil" - required_reagents = list("cornoil" = 4, "sodawater" = 1, "carbon" = 1, "tricordrazine" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/fusionnaire - name = "Fusionnaire" - id = "fusionnaire" - result = "fusionnaire" - required_reagents = list("lemonjuice" = 3, "vodka" = 2, "schnapps_pep" = 1, "schnapps_lem" = 1, "rum" = 1, "ice" = 1) - result_amount = 9 - -//R-UST Port -/datum/chemical_reaction/hyrdophoron - name = "Hydrophoron" - id = "hydrophoron" - result = "hydrophoron" - required_reagents = list("hydrogen" = 1, "phoron" = 1) - inhibitors = list("nitrogen" = 1) //So it doesn't mess with lexorin - result_amount = 2 - -/datum/chemical_reaction/deuterium - name = "Deuterium" - id = "deuterium" - result = null - required_reagents = list("hydrophoron" = 5, "water" = 10) - result_amount = 15 - -/datum/chemical_reaction/deuterium/on_reaction(var/datum/reagents/holder, var/created_volume) - var/turf/T = get_turf(holder.my_atom) - if(istype(T)) new /obj/item/stack/material/deuterium(T, created_volume) - return - -//Skrellian crap. -/datum/chemical_reaction/talum_quem - name = "Talum-quem" - id = "talum_quem" - result = "talum_quem" - required_reagents = list("space_drugs" = 2, "sugar" = 1, "amatoxin" = 1) - result_amount = 4 - -/datum/chemical_reaction/qerr_quem - name = "Qerr-quem" - id = "qerr_quem" - result = "qerr_quem" - required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2) - result_amount = 4 - -/datum/chemical_reaction/malish_qualem - name = "Malish-Qualem" - id = "malish-qualem" - result = "malish-qualem" - required_reagents = list("immunosuprizine" = 1, "qerr_quem" = 1, "inaprovaline" = 1) - catalysts = list("phoron" = 5) - result_amount = 2 - -// Biomass, for cloning and bioprinters -/datum/chemical_reaction/biomass - name = "Biomass" - id = "biomass" - result = "biomass" - required_reagents = list("protein" = 1, "sugar" = 1, "phoron" = 1) - result_amount = 1 // Roughly 20u per phoron sheet - -// Neutralization. - -/datum/chemical_reaction/neutralize_neurotoxic_protein - name = "Neutralize Toxic Proteins" - id = "neurotoxic_protein_neutral" - result = "protein" - required_reagents = list("anti_toxin" = 1, "neurotoxic_protein" = 2) - result_amount = 2 - -/datum/chemical_reaction/neutralize_carpotoxin - name = "Neutralize Carpotoxin" - id = "carpotoxin_neutral" - result = "protein" - required_reagents = list("radium" = 1, "carpotoxin" = 1, "sifsap" = 1) - catalysts = list("sifsap" = 10) - result_amount = 2 - -/datum/chemical_reaction/neutralize_spidertoxin - name = "Neutralize Spidertoxin" - id = "spidertoxin_neutral" - result = "protein" - required_reagents = list("radium" = 1, "spidertoxin" = 1, "sifsap" = 1) - catalysts = list("sifsap" = 10) - result_amount = 2 - -/* -==================== - Aurora Food -==================== -*/ - -/datum/chemical_reaction/coating/batter - name = "Batter" - id = "batter" - result = "batter" - required_reagents = list("egg" = 3, "flour" = 10, "water" = 5, "sodiumchloride" = 2) - result_amount = 20 - -/datum/chemical_reaction/coating/beerbatter - name = "Beer Batter" - id = "beerbatter" - result = "beerbatter" - required_reagents = list("egg" = 3, "flour" = 10, "beer" = 5, "sodiumchloride" = 2) - result_amount = 20 - -/datum/chemical_reaction/browniemix - name = "Brownie Mix" - id = "browniemix" - result = "browniemix" - required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5) - result_amount = 15 - -/datum/chemical_reaction/butter - name = "Butter" - id = "butter" - result = null - required_reagents = list("cream" = 20, "sodiumchloride" = 1) - result_amount = 1 - -/datum/chemical_reaction/butter/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/spreads/butter(location) - return - -/datum/chemical_reaction/browniemix - name = "Brownie Mix" - id = "browniemix" - result = "browniemix" - required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5) - result_amount = 15 diff --git a/code/modules/reagents/Chemistry-Recipes_ch.dm b/code/modules/reagents/Chemistry-Recipes_ch.dm deleted file mode 100644 index 5ad0deedd7..0000000000 --- a/code/modules/reagents/Chemistry-Recipes_ch.dm +++ /dev/null @@ -1,302 +0,0 @@ -/datum/chemical_reaction/claridyl - name = "claridyl" - id = "claridyl" - result = "claridyl" - required_reagents = list("lithium" = 1, "radium" = 1, "sugar" = 1) - result_amount = 1 - -/datum/chemical_reaction/dyloteane - name = "dyloteane" - id = "dyloteane" - result = "dyloteane" - required_reagents = list("anti_toxin" = 1, "tea" = 1) - result_amount = 1 - -/datum/chemical_reaction/dyloteane/super - name = "dyloteanesuper" - id = "dyloteanesuper" - result = "dyloteane" - required_reagents = list("anti_toxin" = 1, "tea" = 1,"sugar" = 1) - result_amount = 10 //by the powers of england for sugaring your tea you gain *10 result - -/datum/chemical_reaction/eden - name = "eden" - id = "eden" - result = "eden" - required_reagents = list("anti_toxin" = 60, "phoron" = 60) - result_amount = 1 - -/datum/chemical_reaction/eden/snake - id = "eden_snake" - result = "eden_snake" - required_reagents = list("eden" = 1, "ethanol" = 1) - -/datum/chemical_reaction/tercozolam - id = "tercozolam" - result = "tercozolam" - required_reagents = list("anti_toxin" = 1, "ethanol" = 1, "lithium" = 1) - result_amount = 3 - -/datum/chemical_reaction/peridaxon_ch - name = "Peridaxon" - id = "peridaxon_ch" - result = "peridaxon" - required_reagents = list("cordradaxon" = 1, "gastirodaxon" = 1, "hepanephrodaxon" = 1, "respirodaxon" = 1) - result_amount = 12 //More phoron-efficient alternative recipe. - -///SAP RECIPES////// - -/datum/chemical_reaction/myelamine_sap //This is the clotting agent used by clotting packs. - name = "Myelamine" - id = "myelamine" - result = "myelamine" - required_reagents = list("bicaridine" = 1, "iron" = 2, "kelotane" = 1, "bluesap" = 1) - result_amount = 1 - -/datum/chemical_reaction/hannoa - name = "Hannoa" - id = "hannoa" - result = "hannoa" - required_reagents = list("purplesap" = 1, "iron" = 2, "kelotane" = 1, "carbon" = 1) - result_amount = 1 - -/datum/chemical_reaction/bullvalene - name = "Bullvalene" - id = "bullvalene" - result = "bullvalene" - required_reagents = list("dermaline" = 1, "orangesap" = 1, "Copper" = 1) - result_amount = 1 - -/datum/chemical_reaction/nutrient - name = "Nutriment" - id = "nutriment" - result = "nutriment" - required_reagents = list("purplesap" = 1, "orangesap" = 1, "bluesap" = 1) - result_amount = 3 - -/////SERAZINE RECIPES////// - -/datum/chemical_reaction/alizine - name = "Alizine" - id = "alizine" - result = "alizine" - required_reagents = list("bicaridine" = 1, "serazine" = 1, "tungsten" = 1) - result_amount = 3 - -/////GENDER CHANGE RECIPES///// - -/datum/chemical_reaction/change_drug/male - name = "Elixer of Change" - id = "change_drug_male" - result = "change_drug_male" - required_reagents = list("blood" = 1, "mutagen" = 1, "iron" = 1) - result_amount = 1 - -/datum/chemical_reaction/change_drug/female - name = "Elixer of Change" - id = "change_drug_female" - result = "change_drug_female" - required_reagents = list("blood" = 1, "mutagen" = 1, "sugar" = 1) - result_amount = 1 - -/datum/chemical_reaction/change_drug/intersex - name = "Elixer of Change" - id = "change_drug_intersex" - result = "change_drug_intersex" - required_reagents = list("change_drug_male" = 1, "change_drug_female" = 1) - result_amount = 1 - -//////////////////////////////////////////////// -/////////DRINKS//////////////////////////////// -////////////////////////////////////////////// - -/datum/chemical_reaction/drinks/minttea - name = "Mint Tea" - id = "minttea" - result = "minttea" - required_reagents = list("tea" = 5, "mint" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/lemontea - name = "Lemon Tea" - id = "lemontea" - result = "lemontea" - required_reagents = list("tea" = 5, "lemonjuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/limetea - name = "Lime Tea" - id = "limetea" - result = "limetea" - required_reagents = list("tea" = 5, "limejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/orangetea - name = "Orange Tea" - id = "orangetea" - result = "orangetea" - required_reagents = list("tea" = 5, "orangejuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/berrytea - name = "Berry Tea" - id = "berrytea" - result = "berrytea" - required_reagents = list("tea" = 5, "berryjuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/cherrytea - name = "Cherry Tea" - id = "cherrytea" - result = "cherrytea" - required_reagents = list("tea" = 5, "cherryjelly" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/watermelontea - name = "Watermelon Tea" - id = "watermelontea" - result = "watermelontea" - required_reagents = list("tea" = 5, "watermelonjuice" = 1) - result_amount = 6 - -/datum/chemical_reaction/tea/matcha_latte - id = "matcha_latte" - result = "matcha_latte" - required_reagents = list ("matchapowder" = 1, "milk" = 5) - result_amount = 5 - -/datum/chemical_reaction/freshtea/green - id = "freshteagreen" - result = "freshteagreen" - required_reagents = list ("tealeavesgreen" = 1, "hotwater" = 9) - result_amount = 10 - -/datum/chemical_reaction/instantteapowder/green - id = "instantteapowdergreen" - result = "instantteapowdergreen" - required_reagents = list ("teamush" = 10, "frostoil" = 1) - result_amount = 10 - -/datum/chemical_reaction/instanttea/green - id = "instantteagreen" - result = "instantteagreen" - required_reagents = list ("instantteapowdergreen" = 1, "water" = 9) - result_amount = 10 - -/datum/chemical_reaction/matcha - id = "matcha" - result = "matcha" - required_reagents = list ("matchapowder" = 1, "hotwater" = 2) - result_amount = 2 - -/datum/chemical_reaction/drinks/spiderdrink - name = "Brimming glass of spiders" - id = "spiderdrink" - result = "spiderdrink" - required_reagents = list("spidertoxin" = 1, "clonexadone" = 5, "absinthe" = 4) - result_amount = 10 - -/datum/chemical_reaction/drinks/bubbleteawatermelon - name = "Watermelon bubble tea" - id = "bubbleteawatermelon" - result = "bubbleteawatermelon" - required_reagents = list("gelatin" = 2, "watermelontea" = 6, "milk" = 2) - result_amount = 10 - -/datum/chemical_reaction/drinks/bubbleteastrawberry - name = "Strawberry bubble tea" - id = "bubbleteastrawberry" - result = "bubbleteastrawberry" - required_reagents = list("gelatin" = 2, "berrytea" = 6, "milk" = 2) - result_amount = 10 - -/datum/chemical_reaction/drinks/bubbleteacherry - name = "Cherry bubble tea" - id = "bubbleteacherry" - result = "bubbleteacherry" - required_reagents = list("gelatin" = 2, "cherrytea" = 6, "milk" = 2) - result_amount = 10 - -/datum/chemical_reaction/drinks/bubbleteacoffee - name = "Coffee bubble tea" - id = "bubbleteacoffee" - result = "bubbleteacoffee" - required_reagents = list("gelatin" = 2, "tea" = 5, "cafe_latte" = 3) - result_amount = 10 - -/datum/chemical_reaction/drinks/bubbleteabanana - name = "Banana bubble tea" - id = "bubbleteabanana" - result = "bubbleteabanana" - required_reagents = list("gelatin" = 2, "tea" = 5, "banana" = 1, "milk" = 2) - result_amount = 10 - -/datum/chemical_reaction/drinks/horchata - name = "Horchata" - id = "horchata" - result = "horchata" - required_reagents = list("milk" = 1, "sugar" = 2, "rice" = 2) - result_amount = 5 - -/datum/chemical_reaction/drinks/bluetrain - name = "Blue train" - id = "bluetrain" - result = "bluetrain" - required_reagents = list("coolant" = 2, "ethanol" = 2, "nutriment" = 1) - result_amount = 5 - -/datum/chemical_reaction/drinks/lowpower - name = "The low power" - id = "lowpower" - result = "lowpower" - required_reagents = list("lemonade" = 1, "cream" = 1, "limejuice" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/jackbrew - name = "Jack's brew" - id = "jackbrew" - result = "jackbrew" - required_reagents = list("irishcoffee" = 1, "hyperzine" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/bookwyrm - name = "Bookwyrm's bite" - id = "bookwyrm" - result = "bookwyrm" - required_reagents = list("coldfront" = 1, "limejuice" = 1, "stoxin" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/highpower - name = "The high power" - id = "highpower" - result = "highpower" - required_reagents = list("lowpower" = 1, "iron" = 1, "uranium" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/flapper - name = "Flapper" - id = "flapper" - result = "flapper" - required_reagents = list("whiskey" = 1, "blood" = 1, "ice" = 1) - result_amount = 3 - -/datum/chemical_reaction/toxin/oilslide - name = "Oil slide" - id = "oilslide" - result = "oilslide" - required_reagents = list("moonshine" = 1, "lube" = 1, "fuel" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/sitonmyface - name = "Sit on my face" - id = "sitonmyface" - result = "sitonmyface" - required_reagents = list("kahlua" = 1, "irishcream" = 1, "peanutbutter" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/hachi - name = "Hachi" - id = "hachi" - result = "hachi" - required_reagents = list("burbon" = 2, "sake" = 1, "lemonjuice" = 1, "mushroom" = 1) - result_amount = 5 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Recipes_yw.dm b/code/modules/reagents/Chemistry-Recipes_yw.dm deleted file mode 100644 index 8cf9a31339..0000000000 --- a/code/modules/reagents/Chemistry-Recipes_yw.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/chemical_reaction/drinks/lovepotion_yw - name = "Strawberry Love Potion" - id = "strawberrylovepotion" - result = "strawberrylovepotion" - required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/wormblood - name = "Wormblood" - id = "wormblood" - result = "wormblood" - required_reagents = list("booger" = 1, "psilocybin" = 1) - result_amount = 2 - diff --git a/code/modules/reagents/holder/distilling.dm b/code/modules/reagents/holder/distilling.dm new file mode 100644 index 0000000000..1599f395d9 --- /dev/null +++ b/code/modules/reagents/holder/distilling.dm @@ -0,0 +1,26 @@ +/datum/reagents/distilling/handle_reactions() + if(QDELETED(my_atom)) + return FALSE + if(my_atom.flags & NOREACT) + return FALSE + var/reaction_occurred + var/list/eligible_reactions = list() + var/list/effect_reactions = list() + do + reaction_occurred = FALSE + for(var/i in reagent_list) + var/datum/reagent/R = i + if(SSchemistry.distilled_reactions_by_reagent[R.id]) + eligible_reactions |= SSchemistry.distilled_reactions_by_reagent[R.id] + + for(var/i in eligible_reactions) + var/decl/chemical_reaction/C = i + if(C.can_happen(src) && C.process(src)) + effect_reactions |= C + reaction_occurred = TRUE + eligible_reactions.len = 0 + while(reaction_occurred) + for(var/i in effect_reactions) + var/decl/chemical_reaction/C = i + C.post_reaction(src) + update_total() \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/holder/holder.dm similarity index 94% rename from code/modules/reagents/Chemistry-Holder.dm rename to code/modules/reagents/holder/holder.dm index b987f608b5..b3f56f7e2a 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/holder/holder.dm @@ -14,7 +14,7 @@ //I dislike having these here but map-objects are initialised before world/New() is called. >_> if(!SSchemistry.chemical_reagents) //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id - var/paths = typesof(/datum/reagent) - /datum/reagent + var/paths = subtypesof(/datum/reagent) SSchemistry.chemical_reagents = list() for(var/path in paths) var/datum/reagent/D = new path() @@ -23,7 +23,6 @@ SSchemistry.chemical_reagents[D.id] = D /datum/reagents/Destroy() - STOP_PROCESSING(SSchemistry, src) for(var/datum/reagent/R in reagent_list) qdel(R) reagent_list = null @@ -88,18 +87,18 @@ reaction_occurred = FALSE for(var/i in reagent_list) var/datum/reagent/R = i - if(SSchemistry.chemical_reactions_by_reagent[R.id]) - eligible_reactions |= SSchemistry.chemical_reactions_by_reagent[R.id] + if(SSchemistry.instant_reactions_by_reagent[R.id]) + eligible_reactions |= SSchemistry.instant_reactions_by_reagent[R.id] for(var/i in eligible_reactions) - var/datum/chemical_reaction/C = i + var/decl/chemical_reaction/C = i if(C.can_happen(src) && C.process(src)) effect_reactions |= C reaction_occurred = TRUE eligible_reactions.len = 0 while(reaction_occurred) for(var/i in effect_reactions) - var/datum/chemical_reaction/C = i + var/decl/chemical_reaction/C = i C.post_reaction(src) update_total() @@ -111,7 +110,7 @@ update_total() amount = min(amount, get_free_space()) - + if(istype(my_atom,/obj/item/weapon/reagent_containers/food)) //The following code is targeted specifically at getting allergen reagents into food items, since for the most part they're not applied by default. var/list/add_reagents = list() var/totalnum = 0 @@ -190,7 +189,6 @@ /datum/reagents/proc/del_reagent(var/id) for(var/datum/reagent/current in reagent_list) if (current.id == id) - current.on_remove(my_atom) //YW Edit: Calls on_remove before the last of the thing is done, used in phorochemistry reagent_list -= current qdel(current) update_total() @@ -457,8 +455,10 @@ /* Atom reagent creation - use it all the time */ -/atom/proc/create_reagents(var/max_vol) - reagents = new/datum/reagents(max_vol, src) +/atom/proc/create_reagents(var/max_vol, var/reagents_type = /datum/reagents) + if(!ispath(reagents_type)) + reagents_type = /datum/reagents + reagents = new reagents_type(max_vol, src) // Aurora Cooking Port /datum/reagents/proc/get_reagent(var/id) // Returns reference to reagent matching passed ID diff --git a/code/modules/reagents/Chemistry-Holder_ch.dm b/code/modules/reagents/holder/holder_ch.dm similarity index 97% rename from code/modules/reagents/Chemistry-Holder_ch.dm rename to code/modules/reagents/holder/holder_ch.dm index 2a532da0d9..baeab5c8aa 100644 --- a/code/modules/reagents/Chemistry-Holder_ch.dm +++ b/code/modules/reagents/holder/holder_ch.dm @@ -1,25 +1,25 @@ -//CHOMP code for transfer specifically into vore bellies - -/datum/reagents/proc/vore_trans_to_mob(var/mob/target, var/amount = 1, var/type = CHEM_VORE, var/multiplier = 1, var/copy = 0, var/obj/belly/target_belly = null) // Transfer after checking into which holder... - if(!target || !istype(target)) - return - - if(iscarbon(target)) - var/mob/living/carbon/C = target - if(type == CHEM_VORE) - var/datum/reagents/R = target_belly.reagents - return trans_to_holder(R, amount, multiplier, copy) - if(type == CHEM_INGEST) - var/datum/reagents/R = C.ingested - return C.ingest(src, R, amount, multiplier, copy) - - else //Retaining this code as a backup - var/datum/reagents/R = new /datum/reagents(amount) - . = trans_to_holder(R, amount, multiplier, copy) - R.touch_mob(target) - -/datum/reagents/proc/vore_trans_to_con(var/obj/item/weapon/reagent_containers/T, var/amount = 1, var/multiplier = 1, var/copy = 0) // Transfer after checking into which holder... - if(!T || !istype(T)) - return - - return trans_to_holder(T.reagents, amount, multiplier, copy) +//CHOMP code for transfer specifically into vore bellies + +/datum/reagents/proc/vore_trans_to_mob(var/mob/target, var/amount = 1, var/type = CHEM_VORE, var/multiplier = 1, var/copy = 0, var/obj/belly/target_belly = null) // Transfer after checking into which holder... + if(!target || !istype(target)) + return + + if(iscarbon(target)) + var/mob/living/carbon/C = target + if(type == CHEM_VORE) + var/datum/reagents/R = target_belly.reagents + return trans_to_holder(R, amount, multiplier, copy) + if(type == CHEM_INGEST) + var/datum/reagents/R = C.ingested + return C.ingest(src, R, amount, multiplier, copy) + + else //Retaining this code as a backup + var/datum/reagents/R = new /datum/reagents(amount) + . = trans_to_holder(R, amount, multiplier, copy) + R.touch_mob(target) + +/datum/reagents/proc/vore_trans_to_con(var/obj/item/weapon/reagent_containers/T, var/amount = 1, var/multiplier = 1, var/copy = 0) // Transfer after checking into which holder... + if(!T || !istype(T)) + return + + return trans_to_holder(T.reagents, amount, multiplier, copy) diff --git a/code/modules/reagents/kelshark.dm b/code/modules/reagents/kelshark.dm deleted file mode 100644 index fd4972b414..0000000000 --- a/code/modules/reagents/kelshark.dm +++ /dev/null @@ -1,108 +0,0 @@ -datum - reagent - benzilate - name = "Odd Goo" - id = "benzilate" - description = "Grey... goo? This smells like hot acid. Consuming this likely wouldn't be good for your health." - taste_description = "raw iron" - taste_mult = 0.4 - metabolism = REM * 2.5 - color = "#929292" - - phenethylamine - name = "Phenethylamine" - id = "phenethylamine" - description = "Just looking at this makes you feel odd. Whether or not this would be good to consume is likely a gamble." - color = "#463667" - data = list("count"=1) - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(data) - switch(data["count"]) - if(1 to 30) - if(prob(9)) M.emote("me",1,"blushes") - if(prob(9)) to_chat(M, "You feel so needy..") - if (30 to INFINITY) - if(prob(3)) M.emote("me",1,"blushes") - if(prob(5)) M.say("!moans out lewdly!") - if(prob(9)) to_chat(M, "You can't help but want to touch yourself then and now!") - data["count"]++ - holder.remove_reagent(src.id, 0.2) - //..() - return - -/datum/chemical_reaction/benzilate - name = "Benzilate" - id = "benzilate" - result = "benzilate" - required_reagents = list("paracetamol" = 1, "mindbreaker" = 1) - result_amount = 2 - -/datum/chemical_reaction/phenethylamine - name = "Phenethylamine" - id = "phenethylamine" - result = "phenethylamine" - required_reagents = list("paroxetine" = 1, "benzilate" = 1) - result_amount = 2 - -/datum/reagent/benzilate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - var/drug_strength = 12 - if(alien == IS_SKRELL) - drug_strength = drug_strength * 0.6 - M.make_dizzy(drug_strength) - M.Confuse(drug_strength * 14) - - -/obj/item/weapon/reagent_containers/pill/benzilate - name = "Benzilate pill" - desc = "You probably shouldn't swallow this." - icon_state = "pill2" - -/obj/item/weapon/reagent_containers/pill/benzilate/Initialize() - . = ..() - reagents.add_reagent("benzilate", 50) - color = reagents.get_color() - - -/obj/item/weapon/reagent_containers/pill/phenethylamine - name = "Phenethylamine pill" - desc = "Smells like... lilacs?" - icon_state = "pill5" - -/obj/item/weapon/reagent_containers/pill/phenethylamine/Initialize() - . = ..() - reagents.add_reagent("phenethylamine", 50) - color = reagents.get_color() - - -// PILLS THAT WE PROBABLY SHOULDN'T HAVE AAAAAAAAAA. The below is only so they can be included through mapping or "spawn " command. -Carl - -/obj/item/weapon/storage/pill_bottle/benzilate - name = "bottle of Benzilate pills" - desc = "This just hurts to look at with how many words of caution are scrawled on the lable. Better eat all of 'em!" - -/obj/item/weapon/storage/pill_bottle/benzilate/New() - ..() - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - new /obj/item/weapon/reagent_containers/pill/benzilate( src ) - -/obj/item/weapon/storage/pill_bottle/phenethylamine - name = "bottle of Phenethylamine pills" - desc = "Looks like someone drew a happy face on the label, replacing whatever was previously present." - -/obj/item/weapon/storage/pill_bottle/phenethylamine/New() - ..() - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) - new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/machinery/chem_master.dm similarity index 58% rename from code/modules/reagents/Chemistry-Machinery.dm rename to code/modules/reagents/machinery/chem_master.dm index b5fe99b054..3fdca52296 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/machinery/chem_master.dm @@ -1,862 +1,498 @@ -#define SOLID 1 -#define LIQUID 2 -#define GAS 3 - -#define MAX_PILL_SPRITE 24 //max icon state of the pill sprites -#define MAX_BOTTLE_SPRITE 4 //max icon state of the pill sprites -#define MAX_MULTI_AMOUNT 20 // Max number of pills/patches that can be made at once -#define MAX_UNITS_PER_PILL 60 // Max amount of units in a pill -#define MAX_UNITS_PER_PATCH 60 // Max amount of units in a patch -#define MAX_UNITS_PER_BOTTLE 60 // Max amount of units in a bottle (it's volume) -#define MAX_CUSTOM_NAME_LEN 64 // Max length of a custom pill/condiment/whatever - - - - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/obj/machinery/chem_master - name = "ChemMaster 3000" - desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create Space Drugs." - density = 1 - anchored = 1 - icon = 'icons/obj/chemical.dmi' - icon_state = "mixer0" - circuit = /obj/item/weapon/circuitboard/chem_master - use_power = USE_POWER_IDLE - idle_power_usage = 20 - var/obj/item/weapon/reagent_containers/beaker = null - var/obj/item/weapon/storage/pill_bottle/loaded_pill_bottle = null - var/mode = 0 - var/condi = 0 - var/useramount = 15 // Last used amount - var/pillamount = 10 - var/list/bottle_styles - var/bottlesprite = 1 - var/pillsprite = 1 - var/max_pill_count = 20 - var/printing = FALSE - flags = OPENCONTAINER - clicksound = "button" - -/obj/machinery/chem_master/New() - ..() - var/datum/reagents/R = new/datum/reagents(900) //Just a huge random number so the buffer should (probably) never dump your reagents. - reagents = R //There should be a nano ui thingy to warn of this. - R.my_atom = src - -/obj/machinery/chem_master/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(50)) - qdel(src) - return - -/obj/machinery/chem_master/update_icon() - icon_state = "mixer[beaker ? "1" : "0"]" - -/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) - - if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food)) - - if(src.beaker) - to_chat(user, "\A [beaker] is already loaded into the machine.") - return - src.beaker = B - user.drop_item() - B.loc = src - to_chat(user, "You add \the [B] to the machine.") - update_icon() - - else if(istype(B, /obj/item/weapon/storage/pill_bottle)) - - if(src.loaded_pill_bottle) - to_chat(user, "A \the [loaded_pill_bottle] s already loaded into the machine.") - return - - src.loaded_pill_bottle = B - user.drop_item() - B.loc = src - to_chat(user, "You add \the [loaded_pill_bottle] into the dispenser slot.") - - else if(default_unfasten_wrench(user, B, 20)) - return - if(default_deconstruction_screwdriver(user, B)) - return - if(default_deconstruction_crowbar(user, B)) - return - - return - -/obj/machinery/chem_master/attack_hand(mob/user as mob) - if(stat & BROKEN) - return - user.set_machine(src) - tgui_interact(user) - -/obj/machinery/chem_master/ui_assets(mob/user) - return list( - get_asset_datum(/datum/asset/chem_master), - ) - -/obj/machinery/chem_master/tgui_interact(mob/user, datum/tgui/ui = null) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemMaster", name) - ui.open() - -/** - * Display the NanoUI window for the chem master. - * - * See NanoUI documentation for details. - */ -/obj/machinery/chem_master/tgui_data(mob/user) - var/list/data = list() - - data["condi"] = condi - - data["loaded_pill_bottle"] = !!loaded_pill_bottle - if(loaded_pill_bottle) - data["loaded_pill_bottle_name"] = loaded_pill_bottle.name - data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len - data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.max_storage_space - - data["beaker"] = !!beaker - if(beaker) - var/list/beaker_reagents_list = list() - data["beaker_reagents"] = beaker_reagents_list - for(var/datum/reagent/R in beaker.reagents.reagent_list) - beaker_reagents_list[++beaker_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "description" = R.description, "id" = R.id) - - var/list/buffer_reagents_list = list() - data["buffer_reagents"] = buffer_reagents_list - for(var/datum/reagent/R in reagents.reagent_list) - buffer_reagents_list[++buffer_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description) - - data["pillsprite"] = pillsprite - data["bottlesprite"] = bottlesprite - data["mode"] = mode - data["printing"] = printing - - // Transfer modal information if there is one - data["modal"] = tgui_modal_data(src) - - return data - -/** - * Called in tgui_act() to process modal actions - * - * Arguments: - * * action - The action passed by tgui - * * params - The params passed by tgui - */ -/obj/machinery/chem_master/proc/tgui_act_modal(action, params, datum/tgui/ui, datum/tgui_state/state) - . = TRUE - var/id = params["id"] // The modal's ID - var/list/arguments = istext(params["arguments"]) ? json_decode(params["arguments"]) : params["arguments"] - switch(tgui_modal_act(src, action, params)) - if(TGUI_MODAL_OPEN) - switch(id) - if("analyze") - var/idx = text2num(arguments["idx"]) || 0 - var/from_beaker = text2num(arguments["beaker"]) || FALSE - var/reagent_list = from_beaker ? beaker.reagents.reagent_list : reagents.reagent_list - if(idx < 1 || idx > length(reagent_list)) - return - - var/datum/reagent/R = reagent_list[idx] - var/list/result = list("idx" = idx, "name" = R.name, "desc" = R.description) - if(!condi && istype(R, /datum/reagent/blood)) - var/datum/reagent/blood/B = R - result["blood_type"] = B.data["blood_type"] - result["blood_dna"] = B.data["blood_DNA"] - - arguments["analysis"] = result - tgui_modal_message(src, id, "", null, arguments) - // if("change_pill_bottle_style") - // if(!loaded_pill_bottle) - // return - // if(!pill_bottle_wrappers) - // pill_bottle_wrappers = list( - // "CLEAR" = "Default", - // COLOR_RED = "Red", - // COLOR_GREEN = "Green", - // COLOR_PALE_BTL_GREEN = "Pale green", - // COLOR_BLUE = "Blue", - // COLOR_CYAN_BLUE = "Light blue", - // COLOR_TEAL = "Teal", - // COLOR_YELLOW = "Yellow", - // COLOR_ORANGE = "Orange", - // COLOR_PINK = "Pink", - // COLOR_MAROON = "Brown" - // ) - // var/current = pill_bottle_wrappers[loaded_pill_bottle.wrapper_color] || "Default" - // tgui_modal_choice(src, id, "Please select a pill bottle wrapper:", null, arguments, current, pill_bottle_wrappers) - if("addcustom") - if(!beaker || !beaker.reagents.total_volume) - return - tgui_modal_input(src, id, "Please enter the amount to transfer to buffer:", null, arguments, useramount) - if("removecustom") - if(!reagents.total_volume) - return - tgui_modal_input(src, id, "Please enter the amount to transfer to [mode ? "beaker" : "disposal"]:", null, arguments, useramount) - if("create_condi_pack") - if(!condi || !reagents.total_volume) - return - tgui_modal_input(src, id, "Please name your new condiment pack:", null, arguments, reagents.get_master_reagent_name(), MAX_CUSTOM_NAME_LEN) - if("create_pill") - if(condi || !reagents.total_volume) - return - var/num = round(text2num(arguments["num"] || 1)) - if(!num) - return - arguments["num"] = num - var/amount_per_pill = CLAMP(reagents.total_volume / num, 0, MAX_UNITS_PER_PILL) - var/default_name = "[reagents.get_master_reagent_name()] ([amount_per_pill]u)" - var/pills_text = num == 1 ? "new pill" : "[num] new pills" - tgui_modal_input(src, id, "Please name your [pills_text]:", null, arguments, default_name, MAX_CUSTOM_NAME_LEN) - if("create_pill_multiple") - if(condi || !reagents.total_volume) - return - tgui_modal_input(src, id, "Please enter the amount of pills to make (max [MAX_MULTI_AMOUNT] at a time):", null, arguments, pillamount, 5) - if("change_pill_style") - var/list/choices = list() - for(var/i = 1 to MAX_PILL_SPRITE) - choices += "pill[i].png" - tgui_modal_bento(src, id, "Please select the new style for pills:", null, arguments, pillsprite, choices) - if("create_patch") - if(condi || !reagents.total_volume) - return - var/num = round(text2num(arguments["num"] || 1)) - if(!num) - return - arguments["num"] = num - var/amount_per_patch = CLAMP(reagents.total_volume / num, 0, MAX_UNITS_PER_PATCH) - var/default_name = "[reagents.get_master_reagent_name()] ([amount_per_patch]u)" - var/patches_text = num == 1 ? "new patch" : "[num] new patches" - tgui_modal_input(src, id, "Please name your [patches_text]:", null, arguments, default_name, MAX_CUSTOM_NAME_LEN) - if("create_patch_multiple") - if(condi || !reagents.total_volume) - return - tgui_modal_input(src, id, "Please enter the amount of patches to make (max [MAX_MULTI_AMOUNT] at a time):", null, arguments, pillamount, 5) - if("create_bottle") - if(condi || !reagents.total_volume) - return - var/num = round(text2num(arguments["num"] || 1)) - if(!num) - return - arguments["num"] = num - var/amount_per_bottle = CLAMP(reagents.total_volume / num, 0, MAX_UNITS_PER_BOTTLE) - var/default_name = "[reagents.get_master_reagent_name()]" - var/bottles_text = num == 1 ? "new bottle" : "[num] new bottles" - tgui_modal_input(src, id, "Please name your [bottles_text] ([amount_per_bottle]u in bottle):", null, arguments, default_name, MAX_CUSTOM_NAME_LEN) - if("create_bottle_multiple") - if(condi || !reagents.total_volume) - return - tgui_modal_input(src, id, "Please enter the amount of bottles to make (max [MAX_MULTI_AMOUNT] at a time):", null, arguments, pillamount, 5) - if("change_bottle_style") - var/list/choices = list() - for(var/i = 1 to MAX_BOTTLE_SPRITE) - choices += "bottle-[i].png" - tgui_modal_bento(src, id, "Please select the new style for bottles:", null, arguments, bottlesprite, choices) - else - return FALSE - if(TGUI_MODAL_ANSWER) - var/answer = params["answer"] - switch(id) - // if("change_pill_bottle_style") - // if(!pill_bottle_wrappers || !loaded_pill_bottle) // wat? - // return - // var/color = "CLEAR" - // for(var/col in pill_bottle_wrappers) - // var/col_name = pill_bottle_wrappers[col] - // if(col_name == answer) - // color = col - // break - // if(length(color) && color != "CLEAR") - // loaded_pill_bottle.wrapper_color = color - // loaded_pill_bottle.apply_wrap() - // else - // loaded_pill_bottle.wrapper_color = null - // loaded_pill_bottle.cut_overlays() - if("addcustom") - var/amount = isgoodnumber(text2num(answer)) - if(!amount || !arguments["id"]) - return - tgui_act("add", list("id" = arguments["id"], "amount" = amount), ui, state) - if("removecustom") - var/amount = isgoodnumber(text2num(answer)) - if(!amount || !arguments["id"]) - return - tgui_act("remove", list("id" = arguments["id"], "amount" = amount), ui, state) - if("create_condi_pack") - if(!condi || !reagents.total_volume) - return - if(!length(answer)) - answer = reagents.get_master_reagent_name() - var/obj/item/weapon/reagent_containers/pill/P = new(loc) - P.name = "[answer] pack" - P.desc = "A small condiment pack. The label says it contains [answer]." - P.icon_state = "bouilloncube"//Reskinned monkey cube - reagents.trans_to_obj(P, 10) - if("create_pill") - if(condi || !reagents.total_volume) - return - var/count = CLAMP(round(text2num(arguments["num"]) || 0), 0, MAX_MULTI_AMOUNT) - if(!count) - return - - if(!length(answer)) - answer = reagents.get_master_reagent_name() - var/amount_per_pill = CLAMP(reagents.total_volume / count, 0, MAX_UNITS_PER_PILL) - while(count--) - if(reagents.total_volume <= 0) - to_chat(usr, "Not enough reagents to create these pills!") - return - - var/obj/item/weapon/reagent_containers/pill/P = new(loc) - P.name = "[answer] pill" - P.pixel_x = rand(-7, 7) // Random position - P.pixel_y = rand(-7, 7) - P.icon_state = "pill[pillsprite]" - if(P.icon_state in list("pill1", "pill2", "pill3", "pill4")) // if using greyscale, take colour from reagent - P.color = reagents.get_color() - reagents.trans_to_obj(P, amount_per_pill) - // Load the pills in the bottle if there's one loaded - if(istype(loaded_pill_bottle) && length(loaded_pill_bottle.contents) < loaded_pill_bottle.max_storage_space) - P.forceMove(loaded_pill_bottle) - if("create_pill_multiple") - if(condi || !reagents.total_volume) - return - tgui_act("modal_open", list("id" = "create_pill", "arguments" = list("num" = answer)), ui, state) - if("change_pill_style") - var/new_style = CLAMP(text2num(answer) || 0, 0, MAX_PILL_SPRITE) - if(!new_style) - return - pillsprite = new_style - if("create_patch") - if(condi || !reagents.total_volume) - return - var/count = CLAMP(round(text2num(arguments["num"]) || 0), 0, MAX_MULTI_AMOUNT) - if(!count) - return - - if(!length(answer)) - answer = reagents.get_master_reagent_name() - var/amount_per_patch = CLAMP(reagents.total_volume / count, 0, MAX_UNITS_PER_PATCH) - // var/is_medical_patch = chemical_safety_check(reagents) - while(count--) - if(reagents.total_volume <= 0) - to_chat(usr, "Not enough reagents to create these patches!") - return - - var/obj/item/weapon/reagent_containers/pill/patch/P = new(loc) - P.name = "[answer] patch" - P.pixel_x = rand(-7, 7) // random position - P.pixel_y = rand(-7, 7) - reagents.trans_to_obj(P, amount_per_patch) - // if(is_medical_patch) - // P.instant_application = TRUE - // P.icon_state = "bandaid_med" - if("create_patch_multiple") - if(condi || !reagents.total_volume) - return - tgui_act("modal_open", list("id" = "create_patch", "arguments" = list("num" = answer)), ui, state) - if("create_bottle") - if(condi || !reagents.total_volume) - return - var/count = CLAMP(round(text2num(arguments["num"]) || 0), 0, MAX_MULTI_AMOUNT) - if(!count) - return - - if(!length(answer)) - answer = reagents.get_master_reagent_name() - var/amount_per_bottle = CLAMP(reagents.total_volume / count, 0, MAX_UNITS_PER_BOTTLE) - while(count--) - if(reagents.total_volume <= 0) - to_chat(usr, "Not enough reagents to create these bottles!") - return - var/obj/item/weapon/reagent_containers/glass/bottle/P = new(loc) - P.name = "[answer] bottle" - P.pixel_x = rand(-7, 7) // random position - P.pixel_y = rand(-7, 7) - P.icon_state = "bottle-[bottlesprite]" || "bottle-1" - reagents.trans_to_obj(P, amount_per_bottle) - P.update_icon() - if("create_bottle_multiple") - if(condi || !reagents.total_volume) - return - tgui_act("modal_open", list("id" = "create_bottle", "arguments" = list("num" = answer)), ui, state) - if("change_bottle_style") - var/new_style = CLAMP(text2num(answer) || 0, 0, MAX_BOTTLE_SPRITE) - if(!new_style) - return - bottlesprite = new_style - else - return FALSE - else - return FALSE - -/obj/machinery/chem_master/tgui_act(action, params, datum/tgui/ui, datum/tgui_state/state) - if(..()) - return TRUE - - if(tgui_act_modal(action, params, ui, state)) - return TRUE - - add_fingerprint(usr) - usr.set_machine(src) - - . = TRUE - switch(action) - if("toggle") - mode = !mode - if("ejectp") - if(loaded_pill_bottle) - loaded_pill_bottle.forceMove(get_turf(src)) - if(Adjacent(usr) && !issilicon(usr)) - usr.put_in_hands(loaded_pill_bottle) - loaded_pill_bottle = null - if("print") - if(printing || condi) - return - - var/idx = text2num(params["idx"]) || 0 - var/from_beaker = text2num(params["beaker"]) || FALSE - var/reagent_list = from_beaker ? beaker.reagents.reagent_list : reagents.reagent_list - if(idx < 1 || idx > length(reagent_list)) - return - - var/datum/reagent/R = reagent_list[idx] - - printing = TRUE - visible_message("[src] rattles and prints out a sheet of paper.") - // playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) - - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc) - P.info = "
Chemical Analysis

" - P.info += "Time of analysis: [worldtime2stationtime(world.time)]

" - P.info += "Chemical name: [R.name]
" - if(istype(R, /datum/reagent/blood)) - var/datum/reagent/blood/B = R - P.info += "Description: N/A
Blood Type: [B.data["blood_type"]]
DNA: [B.data["blood_DNA"]]" - else - P.info += "Description: [R.description]" - P.info += "

Notes:
" - P.name = "Chemical Analysis - [R.name]" - spawn(50) - printing = FALSE - else - . = FALSE - - if(. || !beaker) - return - - . = TRUE - var/datum/reagents/R = beaker.reagents - switch(action) - if("add") - var/id = params["id"] - var/amount = text2num(params["amount"]) - if(!id || !amount) - return - R.trans_id_to(src, id, amount) - if("remove") - var/id = params["id"] - var/amount = text2num(params["amount"]) - if(!id || !amount) - return - if(mode) - reagents.trans_id_to(beaker, id, amount) - else - reagents.remove_reagent(id, amount) - if("eject") - if(!beaker) - return - beaker.forceMove(get_turf(src)) - if(Adjacent(usr) && !issilicon(usr)) - usr.put_in_hands(beaker) - beaker = null - reagents.clear_reagents() - update_icon() - if("create_condi_bottle") - if(!condi || !reagents.total_volume) - return - var/obj/item/weapon/reagent_containers/food/condiment/P = new(loc) - reagents.trans_to_obj(P, 50) - else - return FALSE - -/obj/machinery/chem_master/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/chem_master/proc/isgoodnumber(num) - if(isnum(num)) - if(num > 200) - num = 200 - else if(num < 0) - num = 1 - return num - else - return FALSE - -// /obj/machinery/chem_master/proc/chemical_safety_check(datum/reagents/R) -// var/all_safe = TRUE -// for(var/datum/reagent/A in R.reagent_list) -// if(!GLOB.safe_chem_list.Find(A.id)) -// all_safe = FALSE -// return all_safe - -/obj/machinery/chem_master/condimaster - name = "CondiMaster 3000" - condi = 1 - -//////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////// -/obj/machinery/reagentgrinder - - name = "All-In-One Grinder" - desc = "Grinds stuff into itty bitty bits." - icon = 'icons/obj/kitchen.dmi' - icon_state = "juicer1" - density = 0 - anchored = 0 - use_power = USE_POWER_IDLE - idle_power_usage = 5 - active_power_usage = 100 - circuit = /obj/item/weapon/circuitboard/grinder - var/inuse = 0 - var/obj/item/weapon/reagent_containers/beaker = null - var/limit = 10 - var/list/holdingitems = list() - var/list/sheet_reagents = list( //have a number of reageents divisible by REAGENTS_PER_SHEET (default 20) unless you like decimals, - /obj/item/stack/material/iron = list("iron"), - /obj/item/stack/material/uranium = list("uranium"), - /obj/item/stack/material/phoron = list("phoron"), - /obj/item/stack/material/gold = list("gold"), - /obj/item/stack/material/silver = list("silver"), - /obj/item/stack/material/platinum = list("platinum"), - /obj/item/stack/material/mhydrogen = list("hydrogen"), - /obj/item/stack/material/steel = list("iron", "carbon"), - /obj/item/stack/material/plasteel = list("iron", "iron", "carbon", "carbon", "platinum"), //8 iron, 8 carbon, 4 platinum, - /obj/item/stack/material/snow = list("water"), - /obj/item/stack/material/sandstone = list("silicon", "oxygen"), - /obj/item/stack/material/glass = list("silicon"), - /obj/item/stack/material/glass/phoronglass = list("platinum", "silicon", "silicon", "silicon"), //5 platinum, 15 silicon, - ) - - var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine") - var/static/radial_eject = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject") - var/static/radial_grind = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_grind") - // var/static/radial_juice = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_juice") - // var/static/radial_mix = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_mix") - -/obj/machinery/reagentgrinder/Initialize() - . = ..() - beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src) - default_apply_parts() - -/obj/machinery/reagentgrinder/examine(mob/user) - . = ..() - if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) - . += "You're too far away to examine [src]'s contents and display!" - return - - if(inuse) - . += "\The [src] is operating." - return - - if(beaker || length(holdingitems)) - . += "\The [src] contains:" - if(beaker) - . += "- \A [beaker]." - for(var/i in holdingitems) - var/obj/item/O = i - . += "- \A [O.name]." - - if(!(stat & (NOPOWER|BROKEN))) - . += "The status display reads:\n" - if(beaker) - for(var/datum/reagent/R in beaker.reagents.reagent_list) - . += "- [R.volume] units of [R.name]." - -/obj/machinery/reagentgrinder/update_icon() - icon_state = "juicer"+num2text(!isnull(beaker)) - return - -/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(beaker) - if(default_deconstruction_screwdriver(user, O)) - return - if(default_deconstruction_crowbar(user, O)) - return - - //vorestation edit start - for solargrubs - if (istype(O, /obj/item/device/multitool)) - return ..() - //vorestation edit end - - - if (istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks/glass2) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker)) - - if (beaker) - return 1 - else - src.beaker = O - user.drop_item() - O.loc = src - update_icon() - src.updateUsrDialog() - return 0 - - if(holdingitems && holdingitems.len >= limit) - to_chat(user, "The machine cannot hold anymore items.") - return 1 - - if(!istype(O)) - return - - if(istype(O,/obj/item/weapon/storage/bag/plants)) - var/obj/item/weapon/storage/bag/plants/bag = O - var/failed = 1 - for(var/obj/item/G in O.contents) - if(!G.reagents || !G.reagents.total_volume) - continue - failed = 0 - bag.remove_from_storage(G, src) - holdingitems += G - if(holdingitems && holdingitems.len >= limit) - break - - if(failed) - to_chat(user, "Nothing in the plant bag is usable.") - return 1 - - if(!O.contents.len) - to_chat(user, "You empty \the [O] into \the [src].") - else - to_chat(user, "You fill \the [src] from \the [O].") - - src.updateUsrDialog() - return 0 - - if(istype(O,/obj/item/weapon/gripper)) - var/obj/item/weapon/gripper/B = O //B, for Borg. - if(!B.wrapped) - to_chat(user, "\The [B] is not holding anything.") - return 0 - else - var/B_held = B.wrapped - to_chat(user, "You use \the [B] to load \the [src] with \the [B_held].") - - return 0 - - if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume)) - to_chat(user, "\The [O] is not suitable for blending.") - return 1 - - user.remove_from_mob(O) - O.loc = src - holdingitems += O - return 0 - -/obj/machinery/reagentgrinder/AltClick(mob/user) - . = ..() - if(user.incapacitated() || !Adjacent(user)) - return - replace_beaker(user) - -/obj/machinery/reagentgrinder/attack_hand(mob/user as mob) - interact(user) - -/obj/machinery/reagentgrinder/interact(mob/user as mob) // The microwave Menu //I am reasonably certain that this is not a microwave - if(inuse || user.incapacitated()) - return - - var/list/options = list() - - if(beaker || length(holdingitems)) - options["eject"] = radial_eject - - if(isAI(user)) - if(stat & NOPOWER) - return - options["examine"] = radial_examine - - // if there is no power or it's broken, the procs will fail but the buttons will still show - if(length(holdingitems)) - options["grind"] = radial_grind - - var/choice - if(length(options) < 1) - return - if(length(options) == 1) - for(var/key in options) - choice = key - else - choice = show_radial_menu(user, src, options, require_near = !issilicon(user)) - - // post choice verification - if(inuse || (isAI(user) && stat & NOPOWER) || user.incapacitated()) - return - - switch(choice) - if("eject") - eject(user) - if("grind") - grind(user) - if("examine") - examine(user) - -/obj/machinery/reagentgrinder/proc/eject(mob/user) - if(user.incapacitated()) - return - for(var/obj/item/O in holdingitems) - O.loc = src.loc - holdingitems -= O - holdingitems.Cut() - if(beaker) - replace_beaker(user) - -/obj/machinery/reagentgrinder/proc/grind() - - power_change() - if(stat & (NOPOWER|BROKEN)) - return - - // Sanity check. - if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume)) - return - - playsound(src, 'sound/machines/blender.ogg', 50, 1) - inuse = 1 - - // Reset the machine. - spawn(60) - inuse = 0 - - // Process. - for (var/obj/item/O in holdingitems) - - var/remaining_volume = beaker.reagents.maximum_volume - beaker.reagents.total_volume - if(remaining_volume <= 0) - break - - if(sheet_reagents[O.type]) - var/obj/item/stack/stack = O - if(istype(stack)) - var/list/sheet_components = sheet_reagents[stack.type] - var/amount_to_take = max(0,min(stack.amount,round(remaining_volume/REAGENTS_PER_SHEET))) - if(amount_to_take) - stack.use(amount_to_take) - if(QDELETED(stack)) - holdingitems -= stack - if(islist(sheet_components)) - amount_to_take = (amount_to_take/(sheet_components.len)) - for(var/i in sheet_components) - beaker.reagents.add_reagent(i, (amount_to_take*REAGENTS_PER_SHEET)) - else - beaker.reagents.add_reagent(sheet_components, (amount_to_take*REAGENTS_PER_SHEET)) - continue - - if(O.reagents) - O.reagents.trans_to_obj(beaker, min(O.reagents.total_volume, remaining_volume)) - if(O.reagents.total_volume == 0) - holdingitems -= O - qdel(O) - if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) - break - -/obj/machinery/reagentgrinder/proc/replace_beaker(mob/living/user, obj/item/weapon/reagent_containers/new_beaker) - if(!user) - return FALSE - if(beaker) - if(!user.incapacitated() && Adjacent(user)) - user.put_in_hands(beaker) - else - beaker.forceMove(drop_location()) - beaker = null - if(new_beaker) - beaker = new_beaker - update_icon() - return TRUE - -/////////////// -/////////////// -// Detects reagents inside most containers, and acts as an infinite identification system for reagent-based unidentified objects. - -/obj/machinery/chemical_analyzer - name = "chem analyzer" - desc = "Used to precisely scan chemicals and other liquids inside various containers. \ - It may also identify the liquid contents of unknown objects." - description_info = "This machine will try to tell you what reagents are inside of something capable of holding reagents. \ - It is also used to 'identify' specific reagent-based objects with their properties obscured from inspection by normal means." - icon = 'icons/obj/chemical.dmi' - icon_state = "chem_analyzer" - density = TRUE - anchored = TRUE - use_power = TRUE - idle_power_usage = 20 - clicksound = "button" - var/analyzing = FALSE - -/obj/machinery/chemical_analyzer/update_icon() - icon_state = "chem_analyzer[analyzing ? "-working":""]" - -/obj/machinery/chemical_analyzer/attackby(obj/item/I, mob/living/user) - if(!istype(I)) - return ..() - - if(default_deconstruction_screwdriver(user, I)) - return - if(default_deconstruction_crowbar(user, I)) - return - - if(istype(I,/obj/item/weapon/reagent_containers)) - analyzing = TRUE - update_icon() - to_chat(user, span("notice", "Analyzing \the [I], please stand by...")) - - if(!do_after(user, 2 SECONDS, src)) - to_chat(user, span("warning", "Sample moved outside of scan range, please try again and remain still.")) - analyzing = FALSE - update_icon() - return - - // First, identify it if it isn't already. - if(!I.is_identified(IDENTITY_FULL)) - var/datum/identification/ID = I.identity - if(ID.identification_type == IDENTITY_TYPE_CHEMICAL) // This only solves chemical-based mysteries. - I.identify(IDENTITY_FULL, user) - - // Now tell us everything that is inside. - if(I.reagents && I.reagents.reagent_list.len) - to_chat(user, "
") // To add padding between regular chat and the output. - for(var/datum/reagent/R in I.reagents.reagent_list) - if(!R.name) - continue - to_chat(user, span("notice", "Contains [R.volume]u of [R.name].
[R.description]
")) - - // Last, unseal it if it's an autoinjector. - if(istype(I,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector) && !(I.flags & OPENCONTAINER)) - I.flags |= OPENCONTAINER - to_chat(user, span("notice", "Sample container unsealed.
")) - - to_chat(user, span("notice", "Scanning of \the [I] complete.")) - analyzing = FALSE - update_icon() - return - -#undef MAX_PILL_SPRITE -#undef MAX_BOTTLE_SPRITE -#undef MAX_MULTI_AMOUNT -#undef MAX_UNITS_PER_PILL -#undef MAX_UNITS_PER_PATCH -#undef MAX_UNITS_PER_BOTTLE -#undef MAX_CUSTOM_NAME_LEN +/obj/machinery/chem_master + name = "ChemMaster 3000" + desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create Space Drugs." + density = 1 + anchored = 1 + icon = 'icons/obj/chemical.dmi' + icon_state = "mixer0" + circuit = /obj/item/weapon/circuitboard/chem_master + use_power = USE_POWER_IDLE + idle_power_usage = 20 + var/obj/item/weapon/reagent_containers/beaker = null + var/obj/item/weapon/storage/pill_bottle/loaded_pill_bottle = null + var/mode = 0 + var/condi = 0 + var/useramount = 15 // Last used amount + var/pillamount = 10 + var/list/bottle_styles + var/bottlesprite = 1 + var/pillsprite = 1 + var/max_pill_count = 20 + var/printing = FALSE + flags = OPENCONTAINER + clicksound = "button" + +/obj/machinery/chem_master/New() + ..() + var/datum/reagents/R = new/datum/reagents(900) //Just a huge random number so the buffer should (probably) never dump your reagents. + reagents = R //There should be a nano ui thingy to warn of this. + R.my_atom = src + +/obj/machinery/chem_master/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if (prob(50)) + qdel(src) + return + +/obj/machinery/chem_master/update_icon() + icon_state = "mixer[beaker ? "1" : "0"]" + +/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) + + if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food)) + + if(src.beaker) + to_chat(user, "\A [beaker] is already loaded into the machine.") + return + src.beaker = B + user.drop_item() + B.loc = src + to_chat(user, "You add \the [B] to the machine.") + update_icon() + + else if(istype(B, /obj/item/weapon/storage/pill_bottle)) + + if(src.loaded_pill_bottle) + to_chat(user, "A \the [loaded_pill_bottle] s already loaded into the machine.") + return + + src.loaded_pill_bottle = B + user.drop_item() + B.loc = src + to_chat(user, "You add \the [loaded_pill_bottle] into the dispenser slot.") + + else if(default_unfasten_wrench(user, B, 20)) + return + if(default_deconstruction_screwdriver(user, B)) + return + if(default_deconstruction_crowbar(user, B)) + return + + return + +/obj/machinery/chem_master/attack_hand(mob/user as mob) + if(stat & BROKEN) + return + user.set_machine(src) + tgui_interact(user) + +/obj/machinery/chem_master/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/chem_master), + ) + +/obj/machinery/chem_master/tgui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "ChemMaster", name) + ui.open() + +/** + * Display the NanoUI window for the chem master. + * + * See NanoUI documentation for details. + */ +/obj/machinery/chem_master/tgui_data(mob/user) + var/list/data = list() + + data["condi"] = condi + + data["loaded_pill_bottle"] = !!loaded_pill_bottle + if(loaded_pill_bottle) + data["loaded_pill_bottle_name"] = loaded_pill_bottle.name + data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len + data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.max_storage_space + + data["beaker"] = !!beaker + if(beaker) + var/list/beaker_reagents_list = list() + data["beaker_reagents"] = beaker_reagents_list + for(var/datum/reagent/R in beaker.reagents.reagent_list) + beaker_reagents_list[++beaker_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "description" = R.description, "id" = R.id) + + var/list/buffer_reagents_list = list() + data["buffer_reagents"] = buffer_reagents_list + for(var/datum/reagent/R in reagents.reagent_list) + buffer_reagents_list[++buffer_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description) + + data["pillsprite"] = pillsprite + data["bottlesprite"] = bottlesprite + data["mode"] = mode + data["printing"] = printing + + // Transfer modal information if there is one + data["modal"] = tgui_modal_data(src) + + return data + +/** + * Called in tgui_act() to process modal actions + * + * Arguments: + * * action - The action passed by tgui + * * params - The params passed by tgui + */ +/obj/machinery/chem_master/proc/tgui_act_modal(action, params, datum/tgui/ui, datum/tgui_state/state) + . = TRUE + var/id = params["id"] // The modal's ID + var/list/arguments = istext(params["arguments"]) ? json_decode(params["arguments"]) : params["arguments"] + switch(tgui_modal_act(src, action, params)) + if(TGUI_MODAL_OPEN) + switch(id) + if("analyze") + var/idx = text2num(arguments["idx"]) || 0 + var/from_beaker = text2num(arguments["beaker"]) || FALSE + var/reagent_list = from_beaker ? beaker.reagents.reagent_list : reagents.reagent_list + if(idx < 1 || idx > length(reagent_list)) + return + + var/datum/reagent/R = reagent_list[idx] + var/list/result = list("idx" = idx, "name" = R.name, "desc" = R.description) + if(!condi && istype(R, /datum/reagent/blood)) + var/datum/reagent/blood/B = R + result["blood_type"] = B.data["blood_type"] + result["blood_dna"] = B.data["blood_DNA"] + + arguments["analysis"] = result + tgui_modal_message(src, id, "", null, arguments) + // if("change_pill_bottle_style") + // if(!loaded_pill_bottle) + // return + // if(!pill_bottle_wrappers) + // pill_bottle_wrappers = list( + // "CLEAR" = "Default", + // COLOR_RED = "Red", + // COLOR_GREEN = "Green", + // COLOR_PALE_BTL_GREEN = "Pale green", + // COLOR_BLUE = "Blue", + // COLOR_CYAN_BLUE = "Light blue", + // COLOR_TEAL = "Teal", + // COLOR_YELLOW = "Yellow", + // COLOR_ORANGE = "Orange", + // COLOR_PINK = "Pink", + // COLOR_MAROON = "Brown" + // ) + // var/current = pill_bottle_wrappers[loaded_pill_bottle.wrapper_color] || "Default" + // tgui_modal_choice(src, id, "Please select a pill bottle wrapper:", null, arguments, current, pill_bottle_wrappers) + if("addcustom") + if(!beaker || !beaker.reagents.total_volume) + return + tgui_modal_input(src, id, "Please enter the amount to transfer to buffer:", null, arguments, useramount) + if("removecustom") + if(!reagents.total_volume) + return + tgui_modal_input(src, id, "Please enter the amount to transfer to [mode ? "beaker" : "disposal"]:", null, arguments, useramount) + if("create_condi_pack") + if(!condi || !reagents.total_volume) + return + tgui_modal_input(src, id, "Please name your new condiment pack:", null, arguments, reagents.get_master_reagent_name(), MAX_CUSTOM_NAME_LEN) + if("create_pill") + if(condi || !reagents.total_volume) + return + var/num = round(text2num(arguments["num"] || 1)) + if(!num) + return + arguments["num"] = num + var/amount_per_pill = CLAMP(reagents.total_volume / num, 0, MAX_UNITS_PER_PILL) + var/default_name = "[reagents.get_master_reagent_name()] ([amount_per_pill]u)" + var/pills_text = num == 1 ? "new pill" : "[num] new pills" + tgui_modal_input(src, id, "Please name your [pills_text]:", null, arguments, default_name, MAX_CUSTOM_NAME_LEN) + if("create_pill_multiple") + if(condi || !reagents.total_volume) + return + tgui_modal_input(src, id, "Please enter the amount of pills to make (max [MAX_MULTI_AMOUNT] at a time):", null, arguments, pillamount, 5) + if("change_pill_style") + var/list/choices = list() + for(var/i = 1 to MAX_PILL_SPRITE) + choices += "pill[i].png" + tgui_modal_bento(src, id, "Please select the new style for pills:", null, arguments, pillsprite, choices) + if("create_patch") + if(condi || !reagents.total_volume) + return + var/num = round(text2num(arguments["num"] || 1)) + if(!num) + return + arguments["num"] = num + var/amount_per_patch = CLAMP(reagents.total_volume / num, 0, MAX_UNITS_PER_PATCH) + var/default_name = "[reagents.get_master_reagent_name()] ([amount_per_patch]u)" + var/patches_text = num == 1 ? "new patch" : "[num] new patches" + tgui_modal_input(src, id, "Please name your [patches_text]:", null, arguments, default_name, MAX_CUSTOM_NAME_LEN) + if("create_patch_multiple") + if(condi || !reagents.total_volume) + return + tgui_modal_input(src, id, "Please enter the amount of patches to make (max [MAX_MULTI_AMOUNT] at a time):", null, arguments, pillamount, 5) + if("create_bottle") + if(condi || !reagents.total_volume) + return + var/num = round(text2num(arguments["num"] || 1)) + if(!num) + return + arguments["num"] = num + var/amount_per_bottle = CLAMP(reagents.total_volume / num, 0, MAX_UNITS_PER_BOTTLE) + var/default_name = "[reagents.get_master_reagent_name()]" + var/bottles_text = num == 1 ? "new bottle" : "[num] new bottles" + tgui_modal_input(src, id, "Please name your [bottles_text] ([amount_per_bottle]u in bottle):", null, arguments, default_name, MAX_CUSTOM_NAME_LEN) + if("create_bottle_multiple") + if(condi || !reagents.total_volume) + return + tgui_modal_input(src, id, "Please enter the amount of bottles to make (max [MAX_MULTI_AMOUNT] at a time):", null, arguments, pillamount, 5) + if("change_bottle_style") + var/list/choices = list() + for(var/i = 1 to MAX_BOTTLE_SPRITE) + choices += "bottle-[i].png" + tgui_modal_bento(src, id, "Please select the new style for bottles:", null, arguments, bottlesprite, choices) + else + return FALSE + if(TGUI_MODAL_ANSWER) + var/answer = params["answer"] + switch(id) + // if("change_pill_bottle_style") + // if(!pill_bottle_wrappers || !loaded_pill_bottle) // wat? + // return + // var/color = "CLEAR" + // for(var/col in pill_bottle_wrappers) + // var/col_name = pill_bottle_wrappers[col] + // if(col_name == answer) + // color = col + // break + // if(length(color) && color != "CLEAR") + // loaded_pill_bottle.wrapper_color = color + // loaded_pill_bottle.apply_wrap() + // else + // loaded_pill_bottle.wrapper_color = null + // loaded_pill_bottle.cut_overlays() + if("addcustom") + var/amount = isgoodnumber(text2num(answer)) + if(!amount || !arguments["id"]) + return + tgui_act("add", list("id" = arguments["id"], "amount" = amount), ui, state) + if("removecustom") + var/amount = isgoodnumber(text2num(answer)) + if(!amount || !arguments["id"]) + return + tgui_act("remove", list("id" = arguments["id"], "amount" = amount), ui, state) + if("create_condi_pack") + if(!condi || !reagents.total_volume) + return + if(!length(answer)) + answer = reagents.get_master_reagent_name() + var/obj/item/weapon/reagent_containers/pill/P = new(loc) + P.name = "[answer] pack" + P.desc = "A small condiment pack. The label says it contains [answer]." + P.icon_state = "bouilloncube"//Reskinned monkey cube + reagents.trans_to_obj(P, 10) + if("create_pill") + if(condi || !reagents.total_volume) + return + var/count = CLAMP(round(text2num(arguments["num"]) || 0), 0, MAX_MULTI_AMOUNT) + if(!count) + return + + if(!length(answer)) + answer = reagents.get_master_reagent_name() + var/amount_per_pill = CLAMP(reagents.total_volume / count, 0, MAX_UNITS_PER_PILL) + while(count--) + if(reagents.total_volume <= 0) + to_chat(usr, "Not enough reagents to create these pills!") + return + + var/obj/item/weapon/reagent_containers/pill/P = new(loc) + P.name = "[answer] pill" + P.pixel_x = rand(-7, 7) // Random position + P.pixel_y = rand(-7, 7) + P.icon_state = "pill[pillsprite]" + if(P.icon_state in list("pill1", "pill2", "pill3", "pill4")) // if using greyscale, take colour from reagent + P.color = reagents.get_color() + reagents.trans_to_obj(P, amount_per_pill) + // Load the pills in the bottle if there's one loaded + if(istype(loaded_pill_bottle) && length(loaded_pill_bottle.contents) < loaded_pill_bottle.max_storage_space) + P.forceMove(loaded_pill_bottle) + if("create_pill_multiple") + if(condi || !reagents.total_volume) + return + tgui_act("modal_open", list("id" = "create_pill", "arguments" = list("num" = answer)), ui, state) + if("change_pill_style") + var/new_style = CLAMP(text2num(answer) || 0, 0, MAX_PILL_SPRITE) + if(!new_style) + return + pillsprite = new_style + if("create_patch") + if(condi || !reagents.total_volume) + return + var/count = CLAMP(round(text2num(arguments["num"]) || 0), 0, MAX_MULTI_AMOUNT) + if(!count) + return + + if(!length(answer)) + answer = reagents.get_master_reagent_name() + var/amount_per_patch = CLAMP(reagents.total_volume / count, 0, MAX_UNITS_PER_PATCH) + // var/is_medical_patch = chemical_safety_check(reagents) + while(count--) + if(reagents.total_volume <= 0) + to_chat(usr, "Not enough reagents to create these patches!") + return + + var/obj/item/weapon/reagent_containers/pill/patch/P = new(loc) + P.name = "[answer] patch" + P.pixel_x = rand(-7, 7) // random position + P.pixel_y = rand(-7, 7) + reagents.trans_to_obj(P, amount_per_patch) + // if(is_medical_patch) + // P.instant_application = TRUE + // P.icon_state = "bandaid_med" + if("create_patch_multiple") + if(condi || !reagents.total_volume) + return + tgui_act("modal_open", list("id" = "create_patch", "arguments" = list("num" = answer)), ui, state) + if("create_bottle") + if(condi || !reagents.total_volume) + return + var/count = CLAMP(round(text2num(arguments["num"]) || 0), 0, MAX_MULTI_AMOUNT) + if(!count) + return + + if(!length(answer)) + answer = reagents.get_master_reagent_name() + var/amount_per_bottle = CLAMP(reagents.total_volume / count, 0, MAX_UNITS_PER_BOTTLE) + while(count--) + if(reagents.total_volume <= 0) + to_chat(usr, "Not enough reagents to create these bottles!") + return + var/obj/item/weapon/reagent_containers/glass/bottle/P = new(loc) + P.name = "[answer] bottle" + P.pixel_x = rand(-7, 7) // random position + P.pixel_y = rand(-7, 7) + P.icon_state = "bottle-[bottlesprite]" || "bottle-1" + reagents.trans_to_obj(P, amount_per_bottle) + P.update_icon() + if("create_bottle_multiple") + if(condi || !reagents.total_volume) + return + tgui_act("modal_open", list("id" = "create_bottle", "arguments" = list("num" = answer)), ui, state) + if("change_bottle_style") + var/new_style = CLAMP(text2num(answer) || 0, 0, MAX_BOTTLE_SPRITE) + if(!new_style) + return + bottlesprite = new_style + else + return FALSE + else + return FALSE + +/obj/machinery/chem_master/tgui_act(action, params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return TRUE + + if(tgui_act_modal(action, params, ui, state)) + return TRUE + + add_fingerprint(usr) + usr.set_machine(src) + + . = TRUE + switch(action) + if("toggle") + mode = !mode + if("ejectp") + if(loaded_pill_bottle) + loaded_pill_bottle.forceMove(get_turf(src)) + if(Adjacent(usr) && !issilicon(usr)) + usr.put_in_hands(loaded_pill_bottle) + loaded_pill_bottle = null + if("print") + if(printing || condi) + return + + var/idx = text2num(params["idx"]) || 0 + var/from_beaker = text2num(params["beaker"]) || FALSE + var/reagent_list = from_beaker ? beaker.reagents.reagent_list : reagents.reagent_list + if(idx < 1 || idx > length(reagent_list)) + return + + var/datum/reagent/R = reagent_list[idx] + + printing = TRUE + visible_message("[src] rattles and prints out a sheet of paper.") + // playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) + + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc) + P.info = "
Chemical Analysis

" + P.info += "Time of analysis: [worldtime2stationtime(world.time)]

" + P.info += "Chemical name: [R.name]
" + if(istype(R, /datum/reagent/blood)) + var/datum/reagent/blood/B = R + P.info += "Description: N/A
Blood Type: [B.data["blood_type"]]
DNA: [B.data["blood_DNA"]]" + else + P.info += "Description: [R.description]" + P.info += "

Notes:
" + P.name = "Chemical Analysis - [R.name]" + spawn(50) + printing = FALSE + else + . = FALSE + + if(. || !beaker) + return + + . = TRUE + var/datum/reagents/R = beaker.reagents + switch(action) + if("add") + var/id = params["id"] + var/amount = text2num(params["amount"]) + if(!id || !amount) + return + R.trans_id_to(src, id, amount) + if("remove") + var/id = params["id"] + var/amount = text2num(params["amount"]) + if(!id || !amount) + return + if(mode) + reagents.trans_id_to(beaker, id, amount) + else + reagents.remove_reagent(id, amount) + if("eject") + if(!beaker) + return + beaker.forceMove(get_turf(src)) + if(Adjacent(usr) && !issilicon(usr)) + usr.put_in_hands(beaker) + beaker = null + reagents.clear_reagents() + update_icon() + if("create_condi_bottle") + if(!condi || !reagents.total_volume) + return + var/obj/item/weapon/reagent_containers/food/condiment/P = new(loc) + reagents.trans_to_obj(P, 50) + else + return FALSE + +/obj/machinery/chem_master/attack_ai(mob/user) + return attack_hand(user) + +/obj/machinery/chem_master/proc/isgoodnumber(num) + if(isnum(num)) + if(num > 200) + num = 200 + else if(num < 0) + num = 1 + return num + else + return FALSE + +// /obj/machinery/chem_master/proc/chemical_safety_check(datum/reagents/R) +// var/all_safe = TRUE +// for(var/datum/reagent/A in R.reagent_list) +// if(!GLOB.safe_chem_list.Find(A.id)) +// all_safe = FALSE +// return all_safe + +/obj/machinery/chem_master/condimaster + name = "CondiMaster 3000" + condi = 1 diff --git a/code/modules/reagents/Chemistry-Machinery_vr.dm b/code/modules/reagents/machinery/chem_master_vr.dm similarity index 100% rename from code/modules/reagents/Chemistry-Machinery_vr.dm rename to code/modules/reagents/machinery/chem_master_vr.dm diff --git a/code/modules/reagents/machinery/chemalyzer.dm b/code/modules/reagents/machinery/chemalyzer.dm new file mode 100644 index 0000000000..ce8b1d6f12 --- /dev/null +++ b/code/modules/reagents/machinery/chemalyzer.dm @@ -0,0 +1,63 @@ +// Detects reagents inside most containers, and acts as an infinite identification system for reagent-based unidentified objects. + +/obj/machinery/chemical_analyzer + name = "chem analyzer" + desc = "Used to precisely scan chemicals and other liquids inside various containers. \ + It may also identify the liquid contents of unknown objects." + description_info = "This machine will try to tell you what reagents are inside of something capable of holding reagents. \ + It is also used to 'identify' specific reagent-based objects with their properties obscured from inspection by normal means." + icon = 'icons/obj/chemical.dmi' + icon_state = "chem_analyzer" + density = TRUE + anchored = TRUE + use_power = TRUE + idle_power_usage = 20 + clicksound = "button" + var/analyzing = FALSE + +/obj/machinery/chemical_analyzer/update_icon() + icon_state = "chem_analyzer[analyzing ? "-working":""]" + +/obj/machinery/chemical_analyzer/attackby(obj/item/I, mob/living/user) + if(!istype(I)) + return ..() + + if(default_deconstruction_screwdriver(user, I)) + return + if(default_deconstruction_crowbar(user, I)) + return + + if(istype(I,/obj/item/weapon/reagent_containers)) + analyzing = TRUE + update_icon() + to_chat(user, span("notice", "Analyzing \the [I], please stand by...")) + + if(!do_after(user, 2 SECONDS, src)) + to_chat(user, span("warning", "Sample moved outside of scan range, please try again and remain still.")) + analyzing = FALSE + update_icon() + return + + // First, identify it if it isn't already. + if(!I.is_identified(IDENTITY_FULL)) + var/datum/identification/ID = I.identity + if(ID.identification_type == IDENTITY_TYPE_CHEMICAL) // This only solves chemical-based mysteries. + I.identify(IDENTITY_FULL, user) + + // Now tell us everything that is inside. + if(I.reagents && I.reagents.reagent_list.len) + to_chat(user, "
") // To add padding between regular chat and the output. + for(var/datum/reagent/R in I.reagents.reagent_list) + if(!R.name) + continue + to_chat(user, span("notice", "Contains [R.volume]u of [R.name].
[R.description]
")) + + // Last, unseal it if it's an autoinjector. + if(istype(I,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector) && !(I.flags & OPENCONTAINER)) + I.flags |= OPENCONTAINER + to_chat(user, span("notice", "Sample container unsealed.
")) + + to_chat(user, span("notice", "Scanning of \the [I] complete.")) + analyzing = FALSE + update_icon() + return \ No newline at end of file diff --git a/code/modules/reagents/dispenser/_defines.dm b/code/modules/reagents/machinery/dispenser/_defines.dm similarity index 96% rename from code/modules/reagents/dispenser/_defines.dm rename to code/modules/reagents/machinery/dispenser/_defines.dm index 60c12cdba6..8d52cf5cd0 100644 --- a/code/modules/reagents/dispenser/_defines.dm +++ b/code/modules/reagents/machinery/dispenser/_defines.dm @@ -1,8 +1,8 @@ -#define CARTRIDGE_VOLUME_LARGE 500 -#define CARTRIDGE_VOLUME_MEDIUM 250 -#define CARTRIDGE_VOLUME_SMALL 100 - -// Chemistry dispenser starts with 21 -// ERT dispenser starts with 28 -#define DISPENSER_MAX_CARTRIDGES 30 - +#define CARTRIDGE_VOLUME_LARGE 500 +#define CARTRIDGE_VOLUME_MEDIUM 250 +#define CARTRIDGE_VOLUME_SMALL 100 + +// Chemistry dispenser starts with 21 +// ERT dispenser starts with 28 +#define DISPENSER_MAX_CARTRIDGES 30 + diff --git a/code/modules/reagents/dispenser/cartridge.dm b/code/modules/reagents/machinery/dispenser/cartridge.dm similarity index 97% rename from code/modules/reagents/dispenser/cartridge.dm rename to code/modules/reagents/machinery/dispenser/cartridge.dm index 444577aaa5..0e2b09eb57 100644 --- a/code/modules/reagents/dispenser/cartridge.dm +++ b/code/modules/reagents/machinery/dispenser/cartridge.dm @@ -1,95 +1,95 @@ -/obj/item/weapon/reagent_containers/chem_disp_cartridge - name = "chemical dispenser cartridge" - desc = "This goes in a chemical dispenser." - icon_state = "cartridge" - - w_class = ITEMSIZE_NORMAL - - volume = CARTRIDGE_VOLUME_LARGE - amount_per_transfer_from_this = 50 - // Large, but inaccurate. Use a chem dispenser or beaker for accuracy. - possible_transfer_amounts = list(50, 100, 250, 500) - unacidable = 1 - - var/spawn_reagent = null - var/label = "" - -/obj/item/weapon/reagent_containers/chem_disp_cartridge/Initialize() - . = ..() - if(spawn_reagent) - reagents.add_reagent(spawn_reagent, volume) - var/datum/reagent/R = SSchemistry.chemical_reagents[spawn_reagent] - setLabel(R.name) - -/obj/item/weapon/reagent_containers/chem_disp_cartridge/examine(mob/user) - . = ..() - . += "It has a capacity of [volume] units." - if(reagents.total_volume <= 0) - . += "It is empty." - else - . += "It contains [reagents.total_volume] units of liquid." - if(!is_open_container()) - . += "The cap is sealed." - -/obj/item/weapon/reagent_containers/chem_disp_cartridge/verb/verb_set_label(L as text) - set name = "Set Cartridge Label" - set category = "Object" - set src in view(usr, 1) - - setLabel(L, usr) - -/obj/item/weapon/reagent_containers/chem_disp_cartridge/proc/setLabel(L, mob/user = null) - if(L) - if(user) - to_chat(user, "You set the label on \the [src] to '[L]'.") - - label = L - name = "[initial(name)] - '[L]'" - else - if(user) - to_chat(user, "You clear the label on \the [src].") - label = "" - name = initial(name) - -/obj/item/weapon/reagent_containers/chem_disp_cartridge/attack_self() - ..() - if (is_open_container()) - to_chat(usr, "You put the cap on \the [src].") - flags ^= OPENCONTAINER - else - to_chat(usr, "You take the cap off \the [src].") - flags |= OPENCONTAINER - -/obj/item/weapon/reagent_containers/chem_disp_cartridge/afterattack(obj/target, mob/user , flag) - if (!is_open_container() || !flag) - return - - else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. - target.add_fingerprint(user) - - if(!target.reagents.total_volume && target.reagents) - to_chat(user, "\The [target] is empty.") - return - - if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, "\The [src] is full.") - return - - var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) - to_chat(user, "You fill \the [src] with [trans] units of the contents of \the [target].") - - else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it. - - if(!reagents.total_volume) - to_chat(user, "\The [src] is empty.") - return - - if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "\The [target] is full.") - return - - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You transfer [trans] units of the solution to \the [target].") - - else - return ..() +/obj/item/weapon/reagent_containers/chem_disp_cartridge + name = "chemical dispenser cartridge" + desc = "This goes in a chemical dispenser." + icon_state = "cartridge" + + w_class = ITEMSIZE_NORMAL + + volume = CARTRIDGE_VOLUME_LARGE + amount_per_transfer_from_this = 50 + // Large, but inaccurate. Use a chem dispenser or beaker for accuracy. + possible_transfer_amounts = list(50, 100, 250, 500) + unacidable = 1 + + var/spawn_reagent = null + var/label = "" + +/obj/item/weapon/reagent_containers/chem_disp_cartridge/Initialize() + . = ..() + if(spawn_reagent) + reagents.add_reagent(spawn_reagent, volume) + var/datum/reagent/R = SSchemistry.chemical_reagents[spawn_reagent] + setLabel(R.name) + +/obj/item/weapon/reagent_containers/chem_disp_cartridge/examine(mob/user) + . = ..() + . += "It has a capacity of [volume] units." + if(reagents.total_volume <= 0) + . += "It is empty." + else + . += "It contains [reagents.total_volume] units of liquid." + if(!is_open_container()) + . += "The cap is sealed." + +/obj/item/weapon/reagent_containers/chem_disp_cartridge/verb/verb_set_label(L as text) + set name = "Set Cartridge Label" + set category = "Object" + set src in view(usr, 1) + + setLabel(L, usr) + +/obj/item/weapon/reagent_containers/chem_disp_cartridge/proc/setLabel(L, mob/user = null) + if(L) + if(user) + to_chat(user, "You set the label on \the [src] to '[L]'.") + + label = L + name = "[initial(name)] - '[L]'" + else + if(user) + to_chat(user, "You clear the label on \the [src].") + label = "" + name = initial(name) + +/obj/item/weapon/reagent_containers/chem_disp_cartridge/attack_self() + ..() + if (is_open_container()) + to_chat(usr, "You put the cap on \the [src].") + flags ^= OPENCONTAINER + else + to_chat(usr, "You take the cap off \the [src].") + flags |= OPENCONTAINER + +/obj/item/weapon/reagent_containers/chem_disp_cartridge/afterattack(obj/target, mob/user , flag) + if (!is_open_container() || !flag) + return + + else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. + target.add_fingerprint(user) + + if(!target.reagents.total_volume && target.reagents) + to_chat(user, "\The [target] is empty.") + return + + if(reagents.total_volume >= reagents.maximum_volume) + to_chat(user, "\The [src] is full.") + return + + var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) + to_chat(user, "You fill \the [src] with [trans] units of the contents of \the [target].") + + else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it. + + if(!reagents.total_volume) + to_chat(user, "\The [src] is empty.") + return + + if(target.reagents.total_volume >= target.reagents.maximum_volume) + to_chat(user, "\The [target] is full.") + return + + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + to_chat(user, "You transfer [trans] units of the solution to \the [target].") + + else + return ..() diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/machinery/dispenser/cartridge_presets.dm similarity index 97% rename from code/modules/reagents/dispenser/cartridge_presets.dm rename to code/modules/reagents/machinery/dispenser/cartridge_presets.dm index eea22fff7e..21b321ad34 100644 --- a/code/modules/reagents/dispenser/cartridge_presets.dm +++ b/code/modules/reagents/machinery/dispenser/cartridge_presets.dm @@ -1,108 +1,108 @@ -/obj/item/weapon/reagent_containers/chem_disp_cartridge - small - volume = CARTRIDGE_VOLUME_SMALL - - medium - volume = CARTRIDGE_VOLUME_MEDIUM - - // Multiple - water spawn_reagent = "water" - sugar spawn_reagent = "sugar" - - // Chemistry - hydrogen spawn_reagent = "hydrogen" - lithium spawn_reagent = "lithium" - carbon spawn_reagent = "carbon" - nitrogen spawn_reagent = "nitrogen" - oxygen spawn_reagent = "oxygen" - fluorine spawn_reagent = "fluorine" - sodium spawn_reagent = "sodium" - aluminum spawn_reagent = "aluminum" - silicon spawn_reagent = "silicon" - phosphorus spawn_reagent = "phosphorus" - sulfur spawn_reagent = "sulfur" - chlorine spawn_reagent = "chlorine" - potassium spawn_reagent = "potassium" - iron spawn_reagent = "iron" - copper spawn_reagent = "copper" - mercury spawn_reagent = "mercury" - radium spawn_reagent = "radium" - ethanol spawn_reagent = "ethanol" - sacid spawn_reagent = "sacid" - tungsten spawn_reagent = "tungsten" - calcium spawn_reagent = "calcium" - - // Bar, alcoholic - beer spawn_reagent = "beer" - kahlua spawn_reagent = "kahlua" - whiskey spawn_reagent = "whiskey" - wine spawn_reagent = "wine" - vodka spawn_reagent = "vodka" - gin spawn_reagent = "gin" - rum spawn_reagent = "rum" - tequila spawn_reagent = "tequilla" - vermouth spawn_reagent = "vermouth" - cognac spawn_reagent = "cognac" - ale spawn_reagent = "ale" - mead spawn_reagent = "mead" - bitters spawn_reagent = "bitters" - cider spawn_reagent = "cider" - - // Bar, soft - ice spawn_reagent = "ice" - tea spawn_reagent = "tea" - icetea spawn_reagent = "icetea" - cola spawn_reagent = "cola" - smw spawn_reagent = "spacemountainwind" - dr_gibb spawn_reagent = "dr_gibb" - spaceup spawn_reagent = "space_up" - tonic spawn_reagent = "tonic" - sodawater spawn_reagent = "sodawater" - lemon_lime spawn_reagent = "lemon_lime" - orange spawn_reagent = "orangejuice" - lime spawn_reagent = "limejuice" - watermelon spawn_reagent = "watermelonjuice" - lemon spawn_reagent = "lemonjuice" - - // Bar, coffee - coffee spawn_reagent = "coffee" - cafe_latte spawn_reagent = "cafe_latte" - soy_latte spawn_reagent = "soy_latte" - hot_coco spawn_reagent = "hot_coco" - milk spawn_reagent = "milk" - cream spawn_reagent = "cream" - mint spawn_reagent = "mint" - berry spawn_reagent = "berryjuice" - greentea spawn_reagent = "greentea" - decaf spawn_reagent = "decaf" - - // ERT - inaprov spawn_reagent = "inaprovaline" - ryetalyn spawn_reagent = "ryetalyn" - paracetamol spawn_reagent = "paracetamol" - tramadol spawn_reagent = "tramadol" - oxycodone spawn_reagent = "oxycodone" - sterilizine spawn_reagent = "sterilizine" - leporazine spawn_reagent = "leporazine" - kelotane spawn_reagent = "kelotane" - dermaline spawn_reagent = "dermaline" - dexalin spawn_reagent = "dexalin" - dexalin/small volume = CARTRIDGE_VOLUME_SMALL // For the medicine cartridge crate, so it's not too easy to get large amounts of dexalin - dexalin_p spawn_reagent = "dexalinp" - tricord spawn_reagent = "tricordrazine" - dylovene spawn_reagent = "anti_toxin" - synaptizine spawn_reagent = "synaptizine" - hyronalin spawn_reagent = "hyronalin" - arithrazine spawn_reagent = "arithrazine" - alkysine spawn_reagent = "alkysine" - imidazoline spawn_reagent = "imidazoline" - peridaxon spawn_reagent = "peridaxon" - bicaridine spawn_reagent = "bicaridine" - hyperzine spawn_reagent = "hyperzine" - rezadone spawn_reagent = "rezadone" - spaceacillin spawn_reagent = "spaceacillin" - ethylredox spawn_reagent = "ethylredoxrazine" - sleeptox spawn_reagent = "stoxin" - chloral spawn_reagent = "chloralhydrate" - cryoxadone spawn_reagent = "cryoxadone" - clonexadone spawn_reagent = "clonexadone" +/obj/item/weapon/reagent_containers/chem_disp_cartridge + small + volume = CARTRIDGE_VOLUME_SMALL + + medium + volume = CARTRIDGE_VOLUME_MEDIUM + + // Multiple + water spawn_reagent = "water" + sugar spawn_reagent = "sugar" + + // Chemistry + hydrogen spawn_reagent = "hydrogen" + lithium spawn_reagent = "lithium" + carbon spawn_reagent = "carbon" + nitrogen spawn_reagent = "nitrogen" + oxygen spawn_reagent = "oxygen" + fluorine spawn_reagent = "fluorine" + sodium spawn_reagent = "sodium" + aluminum spawn_reagent = "aluminum" + silicon spawn_reagent = "silicon" + phosphorus spawn_reagent = "phosphorus" + sulfur spawn_reagent = "sulfur" + chlorine spawn_reagent = "chlorine" + potassium spawn_reagent = "potassium" + iron spawn_reagent = "iron" + copper spawn_reagent = "copper" + mercury spawn_reagent = "mercury" + radium spawn_reagent = "radium" + ethanol spawn_reagent = "ethanol" + sacid spawn_reagent = "sacid" + tungsten spawn_reagent = "tungsten" + calcium spawn_reagent = "calcium" + + // Bar, alcoholic + beer spawn_reagent = "beer" + kahlua spawn_reagent = "kahlua" + whiskey spawn_reagent = "whiskey" + wine spawn_reagent = "wine" + vodka spawn_reagent = "vodka" + gin spawn_reagent = "gin" + rum spawn_reagent = "rum" + tequila spawn_reagent = "tequilla" + vermouth spawn_reagent = "vermouth" + cognac spawn_reagent = "cognac" + ale spawn_reagent = "ale" + mead spawn_reagent = "mead" + bitters spawn_reagent = "bitters" + cider spawn_reagent = "cider" + + // Bar, soft + ice spawn_reagent = "ice" + tea spawn_reagent = "tea" + icetea spawn_reagent = "icetea" + cola spawn_reagent = "cola" + smw spawn_reagent = "spacemountainwind" + dr_gibb spawn_reagent = "dr_gibb" + spaceup spawn_reagent = "space_up" + tonic spawn_reagent = "tonic" + sodawater spawn_reagent = "sodawater" + lemon_lime spawn_reagent = "lemon_lime" + orange spawn_reagent = "orangejuice" + lime spawn_reagent = "limejuice" + watermelon spawn_reagent = "watermelonjuice" + lemon spawn_reagent = "lemonjuice" + + // Bar, coffee + coffee spawn_reagent = "coffee" + cafe_latte spawn_reagent = "cafe_latte" + soy_latte spawn_reagent = "soy_latte" + hot_coco spawn_reagent = "hot_coco" + milk spawn_reagent = "milk" + cream spawn_reagent = "cream" + mint spawn_reagent = "mint" + berry spawn_reagent = "berryjuice" + greentea spawn_reagent = "greentea" + decaf spawn_reagent = "decaf" + + // ERT + inaprov spawn_reagent = "inaprovaline" + ryetalyn spawn_reagent = "ryetalyn" + paracetamol spawn_reagent = "paracetamol" + tramadol spawn_reagent = "tramadol" + oxycodone spawn_reagent = "oxycodone" + sterilizine spawn_reagent = "sterilizine" + leporazine spawn_reagent = "leporazine" + kelotane spawn_reagent = "kelotane" + dermaline spawn_reagent = "dermaline" + dexalin spawn_reagent = "dexalin" + dexalin/small volume = CARTRIDGE_VOLUME_SMALL // For the medicine cartridge crate, so it's not too easy to get large amounts of dexalin + dexalin_p spawn_reagent = "dexalinp" + tricord spawn_reagent = "tricordrazine" + dylovene spawn_reagent = "anti_toxin" + synaptizine spawn_reagent = "synaptizine" + hyronalin spawn_reagent = "hyronalin" + arithrazine spawn_reagent = "arithrazine" + alkysine spawn_reagent = "alkysine" + imidazoline spawn_reagent = "imidazoline" + peridaxon spawn_reagent = "peridaxon" + bicaridine spawn_reagent = "bicaridine" + hyperzine spawn_reagent = "hyperzine" + rezadone spawn_reagent = "rezadone" + spaceacillin spawn_reagent = "spaceacillin" + ethylredox spawn_reagent = "ethylredoxrazine" + sleeptox spawn_reagent = "stoxin" + chloral spawn_reagent = "chloralhydrate" + cryoxadone spawn_reagent = "cryoxadone" + clonexadone spawn_reagent = "clonexadone" diff --git a/code/modules/reagents/dispenser/cartridge_presets_ch.dm b/code/modules/reagents/machinery/dispenser/cartridge_presets_ch.dm similarity index 95% rename from code/modules/reagents/dispenser/cartridge_presets_ch.dm rename to code/modules/reagents/machinery/dispenser/cartridge_presets_ch.dm index e5ba6f0582..21e473e514 100644 --- a/code/modules/reagents/dispenser/cartridge_presets_ch.dm +++ b/code/modules/reagents/machinery/dispenser/cartridge_presets_ch.dm @@ -1,42 +1,42 @@ -/obj/item/weapon/reagent_containers/chem_disp_cartridge - //CHOMP - Chems that are used but not meant for cargo supplies, at least for now. - Jack - champagne spawn_reagent = "champagne" - grapesoda spawn_reagent = "grapesoda" - singulo spawn_reagent = "singulo" - doctorsdelight spawn_reagent = "doctorsdelight" - nothing spawn_reagent = "nothing" - banana spawn_reagent = "banana" - honey spawn_reagent = "honey" - egg spawn_reagent = "egg" - coco spawn_reagent = "coco" - cherryjelly spawn_reagent = "cherryjelly" - carrotjuice spawn_reagent = "carrotjuice" - applejuice spawn_reagent = "applejuice" - tomatojuice spawn_reagent = "tomatojuice" - peanutbutter spawn_reagent = "peanutbutter" - matcha_latte spawn_reagent = "matcha_latte" - soymilk spawn_reagent = "soymilk" - grenadine spawn_reagent = "grenadine" - gingerale spawn_reagent = "gingerale" - roy_rogers spawn_reagent = "roy_rogers" - patron spawn_reagent = "patron" - goldschlager spawn_reagent = "goldschlager" - gelatin spawn_reagent = "gelatin" - melonliquor spawn_reagent = "melonliquor" - bluecuracao spawn_reagent = "bluecuracao" - thirteenloko spawn_reagent = "thirteenloko" - deadrum spawn_reagent = "deadrum" - sake spawn_reagent = "sake" - acidspit spawn_reagent = "acidspit" - amasec spawn_reagent = "amasec" - beepskysmash spawn_reagent = "beepskysmash" - atomicbomb spawn_reagent = "atomicbomb" - nuka_cola spawn_reagent = "nuka_cola" - threemileisland spawn_reagent = "threemileisland" - manhattan_proj spawn_reagent = "manhattan_proj" - psilocybin spawn_reagent = "psilocybin" - moonshine spawn_reagent = "moonshine" - specialwhiskey spawn_reagent = "specialwhiskey" - unathiliquor spawn_reagent = "unathiliquor" - winebrandy spawn_reagent = "winebrandy" - snaps spawn_reagent = "snaps" \ No newline at end of file +/obj/item/weapon/reagent_containers/chem_disp_cartridge + //CHOMP - Chems that are used but not meant for cargo supplies, at least for now. - Jack + champagne spawn_reagent = "champagne" + grapesoda spawn_reagent = "grapesoda" + singulo spawn_reagent = "singulo" + doctorsdelight spawn_reagent = "doctorsdelight" + nothing spawn_reagent = "nothing" + banana spawn_reagent = "banana" + honey spawn_reagent = "honey" + egg spawn_reagent = "egg" + coco spawn_reagent = "coco" + cherryjelly spawn_reagent = "cherryjelly" + carrotjuice spawn_reagent = "carrotjuice" + applejuice spawn_reagent = "applejuice" + tomatojuice spawn_reagent = "tomatojuice" + peanutbutter spawn_reagent = "peanutbutter" + matcha_latte spawn_reagent = "matcha_latte" + soymilk spawn_reagent = "soymilk" + grenadine spawn_reagent = "grenadine" + gingerale spawn_reagent = "gingerale" + roy_rogers spawn_reagent = "roy_rogers" + patron spawn_reagent = "patron" + goldschlager spawn_reagent = "goldschlager" + gelatin spawn_reagent = "gelatin" + melonliquor spawn_reagent = "melonliquor" + bluecuracao spawn_reagent = "bluecuracao" + thirteenloko spawn_reagent = "thirteenloko" + deadrum spawn_reagent = "deadrum" + sake spawn_reagent = "sake" + acidspit spawn_reagent = "acidspit" + amasec spawn_reagent = "amasec" + beepskysmash spawn_reagent = "beepskysmash" + atomicbomb spawn_reagent = "atomicbomb" + nuka_cola spawn_reagent = "nuka_cola" + threemileisland spawn_reagent = "threemileisland" + manhattan_proj spawn_reagent = "manhattan_proj" + psilocybin spawn_reagent = "psilocybin" + moonshine spawn_reagent = "moonshine" + specialwhiskey spawn_reagent = "specialwhiskey" + unathiliquor spawn_reagent = "unathiliquor" + winebrandy spawn_reagent = "winebrandy" + snaps spawn_reagent = "snaps" diff --git a/code/modules/reagents/dispenser/cartridge_presets_vr.dm b/code/modules/reagents/machinery/dispenser/cartridge_presets_vr.dm similarity index 100% rename from code/modules/reagents/dispenser/cartridge_presets_vr.dm rename to code/modules/reagents/machinery/dispenser/cartridge_presets_vr.dm diff --git a/code/modules/reagents/dispenser/cartridge_spawn.dm b/code/modules/reagents/machinery/dispenser/cartridge_spawn.dm similarity index 100% rename from code/modules/reagents/dispenser/cartridge_spawn.dm rename to code/modules/reagents/machinery/dispenser/cartridge_spawn.dm diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/machinery/dispenser/dispenser2.dm similarity index 97% rename from code/modules/reagents/dispenser/dispenser2.dm rename to code/modules/reagents/machinery/dispenser/dispenser2.dm index 7f2fb13f40..d53dac4ba5 100644 --- a/code/modules/reagents/dispenser/dispenser2.dm +++ b/code/modules/reagents/machinery/dispenser/dispenser2.dm @@ -1,205 +1,205 @@ -/obj/machinery/chemical_dispenser - name = "chemical dispenser" - desc = "Automagically fabricates chemicals from electricity." - icon = 'icons/obj/chemical.dmi' - icon_state = "dispenser" - clicksound = "switch" - - var/list/spawn_cartridges = null // Set to a list of types to spawn one of each on New() - - var/list/cartridges = list() // Associative, label -> cartridge - var/obj/item/weapon/reagent_containers/container = null - - var/ui_title = "Chemical Dispenser" - - var/accept_drinking = 0 - var/amount = 30 - - use_power = USE_POWER_IDLE - idle_power_usage = 100 - anchored = 1 - -/obj/machinery/chemical_dispenser/Initialize() - . = ..() - if(spawn_cartridges) - for(var/type in spawn_cartridges) - add_cartridge(new type(src)) - -/obj/machinery/chemical_dispenser/examine(mob/user) - . = ..() - . += "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more." - -/obj/machinery/chemical_dispenser/verb/rotate_clockwise() - set name = "Rotate Dispenser Clockwise" - set category = "Object" - set src in oview(1) - - if (src.anchored || usr:stat) - to_chat(usr, "It is fastened down!") - return 0 - src.set_dir(turn(src.dir, 270)) - return 1 - -/obj/machinery/chemical_dispenser/proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user) - if(!istype(C)) - if(user) - to_chat(user, "\The [C] will not fit in \the [src]!") - return - - if(cartridges.len >= DISPENSER_MAX_CARTRIDGES) - if(user) - to_chat(user, "\The [src] does not have any slots open for \the [C] to fit into!") - return - - if(!C.label) - if(user) - to_chat(user, "\The [C] does not have a label!") - return - - if(cartridges[C.label]) - if(user) - to_chat(user, "\The [src] already contains a cartridge with that label!") - return - - if(user) - user.drop_from_inventory(C) - to_chat(user, "You add \the [C] to \the [src].") - - C.loc = src - cartridges[C.label] = C - cartridges = sortAssoc(cartridges) - SStgui.update_uis(src) - -/obj/machinery/chemical_dispenser/proc/remove_cartridge(label) - . = cartridges[label] - cartridges -= label - SStgui.update_uis(src) - -/obj/machinery/chemical_dispenser/attackby(obj/item/weapon/W, mob/user) - if(W.is_wrench()) - playsound(src, W.usesound, 50, 1) - to_chat(user, "You begin to [anchored ? "un" : ""]fasten \the [src].") - if (do_after(user, 20 * W.toolspeed)) - user.visible_message( - "\The [user] [anchored ? "un" : ""]fastens \the [src].", - "You have [anchored ? "un" : ""]fastened \the [src].", - "You hear a ratchet.") - anchored = !anchored - else - to_chat(user, "You decide not to [anchored ? "un" : ""]fasten \the [src].") - - else if(istype(W, /obj/item/weapon/reagent_containers/chem_disp_cartridge)) - add_cartridge(W, user) - - else if(W.is_screwdriver()) - var/label = input(user, "Which cartridge would you like to remove?", "Chemical Dispenser") as null|anything in cartridges - if(!label) return - var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label) - if(C) - to_chat(user, "You remove \the [C] from \the [src].") - C.loc = loc - playsound(src, W.usesound, 50, 1) - - else if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food)) - if(container) - to_chat(user, "There is already \a [container] on \the [src]!") - return - - var/obj/item/weapon/reagent_containers/RC = W - - if(!accept_drinking && istype(RC,/obj/item/weapon/reagent_containers/food)) - to_chat(user, "This machine only accepts beakers!") - return - - if(!RC.is_open_container()) - to_chat(user, "You don't see how \the [src] could dispense reagents into \the [RC].") - return - - container = RC - user.drop_from_inventory(RC) - RC.loc = src - to_chat(user, "You set \the [RC] on \the [src].") - else - return ..() - -/obj/machinery/chemical_dispenser/tgui_interact(mob/user, datum/tgui/ui = null) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ChemDispenser", ui_title) // 390, 655 - ui.open() - -/obj/machinery/chemical_dispenser/tgui_data(mob/user) - var/data[0] - data["amount"] = amount - data["isBeakerLoaded"] = container ? 1 : 0 - data["glass"] = accept_drinking - - var/beakerContents[0] - if(container && container.reagents && container.reagents.reagent_list.len) - for(var/datum/reagent/R in container.reagents.reagent_list) - beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... - data["beakerContents"] = beakerContents - - if(container) - data["beakerCurrentVolume"] = container.reagents.total_volume - data["beakerMaxVolume"] = container.reagents.maximum_volume - else - data["beakerCurrentVolume"] = null - data["beakerMaxVolume"] = null - - var/chemicals[0] - for(var/label in cartridges) - var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] - chemicals.Add(list(list("title" = label, "id" = label, "amount" = C.reagents.total_volume))) // list in a list because Byond merges the first list... - data["chemicals"] = chemicals - return data - -/obj/machinery/chemical_dispenser/tgui_act(action, params) - if(..()) - return TRUE - - . = TRUE - switch(action) - if("amount") - amount = clamp(round(text2num(params["amount"]), 1), 0, 120) // round to nearest 1 and clamp 0 - 120 - if("dispense") - var/label = params["reagent"] - if(cartridges[label] && container && container.is_open_container()) - var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] - playsound(src, 'sound/machines/reagent_dispense.ogg', 25, 1) - C.reagents.trans_to(container, amount) - if("remove") - var/amount = text2num(params["amount"]) - if(!container || !amount) - return - var/datum/reagents/R = container.reagents - var/id = params["reagent"] - if(amount > 0) - R.remove_reagent(id, amount) - else if(amount == -1) // Isolate - R.isolate_reagent(id) - if("ejectBeaker") - if(container) - container.forceMove(get_turf(src)) - - if(Adjacent(usr)) // So the AI doesn't get a beaker somehow. - usr.put_in_hands(container) - - container = null - else - return FALSE - - add_fingerprint(usr) - -/obj/machinery/chemical_dispenser/attack_ghost(mob/user) - if(stat & BROKEN) - return - tgui_interact(user) - -/obj/machinery/chemical_dispenser/attack_ai(mob/user) - attack_hand(user) - -/obj/machinery/chemical_dispenser/attack_hand(mob/user) - if(stat & BROKEN) - return - tgui_interact(user) +/obj/machinery/chemical_dispenser + name = "chemical dispenser" + desc = "Automagically fabricates chemicals from electricity." + icon = 'icons/obj/chemical.dmi' + icon_state = "dispenser" + clicksound = "switch" + + var/list/spawn_cartridges = null // Set to a list of types to spawn one of each on New() + + var/list/cartridges = list() // Associative, label -> cartridge + var/obj/item/weapon/reagent_containers/container = null + + var/ui_title = "Chemical Dispenser" + + var/accept_drinking = 0 + var/amount = 30 + + use_power = USE_POWER_IDLE + idle_power_usage = 100 + anchored = 1 + +/obj/machinery/chemical_dispenser/Initialize() + . = ..() + if(spawn_cartridges) + for(var/type in spawn_cartridges) + add_cartridge(new type(src)) + +/obj/machinery/chemical_dispenser/examine(mob/user) + . = ..() + . += "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more." + +/obj/machinery/chemical_dispenser/verb/rotate_clockwise() + set name = "Rotate Dispenser Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + to_chat(usr, "It is fastened down!") + return 0 + src.set_dir(turn(src.dir, 270)) + return 1 + +/obj/machinery/chemical_dispenser/proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user) + if(!istype(C)) + if(user) + to_chat(user, "\The [C] will not fit in \the [src]!") + return + + if(cartridges.len >= DISPENSER_MAX_CARTRIDGES) + if(user) + to_chat(user, "\The [src] does not have any slots open for \the [C] to fit into!") + return + + if(!C.label) + if(user) + to_chat(user, "\The [C] does not have a label!") + return + + if(cartridges[C.label]) + if(user) + to_chat(user, "\The [src] already contains a cartridge with that label!") + return + + if(user) + user.drop_from_inventory(C) + to_chat(user, "You add \the [C] to \the [src].") + + C.loc = src + cartridges[C.label] = C + cartridges = sortAssoc(cartridges) + SStgui.update_uis(src) + +/obj/machinery/chemical_dispenser/proc/remove_cartridge(label) + . = cartridges[label] + cartridges -= label + SStgui.update_uis(src) + +/obj/machinery/chemical_dispenser/attackby(obj/item/weapon/W, mob/user) + if(W.is_wrench()) + playsound(src, W.usesound, 50, 1) + to_chat(user, "You begin to [anchored ? "un" : ""]fasten \the [src].") + if (do_after(user, 20 * W.toolspeed)) + user.visible_message( + "\The [user] [anchored ? "un" : ""]fastens \the [src].", + "You have [anchored ? "un" : ""]fastened \the [src].", + "You hear a ratchet.") + anchored = !anchored + else + to_chat(user, "You decide not to [anchored ? "un" : ""]fasten \the [src].") + + else if(istype(W, /obj/item/weapon/reagent_containers/chem_disp_cartridge)) + add_cartridge(W, user) + + else if(W.is_screwdriver()) + var/label = input(user, "Which cartridge would you like to remove?", "Chemical Dispenser") as null|anything in cartridges + if(!label) return + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label) + if(C) + to_chat(user, "You remove \the [C] from \the [src].") + C.loc = loc + playsound(src, W.usesound, 50, 1) + + else if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food)) + if(container) + to_chat(user, "There is already \a [container] on \the [src]!") + return + + var/obj/item/weapon/reagent_containers/RC = W + + if(!accept_drinking && istype(RC,/obj/item/weapon/reagent_containers/food)) + to_chat(user, "This machine only accepts beakers!") + return + + if(!RC.is_open_container()) + to_chat(user, "You don't see how \the [src] could dispense reagents into \the [RC].") + return + + container = RC + user.drop_from_inventory(RC) + RC.loc = src + to_chat(user, "You set \the [RC] on \the [src].") + else + return ..() + +/obj/machinery/chemical_dispenser/tgui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "ChemDispenser", ui_title) // 390, 655 + ui.open() + +/obj/machinery/chemical_dispenser/tgui_data(mob/user) + var/data[0] + data["amount"] = amount + data["isBeakerLoaded"] = container ? 1 : 0 + data["glass"] = accept_drinking + + var/beakerContents[0] + if(container && container.reagents && container.reagents.reagent_list.len) + for(var/datum/reagent/R in container.reagents.reagent_list) + beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... + data["beakerContents"] = beakerContents + + if(container) + data["beakerCurrentVolume"] = container.reagents.total_volume + data["beakerMaxVolume"] = container.reagents.maximum_volume + else + data["beakerCurrentVolume"] = null + data["beakerMaxVolume"] = null + + var/chemicals[0] + for(var/label in cartridges) + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] + chemicals.Add(list(list("title" = label, "id" = label, "amount" = C.reagents.total_volume))) // list in a list because Byond merges the first list... + data["chemicals"] = chemicals + return data + +/obj/machinery/chemical_dispenser/tgui_act(action, params) + if(..()) + return TRUE + + . = TRUE + switch(action) + if("amount") + amount = clamp(round(text2num(params["amount"]), 1), 0, 120) // round to nearest 1 and clamp 0 - 120 + if("dispense") + var/label = params["reagent"] + if(cartridges[label] && container && container.is_open_container()) + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] + playsound(src, 'sound/machines/reagent_dispense.ogg', 25, 1) + C.reagents.trans_to(container, amount) + if("remove") + var/amount = text2num(params["amount"]) + if(!container || !amount) + return + var/datum/reagents/R = container.reagents + var/id = params["reagent"] + if(amount > 0) + R.remove_reagent(id, amount) + else if(amount == -1) // Isolate + R.isolate_reagent(id) + if("ejectBeaker") + if(container) + container.forceMove(get_turf(src)) + + if(Adjacent(usr)) // So the AI doesn't get a beaker somehow. + usr.put_in_hands(container) + + container = null + else + return FALSE + + add_fingerprint(usr) + +/obj/machinery/chemical_dispenser/attack_ghost(mob/user) + if(stat & BROKEN) + return + tgui_interact(user) + +/obj/machinery/chemical_dispenser/attack_ai(mob/user) + attack_hand(user) + +/obj/machinery/chemical_dispenser/attack_hand(mob/user) + if(stat & BROKEN) + return + tgui_interact(user) diff --git a/code/modules/reagents/dispenser/dispenser2_energy.dm b/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm similarity index 100% rename from code/modules/reagents/dispenser/dispenser2_energy.dm rename to code/modules/reagents/machinery/dispenser/dispenser2_energy.dm diff --git a/code/modules/reagents/dispenser/dispenser_presets.dm b/code/modules/reagents/machinery/dispenser/dispenser_presets.dm similarity index 98% rename from code/modules/reagents/dispenser/dispenser_presets.dm rename to code/modules/reagents/machinery/dispenser/dispenser_presets.dm index 6916903048..6b90357a2c 100644 --- a/code/modules/reagents/dispenser/dispenser_presets.dm +++ b/code/modules/reagents/machinery/dispenser/dispenser_presets.dm @@ -1,144 +1,144 @@ -/obj/machinery/chemical_dispenser/full - spawn_cartridges = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/calcium - ) - -/obj/machinery/chemical_dispenser/ert - name = "medicine dispenser" - spawn_cartridges = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ryetalyn, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/paracetamol, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxycodone, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sterilizine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/leporazine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/dermaline, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin_p, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tricord, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/synaptizine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyronalin, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/arithrazine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/alkysine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/imidazoline, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/peridaxon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyperzine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/rezadone, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sleeptox, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/chloral, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cryoxadone, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/clonexadone - ) - -/obj/machinery/chemical_dispenser/bar_soft - name = "soft drink dispenser" - desc = "A soda machine." - icon_state = "soda_dispenser" - ui_title = "Soda Dispenser" - accept_drinking = 1 - -/obj/machinery/chemical_dispenser/bar_soft/full - spawn_cartridges = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon - ) - -/obj/machinery/chemical_dispenser/bar_alc - name = "booze dispenser" - desc = "A beer machine. Like a soda machine, but more fun!" - icon_state = "booze_dispenser" - ui_title = "Booze Dispenser" - accept_drinking = 1 - -/obj/machinery/chemical_dispenser/bar_alc/full - spawn_cartridges = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cider, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead - ) - -/obj/machinery/chemical_dispenser/bar_coffee - name = "coffee dispenser" - desc = "Driving crack dealers out of employment since 2280." - icon_state = "coffee_dispenser" - ui_title = "Coffee Dispenser" - accept_drinking = 1 - -/obj/machinery/chemical_dispenser/bar_coffee/full - spawn_cartridges = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/mint, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/berry, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/greentea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/decaf - ) +/obj/machinery/chemical_dispenser/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/calcium + ) + +/obj/machinery/chemical_dispenser/ert + name = "medicine dispenser" + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ryetalyn, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/paracetamol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxycodone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sterilizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/leporazine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dermaline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin_p, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tricord, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/synaptizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyronalin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/arithrazine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/alkysine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/imidazoline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/peridaxon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyperzine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rezadone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sleeptox, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chloral, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cryoxadone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/clonexadone + ) + +/obj/machinery/chemical_dispenser/bar_soft + name = "soft drink dispenser" + desc = "A soda machine." + icon_state = "soda_dispenser" + ui_title = "Soda Dispenser" + accept_drinking = 1 + +/obj/machinery/chemical_dispenser/bar_soft/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon + ) + +/obj/machinery/chemical_dispenser/bar_alc + name = "booze dispenser" + desc = "A beer machine. Like a soda machine, but more fun!" + icon_state = "booze_dispenser" + ui_title = "Booze Dispenser" + accept_drinking = 1 + +/obj/machinery/chemical_dispenser/bar_alc/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cider, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead + ) + +/obj/machinery/chemical_dispenser/bar_coffee + name = "coffee dispenser" + desc = "Driving crack dealers out of employment since 2280." + icon_state = "coffee_dispenser" + ui_title = "Coffee Dispenser" + accept_drinking = 1 + +/obj/machinery/chemical_dispenser/bar_coffee/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mint, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/berry, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/greentea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/decaf + ) diff --git a/code/modules/reagents/dispenser/dispenser_presets_vr.dm b/code/modules/reagents/machinery/dispenser/dispenser_presets_vr.dm similarity index 100% rename from code/modules/reagents/dispenser/dispenser_presets_vr.dm rename to code/modules/reagents/machinery/dispenser/dispenser_presets_vr.dm diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/machinery/dispenser/reagent_tank.dm similarity index 94% rename from code/modules/reagents/reagent_dispenser.dm rename to code/modules/reagents/machinery/dispenser/reagent_tank.dm index 61520505b5..2e22ac13bd 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/machinery/dispenser/reagent_tank.dm @@ -1,5 +1,3 @@ - - /obj/structure/reagent_dispensers name = "Dispenser" desc = "..." @@ -127,7 +125,7 @@ /obj/structure/reagent_dispensers/foam name = "foamtank" desc = "A foam tank." - icon = 'icons/obj/objects_vr.dmi' //VOREStation Edit + icon = 'icons/obj/objects_vr.dmi' icon_state = "foamtank" amount_per_transfer_from_this = 10 @@ -145,10 +143,8 @@ if (W.is_wrench()) //can't wrench it shut, it's always open return return ..() - //VOREStation Add End - /obj/structure/reagent_dispensers/fueltank/examine(mob/user) . = ..() if(get_dist(user, src) <= 2) @@ -411,26 +407,6 @@ . = ..() reagents.add_reagent("beer",1000) -obj/structure/reagent_dispensers/beerkeg/vat - name = "Beer vat" - desc = "A vat of beer." - icon = 'icons/obj/objects.dmi' - icon_state = "vat" - amount_per_transfer_from_this = 15 - anchored = 1 -/obj/structure/reagent_dispensers/winevat - name = "Wine vat" - desc = "A vat of wine." - icon = 'icons/obj/objects.dmi' - icon_state = "vat" - amount_per_transfer_from_this = 10 - anchored = 1 - -/obj/structure/reagent_dispensers/winevat/Initialize() - ..() - reagents.add_reagent("wine",1000) - - /obj/structure/reagent_dispensers/beerkeg/fakenuke name = "nuclear beer keg" desc = "A beer keg in the form of a nuclear bomb! An absolute blast at parties!" @@ -483,4 +459,15 @@ obj/structure/reagent_dispensers/beerkeg/vat /obj/structure/reagent_dispensers/cookingoil/proc/explode() reagents.splash_area(get_turf(src), 3) visible_message(span("danger", "The [src] bursts open, spreading oil all over the area.")) - qdel(src) \ No newline at end of file + qdel(src) + +/obj/structure/reagent_dispensers/he3 + name = "fueltank" + desc = "A fueltank." + icon = 'icons/obj/objects.dmi' + icon_state = "weldtank" + amount_per_transfer_from_this = 10 + +/obj/structure/reagent_dispenser/he3/Initialize() + ..() + reagents.add_reagent("helium3",1000) diff --git a/code/modules/reagents/reagent_dispenser_ch.dm b/code/modules/reagents/machinery/dispenser/reagent_tank_ch.dm similarity index 87% rename from code/modules/reagents/reagent_dispenser_ch.dm rename to code/modules/reagents/machinery/dispenser/reagent_tank_ch.dm index 07e2d569ef..fcbf21e019 100644 --- a/code/modules/reagents/reagent_dispenser_ch.dm +++ b/code/modules/reagents/machinery/dispenser/reagent_tank_ch.dm @@ -1,11 +1,11 @@ -/obj/structure/reagent_dispensers/space_cleaner - name = "Space Cleaner Dispenser" - desc = "A dispenser of space cleaner, every janitor's dream!" - icon = 'icons/obj/objects.dmi' - icon_state = "virusfoodtank" - amount_per_transfer_from_this = 60 - anchored = 1 - -/obj/structure/reagent_dispensers/space_cleaner/Initialize() - . = ..() - reagents.add_reagent("cleaner", 1000) \ No newline at end of file +/obj/structure/reagent_dispensers/space_cleaner + name = "Space Cleaner Dispenser" + desc = "A dispenser of space cleaner, every janitor's dream!" + icon = 'icons/obj/objects.dmi' + icon_state = "virusfoodtank" + amount_per_transfer_from_this = 60 + anchored = 1 + +/obj/structure/reagent_dispensers/space_cleaner/Initialize() + . = ..() + reagents.add_reagent("cleaner", 1000) diff --git a/code/modules/reagents/dispenser/supply.dm b/code/modules/reagents/machinery/dispenser/supply.dm similarity index 98% rename from code/modules/reagents/dispenser/supply.dm rename to code/modules/reagents/machinery/dispenser/supply.dm index 228c5dfeef..30b1c3c0f6 100644 --- a/code/modules/reagents/dispenser/supply.dm +++ b/code/modules/reagents/machinery/dispenser/supply.dm @@ -1,238 +1,238 @@ -/datum/supply_pack/chemistry_dispenser - name = "Reagent dispenser" - contains = list( - /obj/machinery/chemical_dispenser{anchored = 0} - ) - cost = 25 - containertype = /obj/structure/largecrate - containername = "reagent dispenser crate" - group = "Reagents" - -/datum/supply_pack/beer_dispenser - name = "Booze dispenser" - contains = list( - /obj/machinery/chemical_dispenser/bar_alc{anchored = 0} - ) - cost = 25 - containertype = /obj/structure/largecrate - containername = "booze dispenser crate" - group = "Reagents" - -/datum/supply_pack/soda_dispenser - name = "Soda dispenser" - contains = list( - /obj/machinery/chemical_dispenser/bar_soft{anchored = 0} - ) - cost = 25 - containertype = /obj/structure/largecrate - containername = "soda dispenser crate" - group = "Reagents" - -/datum/supply_pack/reagents - name = "Chemistry dispenser refill" - contains = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten - ) - cost = 150 - containertype = /obj/structure/closet/crate/secure - containername = "chemical crate" - access = list(access_chemistry) - group = "Reagents" - -/datum/supply_pack/alcohol_reagents - name = "Bar alcoholic dispenser refill" - contains = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/bitters - ) - cost = 50 - containertype = /obj/structure/closet/crate/secure - containername = "alcoholic drinks crate" - access = list(access_bar) - group = "Reagents" - -/datum/supply_pack/softdrink_reagents - name = "Bar soft drink dispenser refill" - contains = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon - ) - cost = 50 - containertype = /obj/structure/closet/crate - containername = "soft drinks crate" - group = "Reagents" - -/datum/supply_pack/coffee_reagents - name = "Coffee machine dispenser refill" - contains = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, - /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice - ) - cost = 50 - containertype = /obj/structure/closet/crate - containername = "coffee drinks crate" - group = "Reagents" - -/datum/supply_pack/dispenser_cartridges - name = "Empty dispenser cartridges" - contains = list( - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge, - /obj/item/weapon/reagent_containers/chem_disp_cartridge - ) - cost = 15 - containertype = /obj/structure/closet/crate - containername = "dispenser cartridge crate" - group = "Reagents" - -#define SEC_PACK(_tname, _type, _name, _cname, _cost, _access)\ - datum/supply_pack/dispenser_cartridges{\ - _tname {\ - name = _name ;\ - containername = _cname ;\ - containertype = /obj/structure/closet/crate/secure;\ - access = list( _access );\ - cost = _cost ;\ - contains = list( _type , _type );\ - group = "Reagent Cartridges"\ - }\ - } -#define PACK(_tname, _type, _name, _cname, _cost)\ - datum/supply_pack/dispenser_cartridges{\ - _tname {\ - name = _name ;\ - containername = _cname ;\ - containertype = /obj/structure/closet/crate;\ - cost = _cost ;\ - contains = list( _type , _type );\ - group = "Reagent Cartridges"\ - }\ - } - -// Chemistry-restricted (raw reagents excluding sugar/water) -// Datum path Contents type Supply pack name Container name Cost Container access -SEC_PACK(hydrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, "Reagent refill - Hydrogen", "hydrogen reagent cartridge crate", 15, access_chemistry) -SEC_PACK(lithium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, "Reagent refill - Lithium", "lithium reagent cartridge crate", 15, access_chemistry) -SEC_PACK(carbon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, "Reagent refill - Carbon", "carbon reagent cartridge crate", 15, access_chemistry) -SEC_PACK(nitrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, "Reagent refill - Nitrogen", "nitrogen reagent cartridge crate", 15, access_chemistry) -SEC_PACK(oxygen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, "Reagent refill - Oxygen", "oxygen reagent cartridge crate", 15, access_chemistry) -SEC_PACK(fluorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, "Reagent refill - Fluorine", "fluorine reagent cartridge crate", 15, access_chemistry) -SEC_PACK(sodium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, "Reagent refill - Sodium", "sodium reagent cartridge crate", 15, access_chemistry) -SEC_PACK(aluminium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, "Reagent refill - Aluminum", "aluminum reagent cartridge crate", 15, access_chemistry) -SEC_PACK(silicon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, "Reagent refill - Silicon", "silicon reagent cartridge crate", 15, access_chemistry) -SEC_PACK(phosphorus,/obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, "Reagent refill - Phosphorus", "phosphorus reagent cartridge crate", 15, access_chemistry) -SEC_PACK(sulfur, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, "Reagent refill - Sulfur", "sulfur reagent cartridge crate", 15, access_chemistry) -SEC_PACK(chlorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, "Reagent refill - Chlorine", "chlorine reagent cartridge crate", 15, access_chemistry) -SEC_PACK(potassium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, "Reagent refill - Potassium", "potassium reagent cartridge crate", 15, access_chemistry) -SEC_PACK(iron, /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, "Reagent refill - Iron", "iron reagent cartridge crate", 15, access_chemistry) -SEC_PACK(copper, /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, "Reagent refill - Copper", "copper reagent cartridge crate", 15, access_chemistry) -SEC_PACK(mercury, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, "Reagent refill - Mercury", "mercury reagent cartridge crate", 15, access_chemistry) -SEC_PACK(radium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, "Reagent refill - Radium", "radium reagent cartridge crate", 15, access_chemistry) -SEC_PACK(ethanol, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, "Reagent refill - Ethanol", "ethanol reagent cartridge crate", 15, access_chemistry) -SEC_PACK(sacid, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, "Reagent refill - Sulfuric Acid", "sulfuric acid reagent cartridge crate", 15, access_chemistry) -SEC_PACK(tungsten, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, "Reagent refill - Tungsten", "tungsten reagent cartridge crate", 15, access_chemistry) -SEC_PACK(calcium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/calcium, "Reagent refill - Calcium", "calcium reagent cartridge crate", 15, access_chemistry) - -// Bar-restricted (alcoholic drinks) -// Datum path Contents type Supply pack name Container name Cost Container access -SEC_PACK(beer, /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, "Reagent refill - Beer", "beer reagent cartridge crate", 15, access_bar) -SEC_PACK(kahlua, /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, "Reagent refill - Kahlua", "kahlua reagent cartridge crate", 15, access_bar) -SEC_PACK(whiskey, /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, "Reagent refill - Whiskey", "whiskey reagent cartridge crate", 15, access_bar) -SEC_PACK(wine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, "Reagent refill - Wine", "wine reagent cartridge crate", 15, access_bar) -SEC_PACK(vodka, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, "Reagent refill - Vodka", "vodka reagent cartridge crate", 15, access_bar) -SEC_PACK(gin, /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, "Reagent refill - Gin", "gin reagent cartridge crate", 15, access_bar) -SEC_PACK(rum, /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, "Reagent refill - Rum", "rum reagent cartridge crate", 15, access_bar) -SEC_PACK(tequila, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, "Reagent refill - Tequila", "tequila reagent cartridge crate", 15, access_bar) -SEC_PACK(vermouth, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, "Reagent refill - Vermouth", "vermouth reagent cartridge crate", 15, access_bar) -SEC_PACK(cognac, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, "Reagent refill - Cognac", "cognac reagent cartridge crate", 15, access_bar) -SEC_PACK(ale, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, "Reagent refill - Ale", "ale reagent cartridge crate", 15, access_bar) -SEC_PACK(mead, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead, "Reagent refill - Mead", "mead reagent cartridge crate", 15, access_bar) - -// Unrestricted (water, sugar, non-alcoholic drinks) -// Datum path Contents type Supply pack name Container name Cost -PACK(water, /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, "Reagent refill - Water", "water reagent cartridge crate", 15) -PACK(sugar, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, "Reagent refill - Sugar", "sugar reagent cartridge crate", 15) -PACK(ice, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, "Reagent refill - Ice", "ice reagent cartridge crate", 15) -PACK(tea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, "Reagent refill - Tea", "tea reagent cartridge crate", 15) -PACK(icetea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, "Reagent refill - Iced Tea", "iced tea reagent cartridge crate", 15) -PACK(cola, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, "Reagent refill - Space Cola", "\improper Space Cola reagent cartridge crate", 15) -PACK(smw, /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, "Reagent refill - Space Mountain Wind", "\improper Space Mountain Wind reagent cartridge crate", 15) -PACK(dr_gibb, /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, "Reagent refill - Dr. Gibb", "\improper Dr. Gibb reagent cartridge crate", 15) -PACK(spaceup, /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, "Reagent refill - Space-Up", "\improper Space-Up reagent cartridge crate", 15) -PACK(tonic, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, "Reagent refill - Tonic Water", "tonic water reagent cartridge crate", 15) -PACK(sodawater, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, "Reagent refill - Soda Water", "soda water reagent cartridge crate", 15) -PACK(lemon_lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, "Reagent refill - Lemon-Lime Juice", "lemon-lime juice reagent cartridge crate", 15) -PACK(orange, /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, "Reagent refill - Orange Juice", "orange juice reagent cartridge crate", 15) -PACK(lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, "Reagent refill - Lime Juice", "lime juice reagent cartridge crate", 15) -PACK(lemon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon, "Reagent refill - Lemon Juice", "lemon juice reagent cartridge crate", 15) -PACK(watermelon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, "Reagent refill - Watermelon Juice", "watermelon juice reagent cartridge crate", 15) -PACK(coffee, /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, "Reagent refill - Coffee", "coffee reagent cartridge crate", 15) -PACK(cafe_latte, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, "Reagent refill - Cafe Latte", "cafe latte reagent cartridge crate", 15) -PACK(soy_latte, /obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte, "Reagent refill - Soy Latte", "soy latte reagent cartridge crate", 15) -PACK(hot_coco, /obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco, "Reagent refill - Hot Coco", "hot coco reagent cartridge crate", 15) -PACK(milk, /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, "Reagent refill - Milk", "milk reagent cartridge crate", 15) -PACK(cream, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, "Reagent refill - Cream", "cream reagent cartridge crate", 15) - -#undef SEC_PACK -#undef PACK +/datum/supply_pack/chemistry_dispenser + name = "Reagent dispenser" + contains = list( + /obj/machinery/chemical_dispenser{anchored = 0} + ) + cost = 25 + containertype = /obj/structure/largecrate + containername = "reagent dispenser crate" + group = "Reagents" + +/datum/supply_pack/beer_dispenser + name = "Booze dispenser" + contains = list( + /obj/machinery/chemical_dispenser/bar_alc{anchored = 0} + ) + cost = 25 + containertype = /obj/structure/largecrate + containername = "booze dispenser crate" + group = "Reagents" + +/datum/supply_pack/soda_dispenser + name = "Soda dispenser" + contains = list( + /obj/machinery/chemical_dispenser/bar_soft{anchored = 0} + ) + cost = 25 + containertype = /obj/structure/largecrate + containername = "soda dispenser crate" + group = "Reagents" + +/datum/supply_pack/reagents + name = "Chemistry dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + containername = "chemical crate" + access = list(access_chemistry) + group = "Reagents" + +/datum/supply_pack/alcohol_reagents + name = "Bar alcoholic dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/bitters + ) + cost = 50 + containertype = /obj/structure/closet/crate/secure + containername = "alcoholic drinks crate" + access = list(access_bar) + group = "Reagents" + +/datum/supply_pack/softdrink_reagents + name = "Bar soft drink dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon + ) + cost = 50 + containertype = /obj/structure/closet/crate + containername = "soft drinks crate" + group = "Reagents" + +/datum/supply_pack/coffee_reagents + name = "Coffee machine dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice + ) + cost = 50 + containertype = /obj/structure/closet/crate + containername = "coffee drinks crate" + group = "Reagents" + +/datum/supply_pack/dispenser_cartridges + name = "Empty dispenser cartridges" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge + ) + cost = 15 + containertype = /obj/structure/closet/crate + containername = "dispenser cartridge crate" + group = "Reagents" + +#define SEC_PACK(_tname, _type, _name, _cname, _cost, _access)\ + datum/supply_pack/dispenser_cartridges{\ + _tname {\ + name = _name ;\ + containername = _cname ;\ + containertype = /obj/structure/closet/crate/secure;\ + access = list( _access );\ + cost = _cost ;\ + contains = list( _type , _type );\ + group = "Reagent Cartridges"\ + }\ + } +#define PACK(_tname, _type, _name, _cname, _cost)\ + datum/supply_pack/dispenser_cartridges{\ + _tname {\ + name = _name ;\ + containername = _cname ;\ + containertype = /obj/structure/closet/crate;\ + cost = _cost ;\ + contains = list( _type , _type );\ + group = "Reagent Cartridges"\ + }\ + } + +// Chemistry-restricted (raw reagents excluding sugar/water) +// Datum path Contents type Supply pack name Container name Cost Container access +SEC_PACK(hydrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, "Reagent refill - Hydrogen", "hydrogen reagent cartridge crate", 15, access_chemistry) +SEC_PACK(lithium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, "Reagent refill - Lithium", "lithium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(carbon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, "Reagent refill - Carbon", "carbon reagent cartridge crate", 15, access_chemistry) +SEC_PACK(nitrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, "Reagent refill - Nitrogen", "nitrogen reagent cartridge crate", 15, access_chemistry) +SEC_PACK(oxygen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, "Reagent refill - Oxygen", "oxygen reagent cartridge crate", 15, access_chemistry) +SEC_PACK(fluorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, "Reagent refill - Fluorine", "fluorine reagent cartridge crate", 15, access_chemistry) +SEC_PACK(sodium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, "Reagent refill - Sodium", "sodium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(aluminium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, "Reagent refill - Aluminum", "aluminum reagent cartridge crate", 15, access_chemistry) +SEC_PACK(silicon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, "Reagent refill - Silicon", "silicon reagent cartridge crate", 15, access_chemistry) +SEC_PACK(phosphorus,/obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, "Reagent refill - Phosphorus", "phosphorus reagent cartridge crate", 15, access_chemistry) +SEC_PACK(sulfur, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, "Reagent refill - Sulfur", "sulfur reagent cartridge crate", 15, access_chemistry) +SEC_PACK(chlorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, "Reagent refill - Chlorine", "chlorine reagent cartridge crate", 15, access_chemistry) +SEC_PACK(potassium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, "Reagent refill - Potassium", "potassium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(iron, /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, "Reagent refill - Iron", "iron reagent cartridge crate", 15, access_chemistry) +SEC_PACK(copper, /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, "Reagent refill - Copper", "copper reagent cartridge crate", 15, access_chemistry) +SEC_PACK(mercury, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, "Reagent refill - Mercury", "mercury reagent cartridge crate", 15, access_chemistry) +SEC_PACK(radium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, "Reagent refill - Radium", "radium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(ethanol, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, "Reagent refill - Ethanol", "ethanol reagent cartridge crate", 15, access_chemistry) +SEC_PACK(sacid, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, "Reagent refill - Sulfuric Acid", "sulfuric acid reagent cartridge crate", 15, access_chemistry) +SEC_PACK(tungsten, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, "Reagent refill - Tungsten", "tungsten reagent cartridge crate", 15, access_chemistry) +SEC_PACK(calcium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/calcium, "Reagent refill - Calcium", "calcium reagent cartridge crate", 15, access_chemistry) + +// Bar-restricted (alcoholic drinks) +// Datum path Contents type Supply pack name Container name Cost Container access +SEC_PACK(beer, /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, "Reagent refill - Beer", "beer reagent cartridge crate", 15, access_bar) +SEC_PACK(kahlua, /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, "Reagent refill - Kahlua", "kahlua reagent cartridge crate", 15, access_bar) +SEC_PACK(whiskey, /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, "Reagent refill - Whiskey", "whiskey reagent cartridge crate", 15, access_bar) +SEC_PACK(wine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, "Reagent refill - Wine", "wine reagent cartridge crate", 15, access_bar) +SEC_PACK(vodka, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, "Reagent refill - Vodka", "vodka reagent cartridge crate", 15, access_bar) +SEC_PACK(gin, /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, "Reagent refill - Gin", "gin reagent cartridge crate", 15, access_bar) +SEC_PACK(rum, /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, "Reagent refill - Rum", "rum reagent cartridge crate", 15, access_bar) +SEC_PACK(tequila, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, "Reagent refill - Tequila", "tequila reagent cartridge crate", 15, access_bar) +SEC_PACK(vermouth, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, "Reagent refill - Vermouth", "vermouth reagent cartridge crate", 15, access_bar) +SEC_PACK(cognac, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, "Reagent refill - Cognac", "cognac reagent cartridge crate", 15, access_bar) +SEC_PACK(ale, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, "Reagent refill - Ale", "ale reagent cartridge crate", 15, access_bar) +SEC_PACK(mead, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead, "Reagent refill - Mead", "mead reagent cartridge crate", 15, access_bar) + +// Unrestricted (water, sugar, non-alcoholic drinks) +// Datum path Contents type Supply pack name Container name Cost +PACK(water, /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, "Reagent refill - Water", "water reagent cartridge crate", 15) +PACK(sugar, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, "Reagent refill - Sugar", "sugar reagent cartridge crate", 15) +PACK(ice, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, "Reagent refill - Ice", "ice reagent cartridge crate", 15) +PACK(tea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, "Reagent refill - Tea", "tea reagent cartridge crate", 15) +PACK(icetea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, "Reagent refill - Iced Tea", "iced tea reagent cartridge crate", 15) +PACK(cola, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, "Reagent refill - Space Cola", "\improper Space Cola reagent cartridge crate", 15) +PACK(smw, /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, "Reagent refill - Space Mountain Wind", "\improper Space Mountain Wind reagent cartridge crate", 15) +PACK(dr_gibb, /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, "Reagent refill - Dr. Gibb", "\improper Dr. Gibb reagent cartridge crate", 15) +PACK(spaceup, /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, "Reagent refill - Space-Up", "\improper Space-Up reagent cartridge crate", 15) +PACK(tonic, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, "Reagent refill - Tonic Water", "tonic water reagent cartridge crate", 15) +PACK(sodawater, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, "Reagent refill - Soda Water", "soda water reagent cartridge crate", 15) +PACK(lemon_lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, "Reagent refill - Lemon-Lime Juice", "lemon-lime juice reagent cartridge crate", 15) +PACK(orange, /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, "Reagent refill - Orange Juice", "orange juice reagent cartridge crate", 15) +PACK(lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, "Reagent refill - Lime Juice", "lime juice reagent cartridge crate", 15) +PACK(lemon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon, "Reagent refill - Lemon Juice", "lemon juice reagent cartridge crate", 15) +PACK(watermelon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, "Reagent refill - Watermelon Juice", "watermelon juice reagent cartridge crate", 15) +PACK(coffee, /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, "Reagent refill - Coffee", "coffee reagent cartridge crate", 15) +PACK(cafe_latte, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte, "Reagent refill - Cafe Latte", "cafe latte reagent cartridge crate", 15) +PACK(soy_latte, /obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte, "Reagent refill - Soy Latte", "soy latte reagent cartridge crate", 15) +PACK(hot_coco, /obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco, "Reagent refill - Hot Coco", "hot coco reagent cartridge crate", 15) +PACK(milk, /obj/item/weapon/reagent_containers/chem_disp_cartridge/milk, "Reagent refill - Milk", "milk reagent cartridge crate", 15) +PACK(cream, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, "Reagent refill - Cream", "cream reagent cartridge crate", 15) + +#undef SEC_PACK +#undef PACK diff --git a/code/modules/reagents/distilling/distilling.dm b/code/modules/reagents/machinery/distillery.dm similarity index 92% rename from code/modules/reagents/distilling/distilling.dm rename to code/modules/reagents/machinery/distillery.dm index 4bd8bd163e..d64d8b3211 100644 --- a/code/modules/reagents/distilling/distilling.dm +++ b/code/modules/reagents/machinery/distillery.dm @@ -53,31 +53,16 @@ var/image/overlay_dumping var/image/overlay_connected -// Our unique beaker, used in its unique recipes to ensure things can only react inside this machine and minimize oddities from trying to transfer to a machine and back. - var/obj/item/weapon/reagent_containers/glass/distilling/Reservoir - var/obj/item/weapon/reagent_containers/glass/InputBeaker var/obj/item/weapon/reagent_containers/glass/OutputBeaker // A multiplier for the production amount. This should really only ever be lower than one, otherwise you end up with duping. var/efficiency = 1 -/obj/item/weapon/reagent_containers/glass/distilling - name = "distilling chamber" - desc = "You should not be seeing this." - volume = 600 - - var/obj/machinery/portable_atmospherics/powered/reagent_distillery/Master - -/obj/item/weapon/reagent_containers/glass/distilling/Destroy() - Master = null - ..() - /obj/machinery/portable_atmospherics/powered/reagent_distillery/Initialize() . = ..() - Reservoir = new (src) - Reservoir.Master = src + create_reagents(600, /datum/reagents/distilling) if(!base_state) base_state = icon_state @@ -107,8 +92,6 @@ overlay_connected = image(icon = src.icon, icon_state = "[base_state]-connector") /obj/machinery/portable_atmospherics/powered/reagent_distillery/Destroy() - qdel(Reservoir) - Reservoir = null if(InputBeaker) qdel(InputBeaker) InputBeaker = null @@ -134,8 +117,8 @@ else . += "\The [src]'s input beaker is empty!" - if(Reservoir.reagents.reagent_list.len) - . += "\The [src]'s internal buffer holds [Reservoir.reagents.total_volume] units of liquid." + if(reagents.reagent_list.len) + . += "\The [src]'s internal buffer holds [reagents.total_volume] units of liquid." else . += "\The [src]'s internal buffer is empty!" @@ -164,7 +147,7 @@ to_chat(user, "You press \the [src]'s chamber agitator button.") if(on) visible_message("\The [src] rattles to life.") - Reservoir.reagents.handle_reactions() + reagents.handle_reactions() else spawn(1 SECOND) to_chat(user, "Nothing happens..") @@ -341,12 +324,12 @@ visible_message("\The [src]'s motors wind down.") on = FALSE - if(InputBeaker && Reservoir.reagents.total_volume < Reservoir.reagents.maximum_volume) - InputBeaker.reagents.trans_to_holder(Reservoir.reagents, amount = rand(10,20)) + if(InputBeaker && reagents.total_volume < reagents.maximum_volume) + InputBeaker.reagents.trans_to_holder(reagents, amount = rand(10,20)) if(OutputBeaker && OutputBeaker.reagents.total_volume < OutputBeaker.reagents.maximum_volume) use_power(power_rating * CELLRATE * 0.5) - Reservoir.reagents.trans_to_holder(OutputBeaker.reagents, amount = rand(1, 5)) + reagents.trans_to_holder(OutputBeaker.reagents, amount = rand(1, 5)) update_icon() diff --git a/code/modules/reagents/machinery/grinder.dm b/code/modules/reagents/machinery/grinder.dm new file mode 100644 index 0000000000..f913f7947b --- /dev/null +++ b/code/modules/reagents/machinery/grinder.dm @@ -0,0 +1,268 @@ +/obj/machinery/reagentgrinder + + name = "All-In-One Grinder" + desc = "Grinds stuff into itty bitty bits." + icon = 'icons/obj/kitchen.dmi' + icon_state = "juicer1" + density = 0 + anchored = 0 + use_power = USE_POWER_IDLE + idle_power_usage = 5 + active_power_usage = 100 + circuit = /obj/item/weapon/circuitboard/grinder + var/inuse = 0 + var/obj/item/weapon/reagent_containers/beaker = null + var/limit = 10 + var/list/holdingitems = list() + var/list/sheet_reagents = list( //have a number of reageents divisible by REAGENTS_PER_SHEET (default 20) unless you like decimals, + /obj/item/stack/material/iron = list("iron"), + /obj/item/stack/material/uranium = list("uranium"), + /obj/item/stack/material/phoron = list("phoron"), + /obj/item/stack/material/gold = list("gold"), + /obj/item/stack/material/silver = list("silver"), + /obj/item/stack/material/platinum = list("platinum"), + /obj/item/stack/material/mhydrogen = list("hydrogen"), + /obj/item/stack/material/steel = list("iron", "carbon"), + /obj/item/stack/material/plasteel = list("iron", "iron", "carbon", "carbon", "platinum"), //8 iron, 8 carbon, 4 platinum, + /obj/item/stack/material/snow = list("water"), + /obj/item/stack/material/sandstone = list("silicon", "oxygen"), + /obj/item/stack/material/glass = list("silicon"), + /obj/item/stack/material/glass/phoronglass = list("platinum", "silicon", "silicon", "silicon"), //5 platinum, 15 silicon, + ) + + var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine") + var/static/radial_eject = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject") + var/static/radial_grind = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_grind") + // var/static/radial_juice = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_juice") + // var/static/radial_mix = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_mix") + +/obj/machinery/reagentgrinder/Initialize() + . = ..() + beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src) + default_apply_parts() + +/obj/machinery/reagentgrinder/examine(mob/user) + . = ..() + if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) + . += "You're too far away to examine [src]'s contents and display!" + return + + if(inuse) + . += "\The [src] is operating." + return + + if(beaker || length(holdingitems)) + . += "\The [src] contains:" + if(beaker) + . += "- \A [beaker]." + for(var/i in holdingitems) + var/obj/item/O = i + . += "- \A [O.name]." + + if(!(stat & (NOPOWER|BROKEN))) + . += "The status display reads:\n" + if(beaker) + for(var/datum/reagent/R in beaker.reagents.reagent_list) + . += "- [R.volume] units of [R.name]." + +/obj/machinery/reagentgrinder/update_icon() + icon_state = "juicer"+num2text(!isnull(beaker)) + return + +/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(beaker) + if(default_deconstruction_screwdriver(user, O)) + return + if(default_deconstruction_crowbar(user, O)) + return + + //VOREStation edit start - for solargrubs + if (istype(O, /obj/item/device/multitool)) + return ..() + //VOREStation edit end + + if (istype(O,/obj/item/weapon/reagent_containers/glass) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks/glass2) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker)) + + if (beaker) + return 1 + else + src.beaker = O + user.drop_item() + O.loc = src + update_icon() + src.updateUsrDialog() + return 0 + + if(holdingitems && holdingitems.len >= limit) + to_chat(user, "The machine cannot hold anymore items.") + return 1 + + if(!istype(O)) + return + + if(istype(O,/obj/item/weapon/storage/bag/plants)) + var/obj/item/weapon/storage/bag/plants/bag = O + var/failed = 1 + for(var/obj/item/G in O.contents) + if(!G.reagents || !G.reagents.total_volume) + continue + failed = 0 + bag.remove_from_storage(G, src) + holdingitems += G + if(holdingitems && holdingitems.len >= limit) + break + + if(failed) + to_chat(user, "Nothing in the plant bag is usable.") + return 1 + + if(!O.contents.len) + to_chat(user, "You empty \the [O] into \the [src].") + else + to_chat(user, "You fill \the [src] from \the [O].") + + src.updateUsrDialog() + return 0 + + if(istype(O,/obj/item/weapon/gripper)) + var/obj/item/weapon/gripper/B = O //B, for Borg. + if(!B.wrapped) + to_chat(user, "\The [B] is not holding anything.") + return 0 + else + var/B_held = B.wrapped + to_chat(user, "You use \the [B] to load \the [src] with \the [B_held].") + + return 0 + + if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume)) + to_chat(user, "\The [O] is not suitable for blending.") + return 1 + + user.remove_from_mob(O) + O.loc = src + holdingitems += O + return 0 + +/obj/machinery/reagentgrinder/AltClick(mob/user) + . = ..() + if(user.incapacitated() || !Adjacent(user)) + return + replace_beaker(user) + +/obj/machinery/reagentgrinder/attack_hand(mob/user as mob) + interact(user) + +/obj/machinery/reagentgrinder/interact(mob/user as mob) // The microwave Menu //I am reasonably certain that this is not a microwave + if(inuse || user.incapacitated()) + return + + var/list/options = list() + + if(beaker || length(holdingitems)) + options["eject"] = radial_eject + + if(isAI(user)) + if(stat & NOPOWER) + return + options["examine"] = radial_examine + + // if there is no power or it's broken, the procs will fail but the buttons will still show + if(length(holdingitems)) + options["grind"] = radial_grind + + var/choice + if(length(options) < 1) + return + if(length(options) == 1) + for(var/key in options) + choice = key + else + choice = show_radial_menu(user, src, options, require_near = !issilicon(user)) + + // post choice verification + if(inuse || (isAI(user) && stat & NOPOWER) || user.incapacitated()) + return + + switch(choice) + if("eject") + eject(user) + if("grind") + grind(user) + if("examine") + examine(user) + +/obj/machinery/reagentgrinder/proc/eject(mob/user) + if(user.incapacitated()) + return + for(var/obj/item/O in holdingitems) + O.loc = src.loc + holdingitems -= O + holdingitems.Cut() + if(beaker) + replace_beaker(user) + +/obj/machinery/reagentgrinder/proc/grind() + + power_change() + if(stat & (NOPOWER|BROKEN)) + return + + // Sanity check. + if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume)) + return + + playsound(src, 'sound/machines/blender.ogg', 50, 1) + inuse = 1 + + // Reset the machine. + spawn(60) + inuse = 0 + + // Process. + for (var/obj/item/O in holdingitems) + + var/remaining_volume = beaker.reagents.maximum_volume - beaker.reagents.total_volume + if(remaining_volume <= 0) + break + + if(sheet_reagents[O.type]) + var/obj/item/stack/stack = O + if(istype(stack)) + var/list/sheet_components = sheet_reagents[stack.type] + var/amount_to_take = max(0,min(stack.amount,round(remaining_volume/REAGENTS_PER_SHEET))) + if(amount_to_take) + stack.use(amount_to_take) + if(QDELETED(stack)) + holdingitems -= stack + if(islist(sheet_components)) + amount_to_take = (amount_to_take/(sheet_components.len)) + for(var/i in sheet_components) + beaker.reagents.add_reagent(i, (amount_to_take*REAGENTS_PER_SHEET)) + else + beaker.reagents.add_reagent(sheet_components, (amount_to_take*REAGENTS_PER_SHEET)) + continue + + if(O.reagents) + O.reagents.trans_to_obj(beaker, min(O.reagents.total_volume, remaining_volume)) + if(O.reagents.total_volume == 0) + holdingitems -= O + qdel(O) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + +/obj/machinery/reagentgrinder/proc/replace_beaker(mob/living/user, obj/item/weapon/reagent_containers/new_beaker) + if(!user) + return FALSE + if(beaker) + if(!user.incapacitated() && Adjacent(user)) + user.put_in_hands(beaker) + else + beaker.forceMove(drop_location()) + beaker = null + if(new_beaker) + beaker = new_beaker + update_icon() + return TRUE \ No newline at end of file diff --git a/code/modules/reagents/reactions/_reactions.dm b/code/modules/reagents/reactions/_reactions.dm new file mode 100644 index 0000000000..d63967d900 --- /dev/null +++ b/code/modules/reagents/reactions/_reactions.dm @@ -0,0 +1,128 @@ +//helper that ensures the reaction rate holds after iterating +//Ex. REACTION_RATE(0.3) means that 30% of the reagents will react each chemistry tick (~2 seconds by default). +#define REACTION_RATE(rate) (1.0 - (1.0-rate)**(1.0/PROCESS_REACTION_ITER)) + +//helper to define reaction rate in terms of half-life +//Ex. +//HALF_LIFE(0) -> Reaction completes immediately (default chems) +//HALF_LIFE(1) -> Half of the reagents react immediately, the rest over the following ticks. +//HALF_LIFE(2) -> Half of the reagents are consumed after 2 chemistry ticks. +//HALF_LIFE(3) -> Half of the reagents are consumed after 3 chemistry ticks. +#define HALF_LIFE(ticks) (ticks? 1.0 - (0.5)**(1.0/(ticks*PROCESS_REACTION_ITER)) : 1.0) + +/decl/chemical_reaction + var/name = null + var/id = null + var/result = null + var/list/required_reagents = list() + var/list/catalysts = list() + var/list/inhibitors = list() + var/result_amount = 0 + + //how far the reaction proceeds each time it is processed. Used with either REACTION_RATE or HALF_LIFE macros. + var/reaction_rate = HALF_LIFE(0) + + //if less than 1, the reaction will be inhibited if the ratio of products/reagents is too high. + //0.5 = 50% yield -> reaction will only proceed halfway until products are removed. + var/yield = 1.0 + + //If limits on reaction rate would leave less than this amount of any reagent (adjusted by the reaction ratios), + //the reaction goes to completion. This is to prevent reactions from going on forever with tiny reagent amounts. + var/min_reaction = 2 + + var/mix_message = "The solution begins to bubble." + var/reaction_sound = 'sound/effects/bubbles.ogg' + + var/log_is_important = 0 // If this reaction should be considered important for logging. Important recipes message admins when mixed, non-important ones just log to file. + +/decl/chemical_reaction/proc/can_happen(var/datum/reagents/holder) + //check that all the required reagents are present + if(!holder.has_all_reagents(required_reagents)) + return FALSE + + //check that all the required catalysts are present in the required amount + if(!holder.has_all_reagents(catalysts)) + return FALSE + + //check that none of the inhibitors are present in the required amount + if(holder.has_any_reagent(inhibitors)) + return FALSE + + return TRUE + +/decl/chemical_reaction/proc/calc_reaction_progress(var/datum/reagents/holder, var/reaction_limit) + var/progress = reaction_limit * reaction_rate //simple exponential progression + + //calculate yield + if(1-yield > 0.001) //if yield ratio is big enough just assume it goes to completion + /* + Determine the max amount of product by applying the yield condition: + (max_product/result_amount) / reaction_limit == yield/(1-yield) + + We make use of the fact that: + reaction_limit = (holder.get_reagent_amount(reactant) / required_reagents[reactant]) of the limiting reagent. + */ + var/yield_ratio = yield/(1-yield) + var/max_product = yield_ratio * reaction_limit * result_amount //rearrange to obtain max_product + var/yield_limit = max(0, max_product - holder.get_reagent_amount(result))/result_amount + + progress = min(progress, yield_limit) //apply yield limit + + //apply min reaction progress - wasn't sure if this should go before or after applying yield + //I guess people can just have their miniscule reactions go to completion regardless of yield. + for(var/reactant in required_reagents) + var/remainder = holder.get_reagent_amount(reactant) - progress*required_reagents[reactant] + if(remainder <= min_reaction*required_reagents[reactant]) + progress = reaction_limit + break + + return progress + +/decl/chemical_reaction/process(var/datum/reagents/holder) + //determine how far the reaction can proceed + var/list/reaction_limits = list() + for(var/reactant in required_reagents) + reaction_limits += holder.get_reagent_amount(reactant) / required_reagents[reactant] + + //determine how far the reaction proceeds + var/reaction_limit = min(reaction_limits) + var/progress_limit = calc_reaction_progress(holder, reaction_limit) + + var/reaction_progress = min(reaction_limit, progress_limit) //no matter what, the reaction progress cannot exceed the stoichiometric limit. + + //need to obtain the new reagent's data before anything is altered + var/data = send_data(holder, reaction_progress) + + //remove the reactants + for(var/reactant in required_reagents) + var/amt_used = required_reagents[reactant] * reaction_progress + holder.remove_reagent(reactant, amt_used, safety = 1) + + //add the product + var/amt_produced = result_amount * reaction_progress + if(result) + holder.add_reagent(result, amt_produced, data, safety = 1) + + on_reaction(holder, amt_produced) + + return reaction_progress + +//called when a reaction processes +/decl/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume) + return + +//called after processing reactions, if they occurred +/decl/chemical_reaction/proc/post_reaction(var/datum/reagents/holder) + var/atom/container = holder.my_atom + if(mix_message && container && !ismob(container)) + var/turf/T = get_turf(container) + var/list/seen = viewers(4, T) + for(var/mob/M in seen) + if(M.client) + M.show_message("[bicon(container)] [mix_message]", 1) + playsound(T, reaction_sound, 80, 1) + +//obtains any special data that will be provided to the reaction products +//this is called just before reactants are removed. +/decl/chemical_reaction/proc/send_data(var/datum/reagents/holder, var/reaction_limit) + return null \ No newline at end of file diff --git a/code/modules/reagents/distilling/Distilling-Recipes.dm b/code/modules/reagents/reactions/distilling/distilling.dm similarity index 74% rename from code/modules/reagents/distilling/Distilling-Recipes.dm rename to code/modules/reagents/reactions/distilling/distilling.dm index 0736ac7e61..5944a75846 100644 --- a/code/modules/reagents/distilling/Distilling-Recipes.dm +++ b/code/modules/reagents/reactions/distilling/distilling.dm @@ -1,4 +1,4 @@ -/datum/chemical_reaction/distilling +/decl/chemical_reaction/distilling // name = null // id = null // result = null @@ -26,32 +26,19 @@ var/list/temp_range = list(T0C, T20C) var/temp_shift = 0 // How much the temperature changes when the reaction occurs. -/datum/chemical_reaction/distilling/can_happen(var/datum/reagents/holder) - //check that all the required reagents are present - if(!holder.has_all_reagents(required_reagents)) - return 0 +/decl/chemical_reaction/distilling/can_happen(var/datum/reagents/holder) + if(!istype(holder, /datum/reagents/distilling) || !istype(holder.my_atom, /obj/machinery/portable_atmospherics/powered/reagent_distillery)) + return FALSE - //check that all the required catalysts are present in the required amount - if(!holder.has_all_reagents(catalysts)) - return 0 + // Super special temperature check. + var/obj/machinery/portable_atmospherics/powered/reagent_distillery/RD = holder.my_atom + if(RD.current_temp < temp_range[1] || RD.current_temp > temp_range[2]) + return FALSE - //check that none of the inhibitors are present in the required amount - if(holder.has_any_reagent(inhibitors)) - return 0 - - if(!istype(holder.my_atom, /obj/item/weapon/reagent_containers/glass/distilling)) - return 0 - - else // Super special temperature check. - var/obj/item/weapon/reagent_containers/glass/distilling/D = holder.my_atom - var/obj/machinery/portable_atmospherics/powered/reagent_distillery/RD = D.Master - if(RD.current_temp < temp_range[1] || RD.current_temp > temp_range[2]) - return 0 - - return 1 + return ..() /* -/datum/chemical_reaction/distilling/on_reaction(var/datum/reagents/holder, var/created_volume) +/decl/chemical_reaction/distilling/on_reaction(var/datum/reagents/holder, var/created_volume) if(istype(holder.my_atom, /obj/item/weapon/reagent_containers/glass/distilling)) var/obj/item/weapon/reagent_containers/glass/distilling/D = holder.my_atom var/obj/machinery/portable_atmospherics/powered/reagent_distillery/RD = D.Master @@ -62,7 +49,7 @@ // Subtypes // // Biomass -/datum/chemical_reaction/distilling/biomass +/decl/chemical_reaction/distilling/biomass name = "Distilling Biomass" id = "distill_biomass" result = "biomass" @@ -73,7 +60,7 @@ temp_shift = -2 // Medicinal -/datum/chemical_reaction/distilling/inaprovalaze +/decl/chemical_reaction/distilling/inaprovalaze name = "Distilling Inaprovalaze" id = "distill_inaprovalaze" result = "inaprovalaze" @@ -84,7 +71,7 @@ temp_range = list(T0C + 100, T0C + 120) -/datum/chemical_reaction/distilling/bicaridaze +/decl/chemical_reaction/distilling/bicaridaze name = "Distilling Bicaridaze" id = "distill_bicaridaze" result = "bicaridaze" @@ -95,7 +82,7 @@ temp_range = list(T0C + 110, T0C + 130) -/datum/chemical_reaction/distilling/dermalaze +/decl/chemical_reaction/distilling/dermalaze name = "Distilling Dermalaze" id = "distill_dermalaze" result = "dermalaze" @@ -106,7 +93,7 @@ temp_range = list(T0C + 115, T0C + 130) -/datum/chemical_reaction/distilling/spacomycaze +/decl/chemical_reaction/distilling/spacomycaze name = "Distilling Spacomycaze" id = "distill_spacomycaze" result = "spacomycaze" @@ -117,7 +104,7 @@ temp_range = list(T0C + 100, T0C + 120) -/datum/chemical_reaction/distilling/tricorlidaze +/decl/chemical_reaction/distilling/tricorlidaze name = "Distilling Tricorlidaze" id = "distill_tricorlidaze" result = "tricorlidaze" @@ -128,7 +115,7 @@ temp_range = list(T0C + 100, T0C + 120) -/datum/chemical_reaction/distilling/synthplas +/decl/chemical_reaction/distilling/synthplas name = "Distilling Synthplas" id = "distill_synthplas" result = "synthblood_dilute" @@ -140,7 +127,7 @@ temp_range = list(T0C + 110, T0C + 130) // Alcohol -/datum/chemical_reaction/distilling/beer +/decl/chemical_reaction/distilling/beer name = "Distilling Beer" id = "distill_beer" result = "beer" @@ -151,7 +138,7 @@ temp_range = list(T20C, T20C + 2) -/datum/chemical_reaction/distilling/ale +/decl/chemical_reaction/distilling/ale name = "Distilling Ale" id = "distill_ale" result = "ale" @@ -165,7 +152,7 @@ temp_range = list(T0C + 7, T0C + 13) // Unique -/datum/chemical_reaction/distilling/berserkjuice +/decl/chemical_reaction/distilling/berserkjuice name = "Distilling Brute Juice" id = "distill_brutejuice" result = "berserkmed" @@ -175,7 +162,7 @@ temp_range = list(T0C + 600, T0C + 700) temp_shift = 4 -/datum/chemical_reaction/distilling/berserkjuice/on_reaction(var/datum/reagents/holder, var/created_volume) +/decl/chemical_reaction/distilling/berserkjuice/on_reaction(var/datum/reagents/holder, var/created_volume) ..() if(prob(1)) @@ -183,7 +170,7 @@ explosion(T, -1, rand(-1, 1), rand(1,2), rand(3,5)) return -/datum/chemical_reaction/distilling/cryogel +/decl/chemical_reaction/distilling/cryogel name = "Distilling Cryogellatin" id = "distill_cryoslurry" result = "cryoslurry" @@ -194,7 +181,7 @@ temp_range = list(0, 15) temp_shift = 20 -/datum/chemical_reaction/distilling/cryogel/on_reaction(var/datum/reagents/holder, var/created_volume) +/decl/chemical_reaction/distilling/cryogel/on_reaction(var/datum/reagents/holder, var/created_volume) ..() if(prob(1)) @@ -204,7 +191,7 @@ F.start() return -/datum/chemical_reaction/distilling/lichpowder +/decl/chemical_reaction/distilling/lichpowder name = "Distilling Lichpowder" id = "distill_lichpowder" result = "lichpowder" @@ -215,7 +202,7 @@ temp_range = list(T0C + 100, T0C + 150) -/datum/chemical_reaction/distilling/necroxadone +/decl/chemical_reaction/distilling/necroxadone name = "Distilling Necroxadone" id = "distill_necroxadone" result = "necroxadone" diff --git a/code/modules/reagents/reactions/fusion/fusion.dm b/code/modules/reagents/reactions/fusion/fusion.dm new file mode 100644 index 0000000000..7b0acfec96 --- /dev/null +++ b/code/modules/reagents/reactions/fusion/fusion.dm @@ -0,0 +1,6 @@ +// TDOD: Port R-UST fusion reactions to the chemistry system. +//They'll operate in a similar manner to distillery reactions, +// but will have distinct behaviours (mostly relating to the fusion field) that warrants a separate type +/* +/decl/chemical_reaction/fusion + name = "Fusion"*/ \ No newline at end of file diff --git a/code/modules/reagents/reactions/instant/drinks.dm b/code/modules/reagents/reactions/instant/drinks.dm new file mode 100644 index 0000000000..2722d7843b --- /dev/null +++ b/code/modules/reagents/reactions/instant/drinks.dm @@ -0,0 +1,1223 @@ +/decl/chemical_reaction/instant/drinks/coffee + name = "Coffee" + id = "coffee" + result = "coffee" + required_reagents = list("water" = 5, "coffeepowder" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/tea + name = "Black tea" + id = "tea" + result = "tea" + required_reagents = list("water" = 5, "teapowder" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/hot_coco + name = "Hot Coco" + id = "hot_coco" + result = "hot_coco" + required_reagents = list("water" = 5, "coco" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/grapejuice + name = "Grape Juice" + id = "grapejuice" + result = "grapejuice" + required_reagents = list("water" = 3, "instantgrape" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/orangejuice + name = "Orange Juice" + id = "orangejuice" + result = "orangejuice" + required_reagents = list("water" = 3, "instantorange" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/watermelonjuice + name = "Watermelon Juice" + id = "watermelonjuice" + result = "watermelonjuice" + required_reagents = list("water" = 3, "instantwatermelon" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/applejuice + name = "Apple Juice" + id = "applejuice" + result = "applejuice" + required_reagents = list("water" = 3, "instantapple" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/goldschlager + name = "Goldschlager" + id = "goldschlager" + result = "goldschlager" + required_reagents = list("vodka" = 10, "gold" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/patron + name = "Patron" + id = "patron" + result = "patron" + required_reagents = list("tequilla" = 10, "silver" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bilk + name = "Bilk" + id = "bilk" + result = "bilk" + required_reagents = list("milk" = 1, "beer" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/icetea + name = "Iced Tea" + id = "icetea" + result = "icetea" + required_reagents = list("ice" = 1, "tea" = 2) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/icecoffee + name = "Iced Coffee" + id = "icecoffee" + result = "icecoffee" + required_reagents = list("ice" = 1, "coffee" = 2) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/nuka_cola + name = "Nuclear Cola" + id = "nuka_cola" + result = "nuka_cola" + required_reagents = list("uranium" = 1, "cola" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/moonshine + name = "Moonshine" + id = "moonshine" + result = "moonshine" + required_reagents = list("nutriment" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/grenadine + name = "Grenadine Syrup" + id = "grenadine" + result = "grenadine" + required_reagents = list("berryjuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/wine + name = "Wine" + id = "wine" + result = "wine" + required_reagents = list("grapejuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/pwine + name = "Poison Wine" + id = "pwine" + result = "pwine" + required_reagents = list("poisonberryjuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/melonliquor + name = "Melon Liquor" + id = "melonliquor" + result = "melonliquor" + required_reagents = list("watermelonjuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bluecuracao + name = "Blue Curacao" + id = "bluecuracao" + result = "bluecuracao" + required_reagents = list("orangejuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/spacebeer + name = "Space Beer" + id = "spacebeer" + result = "beer" + required_reagents = list("cornoil" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/vodka + name = "Vodka" + id = "vodka" + result = "vodka" + required_reagents = list("potatojuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/cider + name = "Cider" + id = "cider" + result = "cider" + required_reagents = list("applejuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + + +/decl/chemical_reaction/instant/drinks/sake + name = "Sake" + id = "sake" + result = "sake" + required_reagents = list("rice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/kahlua + name = "Kahlua" + id = "kahlua" + result = "kahlua" + required_reagents = list("coffee" = 5, "sugar" = 5) + catalysts = list("enzyme" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/gin_tonic + name = "Gin and Tonic" + id = "gintonic" + result = "gintonic" + required_reagents = list("gin" = 2, "tonic" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/cuba_libre + name = "Cuba Libre" + id = "cubalibre" + result = "cubalibre" + required_reagents = list("rum" = 2, "cola" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/martini + name = "Classic Martini" + id = "martini" + result = "martini" + required_reagents = list("gin" = 2, "vermouth" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/vodkamartini + name = "Vodka Martini" + id = "vodkamartini" + result = "vodkamartini" + required_reagents = list("vodka" = 2, "vermouth" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/white_russian + name = "White Russian" + id = "whiterussian" + result = "whiterussian" + required_reagents = list("blackrussian" = 2, "cream" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/whiskey_cola + name = "Whiskey Cola" + id = "whiskeycola" + result = "whiskeycola" + required_reagents = list("whiskey" = 2, "cola" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/screwdriver + name = "Screwdriver" + id = "screwdrivercocktail" + result = "screwdrivercocktail" + required_reagents = list("vodka" = 2, "orangejuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/bloody_mary + name = "Bloody Mary" + id = "bloodymary" + result = "bloodymary" + required_reagents = list("vodka" = 2, "tomatojuice" = 3, "limejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/gargle_blaster + name = "Pan-Galactic Gargle Blaster" + id = "gargleblaster" + result = "gargleblaster" + required_reagents = list("vodka" = 2, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/brave_bull + name = "Brave Bull" + id = "bravebull" + result = "bravebull" + required_reagents = list("tequilla" = 2, "kahlua" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/tequilla_sunrise + name = "Tequilla Sunrise" + id = "tequillasunrise" + result = "tequillasunrise" + required_reagents = list("tequilla" = 2, "orangejuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/phoron_special + name = "Toxins Special" + id = "phoronspecial" + result = "phoronspecial" + required_reagents = list("rum" = 2, "vermouth" = 2, "phoron" = 2) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/beepsky_smash + name = "Beepksy Smash" + id = "beepksysmash" + result = "beepskysmash" + required_reagents = list("limejuice" = 1, "whiskey" = 1, "iron" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/doctor_delight + name = "The Doctor's Delight" + id = "doctordelight" + result = "doctorsdelight" + required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 2, "tricordrazine" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/irish_cream + name = "Irish Cream" + id = "irishcream" + result = "irishcream" + required_reagents = list("whiskey" = 2, "cream" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/manly_dorf + name = "The Manly Dorf" + id = "manlydorf" + result = "manlydorf" + required_reagents = list ("beer" = 1, "ale" = 2) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/hooch + name = "Hooch" + id = "hooch" + result = "hooch" + required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/irish_coffee + name = "Irish Coffee" + id = "irishcoffee" + result = "irishcoffee" + required_reagents = list("irishcream" = 1, "coffee" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/b52 + name = "B-52" + id = "b52" + result = "b52" + required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/atomicbomb + name = "Atomic Bomb" + id = "atomicbomb" + result = "atomicbomb" + required_reagents = list("b52" = 10, "uranium" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/margarita + name = "Margarita" + id = "margarita" + result = "margarita" + required_reagents = list("tequilla" = 2, "limejuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/longislandicedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + result = "longislandicedtea" + required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/icedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + result = "longislandicedtea" + required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/threemileisland + name = "Three Mile Island Iced Tea" + id = "threemileisland" + result = "threemileisland" + required_reagents = list("longislandicedtea" = 10, "uranium" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/whiskeysoda + name = "Whiskey Soda" + id = "whiskeysoda" + result = "whiskeysoda" + required_reagents = list("whiskey" = 2, "sodawater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/black_russian + name = "Black Russian" + id = "blackrussian" + result = "blackrussian" + required_reagents = list("vodka" = 2, "kahlua" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/manhattan + name = "Manhattan" + id = "manhattan" + result = "manhattan" + required_reagents = list("whiskey" = 2, "vermouth" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/manhattan_proj + name = "Manhattan Project" + id = "manhattan_proj" + result = "manhattan_proj" + required_reagents = list("manhattan" = 10, "uranium" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/vodka_tonic + name = "Vodka and Tonic" + id = "vodkatonic" + result = "vodkatonic" + required_reagents = list("vodka" = 2, "tonic" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/gin_fizz + name = "Gin Fizz" + id = "ginfizz" + result = "ginfizz" + required_reagents = list("gin" = 1, "sodawater" = 1, "limejuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/bahama_mama + name = "Bahama mama" + id = "bahama_mama" + result = "bahama_mama" + required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/singulo + name = "Singulo" + id = "singulo" + result = "singulo" + required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/alliescocktail + name = "Allies Cocktail" + id = "alliescocktail" + result = "alliescocktail" + required_reagents = list("martini" = 1, "vodka" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/demonsblood + name = "Demons Blood" + id = "demonsblood" + result = "demonsblood" + required_reagents = list("rum" = 3, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/booger + name = "Booger" + id = "booger" + result = "booger" + required_reagents = list("cream" = 2, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/antifreeze + name = "Anti-freeze" + id = "antifreeze" + result = "antifreeze" + required_reagents = list("vodka" = 1, "cream" = 1, "ice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/barefoot + name = "Barefoot" + id = "barefoot" + result = "barefoot" + required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/grapesoda + name = "Grape Soda" + id = "grapesoda" + result = "grapesoda" + required_reagents = list("grapejuice" = 2, "cola" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/sbiten + name = "Sbiten" + id = "sbiten" + result = "sbiten" + required_reagents = list("vodka" = 10, "capsaicin" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/red_mead + name = "Red Mead" + id = "red_mead" + result = "red_mead" + required_reagents = list("blood" = 1, "mead" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/mead + name = "Mead" + id = "mead" + result = "mead" + required_reagents = list("sugar" = 1, "water" = 1) + catalysts = list("enzyme" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/iced_beer + name = "Iced Beer" + id = "iced_beer" + result = "iced_beer" + required_reagents = list("beer" = 10, "frostoil" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/iced_beer2 + name = "Iced Beer" + id = "iced_beer" + result = "iced_beer" + required_reagents = list("beer" = 5, "ice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/grog + name = "Grog" + id = "grog" + result = "grog" + required_reagents = list("rum" = 1, "water" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/soy_latte + name = "Soy Latte" + id = "soy_latte" + result = "soy_latte" + required_reagents = list("coffee" = 1, "soymilk" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/cafe_latte + name = "Cafe Latte" + id = "cafe_latte" + result = "cafe_latte" + required_reagents = list("coffee" = 1, "milk" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/acidspit + name = "Acid Spit" + id = "acidspit" + result = "acidspit" + required_reagents = list("sacid" = 1, "wine" = 5) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/amasec + name = "Amasec" + id = "amasec" + result = "amasec" + required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/changelingsting + name = "Changeling Sting" + id = "changelingsting" + result = "changelingsting" + required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/aloe + name = "Aloe" + id = "aloe" + result = "aloe" + required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/andalusia + name = "Andalusia" + id = "andalusia" + result = "andalusia" + required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/snowwhite + name = "Snow White" + id = "snowwhite" + result = "snowwhite" + required_reagents = list("pineapplejuice" = 1, "rum" = 1, "lemon_lime" = 1, "egg" = 1, "kahlua" = 1, "sugar" = 1) //VoreStation Edit + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/irishcarbomb + name = "Irish Car Bomb" + id = "irishcarbomb" + result = "irishcarbomb" + required_reagents = list("ale" = 1, "irishcream" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/syndicatebomb + name = "Syndicate Bomb" + id = "syndicatebomb" + result = "syndicatebomb" + required_reagents = list("beer" = 1, "whiskeycola" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/erikasurprise + name = "Erika Surprise" + id = "erikasurprise" + result = "erikasurprise" + required_reagents = list("ale" = 2, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/devilskiss + name = "Devils Kiss" + id = "devilskiss" + result = "devilskiss" + required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/hippiesdelight + name = "Hippies Delight" + id = "hippiesdelight" + result = "hippiesdelight" + required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/bananahonk + name = "Banana Honk" + id = "bananahonk" + result = "bananahonk" + required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/silencer + name = "Silencer" + id = "silencer" + result = "silencer" + required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/driestmartini + name = "Driest Martini" + id = "driestmartini" + result = "driestmartini" + required_reagents = list("nothing" = 1, "gin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/lemonade + name = "Lemonade" + id = "lemonade" + result = "lemonade" + required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/melonade + name = "Melonade" + id = "melonade" + result = "melonade" + required_reagents = list("watermelonjuice" = 1, "sugar" = 1, "sodawater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/appleade + name = "Appleade" + id = "appleade" + result = "appleade" + required_reagents = list("applejuice" = 1, "sugar" = 1, "sodawater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/pineappleade + name = "Pineappleade" + id = "pineappleade" + result = "pineappleade" + required_reagents = list("pineapplejuice" = 2, "limejuice" = 1, "sodawater" = 2, "honey" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/driverspunch + name = "Driver`s Punch" + id = "driverspunch" + result = "driverspunch" + required_reagents = list("appleade" = 2, "orangejuice" = 1, "mint" = 1, "sodawater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/mintapplesparkle + name = "Mint Apple Sparkle" + id = "mintapplesparkle" + result = "mintapplesparkle" + required_reagents = list("appleade" = 2, "mint" = 1) + inhibitors = list("sodawater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/berrycordial + name = "Berry Cordial" + id = "berrycordial" + result = "berrycordial" + required_reagents = list("berryjuice" = 4, "sugar" = 1, "lemonjuice" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/tropicalfizz + name = "Tropical Fizz" + id = "tropicalfizz" + result = "tropicalfizz" + required_reagents = list("sodawater" = 6, "berryjuice" = 1, "mint" = 1, "limejuice" = 1, "lemonjuice" = 1, "pineapplejuice" = 1) + inhibitors = list("sugar" = 1) + result_amount = 8 + +/decl/chemical_reaction/instant/drinks/melonspritzer + name = "Melon Spritzer" + id = "melonspritzer" + result = "melonspritzer" + required_reagents = list("watermelonjuice" = 2, "wine" = 2, "applejuice" = 1, "limejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/fauxfizz + name = "Faux Fizz" + id = "fauxfizz" + result = "fauxfizz" + required_reagents = list("sodawater" = 2, "berryjuice" = 1, "applejuice" = 1, "limejuice" = 1, "honey" = 1) + inhibitors = list("sugar" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/firepunch + name = "Fire Punch" + id = "firepunch" + result = "firepunch" + required_reagents = list("sugar" = 1, "rum" = 2) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/kiraspecial + name = "Kira Special" + id = "kiraspecial" + result = "kiraspecial" + required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/brownstar + name = "Brown Star" + id = "brownstar" + result = "brownstar" + required_reagents = list("orangejuice" = 2, "cola" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/milkshake + name = "Milkshake" + id = "milkshake" + result = "milkshake" + required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/peanutmilkshake + name = "Peanutbutter Milkshake" + id = "peanutmilkshake" + result = "peanutmilkshake" + required_reagents = list("cream" = 1, "ice" = 1, "peanutbutter" = 2, "milk" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/rewriter + name = "Rewriter" + id = "rewriter" + result = "rewriter" + required_reagents = list("spacemountainwind" = 1, "coffee" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/suidream + name = "Sui Dream" + id = "suidream" + result = "suidream" + required_reagents = list("space_up" = 1, "bluecuracao" = 1, "melonliquor" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/shirleytemple + name = "Shirley Temple" + id = "shirley_temple" + result = "shirley_temple" + required_reagents = list("gingerale" = 4, "grenadine" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/royrogers + name = "Roy Rogers" + id = "roy_rogers" + result = "roy_rogers" + required_reagents = list("shirley_temple" = 5, "lemon_lime" = 2) + result_amount = 7 + +/decl/chemical_reaction/instant/drinks/collinsmix + name = "Collins Mix" + id = "collins_mix" + result = "collins_mix" + required_reagents = list("lemon_lime" = 3, "sodawater" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/arnoldpalmer + name = "Arnold Palmer" + id = "arnold_palmer" + result = "arnold_palmer" + required_reagents = list("icetea" = 1, "lemonade" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/minttea + name = "Mint Tea" + id = "minttea" + result = "minttea" + required_reagents = list("tea" = 5, "mint" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/lemontea + name = "Lemon Tea" + id = "lemontea" + result = "lemontea" + required_reagents = list("tea" = 5, "lemonjuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/limetea + name = "Lime Tea" + id = "limetea" + result = "limetea" + required_reagents = list("tea" = 5, "limejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/orangetea + name = "Orange Tea" + id = "orangetea" + result = "orangetea" + required_reagents = list("tea" = 5, "orangejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/berrytea + name = "Berry Tea" + id = "berrytea" + result = "berrytea" + required_reagents = list("tea" = 5, "berryjuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/sakebomb + name = "Sake Bomb" + id = "sakebomb" + result = "sakebomb" + required_reagents = list("beer" = 2, "sake" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/tamagozake + name = "Tamagozake" + id = "tamagozake" + result = "tamagozake" + required_reagents = list("sake" = 10, "sugar" = 5, "egg" = 3) + result_amount = 15 + +/decl/chemical_reaction/instant/drinks/ginzamary + name = "Ginza Mary" + id = "ginzamary" + result = "ginzamary" + required_reagents = list("sake" = 2, "vodka" = 2, "tomatojuice" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/tokyorose + name = "Tokyo Rose" + id = "tokyorose" + result = "tokyorose" + required_reagents = list("sake" = 1, "berryjuice" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/saketini + name = "Saketini" + id = "saketini" + result = "saketini" + required_reagents = list("sake" = 1, "gin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/elysiumfacepunch + name = "Elysium Facepunch" + id = "elysiumfacepunch" + result = "elysiumfacepunch" + required_reagents = list("kahlua" = 1, "lemonjuice" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/erebusmoonrise + name = "Erebus Moonrise" + id = "erebusmoonrise" + result = "erebusmoonrise" + required_reagents = list("whiskey" = 1, "vodka" = 1, "tequilla" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/balloon + name = "Balloon" + id = "balloon" + result = "balloon" + required_reagents = list("cream" = 1, "bluecuracao" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/natunabrandy + name = "Natuna Brandy" + id = "natunabrandy" + result = "natunabrandy" + required_reagents = list("beer" = 1, "sodawater" = 2) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/euphoria + name = "Euphoria" + id = "euphoria" + result = "euphoria" + required_reagents = list("specialwhiskey" = 1, "cognac" = 2) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/xanaducannon + name = "Xanadu Cannon" + id = "xanaducannon" + result = "xanaducannon" + required_reagents = list("ale" = 1, "dr_gibb" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/debugger + name = "Debugger" + id = "debugger" + result = "debugger" + required_reagents = list("fuel" = 1, "sugar" = 2, "cornoil" = 2) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/spacersbrew + name = "Spacer's Brew" + id = "spacersbrew" + result = "spacersbrew" + required_reagents = list("brownstar" = 4, "ethanol" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/binmanbliss + name = "Binman Bliss" + id = "binmanbliss" + result = "binmanbliss" + required_reagents = list("sake" = 1, "tequilla" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/chrysanthemum + name = "Chrysanthemum" + id = "chrysanthemum" + result = "chrysanthemum" + required_reagents = list("sake" = 1, "melonliquor" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/deathbell + name = "Deathbell" + id = "deathbell" + result = "deathbell" + required_reagents = list("antifreeze" = 1, "gargleblaster" = 1, "syndicatebomb" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/bitters + name = "Bitters" + id = "bitters" + result = "bitters" + required_reagents = list("mint" = 5) + catalysts = list("enzyme" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/soemmerfire + name = "Soemmer Fire" + id = "soemmerfire" + result = "soemmerfire" + required_reagents = list("manhattan" = 2, "condensedcapsaicin" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/winebrandy + name = "Wine brandy" + id = "winebrandy" + result = "winebrandy" + required_reagents = list("wine" = 10) + catalysts = list("enzyme" = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/lovepotion + name = "Love Potion" + id = "lovepotion" + result = "lovepotion" + required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/morningafter + name = "Morning After" + id = "morningafter" + result = "morningafter" + required_reagents = list("sbiten" = 1, "coffee" = 5) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/vesper + name = "Vesper" + id = "vesper" + result = "vesper" + required_reagents = list("gin" = 3, "vodka" = 1, "wine" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/rotgut + name = "Rotgut Fever Dream" + id = "rotgut" + result = "rotgut" + required_reagents = list("vodka" = 3, "rum" = 1, "whiskey" = 1, "cola" = 3) + result_amount = 8 + +/decl/chemical_reaction/instant/drinks/entdraught + name = "Ent's Draught" + id = "entdraught" + result = "entdraught" + required_reagents = list("tonic" = 1, "holywater" = 1, "honey" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/voxdelight + name = "Vox's Delight" + id = "voxdelight" + result = "voxdelight" + required_reagents = list("phoron" = 3, "fuel" = 1, "water" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/screamingviking + name = "Screaming Viking" + id = "screamingviking" + result = "screamingviking" + required_reagents = list("martini" = 2, "vodkatonic" = 2, "limejuice" = 1, "rum" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/vilelemon + name = "Vile Lemon" + id = "vilelemon" + result = "vilelemon" + required_reagents = list("lemonade" = 5, "spacemountainwind" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/dreamcream + name = "Dream Cream" + id = "dreamcream" + result = "dreamcream" + required_reagents = list("milk" = 2, "cream" = 1, "honey" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/robustin + name = "Robustin" + id = "robustin" + result = "robustin" + required_reagents = list("antifreeze" = 1, "phoron" = 1, "fuel" = 1, "vodka" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/virginsip + name = "Virgin Sip" + id = "virginsip" + result = "virginsip" + required_reagents = list("driestmartini" = 1, "water" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/chocoshake + name = "Chocolate Milkshake" + id = "chocoshake" + result = "chocoshake" + required_reagents = list("milkshake" = 1, "coco" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/berryshake + name = "Berry Milkshake" + id = "berryshake" + result = "berryshake" + required_reagents = list("milkshake" = 1, "berryjuice" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/coffeeshake + name = "Coffee Milkshake" + id = "coffeeshake" + result = "coffeeshake" + required_reagents = list("milkshake" = 1, "coffee" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/jellyshot + name = "Jelly Shot" + id = "jellyshot" + result = "jellyshot" + required_reagents = list("cherryjelly" = 4, "vodka" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/slimeshot + name = "Named Bullet" + id = "slimeshot" + result = "slimeshot" + required_reagents = list("slimejelly" = 4, "vodka" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/negroni + name = "Negroni" + id = "negroni" + result = "negroni" + required_reagents = list("gin" = 1, "bitters" = 1, "vermouth" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/cloverclub + name = "Clover Club" + id = "cloverclub" + result = "cloverclub" + required_reagents = list("berryjuice" = 1, "lemonjuice" = 1, "gin" = 3) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/oldfashioned + name = "Old Fashioned" + id = "oldfashioned" + result = "oldfashioned" + required_reagents = list("whiskey" = 3, "bitters" = 1, "sugar" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/whiskeysour + name = "Whiskey Sour" + id = "whiskeysour" + result = "whiskeysour" + required_reagents = list("whiskey" = 2, "lemonjuice" = 1, "sugar" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/daiquiri + name = "Daiquiri" + id = "daiquiri" + result = "daiquiri" + required_reagents = list("rum" = 3, "limejuice" = 2, "sugar" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/mintjulep + name = "Mint Julep" + id = "mintjulep" + result = "mintjulep" + required_reagents = list("whiskey" = 2, "water" = 1, "mint" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/paloma + name = "Paloma" + id = "paloma" + result = "paloma" + required_reagents = list("orangejuice" = 1, "sodawater" = 1, "tequilla" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/mojito + name = "Mojito" + id = "mojito" + result = "mojito" + required_reagents = list("rum" = 3, "limejuice" = 1, "mint" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/virginmojito + name = "Mojito" + id = "virginmojito" + result = "virginmojito" + required_reagents = list("sodawater" = 3, "limejuice" = 1, "mint" = 1, "sugar" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/piscosour + name = "Pisco Sour" + id = "piscosour" + result = "piscosour" + required_reagents = list("winebrandy" = 1, "lemonjuice" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/coldfront + name = "Cold Front" + id = "coldfront" + result = "coldfront" + required_reagents = list("icecoffee" = 1, "whiskey" = 1, "mint" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/godsake + name = "Gods Sake" + id = "godsake" + result = "godsake" + required_reagents = list("sake" = 2, "holywater" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/godka //Why you would put this in your body, I don't know. + name = "Godka" + id = "godka" + result = "godka" + required_reagents = list("vodka" = 1, "holywater" = 1, "ethanol" = 1, "carthatoline" = 1) + catalysts = list("enzyme" = 5, "holywater" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/drinks/holywine + name = "Angel Ichor" + id = "holywine" + result = "holywine" + required_reagents = list("grapejuice" = 5, "gold" = 5) + catalysts = list("holywater" = 5) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/holy_mary + name = "Holy Mary" + id = "holymary" + result = "holymary" + required_reagents = list("vodka" = 2, "holywine" = 3, "limejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/angelskiss + name = "Angels Kiss" + id = "angelskiss" + result = "angelskiss" + required_reagents = list("holywine" = 1, "kahlua" = 1, "rum" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/angelswrath + name = "Angels Wrath" + id = "angelswrath" + result = "angelswrath" + required_reagents = list("rum" = 3, "spacemountainwind" = 1, "holywine" = 1, "dr_gibb" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/ichor_mead + name = "Ichor Mead" + id = "ichor_mead" + result = "ichor_mead" + required_reagents = list("holywine" = 1, "mead" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/oilslick + name = "Oil Slick" + id = "oilslick" + result = "oilslick" + required_reagents = list("cornoil" = 2, "honey" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/slimeslam + name = "Slick Slime Slammer" + id = "slimeslammer" + result = "slimeslammer" + required_reagents = list("cornoil" = 2, "peanutbutter" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/virginsexonthebeach + name = "Virgin Sex On The Beach" + id = "virginsexonthebeach" + result = "virginsexonthebeach" + required_reagents = list("orangejuice" = 3, "grenadine" = 2) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/sexonthebeach + name = "Sex On The Beach" + id = "sexonthebeach" + result = "sexonthebeach" + required_reagents = list("virginsexonthebeach" = 5, "vodka" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/eggnog + name = "Eggnog" + id = "eggnog" + result = "eggnog" + required_reagents = list("milk" = 5, "cream" = 5, "sugar" = 5, "egg" = 3) + result_amount = 15 + +/decl/chemical_reaction/instant/drinks/nuclearwaste_radium + name = "Nuclear Waste" + id = "nuclearwasterad" + result = "nuclearwaste" + required_reagents = list("oilslick" = 1, "radium" = 1, "limejuice" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/nuclearwaste_uranium + name = "Nuclear Waste" + id = "nuclearwasteuran" + result = "nuclearwaste" + required_reagents = list("oilslick" = 2, "uranium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/sodaoil + name = "Soda Oil" + id = "sodaoil" + result = "sodaoil" + required_reagents = list("cornoil" = 4, "sodawater" = 1, "carbon" = 1, "tricordrazine" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/fusionnaire + name = "Fusionnaire" + id = "fusionnaire" + result = "fusionnaire" + required_reagents = list("lemonjuice" = 3, "vodka" = 2, "schnapps_pep" = 1, "schnapps_lem" = 1, "rum" = 1, "ice" = 1) + result_amount = 9 diff --git a/code/modules/reagents/reactions/instant/drinks_ch.dm b/code/modules/reagents/reactions/instant/drinks_ch.dm new file mode 100644 index 0000000000..d5924eb955 --- /dev/null +++ b/code/modules/reagents/reactions/instant/drinks_ch.dm @@ -0,0 +1,205 @@ +/decl/chemical_reaction/instant/drinks/minttea + name = "Mint Tea" + id = "minttea" + result = "minttea" + required_reagents = list("tea" = 5, "mint" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/lemontea + name = "Lemon Tea" + id = "lemontea" + result = "lemontea" + required_reagents = list("tea" = 5, "lemonjuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/limetea + name = "Lime Tea" + id = "limetea" + result = "limetea" + required_reagents = list("tea" = 5, "limejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/orangetea + name = "Orange Tea" + id = "orangetea" + result = "orangetea" + required_reagents = list("tea" = 5, "orangejuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/berrytea + name = "Berry Tea" + id = "berrytea" + result = "berrytea" + required_reagents = list("tea" = 5, "berryjuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/cherrytea + name = "Cherry Tea" + id = "cherrytea" + result = "cherrytea" + required_reagents = list("tea" = 5, "cherryjelly" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/watermelontea + name = "Watermelon Tea" + id = "watermelontea" + result = "watermelontea" + required_reagents = list("tea" = 5, "watermelonjuice" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/tea/matcha_latte + id = "matcha_latte" + result = "matcha_latte" + required_reagents = list ("matchapowder" = 1, "milk" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/freshtea/green + id = "freshteagreen" + result = "freshteagreen" + required_reagents = list ("tealeavesgreen" = 1, "hotwater" = 9) + result_amount = 10 + +/decl/chemical_reaction/instant/instantteapowder/green + id = "instantteapowdergreen" + result = "instantteapowdergreen" + required_reagents = list ("teamush" = 10, "frostoil" = 1) + result_amount = 10 + +/decl/chemical_reaction/instant/instanttea/green + id = "instantteagreen" + result = "instantteagreen" + required_reagents = list ("instantteapowdergreen" = 1, "water" = 9) + result_amount = 10 + +/decl/chemical_reaction/instant/matcha + id = "matcha" + result = "matcha" + required_reagents = list ("matchapowder" = 1, "hotwater" = 2) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/spiderdrink + name = "Brimming glass of spiders" + id = "spiderdrink" + result = "spiderdrink" + required_reagents = list("spidertoxin" = 1, "clonexadone" = 5, "absinthe" = 4) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bubbleteawatermelon + name = "Watermelon bubble tea" + id = "bubbleteawatermelon" + result = "bubbleteawatermelon" + required_reagents = list("gelatin" = 2, "watermelontea" = 6, "milk" = 2) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bubbleteastrawberry + name = "Strawberry bubble tea" + id = "bubbleteastrawberry" + result = "bubbleteastrawberry" + required_reagents = list("gelatin" = 2, "berrytea" = 6, "milk" = 2) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bubbleteacherry + name = "Cherry bubble tea" + id = "bubbleteacherry" + result = "bubbleteacherry" + required_reagents = list("gelatin" = 2, "cherrytea" = 6, "milk" = 2) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bubbleteacoffee + name = "Coffee bubble tea" + id = "bubbleteacoffee" + result = "bubbleteacoffee" + required_reagents = list("gelatin" = 2, "tea" = 5, "cafe_latte" = 3) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/bubbleteabanana + name = "Banana bubble tea" + id = "bubbleteabanana" + result = "bubbleteabanana" + required_reagents = list("gelatin" = 2, "tea" = 5, "banana" = 1, "milk" = 2) + result_amount = 10 + +/decl/chemical_reaction/instant/drinks/horchata + name = "Horchata" + id = "horchata" + result = "horchata" + required_reagents = list("milk" = 1, "sugar" = 2, "rice" = 2) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/bluetrain + name = "Blue train" + id = "bluetrain" + result = "bluetrain" + required_reagents = list("coolant" = 2, "ethanol" = 2, "nutriment" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/drinks/lowpower + name = "The low power" + id = "lowpower" + result = "lowpower" + required_reagents = list("lemonade" = 1, "cream" = 1, "limejuice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/jackbrew + name = "Jack's brew" + id = "jackbrew" + result = "jackbrew" + required_reagents = list("irishcoffee" = 1, "hyperzine" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/bookwyrm + name = "Bookwyrm's bite" + id = "bookwyrm" + result = "bookwyrm" + required_reagents = list("coldfront" = 1, "limejuice" = 1, "stoxin" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/highpower + name = "The high power" + id = "highpower" + result = "highpower" + required_reagents = list("lowpower" = 1, "iron" = 1, "uranium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/flapper + name = "Flapper" + id = "flapper" + result = "flapper" + required_reagents = list("whiskey" = 1, "blood" = 1, "ice" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/toxin/oilslide + name = "Oil slide" + id = "oilslide" + result = "oilslide" + required_reagents = list("moonshine" = 1, "lube" = 1, "fuel" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/sitonmyface + name = "Sit on my face" + id = "sitonmyface" + result = "sitonmyface" + required_reagents = list("kahlua" = 1, "irishcream" = 1, "peanutbutter" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/hachi + name = "Hachi" + id = "hachi" + result = "hachi" + required_reagents = list("burbon" = 2, "sake" = 1, "lemonjuice" = 1, "mushroom" = 1) //Whoever coded this never made a mushroom reagent so this can't be created. + result_amount = 5 + +//YW drinks +/decl/chemical_reaction/instant/drinks/lovepotion_yw + name = "Strawberry Love Potion" + id = "strawberrylovepotion" + result = "strawberrylovepotion" + required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/wormblood + name = "Wormblood" + id = "wormblood" + result = "wormblood" + required_reagents = list("booger" = 1, "psilocybin" = 1) + result_amount = 2 diff --git a/code/modules/reagents/reactions/instant/drinks_vr.dm b/code/modules/reagents/reactions/instant/drinks_vr.dm new file mode 100644 index 0000000000..261934c2e6 --- /dev/null +++ b/code/modules/reagents/reactions/instant/drinks_vr.dm @@ -0,0 +1,198 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// Special drinks +/decl/chemical_reaction/instant/drinks/grubshake + name = "Grub protein drink" + id = "grubshake" + result = "grubshake" + required_reagents = list("shockchem" = 5, "water" = 25) + result_amount = 30 + +/decl/chemical_reaction/instant/drinks/deathbell + name = "Deathbell" + id = "deathbell" + result = "deathbell" + required_reagents = list("antifreeze" = 1, "gargleblaster" = 1, "syndicatebomb" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/monstertamer + name = "Monster Tamer" + id = "monstertamer" + result = "monstertamer" + required_reagents = list("whiskey" = 1, "protein" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/bigbeer + name = "Giant Beer" + id = "bigbeer" + result = "bigbeer" + required_reagents = list("syndicatebomb" = 1, "manlydorf" = 1, "grog" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/sweettea + name = "Sweetened Tea" + id = "sweettea" + result = "sweettea" + required_reagents = list("icetea" = 2, "sugar" = 1,) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/unsweettea + name = "Unsweetened Tea" + id = "unsweettea" + result = "unsweettea" + required_reagents = list("sweettea" = 3, "phoron" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/galacticpanic + name = "Galactic Panic Attack" + id = "galacticpanic" + result = "galacticpanic" + required_reagents = list("gargleblaster" = 1, "singulo" = 1, "phoronspecial" =1, "neurotoxin" = 1, "atomicbomb" = 1, "hippiesdelight" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/bulldog + name = "Space Bulldog" + id = "bulldog" + result = "bulldog" + required_reagents = list("whiterussian" = 4, "cola" =1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/sbagliato + name = "Negroni Sbagliato" + id = "sbagliato" + result = "sbagliato" + required_reagents = list("wine" = 1, "vermouth" = 1, "sodawater" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/italiancrisis + name = "Italian Crisis" + id = "italiancrisis" + result = "italiancrisis" + required_reagents = list("bulldog" = 1, "sbagliato" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/sugarrush + name = "Sweet Rush" + id = "sugarrush" + result = "sugarrush" + required_reagents = list("sugar" = 1, "sodawater" = 1, "vodka" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/lotus + name = "Lotus" + id = "lotus" + result = "lotus" + required_reagents = list("sbagliato" = 1, "sugarrush" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/drinks/shroomjuice + name = "Dumb Shroom Juice" + id = "shroomjuice" + result = "shroomjuice" + required_reagents = list("psilocybin" = 1, "applejuice" = 1, "limejuice" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/russianroulette + name = "Russian Roulette" + id = "russianroulette" + result = "russianroulette" + required_reagents = list("whiterussian" = 5, "iron" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/lovemaker + name = "The Love Maker" + id = "lovemaker" + result = "lovemaker" + required_reagents = list("honey" = 1, "sexonthebeach" = 5) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/honeyshot + name = "Honey Shot" + id = "honeyshot" + result = "honeyshot" + required_reagents = list("honey" = 1, "vodka" = 1, "grenadine" =1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/appletini + name = "Appletini" + id = "appletini" + result = "appletini" + required_reagents = list("applejuice" = 2, "vodka" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/glowingappletini + name = "Glowing Appletini" + id = "glowingappletini" + result = "glowingappletini" + required_reagents = list("appletini" = 5, "uranium" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/scsatw + name = "Slow Comfortable Screw Against the Wall" + id = "scsatw" + result = "scsatw" + required_reagents = list("screwdrivercocktail" = 3, "rum" =1, "whiskey" =1, "gin" =1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/choccymilk + name = "Choccy Milk" + id = "choccymilk" + result = "choccymilk" + required_reagents = list("milk" = 3, "coco" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/redspaceflush + name = "Redspace Flush" + id = "redspaceflush" + result = "redspaceflush" + required_reagents = list("rum" = 2, "whiskey" = 2, "blood" =1, "phoron" =1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/graveyard + name = "Graveyard" + id = "graveyard" + result = "graveyard" + required_reagents = list("cola" = 1, "spacemountainwind" = 1, "dr_gibb" =1, "space_up" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/drinks/hairoftherat + name = "Hair of the Rat" + id = "hairoftherat" + result = "hairoftherat" + required_reagents = list("monstertamer" = 2, "nutriment" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/pink_moo + name = "Pink Moo" + id = "pinkmoo" + result = "pinkmoo" + required_reagents = list("blackrussian" = 2, "berryshake" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/drinks/originalsin + name = "Original Sin" + id = "originalsin" + result = "originalsin" + required_reagents = list("holywine" = 1) + catalysts = list("applejuice" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/drinks/windgarita + name = "WND-Garita" + id = "windgarita" + result = "windgarita" + required_reagents = list("margarita" = 3, "spacemountainwind" = 2, "melonliquor" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/newyorksour + name = "New York Sour" + id = "newyorksour" + result = "newyorksour" + required_reagents = list("whiskeysour" = 3, "wine" = 2, "egg" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/drinks/mudslide + name = "Mudslide" + id = "mudslide" + result = "mudslide" + required_reagents = list("blackrussian" = 1, "irishcream" = 1) + result_amount = 2 diff --git a/code/modules/reagents/reactions/instant/food.dm b/code/modules/reagents/reactions/instant/food.dm new file mode 100644 index 0000000000..952af8014b --- /dev/null +++ b/code/modules/reagents/reactions/instant/food.dm @@ -0,0 +1,183 @@ +/decl/chemical_reaction/instant/food/hot_ramen + name = "Hot Ramen" + id = "hot_ramen" + result = "hot_ramen" + required_reagents = list("water" = 1, "dry_ramen" = 3) + result_amount = 3 + +/decl/chemical_reaction/instant/food/hell_ramen + name = "Hell Ramen" + id = "hell_ramen" + result = "hell_ramen" + required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) + result_amount = 6 + +/decl/chemical_reaction/instant/food/tofu + name = "Tofu" + id = "tofu" + result = null + required_reagents = list("soymilk" = 10) + catalysts = list("enzyme" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/food/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) + return + +/decl/chemical_reaction/instant/food/chocolate_bar + name = "Chocolate Bar" + id = "chocolate_bar" + result = null + required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) + result_amount = 1 + +/decl/chemical_reaction/instant/food/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) + return + +/decl/chemical_reaction/instant/food/chocolate_bar2 + name = "Chocolate Bar" + id = "chocolate_bar" + result = null + required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) + result_amount = 1 + +/decl/chemical_reaction/instant/food/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) + return + +/decl/chemical_reaction/instant/food/soysauce + name = "Soy Sauce" + id = "soysauce" + result = "soysauce" + required_reagents = list("soymilk" = 4, "sacid" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/food/ketchup + name = "Ketchup" + id = "ketchup" + result = "ketchup" + required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/food/barbecue + name = "Barbeque Sauce" + id = "barbecue" + result = "barbecue" + required_reagents = list("tomatojuice" = 2, "applejuice" = 1, "sugar" = 1, "spacespice" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/food/peanutbutter + name = "Peanut Butter" + id = "peanutbutter" + result = "peanutbutter" + required_reagents = list("peanutoil" = 2, "sugar" = 1, "sodiumchloride" = 1) + catalysts = list("enzyme" = 5) + result_amount = 3 + +/decl/chemical_reaction/instant/food/mayonnaise + name = "mayonnaise" + id = "mayo" + result = "mayo" + required_reagents = list("egg" = 9, "cornoil" = 5, "lemonjuice" = 5, "sodiumchloride" = 1) + result_amount = 15 + +/decl/chemical_reaction/instant/food/cheesewheel + name = "Cheesewheel" + id = "cheesewheel" + result = null + required_reagents = list("milk" = 40) + catalysts = list("enzyme" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/food/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) + return + +/decl/chemical_reaction/instant/food/meatball + name = "Meatball" + id = "meatball" + result = null + required_reagents = list("protein" = 3, "flour" = 5) + result_amount = 3 + +/decl/chemical_reaction/instant/food/meatball/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/meatball(location) + return + +/decl/chemical_reaction/instant/food/dough + name = "Dough" + id = "dough" + result = null + required_reagents = list("egg" = 3, "flour" = 10) + inhibitors = list("water" = 1, "beer" = 1) //To prevent it messing with batter recipes + result_amount = 1 + +/decl/chemical_reaction/instant/food/dough/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/dough(location) + return + +/decl/chemical_reaction/instant/food/syntiflesh + name = "Syntiflesh" + id = "syntiflesh" + result = null + required_reagents = list("blood" = 5, "clonexadone" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/food/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) + return + +/* +==================== + Aurora Food +==================== +*/ + +/decl/chemical_reaction/instant/food/coating/batter + name = "Batter" + id = "batter" + result = "batter" + required_reagents = list("egg" = 3, "flour" = 10, "water" = 5, "sodiumchloride" = 2) + result_amount = 20 + +/decl/chemical_reaction/instant/food/coating/beerbatter + name = "Beer Batter" + id = "beerbatter" + result = "beerbatter" + required_reagents = list("egg" = 3, "flour" = 10, "beer" = 5, "sodiumchloride" = 2) + result_amount = 20 + +/decl/chemical_reaction/instant/food/browniemix + name = "Brownie Mix" + id = "browniemix" + result = "browniemix" + required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5) + result_amount = 15 + +/decl/chemical_reaction/instant/food/butter + name = "Butter" + id = "butter" + result = null + required_reagents = list("cream" = 20, "sodiumchloride" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/food/butter/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/spreads/butter(location) + return \ No newline at end of file diff --git a/code/modules/reagents/reactions/instant/food_ch.dm b/code/modules/reagents/reactions/instant/food_ch.dm new file mode 100644 index 0000000000..5a8cb2f4fe --- /dev/null +++ b/code/modules/reagents/reactions/instant/food_ch.dm @@ -0,0 +1,15 @@ +////////////////////////////////////////////// +////////////////C U B E S//////////////////// +//////////////////////////////////////////// +/decl/chemical_reaction/instant/cube/sagaru + name = "Saguwu" + id = "cubedsagaru" + result = null + required_reagents = list("cheese" = 1, "blood" = 1, "clonexadone" = 10,) + result_amount = 1 + +/decl/chemical_reaction/instant/cube/sagaru/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/sarucube(location) + return diff --git a/code/modules/reagents/reactions/instant/food_vr.dm b/code/modules/reagents/reactions/instant/food_vr.dm new file mode 100644 index 0000000000..684c23e944 --- /dev/null +++ b/code/modules/reagents/reactions/instant/food_vr.dm @@ -0,0 +1,2 @@ +/decl/chemical_reaction/instant/food/syntiflesh + required_reagents = list("blood" = 5, "clonexadone" = 1) diff --git a/code/modules/reagents/reactions/instant/instant.dm b/code/modules/reagents/reactions/instant/instant.dm new file mode 100644 index 0000000000..bb9e443f59 --- /dev/null +++ b/code/modules/reagents/reactions/instant/instant.dm @@ -0,0 +1,1135 @@ +// These reactions happen instantaneously, when added to a container that has all other necessary reagents +// They are a subtype of chemical_reaction so that such containers can iterate over only these reactions, and not have to skip other reaction types + +/* Common reactions */ + +/decl/chemical_reaction/instant/inaprovaline + name = "Inaprovaline" + id = "inaprovaline" + result = "inaprovaline" + required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/dylovene + name = "Dylovene" + id = "anti_toxin" + result = "anti_toxin" + required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/carthatoline + name = "Carthatoline" + id = "carthatoline" + result = "carthatoline" + required_reagents = list("anti_toxin" = 1, "carbon" = 2, "phoron" = 0.1) + catalysts = list("phoron" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/paracetamol + name = "Paracetamol" + id = "paracetamol" + result = "paracetamol" + required_reagents = list("inaprovaline" = 1, "nitrogen" = 1, "water" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/tramadol + name = "Tramadol" + id = "tramadol" + result = "tramadol" + required_reagents = list("paracetamol" = 1, "ethanol" = 1, "oxygen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/oxycodone + name = "Oxycodone" + id = "oxycodone" + result = "oxycodone" + required_reagents = list("ethanol" = 1, "tramadol" = 1) + catalysts = list("phoron" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/sterilizine + name = "Sterilizine" + id = "sterilizine" + result = "sterilizine" + required_reagents = list("ethanol" = 1, "anti_toxin" = 1, "chlorine" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/silicate + name = "Silicate" + id = "silicate" + result = "silicate" + required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/mutagen + name = "Unstable mutagen" + id = "mutagen" + result = "mutagen" + required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/water + name = "Water" + id = "water" + result = "water" + required_reagents = list("oxygen" = 1, "hydrogen" = 2) + result_amount = 1 + +/decl/chemical_reaction/instant/thermite + name = "Thermite" + id = "thermite" + result = "thermite" + required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/space_drugs + name = "Space Drugs" + id = "space_drugs" + result = "space_drugs" + required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/lube + name = "Space Lube" + id = "lube" + result = "lube" + required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/pacid + name = "Polytrinic acid" + id = "pacid" + result = "pacid" + required_reagents = list("sacid" = 1, "chlorine" = 1, "potassium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/synaptizine + name = "Synaptizine" + id = "synaptizine" + result = "synaptizine" + required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/hyronalin + name = "Hyronalin" + id = "hyronalin" + result = "hyronalin" + required_reagents = list("radium" = 1, "anti_toxin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/arithrazine + name = "Arithrazine" + id = "arithrazine" + result = "arithrazine" + required_reagents = list("hyronalin" = 1, "hydrogen" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/impedrezene + name = "Impedrezene" + id = "impedrezene" + result = "impedrezene" + required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/kelotane + name = "Kelotane" + id = "kelotane" + result = "kelotane" + required_reagents = list("silicon" = 1, "carbon" = 1) + result_amount = 2 + log_is_important = 1 + +/decl/chemical_reaction/instant/peridaxon + name = "Peridaxon" + id = "peridaxon" + result = "peridaxon" + required_reagents = list("bicaridine" = 2, "clonexadone" = 2) + catalysts = list("phoron" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/osteodaxon + name = "Osteodaxon" + id = "osteodaxon" + result = "osteodaxon" + required_reagents = list("bicaridine" = 2, "phoron" = 0.1, "carpotoxin" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("clonexadone" = 1) // Messes with cryox + result_amount = 2 + +/decl/chemical_reaction/instant/respirodaxon + name = "Respirodaxon" + id = "respirodaxon" + result = "respirodaxon" + required_reagents = list("dexalinp" = 2, "biomass" = 2, "phoron" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("dexalin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/gastirodaxon + name = "Gastirodaxon" + id = "gastirodaxon" + result = "gastirodaxon" + required_reagents = list("carthatoline" = 1, "biomass" = 2, "tungsten" = 2) + catalysts = list("phoron" = 5) + inhibitors = list("lithium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/hepanephrodaxon + name = "Hepanephrodaxon" + id = "hepanephrodaxon" + result = "hepanephrodaxon" + required_reagents = list("carthatoline" = 2, "biomass" = 2, "lithium" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("tungsten" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/cordradaxon + name = "Cordradaxon" + id = "cordradaxon" + result = "cordradaxon" + required_reagents = list("potassium_chlorophoride" = 1, "biomass" = 2, "bicaridine" = 2) + catalysts = list("phoron" = 5) + inhibitors = list("clonexadone" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/virus_food + name = "Virus Food" + id = "virusfood" + result = "virusfood" + required_reagents = list("water" = 1, "milk" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/leporazine + name = "Leporazine" + id = "leporazine" + result = "leporazine" + required_reagents = list("silicon" = 1, "copper" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/cryptobiolin + name = "Cryptobiolin" + id = "cryptobiolin" + result = "cryptobiolin" + required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/tricordrazine + name = "Tricordrazine" + id = "tricordrazine" + result = "tricordrazine" + required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/alkysine + name = "Alkysine" + id = "alkysine" + result = "alkysine" + required_reagents = list("chlorine" = 1, "nitrogen" = 1, "anti_toxin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/dexalin + name = "Dexalin" + id = "dexalin" + result = "dexalin" + required_reagents = list("oxygen" = 2, "phoron" = 0.1) + catalysts = list("phoron" = 1) + inhibitors = list("water" = 1) // Messes with cryox + result_amount = 1 + +/decl/chemical_reaction/instant/dermaline + name = "Dermaline" + id = "dermaline" + result = "dermaline" + required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/dexalinp + name = "Dexalin Plus" + id = "dexalinp" + result = "dexalinp" + required_reagents = list("dexalin" = 1, "carbon" = 1, "iron" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/bicaridine + name = "Bicaridine" + id = "bicaridine" + result = "bicaridine" + required_reagents = list("inaprovaline" = 1, "carbon" = 1) + inhibitors = list("sugar" = 1) // Messes up with inaprovaline + result_amount = 2 + +/decl/chemical_reaction/instant/myelamine + name = "Myelamine" + id = "myelamine" + result = "myelamine" + required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/hyperzine + name = "Hyperzine" + id = "hyperzine" + result = "hyperzine" + required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/stimm + name = "Stimm" + id = "stimm" + result = "stimm" + required_reagents = list("left4zed" = 1, "fuel" = 1) + catalysts = list("fuel" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/ryetalyn + name = "Ryetalyn" + id = "ryetalyn" + result = "ryetalyn" + required_reagents = list("arithrazine" = 1, "carbon" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/cryoxadone + name = "Cryoxadone" + id = "cryoxadone" + result = "cryoxadone" + required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/clonexadone + name = "Clonexadone" + id = "clonexadone" + result = "clonexadone" + required_reagents = list("cryoxadone" = 1, "sodium" = 1, "phoron" = 0.1) + catalysts = list("phoron" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/mortiferin + name = "Mortiferin" + id = "mortiferin" + result = "mortiferin" + required_reagents = list("cryptobiolin" = 1, "clonexadone" = 1, "corophizine" = 1) + result_amount = 2 + catalysts = list("phoron" = 5) + +/decl/chemical_reaction/instant/spaceacillin + name = "Spaceacillin" + id = "spaceacillin" + result = "spaceacillin" + required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/corophizine + name = "Corophizine" + id = "corophizine" + result = "corophizine" + required_reagents = list("spaceacillin" = 1, "carbon" = 1, "phoron" = 0.1) + catalysts = list("phoron" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/immunosuprizine + name = "Immunosuprizine" + id = "immunosuprizine" + result = "immunosuprizine" + required_reagents = list("corophizine" = 1, "tungsten" = 1, "sacid" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/imidazoline + name = "imidazoline" + id = "imidazoline" + result = "imidazoline" + required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/ethylredoxrazine + name = "Ethylredoxrazine" + id = "ethylredoxrazine" + result = "ethylredoxrazine" + required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/calciumcarbonate + name = "Calcium Carbonate" + id = "calciumcarbonate" + result = "calciumcarbonate" + required_reagents = list("oxygen" = 3, "calcium" = 1, "carbon" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/soporific + name = "Soporific" + id = "stoxin" + result = "stoxin" + required_reagents = list("chloralhydrate" = 1, "sugar" = 4) + inhibitors = list("phosphorus") // Messes with the smoke + result_amount = 5 + +/decl/chemical_reaction/instant/chloralhydrate + name = "Chloral Hydrate" + id = "chloralhydrate" + result = "chloralhydrate" + required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/potassium_chloride + name = "Potassium Chloride" + id = "potassium_chloride" + result = "potassium_chloride" + required_reagents = list("sodiumchloride" = 1, "potassium" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/potassium_chlorophoride + name = "Potassium Chlorophoride" + id = "potassium_chlorophoride" + result = "potassium_chlorophoride" + required_reagents = list("potassium_chloride" = 1, "phoron" = 1, "chloralhydrate" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/zombiepowder + name = "Zombie Powder" + id = "zombiepowder" + result = "zombiepowder" + required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5) + result_amount = 2 + +/decl/chemical_reaction/instant/carpotoxin + name = "Carpotoxin" + id = "carpotoxin" + result = "carpotoxin" + required_reagents = list("spidertoxin" = 2, "biomass" = 1, "sifsap" = 2) + catalysts = list("sifsap" = 10) + inhibitors = list("radium" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/mindbreaker + name = "Mindbreaker Toxin" + id = "mindbreaker" + result = "mindbreaker" + required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/lipozine + name = "Lipozine" + id = "Lipozine" + result = "lipozine" + required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/surfactant + name = "Foam surfactant" + id = "foam surfactant" + result = "fluorosurfactant" + required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/ammonia + name = "Ammonia" + id = "ammonia" + result = "ammonia" + required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + inhibitors = list("phoron" = 1) // Messes with lexorin + result_amount = 3 + +/decl/chemical_reaction/instant/diethylamine + name = "Diethylamine" + id = "diethylamine" + result = "diethylamine" + required_reagents = list ("ammonia" = 1, "ethanol" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/left4zed + name = "Left4Zed" + id = "left4zed" + result = "left4zed" + required_reagents = list ("diethylamine" = 2, "mutagen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/robustharvest + name = "RobustHarvest" + id = "robustharvest" + result = "robustharvest" + required_reagents = list ("ammonia" = 1, "calcium" = 1, "neurotoxic_protein" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/space_cleaner + name = "Space cleaner" + id = "cleaner" + result = "cleaner" + required_reagents = list("ammonia" = 1, "water" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/plantbgone + name = "Plant-B-Gone" + id = "plantbgone" + result = "plantbgone" + required_reagents = list("toxin" = 1, "water" = 4) + result_amount = 5 + +/decl/chemical_reaction/instant/foaming_agent + name = "Foaming Agent" + id = "foaming_agent" + result = "foaming_agent" + required_reagents = list("lithium" = 1, "hydrogen" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/glycerol + name = "Glycerol" + id = "glycerol" + result = "glycerol" + required_reagents = list("cornoil" = 3, "sacid" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/sodiumchloride + name = "Sodium Chloride" + id = "sodiumchloride" + result = "sodiumchloride" + required_reagents = list("sodium" = 1, "chlorine" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/condensedcapsaicin + name = "Condensed Capsaicin" + id = "condensedcapsaicin" + result = "condensedcapsaicin" + required_reagents = list("capsaicin" = 2) + catalysts = list("phoron" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/coolant + name = "Coolant" + id = "coolant" + result = "coolant" + required_reagents = list("tungsten" = 1, "oxygen" = 1, "water" = 1) + result_amount = 3 + log_is_important = 1 + +/decl/chemical_reaction/instant/rezadone + name = "Rezadone" + id = "rezadone" + result = "rezadone" + required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/lexorin + name = "Lexorin" + id = "lexorin" + result = "lexorin" + required_reagents = list("phoron" = 1, "hydrogen" = 1, "nitrogen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/methylphenidate + name = "Methylphenidate" + id = "methylphenidate" + result = "methylphenidate" + required_reagents = list("mindbreaker" = 1, "hydrogen" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/citalopram + name = "Citalopram" + id = "citalopram" + result = "citalopram" + required_reagents = list("mindbreaker" = 1, "carbon" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/paroxetine + name = "Paroxetine" + id = "paroxetine" + result = "paroxetine" + required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/neurotoxin + name = "Neurotoxin" + id = "neurotoxin" + result = "neurotoxin" + required_reagents = list("gargleblaster" = 1, "stoxin" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/luminol + name = "Luminol" + id = "luminol" + result = "luminol" + required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2) + result_amount = 6 + +/* Solidification */ + +/decl/chemical_reaction/instant/solidification + name = "Solid Iron" + id = "solidiron" + result = null + required_reagents = list("frostoil" = 5, "iron" = REAGENTS_PER_SHEET) + result_amount = 1 + var/sheet_to_give = /obj/item/stack/material/iron + +/decl/chemical_reaction/instant/solidification/on_reaction(var/datum/reagents/holder, var/created_volume) + new sheet_to_give(get_turf(holder.my_atom), created_volume) + return + + +/decl/chemical_reaction/instant/solidification/phoron + name = "Solid Phoron" + id = "solidphoron" + required_reagents = list("frostoil" = 5, "phoron" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/phoron + + +/decl/chemical_reaction/instant/solidification/silver + name = "Solid Silver" + id = "solidsilver" + required_reagents = list("frostoil" = 5, "silver" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/silver + + +/decl/chemical_reaction/instant/solidification/gold + name = "Solid Gold" + id = "solidgold" + required_reagents = list("frostoil" = 5, "gold" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/gold + + +/decl/chemical_reaction/instant/solidification/platinum + name = "Solid Platinum" + id = "solidplatinum" + required_reagents = list("frostoil" = 5, "platinum" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/platinum + + +/decl/chemical_reaction/instant/solidification/uranium + name = "Solid Uranium" + id = "soliduranium" + required_reagents = list("frostoil" = 5, "uranium" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/uranium + + +/decl/chemical_reaction/instant/solidification/hydrogen + name = "Solid Hydrogen" + id = "solidhydrogen" + required_reagents = list("frostoil" = 100, "hydrogen" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/mhydrogen + + +// These are from Xenobio. +/decl/chemical_reaction/instant/solidification/steel + name = "Solid Steel" + id = "solidsteel" + required_reagents = list("frostoil" = 5, "steel" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/steel + + +/decl/chemical_reaction/instant/solidification/plasteel + name = "Solid Plasteel" + id = "solidplasteel" + required_reagents = list("frostoil" = 10, "plasteel" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/plasteel + + +/decl/chemical_reaction/instant/plastication + name = "Plastic" + id = "solidplastic" + result = null + required_reagents = list("pacid" = 1, "plasticide" = 2) + result_amount = 1 + +/decl/chemical_reaction/instant/plastication/on_reaction(var/datum/reagents/holder, var/created_volume) + new /obj/item/stack/material/plastic(get_turf(holder.my_atom), created_volume) + return + +/* Grenade reactions */ + +/decl/chemical_reaction/instant/explosion_potassium + name = "Explosion" + id = "explosion_potassium" + result = null + required_reagents = list("water" = 1, "potassium" = 1) + result_amount = 2 + mix_message = null + +/decl/chemical_reaction/instant/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0) + if(isliving(holder.my_atom)) + e.amount *= 0.5 + var/mob/living/L = holder.my_atom + if(L.stat != DEAD) + e.amount *= 0.5 + //VOREStation Add Start + else + holder.clear_reagents() //No more powergaming by creating a tiny amount of this + //VORESTation Add End + e.start() + //holder.clear_reagents() //VOREStation Removal + return + +/decl/chemical_reaction/instant/flash_powder + name = "Flash powder" + id = "flash_powder" + result = null + required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 ) + result_amount = null + +/decl/chemical_reaction/instant/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, location) + s.start() + for(var/mob/living/carbon/M in viewers(world.view, location)) + switch(get_dist(M, location)) + if(0 to 3) + if(hasvar(M, "glasses")) + if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) + continue + + M.flash_eyes() + M.Weaken(15) + + if(4 to 5) + if(hasvar(M, "glasses")) + if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) + continue + + M.flash_eyes() + M.Stun(5) + +/decl/chemical_reaction/instant/emp_pulse + name = "EMP Pulse" + id = "emp_pulse" + result = null + required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense + result_amount = 2 + +/decl/chemical_reaction/instant/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. + // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. + empulse(location, round(created_volume / 24), round(created_volume / 20), round(created_volume / 18), round(created_volume / 14), 1) + //VOREStation Edit Start + if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this + holder.clear_reagents() + //VOREStation Edit End + return + +/decl/chemical_reaction/instant/nitroglycerin + name = "Nitroglycerin" + id = "nitroglycerin" + result = "nitroglycerin" + required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1) + result_amount = 2 + log_is_important = 1 + +/decl/chemical_reaction/instant/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0) + if(isliving(holder.my_atom)) + e.amount *= 0.5 + var/mob/living/L = holder.my_atom + if(L.stat!=DEAD) + e.amount *= 0.5 + //VOREStation Add Start + else + holder.clear_reagents() //No more powergaming by creating a tiny amount of this + //VOREStation Add End + e.start() + + //holder.clear_reagents() //VOREStation Removal + return + +/decl/chemical_reaction/instant/napalm + name = "Napalm" + id = "napalm" + result = null + required_reagents = list("aluminum" = 1, "phoron" = 1, "sacid" = 1 ) + result_amount = 1 + +/decl/chemical_reaction/instant/napalm/on_reaction(var/datum/reagents/holder, var/created_volume) + var/turf/location = get_turf(holder.my_atom.loc) + for(var/turf/simulated/floor/target_tile in range(0,location)) + target_tile.assume_gas("volatile_fuel", created_volume, 400+T0C) + spawn (0) target_tile.hotspot_expose(700, 400) + holder.del_reagent("napalm") + return + +/decl/chemical_reaction/instant/chemsmoke + name = "Chemsmoke" + id = "chemsmoke" + result = null + required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) + result_amount = 0.4 + +/decl/chemical_reaction/instant/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem + S.attach(location) + S.set_up(holder, created_volume, 0, location) + playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) + spawn(0) + S.start() + //VOREStation Edit Start + if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this + holder.clear_reagents() + //VOREStation Edit End + return + +/decl/chemical_reaction/instant/foam + name = "Foam" + id = "foam" + result = null + required_reagents = list("fluorosurfactant" = 1, "water" = 1) + result_amount = 2 + mix_message = "The solution violently bubbles!" + +/decl/chemical_reaction/instant/foam/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + to_chat(M, "The solution spews out foam!") + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 0) + s.start() + //VOREStation Edit Start + if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this + holder.clear_reagents() + //VOREStation Edit End + return + +/decl/chemical_reaction/instant/metalfoam + name = "Metal Foam" + id = "metalfoam" + result = null + required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + to_chat(M, "The solution spews out a metalic foam!") + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 1) + s.start() + return + +/decl/chemical_reaction/instant/ironfoam + name = "Iron Foam" + id = "ironlfoam" + result = null + required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + to_chat(M, "The solution spews out a metalic foam!") + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 2) + s.start() + return + +/* Paint */ + +/decl/chemical_reaction/instant/red_paint + name = "Red paint" + id = "red_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_red" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/red_paint/send_data() + return "#FE191A" + +/decl/chemical_reaction/instant/orange_paint + name = "Orange paint" + id = "orange_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_orange" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/orange_paint/send_data() + return "#FFBE4F" + +/decl/chemical_reaction/instant/yellow_paint + name = "Yellow paint" + id = "yellow_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_yellow" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/yellow_paint/send_data() + return "#FDFE7D" + +/decl/chemical_reaction/instant/green_paint + name = "Green paint" + id = "green_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_green" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/green_paint/send_data() + return "#18A31A" + +/decl/chemical_reaction/instant/blue_paint + name = "Blue paint" + id = "blue_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_blue" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/blue_paint/send_data() + return "#247CFF" + +/decl/chemical_reaction/instant/purple_paint + name = "Purple paint" + id = "purple_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_purple" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/purple_paint/send_data() + return "#CC0099" + +/decl/chemical_reaction/instant/grey_paint //mime + name = "Grey paint" + id = "grey_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_grey" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/grey_paint/send_data() + return "#808080" + +/decl/chemical_reaction/instant/brown_paint + name = "Brown paint" + id = "brown_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_brown" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/brown_paint/send_data() + return "#846F35" + +/decl/chemical_reaction/instant/blood_paint + name = "Blood paint" + id = "blood_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2) + result_amount = 5 + +/decl/chemical_reaction/instant/blood_paint/send_data(var/datum/reagents/T) + var/t = T.get_data("blood") + if(t && t["blood_colour"]) + return t["blood_colour"] + return "#FE191A" // Probably red + +/decl/chemical_reaction/instant/milk_paint + name = "Milk paint" + id = "milk_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/milk_paint/send_data() + return "#F0F8FF" + +/decl/chemical_reaction/instant/orange_juice_paint + name = "Orange juice paint" + id = "orange_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/orange_juice_paint/send_data() + return "#E78108" + +/decl/chemical_reaction/instant/tomato_juice_paint + name = "Tomato juice paint" + id = "tomato_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/tomato_juice_paint/send_data() + return "#731008" + +/decl/chemical_reaction/instant/lime_juice_paint + name = "Lime juice paint" + id = "lime_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/lime_juice_paint/send_data() + return "#365E30" + +/decl/chemical_reaction/instant/carrot_juice_paint + name = "Carrot juice paint" + id = "carrot_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/carrot_juice_paint/send_data() + return "#973800" + +/decl/chemical_reaction/instant/berry_juice_paint + name = "Berry juice paint" + id = "berry_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/berry_juice_paint/send_data() + return "#990066" + +/decl/chemical_reaction/instant/grape_juice_paint + name = "Grape juice paint" + id = "grape_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/grape_juice_paint/send_data() + return "#863333" + +/decl/chemical_reaction/instant/poisonberry_juice_paint + name = "Poison berry juice paint" + id = "poisonberry_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/poisonberry_juice_paint/send_data() + return "#863353" + +/decl/chemical_reaction/instant/watermelon_juice_paint + name = "Watermelon juice paint" + id = "watermelon_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/watermelon_juice_paint/send_data() + return "#B83333" + +/decl/chemical_reaction/instant/lemon_juice_paint + name = "Lemon juice paint" + id = "lemon_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/lemon_juice_paint/send_data() + return "#AFAF00" + +/decl/chemical_reaction/instant/banana_juice_paint + name = "Banana juice paint" + id = "banana_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/banana_juice_paint/send_data() + return "#C3AF00" + +/decl/chemical_reaction/instant/potato_juice_paint + name = "Potato juice paint" + id = "potato_juice_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5) + result_amount = 5 + +/decl/chemical_reaction/instant/potato_juice_paint/send_data() + return "#302000" + +/decl/chemical_reaction/instant/carbon_paint + name = "Carbon paint" + id = "carbon_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/carbon_paint/send_data() + return "#333333" + +/decl/chemical_reaction/instant/aluminum_paint + name = "Aluminum paint" + id = "aluminum_paint" + result = "paint" + required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1) + result_amount = 5 + +/decl/chemical_reaction/instant/aluminum_paint/send_data() + return "#F0F8FF" + +//R-UST Port +/decl/chemical_reaction/instant/hydrophoron + name = "Hydrophoron" + id = "hydrophoron" + result = "hydrophoron" + required_reagents = list("hydrogen" = 1, "phoron" = 1) + inhibitors = list("nitrogen" = 1) //So it doesn't mess with lexorin + result_amount = 2 + +/decl/chemical_reaction/instant/deuterium + name = "Deuterium" + id = "deuterium" + result = "deuterium" + required_reagents = list("hydrophoron" = 1, "water" = 2) + result_amount = 3 + +//Skrellian crap. +/decl/chemical_reaction/instant/talum_quem + name = "Talum-quem" + id = "talum_quem" + result = "talum_quem" + required_reagents = list("space_drugs" = 2, "sugar" = 1, "amatoxin" = 1) + result_amount = 4 + +/decl/chemical_reaction/instant/qerr_quem + name = "Qerr-quem" + id = "qerr_quem" + result = "qerr_quem" + required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2) + result_amount = 4 + +/decl/chemical_reaction/instant/malish_qualem + name = "Malish-Qualem" + id = "malish-qualem" + result = "malish-qualem" + required_reagents = list("immunosuprizine" = 1, "qerr_quem" = 1, "inaprovaline" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + +// Biomass, for cloning and bioprinters +/decl/chemical_reaction/instant/biomass + name = "Biomass" + id = "biomass" + result = "biomass" + required_reagents = list("protein" = 1, "sugar" = 1, "phoron" = 1) + result_amount = 1 // Roughly 20u per phoron sheet + +// Neutralization. + +/decl/chemical_reaction/instant/neutralize_neurotoxic_protein + name = "Neutralize Toxic Proteins" + id = "neurotoxic_protein_neutral" + result = "protein" + required_reagents = list("anti_toxin" = 1, "neurotoxic_protein" = 2) + result_amount = 2 + +/decl/chemical_reaction/instant/neutralize_carpotoxin + name = "Neutralize Carpotoxin" + id = "carpotoxin_neutral" + result = "protein" + required_reagents = list("radium" = 1, "carpotoxin" = 1, "sifsap" = 1) + catalysts = list("sifsap" = 10) + result_amount = 2 + +/decl/chemical_reaction/instant/neutralize_spidertoxin + name = "Neutralize Spidertoxin" + id = "spidertoxin_neutral" + result = "protein" + required_reagents = list("radium" = 1, "spidertoxin" = 1, "sifsap" = 1) + catalysts = list("sifsap" = 10) + result_amount = 2 \ No newline at end of file diff --git a/code/modules/reagents/reactions/instant/instant_ch.dm b/code/modules/reagents/reactions/instant/instant_ch.dm new file mode 100644 index 0000000000..9bc37c0212 --- /dev/null +++ b/code/modules/reagents/reactions/instant/instant_ch.dm @@ -0,0 +1,142 @@ +/decl/chemical_reaction/instant/aphrodisiac + name = "Aphrodisiac" + id = "aphrodisiac" + result = "aphrodisiac" + required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) + result_amount = 6 + +/decl/chemical_reaction/instant/claridyl + name = "claridyl" + id = "claridyl" + result = "claridyl" + required_reagents = list("lithium" = 1, "radium" = 1, "sugar" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/dyloteane + name = "dyloteane" + id = "dyloteane" + result = "dyloteane" + required_reagents = list("anti_toxin" = 1, "tea" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/dyloteane/super + name = "dyloteanesuper" + id = "dyloteanesuper" + result = "dyloteane" + required_reagents = list("anti_toxin" = 1, "tea" = 1,"sugar" = 1) + result_amount = 10 //by the powers of england for sugaring your tea you gain *10 result + +/decl/chemical_reaction/instant/eden + name = "eden" + id = "eden" + result = "eden" + required_reagents = list("anti_toxin" = 60, "phoron" = 60) + result_amount = 1 + +/decl/chemical_reaction/instant/eden/snake + id = "eden_snake" + result = "eden_snake" + required_reagents = list("eden" = 1, "ethanol" = 1) + +/decl/chemical_reaction/instant/tercozolam + id = "tercozolam" + result = "tercozolam" + required_reagents = list("anti_toxin" = 1, "ethanol" = 1, "lithium" = 1) + result_amount = 3 + +/decl/chemical_reaction/instant/peridaxon_ch + name = "Peridaxon" + id = "peridaxon_ch" + result = "peridaxon" + required_reagents = list("cordradaxon" = 1, "gastirodaxon" = 1, "hepanephrodaxon" = 1, "respirodaxon" = 1) + result_amount = 12 //More phoron-efficient alternative recipe. + +///SAP RECIPES////// + +/decl/chemical_reaction/instant/myelamine_sap //This is the clotting agent used by clotting packs. + name = "Myelamine" + id = "myelamine" + result = "myelamine" + required_reagents = list("bicaridine" = 1, "iron" = 2, "kelotane" = 1, "bluesap" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/hannoa + name = "Hannoa" + id = "hannoa" + result = "hannoa" + required_reagents = list("purplesap" = 1, "iron" = 2, "kelotane" = 1, "carbon" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/bullvalene + name = "Bullvalene" + id = "bullvalene" + result = "bullvalene" + required_reagents = list("dermaline" = 1, "orangesap" = 1, "Copper" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/nutrient + name = "Nutriment" + id = "nutriment" + result = "nutriment" + required_reagents = list("purplesap" = 1, "orangesap" = 1, "bluesap" = 1) + result_amount = 3 + +/////SERAZINE RECIPES////// + +/decl/chemical_reaction/instant/alizine + name = "Alizine" + id = "alizine" + result = "alizine" + required_reagents = list("bicaridine" = 1, "serazine" = 1, "tungsten" = 1) + result_amount = 3 + +/////GENDER CHANGE RECIPES///// + +/decl/chemical_reaction/instant/change_drug/male + name = "Elixer of Change" + id = "change_drug_male" + result = "change_drug_male" + required_reagents = list("blood" = 1, "mutagen" = 1, "iron" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/change_drug/female + name = "Elixer of Change" + id = "change_drug_female" + result = "change_drug_female" + required_reagents = list("blood" = 1, "mutagen" = 1, "sugar" = 1) + result_amount = 1 + +/decl/chemical_reaction/instant/change_drug/intersex + name = "Elixer of Change" + id = "change_drug_intersex" + result = "change_drug_intersex" + required_reagents = list("change_drug_male" = 1, "change_drug_female" = 1) + result_amount = 1 + +// Frost oil reactions for material sheets +/decl/chemical_reaction/instant/solidification/aluminium + name = "Solid Aluminium" + id = "solidaluminium" + required_reagents = list("frostoil" = 5, "aluminum" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/aluminium + +/decl/chemical_reaction/instant/solidification/copper + name = "Solid Copper" + id = "solidcopper" + required_reagents = list("frostoil" = 5, "copper" = REAGENTS_PER_SHEET) + sheet_to_give = /obj/item/stack/material/copper + +//YW stuff +/decl/chemical_reaction/instant/benzilate + name = "Benzilate" + id = "benzilate" + result = "benzilate" + required_reagents = list("paracetamol" = 1, "mindbreaker" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/phenethylamine + name = "Phenethylamine" + id = "phenethylamine" + result = "phenethylamine" + required_reagents = list("paroxetine" = 1, "benzilate" = 1) + result_amount = 2 diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/reactions/instant/instant_vr.dm similarity index 67% rename from code/modules/reagents/Chemistry-Recipes_vr.dm rename to code/modules/reagents/reactions/instant/instant_vr.dm index 620221d7ac..c30ba8a224 100644 --- a/code/modules/reagents/Chemistry-Recipes_vr.dm +++ b/code/modules/reagents/reactions/instant/instant_vr.dm @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////// /// Micro/Macro chemicals -/datum/chemical_reaction/sizeoxadone +/decl/chemical_reaction/instant/sizeoxadone name = "sizeoxadone" id = "sizeoxadone" result = "sizeoxadone" @@ -9,7 +9,7 @@ catalysts = list("phoron" = 5) result_amount = 5 -/datum/chemical_reaction/macrocillin +/decl/chemical_reaction/instant/macrocillin name = "Macrocillin" id = "macrocillin" result = "macrocillin" @@ -17,7 +17,7 @@ required_reagents = list("sizeoxadone" = 20, "diethylamine" = 20) result_amount = 1 -/datum/chemical_reaction/microcillin +/decl/chemical_reaction/instant/microcillin name = "Microcillin" id = "microcillin" result = "microcillin" @@ -25,7 +25,7 @@ required_reagents = list("sizeoxadone" = 20, "sodiumchloride" = 20) result_amount = 1 -/datum/chemical_reaction/normalcillin +/decl/chemical_reaction/instant/normalcillin name = "Normalcillin" id = "normalcillin" result = "normalcillin" @@ -33,13 +33,13 @@ required_reagents = list("sizeoxadone" = 20, "leporazine" = 20) result_amount = 1 -/datum/chemical_reaction/dontcrossthebeams +/decl/chemical_reaction/instant/dontcrossthebeams name = "Don't Cross The Beams" id = "dontcrossthebeams" result = null required_reagents = list("microcillin" = 1, "macrocillin" = 1) -/datum/chemical_reaction/dontcrossthebeams/on_reaction(var/datum/reagents/holder, var/created_volume) +/decl/chemical_reaction/instant/dontcrossthebeams/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) playsound(location, 'sound/weapons/gauss_shoot.ogg', 50, 1) var/datum/effect/effect/system/grav_pull/s = new /datum/effect/effect/system/grav_pull @@ -50,13 +50,13 @@ /////////////////////////////////////////////////////////////////////////////////// /// Miscellaneous Reactions -/datum/chemical_reaction/xenolazarus +/decl/chemical_reaction/instant/xenolazarus name = "Discount Lazarus" id = "discountlazarus" result = null required_reagents = list("monstertamer" = 5, "clonexadone" = 5) -/datum/chemical_reaction/xenolazarus/on_reaction(var/datum/reagents/holder, var/created_volume) //literally all this does is mash the regenerate button +/decl/chemical_reaction/instant/xenolazarus/on_reaction(var/datum/reagents/holder, var/created_volume) //literally all this does is mash the regenerate button if(ishuman(holder.my_atom)) var/mob/living/carbon/human/H = holder.my_atom if(H.stat == DEAD && (/mob/living/carbon/human/proc/reconstitute_form in H.verbs)) //no magical regen for non-regenners, and can't force the reaction on live ones @@ -75,10 +75,10 @@ H.visible_message("[H] twitches for a moment, but remains still.") // no nutriment -/datum/chemical_reaction/foam/softdrink +/decl/chemical_reaction/instant/foam/softdrink required_reagents = list("cola" = 1, "mint" = 1) -/datum/chemical_reaction/firefightingfoam //TODO: Make it so we can add this to the foam tanks to refill them +/decl/chemical_reaction/instant/firefightingfoam //TODO: Make it so we can add this to the foam tanks to refill them name = "Firefighting Foam" id = "firefighting foam" result = "firefoam" @@ -86,7 +86,7 @@ catalysts = list("fluorine" = 10) result_amount = 1 -/datum/chemical_reaction/firefightingfoamqol //Please don't abuse this and make us remove it. Seriously. +/decl/chemical_reaction/instant/firefightingfoamqol //Please don't abuse this and make us remove it. Seriously. name = "Firefighting Foam EZ" id = "firefighting foam ez" result = "firefoam" @@ -98,14 +98,14 @@ /////////////////////////////////////////////////////////////////////////////////// /// Vore Drugs -/datum/chemical_reaction/ickypak +/decl/chemical_reaction/instant/ickypak name = "Ickypak" id = "ickypak" result = "ickypak" required_reagents = list("hyperzine" = 4, "fluorosurfactant" = 1) result_amount = 5 -/datum/chemical_reaction/unsorbitol +/decl/chemical_reaction/instant/unsorbitol name = "Unsorbitol" id = "unsorbitol" result = "unsorbitol" @@ -114,14 +114,14 @@ /////////////////////////////////////////////////////////////////////////////////// /// Other Drugs -/datum/chemical_reaction/adranol +/decl/chemical_reaction/instant/adranol name = "Adranol" id = "adranol" result = "adranol" required_reagents = list("milk" = 2, "hydrogen" = 1, "potassium" = 1) result_amount = 3 -/datum/chemical_reaction/vermicetol +/decl/chemical_reaction/instant/vermicetol name = "Vermicetol" id = "vermicetol" result = "vermicetol" @@ -129,215 +129,16 @@ catalysts = list("phoron" = 5) result_amount = 3 -/////////////////////////////////////////////////////////////////////////////////// -/// Special drinks -/datum/chemical_reaction/drinks/grubshake - name = "Grub protein drink" - id = "grubshake" - result = "grubshake" - required_reagents = list("shockchem" = 5, "water" = 25) - result_amount = 30 - -/datum/chemical_reaction/drinks/deathbell - name = "Deathbell" - id = "deathbell" - result = "deathbell" - required_reagents = list("antifreeze" = 1, "gargleblaster" = 1, "syndicatebomb" =1) - result_amount = 3 - -/datum/chemical_reaction/drinks/monstertamer - name = "Monster Tamer" - id = "monstertamer" - result = "monstertamer" - required_reagents = list("whiskey" = 1, "protein" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/bigbeer - name = "Giant Beer" - id = "bigbeer" - result = "bigbeer" - required_reagents = list("syndicatebomb" = 1, "manlydorf" = 1, "grog" =1) - result_amount = 3 - -/datum/chemical_reaction/drinks/sweettea - name = "Sweetened Tea" - id = "sweettea" - result = "sweettea" - required_reagents = list("icetea" = 2, "sugar" = 1,) - result_amount = 3 - -/datum/chemical_reaction/drinks/unsweettea - name = "Unsweetened Tea" - id = "unsweettea" - result = "unsweettea" - required_reagents = list("sweettea" = 3, "phoron" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/galacticpanic - name = "Galactic Panic Attack" - id = "galacticpanic" - result = "galacticpanic" - required_reagents = list("gargleblaster" = 1, "singulo" = 1, "phoronspecial" =1, "neurotoxin" = 1, "atomicbomb" = 1, "hippiesdelight" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/bulldog - name = "Space Bulldog" - id = "bulldog" - result = "bulldog" - required_reagents = list("whiterussian" = 4, "cola" =1) - result_amount = 4 - -/datum/chemical_reaction/drinks/sbagliato - name = "Negroni Sbagliato" - id = "sbagliato" - result = "sbagliato" - required_reagents = list("wine" = 1, "vermouth" = 1, "sodawater" =1) - result_amount = 3 - -/datum/chemical_reaction/drinks/italiancrisis - name = "Italian Crisis" - id = "italiancrisis" - result = "italiancrisis" - required_reagents = list("bulldog" = 1, "sbagliato" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/sugarrush - name = "Sweet Rush" - id = "sugarrush" - result = "sugarrush" - required_reagents = list("sugar" = 1, "sodawater" = 1, "vodka" =1) - result_amount = 3 - -/datum/chemical_reaction/drinks/lotus - name = "Lotus" - id = "lotus" - result = "lotus" - required_reagents = list("sbagliato" = 1, "sugarrush" = 1) - result_amount = 2 - -/datum/chemical_reaction/drinks/shroomjuice - name = "Dumb Shroom Juice" - id = "shroomjuice" - result = "shroomjuice" - required_reagents = list("psilocybin" = 1, "applejuice" = 1, "limejuice" =1) - result_amount = 3 - -/datum/chemical_reaction/drinks/russianroulette - name = "Russian Roulette" - id = "russianroulette" - result = "russianroulette" - required_reagents = list("whiterussian" = 5, "iron" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/lovemaker - name = "The Love Maker" - id = "lovemaker" - result = "lovemaker" - required_reagents = list("honey" = 1, "sexonthebeach" = 5) - result_amount = 6 - -/datum/chemical_reaction/drinks/honeyshot - name = "Honey Shot" - id = "honeyshot" - result = "honeyshot" - required_reagents = list("honey" = 1, "vodka" = 1, "grenadine" =1) - result_amount = 3 - -/datum/chemical_reaction/drinks/appletini - name = "Appletini" - id = "appletini" - result = "appletini" - required_reagents = list("applejuice" = 2, "vodka" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/glowingappletini - name = "Glowing Appletini" - id = "glowingappletini" - result = "glowingappletini" - required_reagents = list("appletini" = 5, "uranium" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/scsatw - name = "Slow Comfortable Screw Against the Wall" - id = "scsatw" - result = "scsatw" - required_reagents = list("screwdrivercocktail" = 3, "rum" =1, "whiskey" =1, "gin" =1) - result_amount = 6 - -/datum/chemical_reaction/drinks/choccymilk - name = "Choccy Milk" - id = "choccymilk" - result = "choccymilk" - required_reagents = list("milk" = 3, "coco" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/redspaceflush - name = "Redspace Flush" - id = "redspaceflush" - result = "redspaceflush" - required_reagents = list("rum" = 2, "whiskey" = 2, "blood" =1, "phoron" =1) - result_amount = 6 - -/datum/chemical_reaction/drinks/graveyard - name = "Graveyard" - id = "graveyard" - result = "graveyard" - required_reagents = list("cola" = 1, "spacemountainwind" = 1, "dr_gibb" =1, "space_up" = 1) - result_amount = 4 - -/datum/chemical_reaction/drinks/hairoftherat - name = "Hair of the Rat" - id = "hairoftherat" - result = "hairoftherat" - required_reagents = list("monstertamer" = 2, "nutriment" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/pink_moo - name = "Pink Moo" - id = "pinkmoo" - result = "pinkmoo" - required_reagents = list("blackrussian" = 2, "berryshake" = 1) - result_amount = 3 - -/datum/chemical_reaction/drinks/originalsin - name = "Original Sin" - id = "originalsin" - result = "originalsin" - required_reagents = list("holywine" = 1) - catalysts = list("applejuice" = 1) - result_amount = 1 - -/datum/chemical_reaction/drinks/windgarita - name = "WND-Garita" - id = "windgarita" - result = "windgarita" - required_reagents = list("margarita" = 3, "spacemountainwind" = 2, "melonliquor" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/newyorksour - name = "New York Sour" - id = "newyorksour" - result = "newyorksour" - required_reagents = list("whiskeysour" = 3, "wine" = 2, "egg" = 1) - result_amount = 6 - -/datum/chemical_reaction/drinks/mudslide - name = "Mudslide" - id = "mudslide" - result = "mudslide" - required_reagents = list("blackrussian" = 1, "irishcream" = 1) - result_amount = 2 - /////////////////////////////////////////////////////////////////////////////////// /// Reagent colonies. -/datum/chemical_reaction/meatcolony +/decl/chemical_reaction/instant/meatcolony name = "protein" id = "meatcolony" result = "protein" required_reagents = list("meatcolony" = 5, "virusfood" = 5) result_amount = 60 -/datum/chemical_reaction/plantcolony +/decl/chemical_reaction/instant/plantcolony name = "nutriment" id = "plantcolony" result = "nutriment" @@ -350,7 +151,7 @@ -/datum/chemical_reaction/slime_food +/decl/chemical_reaction/instant/slime_food name = "Slime Bork" id = "m_tele2" result = null @@ -378,7 +179,7 @@ -/datum/chemical_reaction/materials +/decl/chemical_reaction/instant/materials name = "Slime materials" id = "slimematerial" result = null @@ -435,7 +236,7 @@ C.loc = get_turf(holder.my_atom) -/datum/chemical_reaction/slimelight +/decl/chemical_reaction/instant/slimelight name = "Slime Glow" id = "m_glow" result = null @@ -448,7 +249,7 @@ F.loc = get_turf(holder.my_atom) -/datum/chemical_reaction/slimephoron +/decl/chemical_reaction/instant/slimephoron name = "Slime Phoron" id = "m_plasma" result = null @@ -459,7 +260,7 @@ P.amount = 10 P.loc = get_turf(holder.my_atom) -/datum/chemical_reaction/slimefreeze +/decl/chemical_reaction/instant/slimefreeze name = "Slime Freeze" id = "m_freeze" result = null @@ -477,7 +278,7 @@ -/datum/chemical_reaction/slimefrost +/decl/chemical_reaction/instant/slimefrost name = "Slime Frost Oil" id = "m_frostoil" result = "frostoil" @@ -487,7 +288,7 @@ -/datum/chemical_reaction/slimefire +/decl/chemical_reaction/instant/slimefire name = "Slime fire" id = "m_fire" result = null @@ -503,7 +304,7 @@ spawn (0) target_tile.hotspot_expose(700, 400) -/datum/chemical_reaction/slimeify +/decl/chemical_reaction/instant/slimeify name = "Advanced Mutation Toxin" id = "advmutationtoxin2" result = "advmutationtoxin" @@ -514,7 +315,7 @@ -/datum/chemical_reaction/slimeheal //A slime healing mixture. Why not. +/decl/chemical_reaction/instant/slimeheal //A slime healing mixture. Why not. name = "Slime Health" id = "slimeheal" result = "null" @@ -530,14 +331,14 @@ C.adjustCloneLoss(-25) C.updatehealth() -/datum/chemical_reaction/slimejelly +/decl/chemical_reaction/instant/slimejelly name = "Slime Jam" id = "m_jam" result = "slimejelly" required_reagents = list("phoron" = 20, "sugar" = 50, "lithium" = 50) //In case a xenobiologist is impatient and is willing to drain their dispenser resources, along with plasma! result_amount = 5 -/datum/chemical_reaction/slimevore +/decl/chemical_reaction/instant/slimevore name = "Slime Vore" // Hostile vore mobs only id = "m_tele" result = null @@ -600,9 +401,13 @@ for(var/j = 1, j <= rand(1, 3), j++) step(C, pick(NORTH,SOUTH,EAST,WEST)) +/decl/chemical_reaction/instant/slime/sapphire_mutation + name = "Slime Mutation Toxins" + id = "slime_mutation_tox" + result = "mutationtoxin" + required_reagents = list("blood" = 5) + result_amount = 30 + required = /obj/item/slime_extract/sapphire -/datum/chemical_reaction/food/syntiflesh - required_reagents = list("blood" = 5, "clonexadone" = 1) - -/datum/chemical_reaction/biomass - result_amount = 6 // Roughly 120u per phoron sheet \ No newline at end of file +/decl/chemical_reaction/instant/biomass + result_amount = 6 // Roughly 120u per phoron sheet diff --git a/code/modules/reagents/Chemistry-Readme.dm b/code/modules/reagents/readme.md similarity index 97% rename from code/modules/reagents/Chemistry-Readme.dm rename to code/modules/reagents/readme.md index 2b7e3a832a..f9dac66b08 100644 --- a/code/modules/reagents/Chemistry-Readme.dm +++ b/code/modules/reagents/readme.md @@ -1,305 +1,305 @@ -/* -NOTE: IF YOU UPDATE THE REAGENT-SYSTEM, ALSO UPDATE THIS README. - -Structure: /////////////////// ////////////////////////// - // Mob or object // -------> // Reagents var (datum) // Is a reference to the datum that holds the reagents. - /////////////////// ////////////////////////// - | | - The object that holds everything. V - reagent_list var (list) A List of datums, each datum is a reagent. - - | | | - V V V - - reagents (datums) Reagents. I.e. Water , antitoxins or mercury. - - -Random important notes: - - An objects on_reagent_change will be called every time the objects reagents change. - Useful if you want to update the objects icon etc. - -About the Holder: - - The holder (reagents datum) is the datum that holds a list of all reagents - currently in the object.It also has all the procs needed to manipulate reagents - - Vars: - list/datum/reagent/reagent_list - List of reagent datums. - - total_volume - Total volume of all reagents. - - maximum_volume - Maximum volume. - - atom/my_atom - Reference to the object that contains this. - - Procs: - - get_free_space() - Returns the remaining free volume in the holder. - - get_master_reagent() - Returns the reference to the reagent with the largest volume - - get_master_reagent_name() - Ditto, but returns the name. - - get_master_reagent_id() - Ditto, but returns ID. - - update_total() - Updates total volume, called automatically. - - handle_reactions() - Checks reagents and triggers any reactions that happen. Usually called automatically. - - add_reagent(var/id, var/amount, var/data = null, var/safety = 0) - Adds [amount] units of [id] reagent. [data] will be passed to reagent's mix_data() or initialize_data(). If [safety] is 0, handle_reactions() will be called. Returns 1 if successful, 0 otherwise. - - remove_reagent(var/id, var/amount, var/safety = 0) - Ditto, but removes reagent. Returns 1 if successful, 0 otherwise. - - del_reagent(var/id) - Removes all of the reagent. - - has_reagent(var/id, var/amount = 0) - Checks if holder has at least [amount] of [id] reagent. Returns 1 if the reagent is found and volume is above [amount]. Returns 0 otherwise. - - clear_reagents() - Removes all reagents. - - get_reagent_amount(var/id) - Returns reagent volume. Returns 0 if reagent is not found. - - get_data(var/id) - Returns get_data() of the reagent. - - get_reagents() - Returns a string containing all reagent ids and volumes, e.g. "carbon(4),nittrogen(5)". - - remove_any(var/amount = 1) - Removes up to [amount] of reagents from [src]. Returns actual amount removed. - - trans_to_holder(var/datum/reagents/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - Transfers [amount] reagents from [src] to [target], multiplying them by [multiplier]. Returns actual amount removed from [src] (not amount transferred to [target]). If [copy] is 1, copies reagents instead. - - touch(var/atom/target) - When applying reagents to an atom externally, touch() is called to trigger any on-touch effects of the reagent. - This does not handle transferring reagents to things. - For example, splashing someone with water will get them wet and extinguish them if they are on fire, - even if they are wearing an impermeable suit that prevents the reagents from contacting the skin. - Basically just defers to touch_mob(target), touch_turf(target), or touch_obj(target), depending on target's type. - Not recommended to use this directly, since trans_to() calls it before attempting to transfer. - - touch_mob(var/mob/target) - Calls each reagent's touch_mob(target). - - touch_turf(var/turf/target) - Calls each reagent's touch_turf(target). - - touch_obj(var/obj/target) - Calls each reagent's touch_obj(target). - - trans_to(var/atom/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - The general proc for applying reagents to things externally (as opposed to directly injected into the contents). - It first calls touch, then the appropriate trans_to_*() or splash_mob(). - If for some reason you want touch effects to be bypassed (e.g. injecting stuff directly into a reagent container or person), call the appropriate trans_to_*() proc. - - Calls touch() before checking the type of [target], calling splash_mob(target, amount), trans_to_turf(target, amount, multiplier, copy), or trans_to_obj(target, amount, multiplier, copy). - - trans_id_to(var/atom/target, var/id, var/amount = 1) - Transfers [amount] of [id] to [target]. Returns amount transferred. - - splash_mob(var/mob/target, var/amount = 1, var/clothes = 1) - Checks mob's clothing if [clothes] is 1 and transfers [amount] reagents to mob's skin. - Don't call this directly. Call apply_to() instead. - - trans_to_mob(var/mob/target, var/amount = 1, var/type = CHEM_BLOOD, var/multiplier = 1, var/copy = 0) - Transfers [amount] reagents to the mob's appropriate holder, depending on [type]. Ignores protection. - - trans_to_turf(var/turf/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - Turfs don't currently have any reagents. Puts [amount] reagents into a temporary holder, calls touch_turf(target) from it, and deletes it. - - trans_to_obj(var/turf/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - If target has reagents, transfers [amount] to it. Otherwise, same as trans_to_turf(). - - atom/proc/create_reagents(var/max_vol) - Creates a new reagent datum. - -About Reagents: - - Reagents are all the things you can mix and fille in bottles etc. This can be anything from - rejuvs over water to... iron. - - Vars: - - name - Name that shows up in-game. - - id - ID that is used for internal tracking. MUST BE UNIQUE. - - description - Description that shows up in-game. - - datum/reagents/holder - Reference to holder. - - reagent_state - Could be GAS, LIQUID, or SOLID. Affects nothing. Reserved for future use. - - list/data - Use varies by reagent. Custom variable. For example, blood stores blood group and viruses. - - volume - Current volume. - - metabolism - How quickly reagent is processed in mob's bloodstream; by default aslo affects ingest and touch metabolism. - - ingest_met - How quickly reagent is processed when ingested; [metabolism] is used if zero. - - touch_met - Ditto when touching. - - dose - How much of the reagent has been processed, limited by [max_dose]. Used for reagents with varying effects (e.g. ethanol or rezadone) and overdosing. - - max_dose - Maximum amount of reagent that has ever been in a mob. Exists so dose won't grow infinitely when small amounts of reagent are added over time. - - overdose - If [dose] is bigger than [overdose], overdose() proc is called every tick. - - scannable - If set to 1, will show up on health analyzers by name. - - affects_dead - If set to 1, will affect dead players. Used by Adminordrazine. - - glass_icon_state - Used by drinks. icon_state of the glass when this reagent is the master reagent. - - glass_name - Ditto for glass name. - - glass_desc - Ditto for glass desciption. - - glass_center_of_mass - Used for glass placement on tables. - - color - "#RRGGBB" or "#RRGGBBAA" where A is alpha channel. - - color_weight - How much reagent affects color of holder. Used by paint. - - Procs: - - remove_self(var/amount) - Removes [amount] of itself. - - touch_mob(var/mob/M) - Called when reagent is in another holder and not splashing the mob. Can be used with noncarbons. - - touch_obj(var/obj/O) - How reagent reacts with objects. - - touch_turf(var/turf/T) - How reagent reacts with turfs. - - on_mob_life(var/mob/living/carbon/M, var/alien, var/location) - Makes necessary checks and calls one of affect procs. - - affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - How reagent affects mob when injected. [removed] is the amount of reagent that has been removed this tick. [alien] is the mob's reagent flag. - - affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - Ditto, ingested. Defaults to affect_blood with halved dose. - - affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - Ditto, touching. - - overdose(var/mob/living/carbon/M, var/alien) - Called when dose is above overdose. Defaults to M.adjustToxLoss(REM). - - initialize_data(var/newdata) - Called when reagent is created. Defaults to setting [data] to [newdata]. - - mix_data(var/newdata, var/newamount) - Called when [newamount] of reagent with [newdata] data is added to the current reagent. Used by paint. - - get_data() - Returns data. Can be overriden. - -About Recipes: - - Recipes are simple datums that contain a list of required reagents and a result. - They also have a proc that is called when the recipe is matched. - - Vars: - - name - Name of the reaction, currently unused. - - id - ID of the reaction, must be unique. - - result - ID of the resulting reagent. Can be null. - - list/required_reagents - Reagents that are required for the reaction and are used up during it. - - list/catalysts - Ditto, but not used up. - - list/inhibitors - Opposite, prevent the reaction from happening. - - result_amount - Amount of resulting reagent. - - mix_message - Message that is shown to mobs when reaction happens. - - Procs: - - can_happen(var/datum/reagents/holder) - Customizable. If it returns 0, reaction will not happen. Defaults to always returning 1. Used by slime core reactions. - - on_reaction(var/datum/reagents/holder, var/created_volume) - Called when reaction happens. Used by explosives. - - send_data(var/datum/reagents/T) - Sets resulting reagent's data. Used by blood paint. - -About the Tools: - - By default, all atom have a reagents var - but its empty. if you want to use an object for the chem. - system you'll need to add something like this in its new proc: - - atom/proc/create_reagents(var/max_volume) - - Other important stuff: - - amount_per_transfer_from_this var - This var is mostly used by beakers and bottles. - It simply tells us how much to transfer when - 'pouring' our reagents into something else. - - atom/proc/is_open_container() - Checks atom/var/flags & OPENCONTAINER. - If this returns 1 , you can use syringes, beakers etc - to manipulate the contents of this object. - If it's 0, you'll need to write your own custom reagent - transfer code since you will not be able to use the standard - tools to manipulate it. - +/* +NOTE: IF YOU UPDATE THE REAGENT-SYSTEM, ALSO UPDATE THIS README. + +Structure: /////////////////// ////////////////////////// + // Mob or object // -------> // Reagents var (datum) // Is a reference to the datum that holds the reagents. + /////////////////// ////////////////////////// + | | + The object that holds everything. V + reagent_list var (list) A List of datums, each datum is a reagent. + + | | | + V V V + + reagents (datums) Reagents. I.e. Water , antitoxins or mercury. + + +Random important notes: + + An objects on_reagent_change will be called every time the objects reagents change. + Useful if you want to update the objects icon etc. + +About the Holder: + + The holder (reagents datum) is the datum that holds a list of all reagents + currently in the object.It also has all the procs needed to manipulate reagents + + Vars: + list/datum/reagent/reagent_list + List of reagent datums. + + total_volume + Total volume of all reagents. + + maximum_volume + Maximum volume. + + atom/my_atom + Reference to the object that contains this. + + Procs: + + get_free_space() + Returns the remaining free volume in the holder. + + get_master_reagent() + Returns the reference to the reagent with the largest volume + + get_master_reagent_name() + Ditto, but returns the name. + + get_master_reagent_id() + Ditto, but returns ID. + + update_total() + Updates total volume, called automatically. + + handle_reactions() + Checks reagents and triggers any reactions that happen. Usually called automatically. + + add_reagent(var/id, var/amount, var/data = null, var/safety = 0) + Adds [amount] units of [id] reagent. [data] will be passed to reagent's mix_data() or initialize_data(). If [safety] is 0, handle_reactions() will be called. Returns 1 if successful, 0 otherwise. + + remove_reagent(var/id, var/amount, var/safety = 0) + Ditto, but removes reagent. Returns 1 if successful, 0 otherwise. + + del_reagent(var/id) + Removes all of the reagent. + + has_reagent(var/id, var/amount = 0) + Checks if holder has at least [amount] of [id] reagent. Returns 1 if the reagent is found and volume is above [amount]. Returns 0 otherwise. + + clear_reagents() + Removes all reagents. + + get_reagent_amount(var/id) + Returns reagent volume. Returns 0 if reagent is not found. + + get_data(var/id) + Returns get_data() of the reagent. + + get_reagents() + Returns a string containing all reagent ids and volumes, e.g. "carbon(4),nittrogen(5)". + + remove_any(var/amount = 1) + Removes up to [amount] of reagents from [src]. Returns actual amount removed. + + trans_to_holder(var/datum/reagents/target, var/amount = 1, var/multiplier = 1, var/copy = 0) + Transfers [amount] reagents from [src] to [target], multiplying them by [multiplier]. Returns actual amount removed from [src] (not amount transferred to [target]). If [copy] is 1, copies reagents instead. + + touch(var/atom/target) + When applying reagents to an atom externally, touch() is called to trigger any on-touch effects of the reagent. + This does not handle transferring reagents to things. + For example, splashing someone with water will get them wet and extinguish them if they are on fire, + even if they are wearing an impermeable suit that prevents the reagents from contacting the skin. + Basically just defers to touch_mob(target), touch_turf(target), or touch_obj(target), depending on target's type. + Not recommended to use this directly, since trans_to() calls it before attempting to transfer. + + touch_mob(var/mob/target) + Calls each reagent's touch_mob(target). + + touch_turf(var/turf/target) + Calls each reagent's touch_turf(target). + + touch_obj(var/obj/target) + Calls each reagent's touch_obj(target). + + trans_to(var/atom/target, var/amount = 1, var/multiplier = 1, var/copy = 0) + The general proc for applying reagents to things externally (as opposed to directly injected into the contents). + It first calls touch, then the appropriate trans_to_*() or splash_mob(). + If for some reason you want touch effects to be bypassed (e.g. injecting stuff directly into a reagent container or person), call the appropriate trans_to_*() proc. + + Calls touch() before checking the type of [target], calling splash_mob(target, amount), trans_to_turf(target, amount, multiplier, copy), or trans_to_obj(target, amount, multiplier, copy). + + trans_id_to(var/atom/target, var/id, var/amount = 1) + Transfers [amount] of [id] to [target]. Returns amount transferred. + + splash_mob(var/mob/target, var/amount = 1, var/clothes = 1) + Checks mob's clothing if [clothes] is 1 and transfers [amount] reagents to mob's skin. + Don't call this directly. Call apply_to() instead. + + trans_to_mob(var/mob/target, var/amount = 1, var/type = CHEM_BLOOD, var/multiplier = 1, var/copy = 0) + Transfers [amount] reagents to the mob's appropriate holder, depending on [type]. Ignores protection. + + trans_to_turf(var/turf/target, var/amount = 1, var/multiplier = 1, var/copy = 0) + Turfs don't currently have any reagents. Puts [amount] reagents into a temporary holder, calls touch_turf(target) from it, and deletes it. + + trans_to_obj(var/turf/target, var/amount = 1, var/multiplier = 1, var/copy = 0) + If target has reagents, transfers [amount] to it. Otherwise, same as trans_to_turf(). + + atom/proc/create_reagents(var/max_vol) + Creates a new reagent datum. + +About Reagents: + + Reagents are all the things you can mix and fille in bottles etc. This can be anything from + rejuvs over water to... iron. + + Vars: + + name + Name that shows up in-game. + + id + ID that is used for internal tracking. MUST BE UNIQUE. + + description + Description that shows up in-game. + + datum/reagents/holder + Reference to holder. + + reagent_state + Could be GAS, LIQUID, or SOLID. Affects nothing. Reserved for future use. + + list/data + Use varies by reagent. Custom variable. For example, blood stores blood group and viruses. + + volume + Current volume. + + metabolism + How quickly reagent is processed in mob's bloodstream; by default aslo affects ingest and touch metabolism. + + ingest_met + How quickly reagent is processed when ingested; [metabolism] is used if zero. + + touch_met + Ditto when touching. + + dose + How much of the reagent has been processed, limited by [max_dose]. Used for reagents with varying effects (e.g. ethanol or rezadone) and overdosing. + + max_dose + Maximum amount of reagent that has ever been in a mob. Exists so dose won't grow infinitely when small amounts of reagent are added over time. + + overdose + If [dose] is bigger than [overdose], overdose() proc is called every tick. + + scannable + If set to 1, will show up on health analyzers by name. + + affects_dead + If set to 1, will affect dead players. Used by Adminordrazine. + + glass_icon_state + Used by drinks. icon_state of the glass when this reagent is the master reagent. + + glass_name + Ditto for glass name. + + glass_desc + Ditto for glass desciption. + + glass_center_of_mass + Used for glass placement on tables. + + color + "#RRGGBB" or "#RRGGBBAA" where A is alpha channel. + + color_weight + How much reagent affects color of holder. Used by paint. + + Procs: + + remove_self(var/amount) + Removes [amount] of itself. + + touch_mob(var/mob/M) + Called when reagent is in another holder and not splashing the mob. Can be used with noncarbons. + + touch_obj(var/obj/O) + How reagent reacts with objects. + + touch_turf(var/turf/T) + How reagent reacts with turfs. + + on_mob_life(var/mob/living/carbon/M, var/alien, var/location) + Makes necessary checks and calls one of affect procs. + + affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + How reagent affects mob when injected. [removed] is the amount of reagent that has been removed this tick. [alien] is the mob's reagent flag. + + affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + Ditto, ingested. Defaults to affect_blood with halved dose. + + affect_touch(var/mob/living/carbon/M, var/alien, var/removed) + Ditto, touching. + + overdose(var/mob/living/carbon/M, var/alien) + Called when dose is above overdose. Defaults to M.adjustToxLoss(REM). + + initialize_data(var/newdata) + Called when reagent is created. Defaults to setting [data] to [newdata]. + + mix_data(var/newdata, var/newamount) + Called when [newamount] of reagent with [newdata] data is added to the current reagent. Used by paint. + + get_data() + Returns data. Can be overriden. + +About Recipes: + + Recipes are simple datums that contain a list of required reagents and a result. + They also have a proc that is called when the recipe is matched. + + Vars: + + name + Name of the reaction, currently unused. + + id + ID of the reaction, must be unique. + + result + ID of the resulting reagent. Can be null. + + list/required_reagents + Reagents that are required for the reaction and are used up during it. + + list/catalysts + Ditto, but not used up. + + list/inhibitors + Opposite, prevent the reaction from happening. + + result_amount + Amount of resulting reagent. + + mix_message + Message that is shown to mobs when reaction happens. + + Procs: + + can_happen(var/datum/reagents/holder) + Customizable. If it returns 0, reaction will not happen. Defaults to always returning 1. Used by slime core reactions. + + on_reaction(var/datum/reagents/holder, var/created_volume) + Called when reaction happens. Used by explosives. + + send_data(var/datum/reagents/T) + Sets resulting reagent's data. Used by blood paint. + +About the Tools: + + By default, all atom have a reagents var - but its empty. if you want to use an object for the chem. + system you'll need to add something like this in its new proc: + + atom/proc/create_reagents(var/max_volume) + + Other important stuff: + + amount_per_transfer_from_this var + This var is mostly used by beakers and bottles. + It simply tells us how much to transfer when + 'pouring' our reagents into something else. + + atom/proc/is_open_container() + Checks atom/var/flags & OPENCONTAINER. + If this returns 1 , you can use syringes, beakers etc + to manipulate the contents of this object. + If it's 0, you'll need to write your own custom reagent + transfer code since you will not be able to use the standard + tools to manipulate it. + */ \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers/_reagent_containers.dm similarity index 97% rename from code/modules/reagents/reagent_containers.dm rename to code/modules/reagents/reagent_containers/_reagent_containers.dm index 7a6927f49d..64dd2622d2 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers/_reagent_containers.dm @@ -1,145 +1,145 @@ -/obj/item/weapon/reagent_containers - name = "Container" - desc = "..." - icon = 'icons/obj/chemical.dmi' - icon_state = null - w_class = ITEMSIZE_SMALL - var/amount_per_transfer_from_this = 5 - var/possible_transfer_amounts = list(5,10,15,25,30) - var/volume = 30 - -/obj/item/weapon/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this - set name = "Set transfer amount" - set category = "Object" - set src in range(0) - var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts - if(N) - amount_per_transfer_from_this = N - -/obj/item/weapon/reagent_containers/Initialize() - . = ..() - if(!possible_transfer_amounts) - src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT - create_reagents(volume) - -/obj/item/weapon/reagent_containers/attack_self(mob/user as mob) - return - -/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user, flag) - return - -/obj/item/weapon/reagent_containers/proc/reagentlist() // For attack logs - if(reagents) - return reagents.get_reagents() - return "No reagent holder" - -/obj/item/weapon/reagent_containers/proc/standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) // This goes into afterattack - if(!istype(target)) - return 0 - - if(!target.reagents || !target.reagents.total_volume) - to_chat(user, "[target] is empty.") - return 1 - - if(reagents && !reagents.get_free_space()) - to_chat(user, "[src] is full.") - return 1 - - var/trans = target.reagents.trans_to_obj(src, target:amount_per_transfer_from_this) - to_chat(user, "You fill [src] with [trans] units of the contents of [target].") - return 1 - -/obj/item/weapon/reagent_containers/proc/standard_splash_mob(var/mob/user, var/mob/target) // This goes into afterattack - if(!istype(target)) - return - - if(!reagents || !reagents.total_volume) - to_chat(user, "[src] is empty.") - return 1 - - if(target.reagents && !target.reagents.get_free_space()) - to_chat(user, "[target] is full.") - return 1 - - var/contained = reagentlist() - add_attack_logs(user,target,"Splashed with [src.name] containing [contained]") - user.visible_message("[target] has been splashed with something by [user]!", "You splash the solution onto [target].") - reagents.splash(target, reagents.total_volume) - return 1 - -/obj/item/weapon/reagent_containers/proc/self_feed_message(var/mob/user) - to_chat(user, "You eat \the [src]") - -/obj/item/weapon/reagent_containers/proc/other_feed_message_start(var/mob/user, var/mob/target) - user.visible_message("[user] is trying to feed [target] \the [src]!") - -/obj/item/weapon/reagent_containers/proc/other_feed_message_finish(var/mob/user, var/mob/target) - user.visible_message("[user] has fed [target] \the [src]!") - -/obj/item/weapon/reagent_containers/proc/feed_sound(var/mob/user) - return - -/obj/item/weapon/reagent_containers/proc/standard_feed_mob(var/mob/user, var/mob/target) // This goes into attack - if(!istype(target)) - return 0 - - if(!reagents || !reagents.total_volume) - to_chat(user, "\The [src] is empty.") - return 1 - - if(target == user) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - if(!H.check_has_mouth()) - to_chat(user, "Where do you intend to put \the [src]? You don't have a mouth!") - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - to_chat(user, "\The [blocked] is in the way!") - return - - user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things - self_feed_message(user) - reagents.trans_to_mob(user, issmall(user) ? CEILING(amount_per_transfer_from_this/2, 1) : amount_per_transfer_from_this, CHEM_INGEST) - feed_sound(user) - return 1 - else - if(istype(target, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - if(!H.check_has_mouth()) - to_chat(user, "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!") - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - to_chat(user, "\The [blocked] is in the way!") - return - - other_feed_message_start(user, target) - - user.setClickCooldown(user.get_attack_speed(src)) - if(!do_mob(user, target)) - return - - other_feed_message_finish(user, target) - - var/contained = reagentlist() - add_attack_logs(user,target,"Fed from [src.name] containing [contained]") - reagents.trans_to_mob(target, amount_per_transfer_from_this, CHEM_INGEST) - feed_sound(user) - return 1 - -/obj/item/weapon/reagent_containers/proc/standard_pour_into(var/mob/user, var/atom/target) // This goes into afterattack and yes, it's atom-level - if(!target.is_open_container() || !target.reagents) - return 0 - - if(!reagents || !reagents.total_volume) - to_chat(user, "[src] is empty.") - return 1 - - if(!target.reagents.get_free_space()) - to_chat(user, "[target] is full.") - return 1 - - var/trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "You transfer [trans] units of the solution to [target].") - return 1 +/obj/item/weapon/reagent_containers + name = "Container" + desc = "..." + icon = 'icons/obj/chemical.dmi' + icon_state = null + w_class = ITEMSIZE_SMALL + var/amount_per_transfer_from_this = 5 + var/possible_transfer_amounts = list(5,10,15,25,30) + var/volume = 30 + +/obj/item/weapon/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this + set name = "Set transfer amount" + set category = "Object" + set src in range(0) + var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts + if(N) + amount_per_transfer_from_this = N + +/obj/item/weapon/reagent_containers/Initialize() + . = ..() + if(!possible_transfer_amounts) + src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT + create_reagents(volume) + +/obj/item/weapon/reagent_containers/attack_self(mob/user as mob) + return + +/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user, flag) + return + +/obj/item/weapon/reagent_containers/proc/reagentlist() // For attack logs + if(reagents) + return reagents.get_reagents() + return "No reagent holder" + +/obj/item/weapon/reagent_containers/proc/standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) // This goes into afterattack + if(!istype(target)) + return 0 + + if(!target.reagents || !target.reagents.total_volume) + to_chat(user, "[target] is empty.") + return 1 + + if(reagents && !reagents.get_free_space()) + to_chat(user, "[src] is full.") + return 1 + + var/trans = target.reagents.trans_to_obj(src, target:amount_per_transfer_from_this) + to_chat(user, "You fill [src] with [trans] units of the contents of [target].") + return 1 + +/obj/item/weapon/reagent_containers/proc/standard_splash_mob(var/mob/user, var/mob/target) // This goes into afterattack + if(!istype(target)) + return + + if(!reagents || !reagents.total_volume) + to_chat(user, "[src] is empty.") + return 1 + + if(target.reagents && !target.reagents.get_free_space()) + to_chat(user, "[target] is full.") + return 1 + + var/contained = reagentlist() + add_attack_logs(user,target,"Splashed with [src.name] containing [contained]") + user.visible_message("[target] has been splashed with something by [user]!", "You splash the solution onto [target].") + reagents.splash(target, reagents.total_volume) + return 1 + +/obj/item/weapon/reagent_containers/proc/self_feed_message(var/mob/user) + to_chat(user, "You eat \the [src]") + +/obj/item/weapon/reagent_containers/proc/other_feed_message_start(var/mob/user, var/mob/target) + user.visible_message("[user] is trying to feed [target] \the [src]!") + +/obj/item/weapon/reagent_containers/proc/other_feed_message_finish(var/mob/user, var/mob/target) + user.visible_message("[user] has fed [target] \the [src]!") + +/obj/item/weapon/reagent_containers/proc/feed_sound(var/mob/user) + return + +/obj/item/weapon/reagent_containers/proc/standard_feed_mob(var/mob/user, var/mob/target) // This goes into attack + if(!istype(target)) + return 0 + + if(!reagents || !reagents.total_volume) + to_chat(user, "\The [src] is empty.") + return 1 + + if(target == user) + if(istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + if(!H.check_has_mouth()) + to_chat(user, "Where do you intend to put \the [src]? You don't have a mouth!") + return + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + to_chat(user, "\The [blocked] is in the way!") + return + + user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things + self_feed_message(user) + reagents.trans_to_mob(user, issmall(user) ? CEILING(amount_per_transfer_from_this/2, 1) : amount_per_transfer_from_this, CHEM_INGEST) + feed_sound(user) + return 1 + else + if(istype(target, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = target + if(!H.check_has_mouth()) + to_chat(user, "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!") + return + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + to_chat(user, "\The [blocked] is in the way!") + return + + other_feed_message_start(user, target) + + user.setClickCooldown(user.get_attack_speed(src)) + if(!do_mob(user, target)) + return + + other_feed_message_finish(user, target) + + var/contained = reagentlist() + add_attack_logs(user,target,"Fed from [src.name] containing [contained]") + reagents.trans_to_mob(target, amount_per_transfer_from_this, CHEM_INGEST) + feed_sound(user) + return 1 + +/obj/item/weapon/reagent_containers/proc/standard_pour_into(var/mob/user, var/atom/target) // This goes into afterattack and yes, it's atom-level + if(!target.is_open_container() || !target.reagents) + return 0 + + if(!reagents || !reagents.total_volume) + to_chat(user, "[src] is empty.") + return 1 + + if(!target.reagents.get_free_space()) + to_chat(user, "[target] is full.") + return 1 + + var/trans = reagents.trans_to(target, amount_per_transfer_from_this) + to_chat(user, "You transfer [trans] units of the solution to [target].") + return 1 diff --git a/code/modules/reagents/Chemistry-Reagents-Helpers.dm b/code/modules/reagents/reagents/_helpers.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents-Helpers.dm rename to code/modules/reagents/reagents/_helpers.dm diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/reagents/_reagents.dm similarity index 97% rename from code/modules/reagents/Chemistry-Reagents.dm rename to code/modules/reagents/reagents/_reagents.dm index b570b31c31..0c0fa03d7f 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/reagents/_reagents.dm @@ -225,6 +225,7 @@ holder = null . = ..() +//YW edit start // Called when reagents are removed from a container, most likely after metabolizing in a mob /datum/reagent/proc/on_remove(var/atom/A) return @@ -236,6 +237,7 @@ //on transfer to new container, return 1 to allow it to continue /datum/reagent/proc/on_transfer(var/volume) return 1 +//YW edit end /* DEPRECATED - TODO: REMOVE EVERYWHERE */ @@ -247,4 +249,3 @@ /datum/reagent/proc/reaction_mob(var/mob/target) touch_mob(target) - diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/reagents/core.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm rename to code/modules/reagents/reagents/core.dm diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/reagents/dispenser.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm rename to code/modules/reagents/reagents/dispenser.dm diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/reagents/food_drinks.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm rename to code/modules/reagents/reagents/food_drinks.dm diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents_ch.dm b/code/modules/reagents/reagents/food_drinks_ch.dm similarity index 55% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents_ch.dm rename to code/modules/reagents/reagents/food_drinks_ch.dm index 6005383211..a383554ea5 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents_ch.dm +++ b/code/modules/reagents/reagents/food_drinks_ch.dm @@ -1,367 +1,3 @@ -/// Recipes - -/datum/chemical_reaction/aphrodisiac - name = "Aphrodisiac" - id = "aphrodisiac" - result = "aphrodisiac" - required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) - result_amount = 6 - -/datum/reagent/aphrodisiac - name = "Aphrodisiac" - id = "aphrodisiac" - description = "You so horny." - taste_description = "sweetness" - reagent_state = LIQUID - color = "#FF9999" - scannable = 1 - -/datum/reagent/aphrodisiac/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(!M) return - - if(prob(3)) - M.emote(pick("blush", "moan", "moan", "giggle")) - - // Unsure if we want to allow cumming. I'm gonna disable it for now. -/* - if(prob(1)) - switch(M.gender) - if(MALE) - M.emote("mcum") - if(FEMALE) - M.emote("fcum") - if(PLURAL) - if(prob(50)) - M.emote("mcum") - else - M.emote("fcum") -*/ -// Disabled cause I'm unsure if we want to do this or not. -/* -/mob/living/proc/cum() - if(!check_has_mouth()) - return - src.visible_message("[src] throws up!","You throw up!") - - var/turf/simulated/T = get_turf(src) //TODO: Make add_blood_floor remove blood from human mobs - if(istype(T)) - T.add_vomit_floor(src, 1) -*/ - -////////////////////////////////////////////// -////////////////C U B E S//////////////////// -//////////////////////////////////////////// -/datum/chemical_reaction/cube/sagaru - name = "Saguwu" - id = "cubedsagaru" - result = null - required_reagents = list("cheese" = 1, "blood" = 1, "clonexadone" = 10,) - result_amount = 1 - -/datum/chemical_reaction/cube/sagaru/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/sarucube(location) - return - -//this kinda counts -//LIQUID EGG -/datum/reagent/liquidspideregg - name = "spider eggs" - id = "spideregg" - description = "These are eggs, spiders crawl out of these.. probably not healthy inside of a person." - taste_description = "SO MANY LEGS" - reagent_state = LIQUID - color = "#FFFFFF" - overdose = REAGENTS_OVERDOSE * 100 - metabolism = REM * 0.1 - scannable = 1 - var/amount_grown = 0 - var/min_growth = 0 - var/max_growth = 2 - var/spiders_min = 6 - var/spiders_max = 24 - var/spider_type = /obj/effect/spider/spiderling - -/datum/reagent/liquidspideregg/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(prob(1)) - M.custom_pain("You can feel movement within your body!",45) - amount_grown += rand(min_growth,max_growth) - if(amount_grown >= 100) - min_growth++ - max_growth++ - amount_grown = 0 - var/num = rand(spiders_min, spiders_max) - var/obj/item/organ/external/O = null - if(istype(M.loc, /obj/item/organ/external)) - O = M.loc - - for(var/i=0, iYou lose focus as warmth spreads throughout your chest and abdomen." - spawn(300) //wait 30 seconds, growth takes time yo - M.gender_change_cooldown = 0 //allow it to bug them again now that we've waited - if (alert(M,"This chemical will change your gender, proceed?", "Warning", "Yes", "No") == "Yes") //check if they want this to happen for pref sake - M.change_gender_identity(gender_change) - M << "You feel like a new person" //success - -//////////////////////////////////// -//////////// OTHER //////////// -////////////////////////////////// -//This file is a fucking mess -/datum/reagent/nutriment/pitcher_nectar //Pitcher plant reagent, doubles plant growth speed. - name = "Pitcher Nectar" - id = "pitcher_nectar" - description = "An odd, sticky slurry which promotes rapid plant growth." - taste_description = "pineapple" - reagent_state = LIQUID - nutriment_factor = 60 - color = "#a839a2" - //////////////////////////////////////////////// /////////DRINKS//////////////////////////////// ////////////////////////////////////////////// @@ -417,7 +53,6 @@ cup_name = "Medicinal tea cup" color = "#00FF00" - /datum/reagent/drink/tea/dyloteane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return @@ -823,35 +458,54 @@ glass_name = "horchata" glass_desc = "A sweet and cold rice milk beverage." -//////SAP IN UNREFINED FORM//// +/datum/reagent/ethanol/snaps + name = "Akvavit" + id = "snaps" + description = "Burns the nose and throat and soothes it with a herby aftertaste...Barely." + taste_description = "strong spirit and a little dill" + color = "e6d670" // rgb: 230, 214, 112 + strength = 15 -/datum/reagent/toxin/bluesap //This is the first sap. Blue one. - name = "Blue Sap" - id = "bluesap" - description = "Glowing blue liquid." - reagent_state = LIQUID - color = "#91f9ff" // rgb(145, 249, 255) - metabolism = 0.01 - strength = 10//Don't drink it - mrate_static = TRUE + glass_name = "akvavit" + glass_desc = "Burns the nose and throat, and soothes it with a herby aftertaste...Barely." + +//////////////////////////////////////////////// +/////////FOODSTUFF///////////////////////////// +////////////////////////////////////////////// + +/datum/reagent/cinnamonpowder + name = "ground cinnamon" + id = "cinnamonpowder" + description = "Cinnamon, a spice made from tree bark, ground into a fine powder. Probably not a good idea to eat on its own!" + taste_description= "sweet spice with a hint of wood" + color = "#a96622" -/datum/reagent/purplesap - name = "Purple sap" - id = "purplesap" - description = "Purple liquid. It is very sticky and smells of ammonia." - color = "#7a48a0" - taste_description = "Ammonia" + glass_name = "ground cinnamon" + glass_desc = "A glass of ground cinnamon. Dare you take the challenge?" -/datum/reagent/orangesap - name = "Orange sap" - id = "orangesap" - description = "Orange liquid. It wobbles around a bit like jelly." - color = "#e0962f" - taste_description = "Ammonia" +//YW drinks +/datum/reagent/drink/lovepotion_yw + name = "Strawberry Love Potion" + id = "strawberrylovepotion" + description = "Creamy strawberries and sugar, simple and sweet." + taste_description = "strawberries and cream" + color = "#fc8a8a" // rgb(252, 138, 138) -//New reagent definitions/overrides. If some of these get added upstream and cause a conflict later they might need deleting. -/datum/reagent/toxin/plantbgone/touch_mob(var/mob/living/L, amount) //Plantbgone override to damage plant mobs. Part of pitcher plants, touch_mob doesn't exist for plantbgone at the time of writing. - if(istype(L) && L.faction) - if(L.faction == "plants") //This would be better with a variable but I'm not adding that because upstream conflicts. If you send this upstream please do this. - L.adjustToxLoss(15 * amount) - L.visible_message("[L] withers rapidly!", "The chemical burns you!") + glass_name = "Love Potion" + glass_desc = "Love me tender, love me sweet." + + +/datum/reagent/ethanol/wormblood + name = "Worm Blood" + id = "wormblood" + description = "Who had the grand idea to bottle THE BLOOD OF A WORM." + taste_description = "Wriggly cave fungus" + color = "#827A00" + strength = 30 + druggy = 10 + + glass_name = "Worm blood" + glass_desc = "Who had the grand idea to bottle THE BLOOD OF A WORM." + glass_icon_state = "wormblood" + glass_center_of_mass = list("x"=16, "y"=8) + glass_icon_file = 'icons/obj/drinks_yw.dmi' diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm b/code/modules/reagents/reagents/food_drinks_vr.dm similarity index 91% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm rename to code/modules/reagents/reagents/food_drinks_vr.dm index 28084273ed..1a8f15de86 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm +++ b/code/modules/reagents/reagents/food_drinks_vr.dm @@ -457,4 +457,62 @@ M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. if(M.species.organic_food_coeff) if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein - M.nutrition += (alt_nutriment_factor * removed) \ No newline at end of file + M.nutrition += (alt_nutriment_factor * removed) + +//////////////////////Bepis Drinks (04/29/2021)////////////////////// + +/datum/reagent/drink/soda/bepis_cola + name = "Bepis" + id = "bepis" + description = "A weird cola-like beverage." + taste_description = "bepsi" + reagent_state = LIQUID + color = "#100800" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Bepis Cola" + glass_desc = "A glass of weird cola beverage." + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/soda/buzz_fuzz + name = "Buzz Fuzz" + id = "buzz_fuzz" + description = "A delicious frontier beverage that's simply a Hive of Flavour!" + taste_description = "carbonated honey and pollen" + reagent_state = LIQUID + color = "#8CFF00" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Buzz Fuzz" + glass_desc = "A glass that's stinging with flavour." + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/soda/sprited_cranberry + name = "Sprited Cranberry" + id = "sprited_cranberry" + description = "A winter spiced cranberry drink. Perfect for year-round consumption." + taste_description = "sweet spiced cranberry" + reagent_state = LIQUID + color = "#fffafa" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Sprited Cranberry" + glass_desc = "A glass of sprited cranberry" + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/soda/shamblers + name = "Shambler's Juice" + id = "shamblers" + description = "A strange off-brand beverage that's bursting with flavor." + taste_description = "carbonated metallic soda" + reagent_state = LIQUID + color = "#f00060" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Shambler's Juice" + glass_desc = "A glass of something shambly" + glass_special = list(DRINK_FIZZ) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/reagents/medicine.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm rename to code/modules/reagents/reagents/medicine.dm diff --git a/code/modules/reagents/reagents/medicine_ch.dm b/code/modules/reagents/reagents/medicine_ch.dm new file mode 100644 index 0000000000..0f8bf08a3e --- /dev/null +++ b/code/modules/reagents/reagents/medicine_ch.dm @@ -0,0 +1,196 @@ +//////////////////////////////////// +//////////// MEDICINE ///////// +////////////////////////////////// +/datum/reagent/claridyl + name = "Claridyl Natural Remedy" + id = "claridyl" + description = "Claridyl is an advanced medicine that cures all of your problems. Notice: Clarydil does not claim to fix marriages, car loans, student debt or insomnia and may cause severe pain." + taste_description = "sugar" + reagent_state = LIQUID + color = "#AAAAFF" + overdose = REAGENTS_OVERDOSE * 100 + metabolism = REM * 0.1 + scannable = 1 + +/datum/reagent/claridyl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien != IS_DIONA) + M.add_chemical_effect(CE_STABLE, 30) + M.add_chemical_effect(CE_PAINKILLER, 40) + if(M.getBruteLoss()) + M.adjustBruteLoss(-1) + M.adjustHalLoss(1.5) + if(prob(0.0001)) + M.adjustToxLoss(50)//instant crit for tesh + + if(prob(0.1)) + pick(M.custom_pain("You suddenly feel inexplicably angry!",30), + M.custom_pain("You suddenly lose your train of thought!",30), + M.custom_pain("Your mouth feels dry!",30), + M.make_dizzy(2), + M.AdjustWeakened(10), + M.AdjustStunned(1), + M.AdjustParalysis(0.1), + M.hallucination = max(M.hallucination, 2), + M.flash_eyes(), + M.custom_pain("Your vision becomes blurred!",30), + M.add_chemical_effect(CE_ALCOHOL, 5),) + +/datum/reagent/claridyl/bloodburn/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(M.bloodstr)//No seriously dont inject this wtf is wrong with you. + for(var/datum/reagent/R in M.bloodstr.reagent_list) + if(istype(R, /datum/reagent/blood)) + R.remove_self(removed * 15) + +/datum/reagent/claridyl/bloodburn/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + if(M.ingested) + for(var/datum/reagent/R in M.ingested.reagent_list) + if(istype(R, /datum/reagent/ethanol)) + R.remove_self(removed * 5) + +/datum/reagent/claridyl/bloodburn + name = "Bloodburn" + id = "bloodburn" + description = "A chemical used to soak up any reagents inside someones stomach, injection is not advised, if you need to ask why please seek a new job." + taste_description = "liquid void" + color = "#000000" + metabolism = REM * 5 + +/datum/reagent/eden + name = "Eden" + id = "eden" + description = "The ultimate anti toxin unrivaled, it corrects impurities within the body but punishes those who attain them with a burning sensation" + taste_description = "peace" + color = "#00FFBE" + overdose = REAGENTS_OVERDOSE * 1 + metabolism = 0 + +/datum/reagent/eden/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien == IS_SLIME || alien == IS_DIONA) + return + if(M.getToxLoss()) + M.adjustFireLoss(1.2) + M.adjustToxLoss(-1) + +/datum/reagent/eden/snake + name = "Tainted Eden" + id = "eden_snake" + metabolism = 0.1 + description = "It used to be an anti toxin until it was tainted." + taste_description = "hellfire" + color = "#FF0000" + +/datum/reagent/eden/snake/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.adjustOxyLoss(1) + M.adjustFireLoss(1) + M.adjustBruteLoss(1) + M.adjustToxLoss(1) + +/datum/reagent/tercozolam + name = "Tercozolam" + id = "tercozolam" + color = "#afeb17" + metabolism = 0.05 + description = "A well respected drug used for treatment of schizophrenia in specific." + overdose = REAGENTS_OVERDOSE * 2 + +///SAP REAGENTS//// +//This is all a direct port from aeiou. + +/datum/reagent/hannoa + name = "Hannoa" + id = "hannoa" + description = "A powerful clotting agent that treats brute damage very quickly but takes a long time to be metabolised. Overdoses easily, reacts badly with other chemicals." + taste_description = "paint" + reagent_state = LIQUID + color = "#163851" + overdose = 8 + scannable = 1 + metabolism = 0.03 + +/datum/reagent/hannoa/overdose(var/mob/living/carbon/M, var/alien, var/removed) + ..() + if(ishuman(M)) + var/wound_heal = 1.5 * removed + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/external/O in H.bad_external_organs) + for(var/datum/wound/W in O.wounds) + if(W.bleeding()) + W.damage = max(W.damage - wound_heal, 0) + if(W.damage <= 0) + O.wounds -= W + M.take_organ_damage(3 * removed, 0) + if(M.losebreath < 15) + M.AdjustLosebreath(1) + H.custom_pain("It feels as if your veins are fusing shut!",60) + +/datum/reagent/hannoa/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //Sleepy if not overdosing. + ..() + var/effective_dose = dose + if(effective_dose < 2) + if(effective_dose == metabolism * 2 || prob(5)) + M.emote("yawn") + else if(effective_dose < 5) + M.eye_blurry = max(M.eye_blurry, 10) + else if(effective_dose < 20) + if(prob(50)) + M.Weaken(2) + M.drowsyness = max(M.drowsyness, 20) + else + M.sleeping = max(M.sleeping, 20) + + +/datum/reagent/bullvalene //This is for the third sap. It converts Brute Oxy and burn into slightly less toxins. + name = "bullvalene" + id = "bullvalene" + description = "witty pending description. Converts brute and burn into toxin. Or at least is supposed to." + taste_description = "sulfur" + reagent_state = LIQUID + color = "#163851" + overdose = 8 //This many units starts killing you. + scannable = 1 // Mechs can scan this ye + metabolism = 0.03 //Slow metabolism. This value was plucked out of nowhere. Can be changed. + +/datum/reagent/bullvalene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien == IS_SLIME || alien == IS_DIONA) + return + if(M.getBruteLoss() || M.getFireLoss() || M.getOxyLoss()) + M.adjustOxyLoss(-1) + M.adjustFireLoss(-1) + M.adjustBruteLoss(-1) + M.adjustToxLoss(0.8) + +/////SERAZINE REAGENTS/////// + +/datum/reagent/serazine + name = "Serazine" + id = "serazine" + description = "A sweet tasting flower extract, it has very mild anti toxic properties, help with hallucinations and drowsyness, and can be used to make potent drugs." + taste_description = "sweet nectar" + reagent_state = LIQUID + color = "#df9898" + scannable = 1 + +/datum/reagent/serazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/chem_effective = 1 + if(alien != IS_DIONA) + M.drowsyness = max(0, M.drowsyness - 3 * removed * chem_effective) + M.hallucination = max(0, M.hallucination - 6 * removed * chem_effective) + M.adjustToxLoss(-2 * removed * chem_effective) + +/datum/reagent/alizene + name = "Alizene" + id = "alizene" + description = "A derivative from bicaridine enhanced by serazine to more effectively mend flesh, but is ineffective against internal hemorrhage." + taste_description = "bittersweet" + taste_mult = 3 + reagent_state = LIQUID + color = "#b37979" + overdose = REAGENTS_OVERDOSE + scannable = 1 + +/datum/reagent/alizene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/chem_effective = 1 + if(alien == IS_SLIME) + chem_effective = 0.75 + if(alien != IS_DIONA) + M.heal_organ_damage(12 * removed * chem_effective, 0) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm b/code/modules/reagents/reagents/medicine_vr.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm rename to code/modules/reagents/reagents/medicine_vr.dm diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Modifiers.dm b/code/modules/reagents/reagents/modifiers.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Modifiers.dm rename to code/modules/reagents/reagents/modifiers.dm diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/reagents/other.dm similarity index 90% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm rename to code/modules/reagents/reagents/other.dm index 7c63381900..2b7eb8912c 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/reagents/other.dm @@ -238,14 +238,6 @@ reagent_state = SOLID color = "#D0D0D0" -/datum/reagent/uranium - name ="Uranium" - id = "uranium" - description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." - taste_description = "metal" - reagent_state = SOLID - color = "#B8B8C0" - /datum/reagent/platinum name = "Platinum" id = "platinum" @@ -254,6 +246,14 @@ reagent_state = SOLID color = "#777777" +/datum/reagent/uranium + name ="Uranium" + id = "uranium" + description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." + taste_description = "metal" + reagent_state = SOLID + color = "#B8B8C0" + /datum/reagent/uranium/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) affect_ingest(M, alien, removed) @@ -268,6 +268,55 @@ new /obj/effect/decal/cleanable/greenglow(T) return +/datum/reagent/hydrogen/deuterium + name = "Deuterium" + id = "deuterium" + description = "A isotope of hydrogen. It has one extra neutron, and shares all chemical characteristics with hydrogen." + +/datum/reagent/hydrogen/tritium + name = "Tritium" + id = "tritium" + description = "A radioactive isotope of hydrogen. It has two extra neutrons, and shares all other chemical characteristics with hydrogen." + +/datum/reagent/lithium/lithium6 + name = "Lithium-6" + id = "lithium6" + description = "An isotope of lithium. It has 3 neutrons, but shares all chemical characteristics with regular lithium." + +/datum/reagent/helium/helium3 + name = "Helium-3" + id = "helium3" + description = "An isotope of helium. It only has one neutron, but shares all chemical characteristics with regular helium." + taste_mult = 0 + reagent_state = GAS + color = "#808080" + +/datum/reagent/boron/boron11 + name = "Boron-11" + id = "boron11" + description = "An isotope of boron. It has 6 neutrons." + taste_description = "metallic" // Apparently noone on the internet knows what boron tastes like. Or at least they won't share + +/datum/reagent/supermatter + name = "Supermatter" + id = "supermatter" + description = "The immense power of a supermatter crystal, in liquid form. You're not entirely sure how that's possible, but it's probably best handled with care." + taste_description = "taffy" // 0. The supermatter is tasty, tasty taffy. + +// Same as if you boop it wrong. It touches you, you die +/datum/reagent/supermatter/affect_touch(mob/living/carbon/M, alien, removed) + . = ..() + M.ash() + +/datum/reagent/supermatter/affect_ingest(mob/living/carbon/M, alien, removed) + . = ..() + M.ash() + +/datum/reagent/supermatter/affect_blood(mob/living/carbon/M, alien, removed) + . = ..() + M.ash() + + /datum/reagent/adrenaline name = "Adrenaline" id = "adrenaline" diff --git a/code/modules/reagents/reagents/other_ch.dm b/code/modules/reagents/reagents/other_ch.dm new file mode 100644 index 0000000000..1b11e3ca68 --- /dev/null +++ b/code/modules/reagents/reagents/other_ch.dm @@ -0,0 +1,173 @@ +//Misc stuff. + +//LIQUID EGG +/datum/reagent/liquidspideregg + name = "spider eggs" + id = "spideregg" + description = "These are eggs, spiders crawl out of these.. probably not healthy inside of a person." + taste_description = "SO MANY LEGS" + reagent_state = LIQUID + color = "#FFFFFF" + overdose = REAGENTS_OVERDOSE * 100 + metabolism = REM * 0.1 + scannable = 1 + var/amount_grown = 0 + var/min_growth = 0 + var/max_growth = 2 + var/spiders_min = 6 + var/spiders_max = 24 + var/spider_type = /obj/effect/spider/spiderling + +/datum/reagent/liquidspideregg/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(prob(1)) + M.custom_pain("You can feel movement within your body!",45) + amount_grown += rand(min_growth,max_growth) + if(amount_grown >= 100) + min_growth++ + max_growth++ + amount_grown = 0 + var/num = rand(spiders_min, spiders_max) + var/obj/item/organ/external/O = null + if(istype(M.loc, /obj/item/organ/external)) + O = M.loc + + for(var/i=0, i[L] withers rapidly!", "The chemical burns you!") + +//////SAP IN UNREFINED FORM//// + +/datum/reagent/toxin/bluesap //This is the first sap. Blue one. + name = "Blue Sap" + id = "bluesap" + description = "Glowing blue liquid." + reagent_state = LIQUID + color = "#91f9ff" // rgb(145, 249, 255) + metabolism = 0.01 + strength = 10//Don't drink it + mrate_static = TRUE + +/datum/reagent/purplesap + name = "Purple sap" + id = "purplesap" + description = "Purple liquid. It is very sticky and smells of ammonia." + color = "#7a48a0" + taste_description = "Ammonia" + +/datum/reagent/orangesap + name = "Orange sap" + id = "orangesap" + description = "Orange liquid. It wobbles around a bit like jelly." + color = "#e0962f" + taste_description = "Ammonia" + +//YW stuff + +/datum/reagent/benzilate + name = "Odd Goo" + id = "benzilate" + description = "Grey... goo? This smells like hot acid. Consuming this likely wouldn't be good for your health." + taste_description = "raw iron" + taste_mult = 0.4 + metabolism = REM * 2.5 + color = "#929292" + +/datum/reagent/phenethylamine + name = "Phenethylamine" + id = "phenethylamine" + description = "Just looking at this makes you feel odd. Whether or not this would be good to consume is likely a gamble." + color = "#463667" + data = list("count"=1) + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(data) + switch(data["count"]) + if(1 to 30) + if(prob(9)) M.emote("me",1,"blushes") + if(prob(9)) to_chat(M, "You feel so needy..") + if (30 to INFINITY) + if(prob(3)) M.emote("me",1,"blushes") + if(prob(5)) M.say("!moans out lewdly!") + if(prob(9)) to_chat(M, "You can't help but want to touch yourself then and now!") + data["count"]++ + holder.remove_reagent(src.id, 0.2) + //..() + return + +/datum/reagent/benzilate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien == IS_DIONA) + return + var/drug_strength = 12 + if(alien == IS_SKRELL) + drug_strength = drug_strength * 0.6 + M.make_dizzy(drug_strength) + M.Confuse(drug_strength * 14) + +/obj/item/weapon/reagent_containers/pill/benzilate + name = "Benzilate pill" + desc = "You probably shouldn't swallow this." + icon_state = "pill2" + +/obj/item/weapon/reagent_containers/pill/benzilate/Initialize() + . = ..() + reagents.add_reagent("benzilate", 50) + color = reagents.get_color() + + +/obj/item/weapon/reagent_containers/pill/phenethylamine + name = "Phenethylamine pill" + desc = "Smells like... lilacs?" + icon_state = "pill5" + +/obj/item/weapon/reagent_containers/pill/phenethylamine/Initialize() + . = ..() + reagents.add_reagent("phenethylamine", 50) + color = reagents.get_color() + + +// PILLS THAT WE PROBABLY SHOULDN'T HAVE AAAAAAAAAA. The below is only so they can be included through mapping or "spawn " command. -Carl + +/obj/item/weapon/storage/pill_bottle/benzilate + name = "bottle of Benzilate pills" + desc = "This just hurts to look at with how many words of caution are scrawled on the lable. Better eat all of 'em!" + +/obj/item/weapon/storage/pill_bottle/benzilate/New() + ..() + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + new /obj/item/weapon/reagent_containers/pill/benzilate( src ) + +/obj/item/weapon/storage/pill_bottle/phenethylamine + name = "bottle of Phenethylamine pills" + desc = "Looks like someone drew a happy face on the label, replacing whatever was previously present." + +/obj/item/weapon/storage/pill_bottle/phenethylamine/New() + ..() + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) + new /obj/item/weapon/reagent_containers/pill/phenethylamine( src ) diff --git a/code/modules/reagents/Chemistry-Reagents_vr.dm b/code/modules/reagents/reagents/other_vr.dm similarity index 95% rename from code/modules/reagents/Chemistry-Reagents_vr.dm rename to code/modules/reagents/reagents/other_vr.dm index f6cd245dee..b1146960ed 100644 --- a/code/modules/reagents/Chemistry-Reagents_vr.dm +++ b/code/modules/reagents/reagents/other_vr.dm @@ -28,14 +28,6 @@ BI.forceMove(torso) torso.implants += BI -/datum/chemical_reaction/slime/sapphire_mutation - name = "Slime Mutation Toxins" - id = "slime_mutation_tox" - result = "mutationtoxin" - required_reagents = list("blood" = 5) - result_amount = 30 - required = /obj/item/slime_extract/sapphire - /datum/reagent/nif_repair_nanites name = "Programmed Nanomachines" id = "nifrepairnanites" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/reagents/toxins.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm rename to code/modules/reagents/reagents/toxins.dm diff --git a/code/modules/reagents/reagents/vore_ch.dm b/code/modules/reagents/reagents/vore_ch.dm new file mode 100644 index 0000000000..985df141fa --- /dev/null +++ b/code/modules/reagents/reagents/vore_ch.dm @@ -0,0 +1,67 @@ +//Vore/kink reagents go here. + +/datum/reagent/aphrodisiac + name = "Aphrodisiac" + id = "aphrodisiac" + description = "You so horny." + taste_description = "sweetness" + reagent_state = LIQUID + color = "#FF9999" + scannable = 1 + +/datum/reagent/aphrodisiac/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(!M) return + + if(prob(3)) + M.emote(pick("blush", "moan", "moan", "giggle")) + +///GENDER CHANGE REAGENTS//// + +/datum/reagent/change_drug //base chemical + name = "Elixer of Change" //always the same name + id = "change_drug" + metabolism = 100 //set high enough that it does not process multiple times(delay implemented below) + description = "the bloods DNA in this seems aggressive" + taste_description = "this shouldn't be here" //unobtainable ingame + color = "#7F0000" + var/gender_change = null //set the gender variable here so we can set it to others in varients + +/datum/reagent/change_drug/male //inherits base chemical properties listed above + id = "change_drug_male" //unique ID for each varient + taste_description = "old spice odor blocker body wash" + reagent_state = LIQUID + color = "#428AFF" + gender_change = "male" + scannable = 1 + +/datum/reagent/change_drug/female + id = "change_drug_female" + taste_description = "spiced honey" + reagent_state = LIQUID + color = "#FFA0FA" + gender_change = "female" + scannable = 1 + +/datum/reagent/change_drug/intersex + id = "change_drug_intersex" + taste_description = "something salty and sweet" + reagent_state = LIQUID + color = "#CB9EFF" + gender_change = "herm" + scannable = 1 + +/datum/reagent/change_drug/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) //we need to process the change + if(alien == IS_DIONA) //doesn't work on multiple creature hiveminds + return + if(M.identifying_gender == gender_change) //don't bug them if they're already the same gender + return + if(M.gender_change_cooldown == 1) //if already done, don't bug them + return + else + M.gender_change_cooldown = 1 //set not to bug them because the chem is activating + M << "You lose focus as warmth spreads throughout your chest and abdomen." + spawn(300) //wait 30 seconds, growth takes time yo + M.gender_change_cooldown = 0 //allow it to bug them again now that we've waited + if (alert(M,"This chemical will change your gender, proceed?", "Warning", "Yes", "No") == "Yes") //check if they want this to happen for pref sake + M.change_gender_identity(gender_change) + M << "You feel like a new person" //success diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm similarity index 100% rename from code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Vore_vr.dm rename to code/modules/reagents/reagents/vore_vr.dm diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 370a460bc7..3d58a40b16 100755 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -70,10 +70,12 @@ won't update every console in existence) but it's more of a hassle to do. Also, return return_name /obj/machinery/computer/rdconsole/proc/CallReagentName(var/ID) - var/datum/reagent/R = SSchemistry.chemical_reagents["[ID]"] - if(!R) - return ID - return R.name + var/return_name = ID + for(var/datum/reagent/R in SSchemistry.chemical_reagents) + if(R.id == ID) + return_name = R.name + break + return return_name /obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). for(var/obj/machinery/r_n_d/D in range(3, src)) diff --git a/code/modules/vore/eating/contaminate_vr.dm b/code/modules/vore/eating/contaminate_vr.dm index 998c7b53c5..2a9f9ac05f 100644 --- a/code/modules/vore/eating/contaminate_vr.dm +++ b/code/modules/vore/eating/contaminate_vr.dm @@ -96,7 +96,7 @@ var/list/gurgled_overlays = list( // Special handling of gurgle_contaminate ////////////// /obj/item/weapon/card/id/gurgle_contaminate(var/atom/movable/item_storage = null) - digest_act(item_storage) //Digesting these anyway + digest_act(item_storage) //Contamination and digestion does same thing to these return TRUE /obj/item/device/pda/gurgle_contaminate(var/atom/movable/item_storage = null) diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index b2958d0ddf..5ab90cdb40 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -55,8 +55,6 @@ ///////////// /obj/item/weapon/hand_tele/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/weapon/card/id/gold/captain/spare/digest_act(var/atom/movable/item_storage = null) - return FALSE /obj/item/device/aicard/digest_act(var/atom/movable/item_storage = null) return FALSE /obj/item/device/paicard/digest_act(var/atom/movable/item_storage = null) @@ -78,20 +76,14 @@ // Some special treatment ///////////// -/obj/item/weapon/card/id - var/lost_access = list() - /obj/item/weapon/card/id/digest_act(atom/movable/item_storage = null) - desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic, but the access codes need to be reprogrammed at the HoP office or ID restoration terminal." + desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic." if(!sprite_stack || !istype(sprite_stack) || !(sprite_stack.len)) icon = 'icons/obj/card_vr.dmi' icon_state = "[initial(icon_state)]_digested" else sprite_stack += "digested" update_icon() - if(!(LAZYLEN(lost_access)) && LAZYLEN(access)) - lost_access = access //Do not forget what access we lose - access = list() // Then lose it return FALSE /obj/item/weapon/reagent_containers/food/digest_act(atom/movable/item_storage = null) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index f4ea03a86f..b08d67967f 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -901,7 +901,7 @@ // Full screen belly overlays! /obj/screen/fullscreen/belly - icon = 'icons/mob/screen_full_vore.dmi' + icon = 'icons/mob/screen_full_vore_ch.dmi' //CHOMPedit icon_state = "" /mob/living/proc/vorebelly_printout() //Spew the vorepanel belly messages into chat window for copypasting. diff --git a/code/modules/vore/eating/vorepanel_ch.dm b/code/modules/vore/eating/vorepanel_ch.dm index f47f58e946..cececd70f1 100644 --- a/code/modules/vore/eating/vorepanel_ch.dm +++ b/code/modules/vore/eating/vorepanel_ch.dm @@ -6,7 +6,7 @@ */ /obj/screen/belly_fullscreen_preview - icon = 'icons/mob/screen_full_vore.dmi' + icon = 'icons/mob/screen_full_vore_ch.dmi' icon_state = "" appearance_flags = 0 diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index a5c40c867a..bfca29f014 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -173,7 +173,7 @@ "belly_fullscreen" = selected.belly_fullscreen, "belly_fullscreen_color" = selected.belly_fullscreen_color, //CHOMPEdit "mapRef" = map_name, //CHOMPEdit - "possible_fullscreens" = icon_states('icons/mob/screen_full_vore.dmi'), + "possible_fullscreens" = icon_states('icons/mob/screen_full_vore_ch.dmi'), //CHOMPedit "vorespawn_blacklist" = selected.vorespawn_blacklist ) //CHOMP Addition: vorespawn blacklist diff --git a/code/modules/vore/smoleworld/smoleworld_vr.dm b/code/modules/vore/smoleworld/smoleworld_vr.dm index 5e84d7cbd1..50dbacfe1f 100644 --- a/code/modules/vore/smoleworld/smoleworld_vr.dm +++ b/code/modules/vore/smoleworld/smoleworld_vr.dm @@ -60,7 +60,7 @@ recipes += new/datum/stack_recipe("smole houses", /obj/structure/smolebuilding/houses, 2, time = 10) recipes += new/datum/stack_recipe("smole business", /obj/structure/smolebuilding/business, 2, time = 10) recipes += new/datum/stack_recipe("smole warehouses", /obj/structure/smolebuilding/warehouses, 2, time = 10) - recipes += new/datum/stack_recipe("smole musem", /obj/structure/smolebuilding/musem, 2, time = 10) + recipes += new/datum/stack_recipe("smole museum", /obj/structure/smolebuilding/museum, 2, time = 10) /datum/material/smolebricks name = "smolebricks" @@ -86,7 +86,7 @@ //smolebrick case to make for easy bricks. /obj/item/weapon/storage/smolebrickcase name = "smolebrick case" - desc = "you feel the power of imagination." + desc = "You feel the power of imagination." icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolestorage" throw_speed = 1 @@ -152,10 +152,10 @@ anchored = 1 /obj/structure/smoletrack/roadF - name = "road fourway piece" + name = "road four-way piece" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "carfourway" - desc = "A fourway road piece." + desc = "A four-way road piece." anchored = 1 //buildings code @@ -279,10 +279,10 @@ icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolewarehouses" -/obj/structure/smolebuilding/musem - name = "smole musem" +/obj/structure/smolebuilding/museum + name = "smole museum" icon = 'icons/vore/smoleworld_vr.dmi' - icon_state = "smolemusem" + icon_state = "smolemuseum" // //CAR STUFF < WILL BE MESSED WITH IN A LATER UPDATE COMMENTED OUT FOR NOW ///obj/item/smolecar @@ -357,8 +357,8 @@ drop_sound = 'sound/items/drop/basketball.ogg' /obj/item/weapon/reagent_containers/food/snacks/snackplanet/virgo3b - name = "virgo3bB" - desc = "A sticky jelly jaw breaker in the shape of Virgo3B, it even has a tiny tether!" + name = "Virgo 3B" + desc = "A sticky jelly jaw breaker in the shape of Virgo-3B, it even has a tiny tether!" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_Virgo3B" bitesize = 3 @@ -379,8 +379,8 @@ drop_sound = 'sound/items/drop/basketball.ogg' /obj/item/weapon/reagent_containers/food/snacks/snackplanet/virgoprime - name = "virgo prime" - desc = "Its a orange jaw breaker in the shape Virgo Prime!" + name = "Virgo Prime" + desc = "It's a orange jaw breaker in the shape of Virgo Prime!" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_virgoprime" bitesize = 3 @@ -391,7 +391,7 @@ /obj/item/weapon/storage/bagoplanets name = "bag o' planets" - desc = "A cosmic bag of fist sized candy planets." + desc = "A cosmic bag of fist-sized candy planets." icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_storage" w_class = ITEMSIZE_LARGE diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index 159bb0f151..f810b9f68b 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -39,17 +39,17 @@ else . += "This extract is inert." -/datum/chemical_reaction/slime +/decl/chemical_reaction/instant/slime var/required = null -/datum/chemical_reaction/slime/can_happen(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/can_happen(var/datum/reagents/holder) if(holder.my_atom && istype(holder.my_atom, required)) var/obj/item/slime_extract/T = holder.my_atom if(T.uses > 0) return ..() return FALSE -/datum/chemical_reaction/slime/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/on_reaction(var/datum/reagents/holder) var/obj/item/slime_extract/T = holder.my_atom T.uses-- if(T.uses <= 0) @@ -67,7 +67,7 @@ icon_state = "grey slime extract" description_info = "This extract will create a new grey baby slime if injected with phoron, or some new monkey cubes if injected with blood." -/datum/chemical_reaction/slime/grey_new_slime +/decl/chemical_reaction/instant/slime/grey_new_slime name = "Slime Spawn" id = "m_spawn" result = null @@ -75,12 +75,12 @@ result_amount = 1 required = /obj/item/slime_extract/grey -/datum/chemical_reaction/slime/grey_new_slime/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/grey_new_slime/on_reaction(var/datum/reagents/holder) holder.my_atom.visible_message("Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!") new /mob/living/simple_mob/slime/xenobio(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/grey_monkey +/decl/chemical_reaction/instant/slime/grey_monkey name = "Slime Monkey" id = "m_monkey" result = null @@ -88,12 +88,12 @@ result_amount = 1 required = /obj/item/slime_extract/grey -/datum/chemical_reaction/slime/grey_monkey/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/grey_monkey/on_reaction(var/datum/reagents/holder) for(var/i = 1 to 4) new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/grey_slimejelly +/decl/chemical_reaction/instant/slime/grey_slimejelly name = "Slime Jelly" id = "m_jelly" result = "slimejelly" @@ -123,7 +123,7 @@ color = "#666666" strength = 20 -/datum/chemical_reaction/slime/metal_metamorphic +/decl/chemical_reaction/instant/slime/metal_metamorphic name = "Slime Metal" id = "m_metal" required_reagents = list("phoron" = 5) @@ -132,7 +132,7 @@ required = /obj/item/slime_extract/metal -/datum/chemical_reaction/metamorphic +/decl/chemical_reaction/instant/metamorphic result_amount = REAGENTS_PER_SHEET * 2 @@ -145,42 +145,42 @@ // This is kind of a waste since iron is in the chem dispenser but it would be inconsistent if this wasn't here. -/datum/chemical_reaction/metamorphic/iron +/decl/chemical_reaction/instant/metamorphic/iron name = "Morph into Iron" id = "morph_iron" required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "iron" = REAGENTS_PER_SHEET) result = "iron" -/datum/chemical_reaction/metamorphic/silver +/decl/chemical_reaction/instant/metamorphic/silver name = "Morph into Silver" id = "morph_silver" required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "silver" = REAGENTS_PER_SHEET) result = "silver" -/datum/chemical_reaction/metamorphic/gold +/decl/chemical_reaction/instant/metamorphic/gold name = "Morph into Gold" id = "morph_gold" required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "gold" = REAGENTS_PER_SHEET) result = "gold" -/datum/chemical_reaction/metamorphic/platinum +/decl/chemical_reaction/instant/metamorphic/platinum name = "Morph into Platinum" id = "morph_platinum" required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "platinum" = REAGENTS_PER_SHEET) result = "platinum" -/datum/chemical_reaction/metamorphic/uranium +/decl/chemical_reaction/instant/metamorphic/uranium name = "Morph into Uranium" id = "morph_uranium" required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "uranium" = REAGENTS_PER_SHEET) result = "uranium" -/datum/chemical_reaction/metamorphic/phoron +/decl/chemical_reaction/instant/metamorphic/phoron name = "Morph into Phoron" id = "morph_phoron" required_reagents = list("metamorphic" = REAGENTS_PER_SHEET, "phoron" = REAGENTS_PER_SHEET) @@ -188,7 +188,7 @@ // Creates 'alloys' which can be finalized with frost oil. -/datum/chemical_reaction/slime/metal_binding +/decl/chemical_reaction/instant/slime/metal_binding name = "Slime Binding" id = "m_binding" required_reagents = list("water" = 5) @@ -215,7 +215,7 @@ prefill = list("binding" = 60) -/datum/chemical_reaction/binding +/decl/chemical_reaction/instant/binding name = "Bind into Steel" id = "bind_steel" result = "steel" @@ -231,7 +231,7 @@ color = "#888888" -/datum/chemical_reaction/binding/plasteel // Two parts 'steel', one part platnium matches the smelter alloy recipe. +/decl/chemical_reaction/instant/binding/plasteel // Two parts 'steel', one part platnium matches the smelter alloy recipe. name = "Bind into Plasteel" id = "bind_plasteel" required_reagents = list("binding" = REAGENTS_PER_SHEET, "steel" = REAGENTS_PER_SHEET * 2, "platinum" = REAGENTS_PER_SHEET) @@ -258,7 +258,7 @@ The extract can also create a slime stability agent when injected with blood, which reduces the odds of newly created slimes mutating into \ a different color when a slime reproduces." -/datum/chemical_reaction/slime/blue_frostoil +/decl/chemical_reaction/instant/slime/blue_frostoil name = "Slime Frost Oil" id = "m_frostoil" result = "frostoil" @@ -267,14 +267,14 @@ required = /obj/item/slime_extract/blue -/datum/chemical_reaction/slime/blue_stability +/decl/chemical_reaction/instant/slime/blue_stability name = "Slime Stability" id = "m_stability" required_reagents = list("blood" = 5) result_amount = 1 required = /obj/item/slime_extract/blue -/datum/chemical_reaction/slime/blue_stability/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/blue_stability/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/stabilizer(get_turf(holder.my_atom)) ..() @@ -291,14 +291,14 @@ can extract from a slime specimen." -/datum/chemical_reaction/slime/purple_steroid +/decl/chemical_reaction/instant/slime/purple_steroid name = "Slime Steroid" id = "m_steroid" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/purple -/datum/chemical_reaction/slime/purple_steroid/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/purple_steroid/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/steroid(get_turf(holder.my_atom)) ..() @@ -313,14 +313,14 @@ icon_state = "orange slime extract" description_info = "This extract creates a fire when injected with phoron, after a five second delay." -/datum/chemical_reaction/slime/orange_fire +/decl/chemical_reaction/instant/slime/orange_fire name = "Slime Fire" id = "m_fire" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/orange -/datum/chemical_reaction/slime/orange_fire/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/orange_fire/on_reaction(var/datum/reagents/holder) log_and_message_admins("Orange extract reaction (fire) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") holder.my_atom.visible_message("\The [src] begins to vibrate violently!") playsound(holder.my_atom, 'sound/effects/phasein.ogg', 75, 1) @@ -350,14 +350,14 @@ description_info = "This extract will create a special 10k capacity power cell that self recharges slowly over time, when injected with phoron. \ When injected with blood, it will create a glob of slime which glows brightly. If injected with water, it will emit a strong EMP, after a five second delay." -/datum/chemical_reaction/slime/yellow_emp +/decl/chemical_reaction/instant/slime/yellow_emp name = "Slime EMP" id = "m_emp" required_reagents = list("water" = 5) result_amount = 1 required = /obj/item/slime_extract/yellow -/datum/chemical_reaction/slime/yellow_emp/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/yellow_emp/on_reaction(var/datum/reagents/holder) log_and_message_admins("Yellow extract reaction (emp) has been activated in [get_area(holder.my_atom)]. Last fingerprints: [holder.my_atom.fingerprintslast]") holder.my_atom.visible_message("\The [src] begins to vibrate violently!") playsound(holder.my_atom, 'sound/effects/phasein.ogg', 75, 1) @@ -368,26 +368,26 @@ ..() -/datum/chemical_reaction/slime/yellow_battery +/decl/chemical_reaction/instant/slime/yellow_battery name = "Slime Cell" id = "m_cell" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/yellow -/datum/chemical_reaction/slime/yellow_battery/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/yellow_battery/on_reaction(var/datum/reagents/holder) new /obj/item/weapon/cell/slime(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/yellow_flashlight +/decl/chemical_reaction/instant/slime/yellow_flashlight name = "Slime Flashlight" id = "m_flashlight" required_reagents = list("blood" = 5) result_amount = 1 required = /obj/item/slime_extract/yellow -/datum/chemical_reaction/slime/yellow_flashlight/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/yellow_flashlight/on_reaction(var/datum/reagents/holder) new /obj/item/device/flashlight/slime(get_turf(holder.my_atom)) ..() @@ -401,7 +401,7 @@ description_info = "This extract will create 5u liquid gold when injected with phoron." -/datum/chemical_reaction/slime/gold_gold +/decl/chemical_reaction/instant/slime/gold_gold name = "Slime Gold" id = "m_gold" result = "gold" @@ -420,7 +420,7 @@ description_info = "This extract will create 5u liquid silver when injected with phoron." -/datum/chemical_reaction/slime/silver_silver +/decl/chemical_reaction/instant/slime/silver_silver name = "Slime Silver" id = "m_silver" result = "silver" @@ -440,7 +440,7 @@ description_info = "This extract will create 40u liquid phoron when injected with water." -/datum/chemical_reaction/slime/dark_purple_phoron +/decl/chemical_reaction/instant/slime/dark_purple_phoron name = "Slime Phoron" id = "m_phoron_harvest" result = "phoron" @@ -462,7 +462,7 @@ cold-resistant armor like winter coats can protect from this. Note that the user is not immune to the extract's effects." -/datum/chemical_reaction/slime/dark_blue_cold_snap +/decl/chemical_reaction/instant/slime/dark_blue_cold_snap name = "Slime Cold Snap" id = "m_cold_snap" required_reagents = list("phoron" = 5) @@ -470,7 +470,7 @@ required = /obj/item/slime_extract/dark_blue // This iterates over a ZAS zone's contents, so that things seperated in other zones aren't subjected to the temperature drop. -/datum/chemical_reaction/slime/dark_blue_cold_snap/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/dark_blue_cold_snap/on_reaction(var/datum/reagents/holder) var/turf/simulated/T = get_turf(holder.my_atom) if(!T) // Nullspace lacks zones. return @@ -544,14 +544,14 @@ out of control." -/datum/chemical_reaction/slime/red_enrage +/decl/chemical_reaction/instant/slime/red_enrage name = "Slime Enrage" id = "m_enrage" required_reagents = list("blood" = 5) result_amount = 1 required = /obj/item/slime_extract/red -/datum/chemical_reaction/slime/red_enrage/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/red_enrage/on_reaction(var/datum/reagents/holder) for(var/mob/living/simple_mob/slime/S in view(get_turf(holder.my_atom))) if(S.stat) continue @@ -580,14 +580,14 @@ -/datum/chemical_reaction/slime/red_mutation +/decl/chemical_reaction/instant/slime/red_mutation name = "Slime Mutation" id = "m_mutation" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/red -/datum/chemical_reaction/slime/red_mutation/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/red_mutation/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/mutator(get_turf(holder.my_atom)) ..() @@ -600,7 +600,7 @@ icon_state = "green slime extract" description_info = "This extract will create 5u of liquid uranium when injected with phoron." -/datum/chemical_reaction/slime/green_uranium +/decl/chemical_reaction/instant/slime/green_uranium name = "Slime Uranium" id = "m_uranium" result = "uranium" @@ -620,7 +620,7 @@ with phoron. When injected with water, it will create an organ-mending agent. The slime medications have a very low threshold for overdosage, however." -/datum/chemical_reaction/slime/pink_clotting +/decl/chemical_reaction/instant/slime/pink_clotting name = "Slime Clotting Med" id = "m_clotting" result = "slime_bleed_fixer" @@ -629,7 +629,7 @@ required = /obj/item/slime_extract/pink -/datum/chemical_reaction/slime/pink_bone_fix +/decl/chemical_reaction/instant/slime/pink_bone_fix name = "Slime Bone Med" id = "m_bone_fixer" result = "slime_bone_fixer" @@ -638,7 +638,7 @@ required = /obj/item/slime_extract/pink -/datum/chemical_reaction/slime/pink_organ_fix +/decl/chemical_reaction/instant/slime/pink_organ_fix name = "Slime Organ Med" id = "m_organ_fixer" result = "slime_organ_fixer" @@ -680,7 +680,7 @@ increase the power of the explosion instead of allowing for multiple explosions." -/datum/chemical_reaction/slime/oil_griff +/decl/chemical_reaction/instant/slime/oil_griff name = "Slime Explosion" id = "m_boom" required_reagents = list("blood" = 5) @@ -688,7 +688,7 @@ required = /obj/item/slime_extract/oil -/datum/chemical_reaction/slime/oil_griff/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/oil_griff/on_reaction(var/datum/reagents/holder) ..() var/obj/item/slime_extract/E = holder.my_atom var/power = 1 @@ -718,26 +718,26 @@ short ranged, random teleporting. When injected with phoron, it creates one 'greater' slime crystal, which allows for a one time precise teleport to \ a specific area." -/datum/chemical_reaction/slime/bluespace_lesser +/decl/chemical_reaction/instant/slime/bluespace_lesser name = "Slime Lesser Tele" id = "m_tele_lesser" required_reagents = list("water" = 5) result_amount = 1 required = /obj/item/slime_extract/bluespace -/datum/chemical_reaction/slime/bluespace_lesser/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/bluespace_lesser/on_reaction(var/datum/reagents/holder) for(var/i = 1 to 5) new /obj/item/slime_crystal(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/bluespace_greater +/decl/chemical_reaction/instant/slime/bluespace_greater name = "Slime Greater Tele" id = "m_tele_lesser" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/bluespace -/datum/chemical_reaction/slime/bluespace_greater/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/bluespace_greater/on_reaction(var/datum/reagents/holder) new /obj/item/weapon/disposable_teleporter/slime(get_turf(holder.my_atom)) ..() @@ -752,14 +752,14 @@ 'charges' before it goes inert." -/datum/chemical_reaction/slime/cerulean_enhancer +/decl/chemical_reaction/instant/slime/cerulean_enhancer name = "Slime Enhancer" id = "m_enhancer" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/cerulean -/datum/chemical_reaction/slime/cerulean_enhancer/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/cerulean_enhancer/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/enhancer(get_turf(holder.my_atom)) ..() @@ -774,26 +774,26 @@ injected with water, it will create a very delicious and filling product." -/datum/chemical_reaction/slime/amber_slimefood +/decl/chemical_reaction/instant/slime/amber_slimefood name = "Slime Feeding" id = "m_slime_food" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/amber -/datum/chemical_reaction/slime/amber_slimefood/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/amber_slimefood/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/feeding(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/amber_peoplefood +/decl/chemical_reaction/instant/slime/amber_peoplefood name = "Slime Food" id = "m_people_food" required_reagents = list("water" = 5) result_amount = 1 required = /obj/item/slime_extract/amber -/datum/chemical_reaction/slime/amber_peoplefood/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/amber_peoplefood/on_reaction(var/datum/reagents/holder) new /obj/item/weapon/reagent_containers/food/snacks/slime(get_turf(holder.my_atom)) ..() @@ -809,14 +809,14 @@ description_info = "This extract will create one 'slime cube' when injected with phoron. The slime cube is needed to create a Promethean." -/datum/chemical_reaction/slime/sapphire_promethean +/decl/chemical_reaction/instant/slime/sapphire_promethean name = "Slime Promethean" id = "m_promethean" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/sapphire -/datum/chemical_reaction/slime/sapphire_promethean/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/sapphire_promethean/on_reaction(var/datum/reagents/holder) new /obj/item/slime_cube(get_turf(holder.my_atom)) ..() @@ -830,14 +830,14 @@ description_info = "This extract will cause all entities close to the extract to become stronger for ten minutes, when injected with phoron. \ When injected with blood, makes a slime loyalty agent which will make the slime fight other dangerous entities but not station crew." -/datum/chemical_reaction/slime/ruby_swole +/decl/chemical_reaction/instant/slime/ruby_swole name = "Slime Strength" id = "m_strength" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/ruby -/datum/chemical_reaction/slime/ruby_swole/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/ruby_swole/on_reaction(var/datum/reagents/holder) for(var/mob/living/L in range(1, holder.my_atom)) L.add_modifier(/datum/modifier/slime_strength, 10 MINUTES, src) ..() @@ -858,14 +858,14 @@ incoming_damage_percent = 0.75 -/datum/chemical_reaction/slime/ruby_loyalty +/decl/chemical_reaction/instant/slime/ruby_loyalty name = "Slime Loyalty" id = "m_strength" required_reagents = list("blood" = 5) result_amount = 1 required = /obj/item/slime_extract/ruby -/datum/chemical_reaction/slime/ruby_loyalty/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/ruby_loyalty/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/loyalty(get_turf(holder.my_atom)) ..() @@ -879,14 +879,14 @@ icon_state = "emerald slime extract" description_info = "This extract will cause all entities close to the extract to become more agile for ten minutes, when injected with phoron." -/datum/chemical_reaction/slime/emerald_fast +/decl/chemical_reaction/instant/slime/emerald_fast name = "Slime Agility" id = "m_agility" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/emerald -/datum/chemical_reaction/slime/emerald_fast/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/emerald_fast/on_reaction(var/datum/reagents/holder) for(var/mob/living/L in range(1, holder.my_atom)) L.add_modifier(/datum/modifier/slime_agility, 10 MINUTES, src) ..() @@ -916,26 +916,26 @@ When injected with phoron, it instead creates a slime friendship agent, which makes the slime consider the user their ally. The agent \ might be useful on other specimens as well." -/datum/chemical_reaction/slime/light_pink_docility +/decl/chemical_reaction/instant/slime/light_pink_docility name = "Slime Docility" id = "m_docile" required_reagents = list("water" = 5) result_amount = 1 required = /obj/item/slime_extract/light_pink -/datum/chemical_reaction/slime/light_pink_docility/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/light_pink_docility/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/docility(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/light_pink_friendship +/decl/chemical_reaction/instant/slime/light_pink_friendship name = "Slime Friendship" id = "m_friendship" required_reagents = list("phoron" = 5) result_amount = 1 required = /obj/item/slime_extract/light_pink -/datum/chemical_reaction/slime/light_pink_friendship/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/light_pink_friendship/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/friendship(get_turf(holder.my_atom)) ..() @@ -952,7 +952,7 @@ which makes slimes stop attacking other slime colors." -/datum/chemical_reaction/slime/rainbow_random_slime +/decl/chemical_reaction/instant/slime/rainbow_random_slime name = "Slime Random Slime" id = "m_rng_slime" required_reagents = list("phoron" = 5) @@ -960,7 +960,7 @@ required = /obj/item/slime_extract/rainbow -/datum/chemical_reaction/slime/rainbow_random_slime/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/rainbow_random_slime/on_reaction(var/datum/reagents/holder) var/mob/living/simple_mob/slime/xenobio/S var/list/slime_types = typesof(/mob/living/simple_mob/slime/xenobio) @@ -976,14 +976,14 @@ new S(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/rainbow_unity +/decl/chemical_reaction/instant/slime/rainbow_unity name = "Slime Unity" id = "m_unity" required_reagents = list("water" = 5) result_amount = 1 required = /obj/item/slime_extract/rainbow -/datum/chemical_reaction/slime/rainbow_unity/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/slime/rainbow_unity/on_reaction(var/datum/reagents/holder) new /obj/item/slimepotion/unity(get_turf(holder.my_atom)) ..() diff --git a/config/docker/README.md b/config/docker/README.md new file mode 100644 index 0000000000..3c1b9b3482 --- /dev/null +++ b/config/docker/README.md @@ -0,0 +1,43 @@ +## How to set-up the Docker database + + +First, open `config/docker/mysql.env.example`, open in notepad or N++, change all the values to something else ~~or don't if you are lazy~~ for security sake. + +Then proceed to save the changed version to `mysql.env` and save it in the same directory as the `mysql.env.example` file. + +In order to get docker to use the database, it's suggested to change the `config/dbconfig.txt` to include the values in `mysql.env` file, to do this, use the hostname `db` as host! + +### Example for `config/dbconfig.txt`: + +The default database name is `tgstation` by default. Unless you change the SQL schemas, this cannot be changed. + +Keep note of the values, `*LOGIN` and `*PASSWORD` + +``` +# MySQL Connection Configuration + +# Server the MySQL database can be found at +# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +ADDRESS db + +# MySQL server port (default is 3306) +PORT 3306 + +# Database the population, death, karma, etc. tables may be found in +DATABASE tgstation + +# Username/Login used to access the database +LOGIN sillyusername + +# Password used to access the database +PASSWORD somekindofpassword + +# The following information is for feedback tracking via the blackbox server +FEEDBACK_DATABASE tgstation +FEEDBACK_LOGIN sillyusernane +FEEDBACK_PASSWORD somekindofpassword + +# Track population and death statistics +# Comment this out to disable +#ENABLE_STAT_TRACKING +``` diff --git a/config/docker/mysql.env.example b/config/docker/mysql.env.example new file mode 100644 index 0000000000..73b37b08fd --- /dev/null +++ b/config/docker/mysql.env.example @@ -0,0 +1,6 @@ +# MySQL database root password +MYSQL_ROOT_PASSWORD=SUPERSEKRETOMYGOD +# MySQL login username +MYSQL_USERNAME=sillyusername +# MySQL login password +MYSQL_PASSWORD=somekindofpassword diff --git a/config/example/config.txt b/config/example/config.txt index dd07f7b73d..735fe805e9 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -555,3 +555,7 @@ ALLOW_URL_LINKS # Control which submaps are loaded for the Dynamic Engine system ENGINE_MAP Supermatter Engine,Edison's Bane + +# Controls how strictly the species whitelists on loadout entries are enforced +# Possible values: 0 (Off), 1 (Lax, user must be whitelisted for the species), 2 (Strict, user must be the species) +LOADOUT_WHITELIST 1 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..b22b1c4ac0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3' + +services: + # Virgo DM server + dreammaker: + image: vorestation:latest + restart: unless-stopped + build: + context: . + dockerfile: Dockerfile + ports: + - "2303:2303" + depends_on: + - db + volumes: + - ./config/:/vorestation/config + - gamedata:/vorestation/data + # MariaDB/MySQL database: game + # (if you don't really need this, feel free to remove this section.) + db: + image: mariadb + restart: unless-stopped + env_file: + - ./config/docker/mysql.env + volumes: + - ./SQL/tgstation_schema.sql:/docker-entrypoint-initdb.d/tgstation_schema.sql:ro + - ./SQL/feedback_schema.sql:/docker-entrypoint-initdb.d/feedback_schema.sql:ro + - database:/var/lib/mysql + # Adminer, for managing the DB, commented out by default but uncomment if you need it I guess. + #adminer: + # image: wodby/adminer + # depends_on: + # - db + # environment: + # ADMINER_DEFAULT_DB_DRIVER: mysql + # ADMINER_DEFAULT_DB_HOST: db + # ADMINER_DEFAULT_DB_NAME: tgstation + # ADMINER_DESIGN: nette + # ADMINER_PLUGINS: tables-filter tinymce + # ports: + # - 8080:9000 + +volumes: + gamedata: + database: diff --git a/html/changelog.html b/html/changelog.html index 8083ac0119..e69b4dd0f4 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -40,6 +40,17 @@ -->
+

30 April 2021

+

None updated:

+
    +
  • Adds mounted flashers to both brigs and in the visiting rooms brig-side.
  • +
  • /🆑
  • +
  • Resolves #10014
  • +
  • Note, am fine if this ain't wanted. Another note, on testing, there's a substantial cooldown on the button so ya can't spam it too much.
  • +
  • +
  • Another note: could conflict with #10198
  • +
+

12 April 2021

CHOMPStationBot updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index f9b43ec13a..96c36d6915 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -5541,3 +5541,12 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. not use them for anything) and not being able to eat gold, uranium, or silver in blob form. - rscadd: Also corrected an outdated comment about what silver does. +2021-04-30: + null: + - maptweak: Adds mounted flashers to both brigs and in the visiting rooms brig-side. + - rscadd: "/\U0001F191" + - rscadd: 'Resolves #10014' + - rscadd: Note, am fine if this ain't wanted. Another note, on testing, there's + a substantial cooldown on the button so ya can't spam it too much. + - rscadd: '' + - rscadd: 'Another note: could conflict with #10198' diff --git a/icons/_nanomaps/southern_cross_nanomap_z8.png b/icons/_nanomaps/southern_cross_nanomap_z8.png index 39b8fe0d67..0bb670eb09 100644 Binary files a/icons/_nanomaps/southern_cross_nanomap_z8.png and b/icons/_nanomaps/southern_cross_nanomap_z8.png differ diff --git a/icons/effects/effects_vr.dmi b/icons/effects/effects_vr.dmi index 02569f6157..f9824436dd 100644 Binary files a/icons/effects/effects_vr.dmi and b/icons/effects/effects_vr.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index a20911d435..b0130e58df 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index 81626df033..27de68f79c 100644 Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index ca62243e79..d8be15b3bc 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ diff --git a/icons/mob/items/lefthand_guns_vr.dmi b/icons/mob/items/lefthand_guns_vr.dmi index 76ad8ebf31..0d8acb4fbb 100644 Binary files a/icons/mob/items/lefthand_guns_vr.dmi and b/icons/mob/items/lefthand_guns_vr.dmi differ diff --git a/icons/mob/items/lefthand_material.dmi b/icons/mob/items/lefthand_material.dmi index 7fbcc1131f..dec3ab84ea 100644 Binary files a/icons/mob/items/lefthand_material.dmi and b/icons/mob/items/lefthand_material.dmi differ diff --git a/icons/mob/items/righthand_guns_vr.dmi b/icons/mob/items/righthand_guns_vr.dmi index 42d935f760..73ee95c0a3 100644 Binary files a/icons/mob/items/righthand_guns_vr.dmi and b/icons/mob/items/righthand_guns_vr.dmi differ diff --git a/icons/mob/items/righthand_material.dmi b/icons/mob/items/righthand_material.dmi index ac51aa86f1..d65181cc6a 100644 Binary files a/icons/mob/items/righthand_material.dmi and b/icons/mob/items/righthand_material.dmi differ diff --git a/icons/mob/screen_full_vore.dmi b/icons/mob/screen_full_vore.dmi index 3759bcf1c8..4e5b3a70fd 100644 Binary files a/icons/mob/screen_full_vore.dmi and b/icons/mob/screen_full_vore.dmi differ diff --git a/icons/mob/screen_full_vore_ch.dmi b/icons/mob/screen_full_vore_ch.dmi new file mode 100644 index 0000000000..3759bcf1c8 Binary files /dev/null and b/icons/mob/screen_full_vore_ch.dmi differ diff --git a/icons/mob/species/teshari/head.dmi b/icons/mob/species/teshari/head.dmi index 51eff217bb..c4339b532a 100644 Binary files a/icons/mob/species/teshari/head.dmi and b/icons/mob/species/teshari/head.dmi differ diff --git a/icons/mob/species/teshari/head_ch.dmi b/icons/mob/species/teshari/head_ch.dmi index 942e97270a..866c3a197a 100644 Binary files a/icons/mob/species/teshari/head_ch.dmi and b/icons/mob/species/teshari/head_ch.dmi differ diff --git a/icons/mob/species/teshari/suit.dmi b/icons/mob/species/teshari/suit.dmi index 9f6a652c4a..7bd92394f2 100644 Binary files a/icons/mob/species/teshari/suit.dmi and b/icons/mob/species/teshari/suit.dmi differ diff --git a/icons/mob/species/teshari/suit_ch.dmi b/icons/mob/species/teshari/suit_ch.dmi index dda2e72894..0f12545b29 100644 Binary files a/icons/mob/species/teshari/suit_ch.dmi and b/icons/mob/species/teshari/suit_ch.dmi differ diff --git a/icons/mob/species/teshari/ties.dmi b/icons/mob/species/teshari/ties.dmi index fb49fe444f..467d0ffa35 100644 Binary files a/icons/mob/species/teshari/ties.dmi and b/icons/mob/species/teshari/ties.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 8fd1bcfeb9..bfb27a0ec8 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/gloves_ch.dmi b/icons/obj/clothing/gloves_ch.dmi index f7b14b7a6c..24d1e7d864 100644 Binary files a/icons/obj/clothing/gloves_ch.dmi and b/icons/obj/clothing/gloves_ch.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index cdc1b2a38d..12f1e8bc4a 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/shoes_ch.dmi b/icons/obj/clothing/shoes_ch.dmi index 457561366c..9625eaf29a 100644 Binary files a/icons/obj/clothing/shoes_ch.dmi and b/icons/obj/clothing/shoes_ch.dmi differ diff --git a/icons/obj/clothing/species/teshari/hats.dmi b/icons/obj/clothing/species/teshari/hats.dmi index c069f66f13..ac323f1181 100644 Binary files a/icons/obj/clothing/species/teshari/hats.dmi and b/icons/obj/clothing/species/teshari/hats.dmi differ diff --git a/icons/obj/clothing/species/teshari/suits.dmi b/icons/obj/clothing/species/teshari/suits.dmi index 6679ceb22c..2c0281efe4 100644 Binary files a/icons/obj/clothing/species/teshari/suits.dmi and b/icons/obj/clothing/species/teshari/suits.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 250c191c73..6a05cf1443 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/drinks_vr.dmi b/icons/obj/drinks_vr.dmi index 280bf84cbd..f1a3484533 100644 Binary files a/icons/obj/drinks_vr.dmi and b/icons/obj/drinks_vr.dmi differ diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi index 34c2a2dc6d..ecae150481 100644 Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ diff --git a/icons/obj/storage_vr.dmi b/icons/obj/storage_vr.dmi index 674f7e0d9c..07d87323ad 100644 Binary files a/icons/obj/storage_vr.dmi and b/icons/obj/storage_vr.dmi differ diff --git a/icons/obj/toy_vr.dmi b/icons/obj/toy_vr.dmi index 2e6c3af857..3ad106945b 100644 Binary files a/icons/obj/toy_vr.dmi and b/icons/obj/toy_vr.dmi differ diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi index 64c2ad0f5c..94e2ba1fb6 100644 Binary files a/icons/obj/vending_vr.dmi and b/icons/obj/vending_vr.dmi differ diff --git a/icons/vore/smoleworld_vr.dmi b/icons/vore/smoleworld_vr.dmi index 206c0cef32..035a6d6ce5 100644 Binary files a/icons/vore/smoleworld_vr.dmi and b/icons/vore/smoleworld_vr.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 28fbf978ce..b9cf3121d4 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -603,6 +603,9 @@ macro "hotkeymode" elem name = "U" command = "Rest" + elem + name = "B" + command = "Resist" elem name = "NUMPAD1" command = "body-r-leg" diff --git a/maps/expedition_vr/beach/beach.dmm b/maps/expedition_vr/beach/beach.dmm index 3efcfc0c10..c60de78548 100644 --- a/maps/expedition_vr/beach/beach.dmm +++ b/maps/expedition_vr/beach/beach.dmm @@ -1973,7 +1973,7 @@ /turf/simulated/floor/tiled/asteroid_steel, /area/tether_away/beach/resort/lockermed) "Tg" = ( -/mob/living/simple_mob/animal/passive/fish/solarfish, +/mob/living/simple_mob/animal/passive/fish/icebass, /turf/simulated/floor/water/ocean, /area/tether_away/beach/cavebase) "Tp" = ( diff --git a/maps/southern_cross/southern_cross-2.dmm b/maps/southern_cross/southern_cross-2.dmm index 06899ccd8f..2f38c192cf 100644 --- a/maps/southern_cross/southern_cross-2.dmm +++ b/maps/southern_cross/southern_cross-2.dmm @@ -58,7 +58,7 @@ "abf" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/table/steel,/obj/item/weapon/storage/firstaid/combat,/turf/simulated/floor/tiled/dark,/area/security/tactical) "abg" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/lattice,/obj/machinery/shield_diffuser,/turf/space,/area/space) "abh" = (/obj/machinery/door/window/westleft{name = "Shower"},/obj/machinery/shower{dir = 8; pixel_x = -5; pixel_y = -1},/obj/structure/curtain/open/shower/security,/obj/structure/window/basic,/turf/simulated/floor/tiled/freezer,/area/security/security_restroom) -"abi" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/obj/item/device/tape,/obj/item/device/megaphone,/obj/item/weapon/packageWrap,/obj/item/weapon/storage/box,/obj/machinery/recharger/wallcharger{pixel_x = -24; pixel_y = -4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/security/security_lockerroom) +"abi" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/obj/item/device/tape,/obj/item/device/megaphone,/obj/item/weapon/packageWrap,/obj/item/weapon/storage/box,/obj/machinery/recharger/wallcharger{pixel_x = -24; pixel_y = -4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/item/device/gps/security,/obj/item/device/gps/security,/obj/item/device/gps/security,/obj/item/device/gps/security,/turf/simulated/floor/tiled,/area/security/security_lockerroom) "abj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/security_lockerroom) "abk" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled/airless,/area/rnd/test_area) "abl" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled/airless,/area/rnd/test_area) @@ -496,6 +496,7 @@ "ajB" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{RCon_tag = "Substation - Security"},/turf/simulated/floor/plating,/area/maintenance/substation/security) "ajC" = (/obj/structure/reagent_dispensers/watertank/high,/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/hydro,/area/hydroponics) "ajD" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled/hydro,/area/hydroponics) +"ajE" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 30},/obj/structure/table/reinforced,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/item/weapon/storage/box/snakesnackbox,/obj/item/device/megaphone,/obj/item/device/radio/off,/obj/item/device/tape/random,/obj/item/device/taperecorder,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/machinery/recharger,/obj/item/device/gps/security/hos,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "ajF" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/machinery/power/sensor{name = "Powernet Sensor - Security Subgrid"; name_tag = "Security Subgrid"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/substation/security) "ajG" = (/obj/effect/floor_decal/corner/black/full,/obj/machinery/camera/network/engineering{c_tag = "ATMTK - Carbon Dioxide"; dir = 4},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos) "ajH" = (/obj/effect/floor_decal/corner/black/full{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos) @@ -506,6 +507,7 @@ "ajM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/valve/digital{dir = 4; name = "CO2 Outlet Valve"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/black/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/black/bordercorner2{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/engineering{c_tag = "ENG - Atmospherics Fore Port"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos) "ajN" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "CO2 to Mixing"},/turf/simulated/floor/tiled,/area/engineering/atmos) "ajO" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/green,/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) +"ajP" = (/obj/machinery/status_display{pixel_x = 32; pixel_y = -32},/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/obj/structure/closet/secure_closet/hos2,/obj/item/weapon/cell/device,/obj/item/device/holowarrant,/obj/item/weapon/rig/ch/pursuit,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "ajQ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/tiled,/area/engineering/atmos) "ajR" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) "ajS" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos) @@ -1509,7 +1511,6 @@ "aIv" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{name = "south bump"; pixel_y = -24},/obj/structure/flora/pottedplant/fern,/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/red/bordercorner,/turf/simulated/floor/tiled,/area/security/lobby) "aIw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/tiled,/area/security/lobby) "aIx" = (/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) -"aIy" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 30},/obj/structure/table/reinforced,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/item/weapon/storage/box/snakesnackbox,/obj/item/device/megaphone,/obj/item/device/radio/off,/obj/item/device/tape/random,/obj/item/device/taperecorder,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/machinery/recharger,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "aIz" = (/turf/simulated/wall/r_wall,/area/lawoffice) "aIA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aIB" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue{pixel_x = -5; pixel_y = -1},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = 3},/obj/item/weapon/material/ashtray/plastic{pixel_x = 4; pixel_y = 6},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/tiled/dark,/area/lawoffice) @@ -1575,7 +1576,6 @@ "aJV" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/door/airlock/glass_security{name = "Security Lobby"; req_one_access = null},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/steel_grid,/area/security/lobby) "aJW" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/door/airlock/glass_security{name = "Security Lobby"; req_one_access = null},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/steel_grid,/area/security/lobby) "aJY" = (/obj/machinery/status_display{pixel_y = -32},/turf/simulated/wall,/area/security/lobby) -"aKb" = (/obj/machinery/status_display{pixel_x = 32; pixel_y = -32},/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/obj/structure/closet/secure_closet/hos2,/obj/item/weapon/cell/device,/obj/item/weapon/rig/pursuit/equipped,/obj/item/device/holowarrant,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "aKc" = (/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/storage/secure/briefcase,/obj/structure/closet,/obj/item/weapon/storage/secure/briefcase,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aKd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aKe" = (/turf/simulated/floor/tiled/dark,/area/lawoffice) @@ -7223,8 +7223,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaeHainaioaipaiqairaisaitaiuaivaiwaixaixaiuaixaiyaizaixaixaiuaiCaiDaiEaTvaPHaiFaiGagbaaaaaaaafaaaaagaaaaaaaaaaDOaDOaDNaDOaDOaiHaDPaDQaLIaiIaDSaDTaiJaiKaiLaDUaDVaJOaiMaiNaFtaFpaiPaiQaiSaDYaDZaFuaiTaEbaEcaEdaEeaiUaiVaIzaiWaiXaiYaiZajaajbaIzajcajdaHiajgajBajFaHiaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaZLaafaafaafaafaaaaaaaaaaafaafaafaafaUwaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaeHajGaioajHajIajKajLajMajNajOajQahQahQahQahQahQajRahQahQahQajOajSahwahQajTajUajVajWaaaaafaagaafaagaafaafaafaTKaLyaLyaLyaGGaFaaFbaFcaLIaFeaIlaFgaFhaFiaJOaIpaFlajXaFmaFnaFoaFpaFqaFrajYaFsaFtaFuajZaFvnJhakaakbaFwaFxaIzakcaKfaIBaFBaKeakdaICakeakfaFDsvXaFFaFGaHiaafaafaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGgaZLaGgaaaaaaaafaaaaaaaaaaafaaaaaaaGgaUwaGgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaeHaeHaeHaeHaeHaaaakgakhakAahqahtaTvaTvakEakFaYCakGakHakJakKagYaWHahtaTvaPHakLakLagbaaaaaaaagaaaaaaaaaaaaaaaaTKaGCakMaGDaGGaGGaGFaGGaLIaGIaGJakNaGKakOaGLaGMaGNaGOaGPaGQaGRaGSaGTaGUakPaGVaGTaGWaiTaGXaGYakQtkHakRaGZaIzsFMaHbaKeakSaKeaHdaICakTaHeaHiaHiaHiaHiaHiaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaZLaafaafaafaafaaaaaaaaaaafaafaafaafaUwaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaafaaaaafaaaaaaaYyakUaTvahqaRCaTvaTvaTvaTvakVaTvakWakXakXakYakZalbalcalqaltaltaYyaaaaaaaafaaaaaaaaaaaaaaaaTKaTKaIdaIealuaIfaIgaLyaLIaIjaIkaIlalvaImaJOaIoaIpdJJaIqaLIaIraIsaItalxalyaIuaIvaIwalzaLQalAaIxalBalCaIyaIzalDaIAalEalFaIBalGaICalIaIDalJaIEalKalLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactaafaafaafaeHaeHaeHaeHaeHaaaaYyakUaTvahqaRCaTvaTvalMalMalNaTvalOalPalSaPHaWHaRCakEaTvamuamuaYyaaaaaaaafaaaaaacFUaaaaaaaaaaLsaLtaJDaFbaJEamvaLyaJGaJHaJIaJJaJKaJLaJOaJNaJOaJPaJQaLIaLPaLPaLPaJVamwaJWaLPaJYaLPaLQamxamyamzamAaKbaIzaKcaKdaKeamBaKfaKgaICamCamDamEaKhamFalLaaaaaaaaacFUqlFaaaaaaaaaaaaaaaaafhqqaagaagaagaagaagqlFcAwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaafaaaaafaaaaaaaYyakUaTvahqaRCaTvaTvaTvaTvakVaTvakWakXakXakYakZalbalcalqaltaltaYyaaaaaaaafaaaaaaaaaaaaaaaaTKaTKaIdaIealuaIfaIgaLyaLIaIjaIkaIlalvaImaJOaIoaIpdJJaIqaLIaIraIsaItalxalyaIuaIvaIwalzaLQalAaIxalBalCajEaIzalDaIAalEalFaIBalGaICalIaIDalJaIEalKalLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactaafaafaafaeHaeHaeHaeHaeHaaaaYyakUaTvahqaRCaTvaTvalMalMalNaTvalOalPalSaPHaWHaRCakEaTvamuamuaYyaaaaaaaafaaaaaacFUaaaaaaaaaaLsaLtaJDaFbaJEamvaLyaJGaJHaJIaJJaJKaJLaJOaJNaJOaJPaJQaLIaLPaLPaLPaJVamwaJWaLPaJYaLPaLQamxamyamzamAajPaIzaKcaKdaKeamBaKfaKgaICamCamDamEaKhamFalLaaaaaaaaacFUqlFaaaaaaaaaaaaaaaaafhqqaagaagaagaagaagqlFcAwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFUaaaaeHamGamHamIaiqairaisamJaiuamKamLaTvaTvamNamOalNaTvamPahpagYaPHaWHaRCaTvamQaMTaMTaMTaMTaMTaafaaaaaaaaaaaaaaaaaaaLsaLtaLuaLvaLwaLxaLyaLIaiRaLBaLCamRaLDaLEaLFaLGaLHanAaLIaLJaLPaLOaLManBaLNaLOanCaLPanEaLQaLQaLQaLQaLQaIzaLRanFaLSanGanHanIaICanJaLTanKanLanLalLaaaaaaaaaaaaaagaaaaaaaaaaaaaafaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqlFaaaaaaaaaaeHanMamHanNajIajKajLanOanPanQaRCaTvalOalcalcanRanSaMRanTaMRalqaWHaRCaTvanUaMTaMSanWanXaMTaRNaIaaIaaMVaMVaMWaTKaMYaMZaNaanYaNbberberberberberberberberberberberberberberberberaNqaNraNsaNsaNtaozaoBaoBaoGaoHaoIaoJaNuaICaNvaNwaNxaNvaNvaICaICaoKaoLaoMaoOaoPaSqaSqaafaafaafaagaaaaaaaaaaafaafaaaaaaaafaaaaaaaafaaaaaaaaaaaacFUaaaaaaaaaaaaaaaaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaeHaeHaeHaeHaeHaaaakgaoQakAaTvahtaTvaPHaTvaTvagYaTvamPaTvagYaTvaOraOsaOtaOuaoRaOvaOwaOxaOyaOzaOAaIaaIaaZLaOBaOCaODaOEaOFaoSaOGaTTaOIaOJaoTaoUaOKaoVaOLaOMaONaOOaOPaoWaoXaOQaORaOSaShapcaOUaOVaOWaOXaOYapyaOZaPaapzpmJbrzaPbaPcapCapDapEapFapGapIapJaQvapKapLapNapOaaaaaaaaahqqaagaagaagqlFcFUaaaaaaaafaaaaaaaafaaaaafaafapRaafaafaaaaaaaaacAwaaaaaaaaaaaaaZLaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaUwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/southern_cross/southern_cross-5.dmm b/maps/southern_cross/southern_cross-5.dmm index 1ff59ab438..89c4f3ab0f 100644 --- a/maps/southern_cross/southern_cross-5.dmm +++ b/maps/southern_cross/southern_cross-5.dmm @@ -55,7 +55,7 @@ "bc" = (/obj/structure/closet/secure_closet/guncabinet{req_access = newlist(); req_one_access = list(43,67)},/obj/effect/floor_decal/corner/purple{dir = 5},/obj/effect/floor_decal/corner/purple{dir = 10},/obj/item/weapon/gun/energy/locked/frontier,/obj/item/weapon/gun/energy/locked/frontier,/obj/item/weapon/gun/energy/locked/frontier,/obj/item/weapon/gun/energy/locked/frontier,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/surface/outpost/main/exploration) "bd" = (/obj/effect/floor_decal/corner/white{dir = 9},/obj/effect/floor_decal/corner/white{dir = 6},/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor/right_upper) "be" = (/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/full,/obj/structure/grille,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/storage) -"bf" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 8},/obj/item/weapon/storage/box/nifsofts_security,/turf/simulated/floor/tiled,/area/surface/outpost/security) +"bf" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/security) "bg" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor/right_lower) "bh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/surface/outpost/engineering/atmos_room) "bi" = (/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/engineering/atmos_room) @@ -436,7 +436,7 @@ "it" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/security) "iu" = (/obj/structure/catwalk,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/engineering/smes) "iv" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor/right_lower) -"iw" = (/obj/machinery/vending/security{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/security) +"iw" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 8},/obj/item/device/gps/security,/obj/item/device/gps/security,/obj/item/device/gps/security,/obj/item/device/gps/security,/turf/simulated/floor/tiled,/area/surface/outpost/security) "ix" = (/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/full,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/civilian/fishing) "iy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/refinery) "iz" = (/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/heavyduty,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/surface/outpost/civilian/smes) @@ -523,6 +523,7 @@ "kc" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/white/bordercorner2,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor/right_upper) "kd" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/dorms/dorm_6) "ke" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/surface/outpost/security) +"kf" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/security) "kg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym) "kh" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/path/plains) "kj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_external/public{name = "Airlock Access"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/airlock/left_one) @@ -1871,7 +1872,6 @@ "PK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/monotile,/area/surface/outpost/main/landing) "PM" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/engineering/monitoring) "PO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/wood,/area/surface/outpost/main/dorms/dorm_5) -"PP" = (/obj/structure/closet/secure_closet/security,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/item/clothing/glasses/hud/security,/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/security) "PQ" = (/obj/structure/closet/radiation,/obj/item/clothing/head/radiation,/obj/item/clothing/head/radiation,/obj/item/clothing/suit/radiation,/obj/item/clothing/suit/radiation,/obj/item/device/geiger,/obj/item/device/geiger,/obj/machinery/light{dir = 8},/obj/effect/floor_decal/corner/yellow{dir = 9},/obj/effect/floor_decal/corner/yellow{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/engineering/monitoring) "PS" = (/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/full,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main) "PT" = (/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/full,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/main/exploration/containment) @@ -2391,14 +2391,14 @@ tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXb tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXpsdWBcBcdWJLJLJLJLJLJLJLJLJLJLcGUXUXUXUXUXUXUXgmUXUXUXUXXjUXininininUXUXUXUXUXUXUXDJwUTpxTCsixDJUXUXDJlIlIamiUamDgamIlIlIlamByamUVdulIlIUXUXUXUXRqtyNGGHsGUXUXUXUXUXUXUXUXUXUXUXUXUXUXblUXUXgcgcgcuouopcpcBxBxBxBxbZVsRJRJVsVsVsVsVsVsVsVsVsVsRJRJRJRJRJRJRJRJRJRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXininininininininininininUXUXXjUXUXUXUXUXUXUXpsJLJLYqJLJLJLbRbRbRbRJLJLJLJLJLWdwQBpwUSQsyLYixJzGjGjzJlImLcxHfMqMqMqMqMqMqMqMqMqmdsWfZlIUXUXUXUXRqfrGtPdsGUXUXUXUXUXUXUXUXUXUXUXUXUXUXblUXUXgcgcgcuouopcpcBxBxBxdKxAVsRJySVsVsVsbzwAwAwAsRVsVsVsVsRJRJRJRJRJRJRJRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXininininininJIWDWDWDJIinUXjKyAyAjKyAyAjKUXUXUXUXYRUXUXUXininininUXUXUXUXUsUsizUsUsiPXHtVtVtVtVNMNMlIpYIlcApGenenenenenVhVhnScAIlaIlIHTHTMVMVMVMVArVQgtgtgtgtgtUXUXUXUXUXUXUXUXUXUXblUXUXgcgcgcuouopcpcBxBxBxbZVsVsySySySVsbzLPBxBxBxWRwAsRVsVsVsVsRJRJRJRJRJRJao -tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXinininJIJIJIbBtrVvJIJIinjKNkPPNqUPrHjKUXUXUXUXYRUXUXinininininUXUXUXUXUsGqDLDloNNYZwEAvTUJHvQJuihdtsIlcAkrLsLsLsLsLsnynyxjcAIlkwhdLkLpdSlMbteLFjjpANoPiNPEgtUXUXUXUXUXUXUXUXUXUXblUXUXgcgcgcuouopcpcBxBxBxbZVsVsySySySVsVLBxpcpcBxBxBxWRwAsRVsVsVsVsRJRJRJRJao +tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXinininJIJIJIbBtrVvJIJIinjKNkbfNqUPrHjKUXUXUXUXYRUXUXinininininUXUXUXUXUsGqDLDloNNYZwEAvTUJHvQJuihdtsIlcAkrLsLsLsLsLsnynyxjcAIlkwhdLkLpdSlMbteLFjjpANoPiNPEgtUXUXUXUXUXUXUXUXUXUXblUXUXgcgcgcuouopcpcBxBxBxbZVsVsySySySVsVLBxpcpcBxBxBxWRwAsRVsVsVsVsRJRJRJRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXininGVKXmrovIhIhAIJIJIjKZbkexherKbjKUXUXUXUXYRUXinininininUXUXUXUXUXUsUGSWdaeTZkhNCmhNhNIQIaXphZaksUKykrLsLszzmegsnynyxjENafJPUlYNiXvJGcQzskdibLNdbWOflvgtUXUXUXUXUXUXUXUXUXUXblUXUXgcgcgcuopcpcpcBxBxBxbZVsVsySVsVsVsVLBxBxpcpcpcBxBxBxWRsRVsVsVsVsRJRJRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXXjUXUXininGVhehDfenVLHjAlitXHpsfzTbmitWUjKjKyAyAjKnGininininininUXUXUXUXUXUsUseWeWeWLUnbSNLelRshadjjgbmzIlvpkrLsLsfNxtvZnynyxjvpIlPDgbYWfaFpXeGzkAgiAiANANANgtgtUXUXUXUXUXUXUXUXUXUXblUXgcgcgcgcpcpcpcpcBxBxBxbZVsVsVsVsVsbzLPBxBxpcpcpcpcpcBxBxWRwAsRVsVsRJRJRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXXjUXininGVIXBHfeyxKglWlgJIqPowxhxhSZhoQQHbhIxLQyVJinininininininUXUXUXUXUXwUVBHYlfEKtcpCXHXHtVwSwSlIOvIlvpkrLsLsnynynynynyxjvpIlnClIAxAxMVdSjRjRawIMdSktUOnAUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcgcpcpcpcBxBxBxdKxAVsVsVsVsbzLPBxBxpcpcuououopcBxBxBxBxbZVsVsVsRJRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXXjUXininJIJINmfeNyPjrESqJIFOTFBqDkabuLijZIkaoHtiVJinininininininUXUXUXUXUXwUlDLQcDxGrMMPNuietVUXUXlIQpIlvpMojPjPtMtMtMtMtMpVvpIlfglIUXUXMViRHUDWTwXlMFCAjvnAUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcgcpcpcpcBxBxBxbZVsVsVsVsVsVLBxBxpcpcuouououopcpcpcpcBxWRsRVsVsVsRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXinininJIjOFiFPFPNZcdVVVVVVVVVVvwmErOjKvrVfjKnGininUXininininUXUXUXUXUXtVtVzAnbnbPrnbsbistVUXUXlIIkpdhYtqtqtqtqkXtqtqtqtqqTVDOFlIUXUXMViRBQjTLgLgqbAYMVMVUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcBxBxBxBxbZVsVsVsySVsJaXCBxpcpcpcuouououopcpcpcpcBxWRsRVsVsRJao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXinininJIJIWZKSEbJIJIVVfKwlBOiVcUVYjKjKcWcWjKVJinUXUXininininUXUXUXUXUXUXtVHxZoBDRZiagntVtVUXUXlIlIviQbamIlIlIlApIlIlIlamLlamlIlIUXUXMVMVGNjTLgLgqblCMVUXUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcBxBxBxBxbZVsVsVsRJySVsJaXCBxpcpcpcpcuouououopcpcpcBxWRsRVsVsao -tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXUXinininJIgRgRgRJIinVVNbJZoClAbfiwjKBYJLJLJLDiUXUXUXinininUXUXUXUXUXUXUXtVtVwSwStVwSwStVUXUXUXUXlIbabalIlIlUlUKZlUlUlIlIbabalIUXUXUXUXMVDyDyMVMVDyDyMVUXUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcBxBxBxBxbZVsVsVsRJySVsVsJaXCBxBxpcpcpcpcpcpcpcpcpcBxBxbZVsVsao +tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXUXinininJIgRgRgRJIinVVNbJZoClAiwkfjKBYJLJLJLDiUXUXUXinininUXUXUXUXUXUXUXtVtVwSwStVwSwStVUXUXUXUXlIbabalIlIlUlUKZlUlUlIlIbabalIUXUXUXUXMVDyDyMVMVDyDyMVUXUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcBxBxBxBxbZVsVsVsRJySVsVsJaXCBxBxpcpcpcpcpcpcpcpcpcBxBxbZVsVsao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXXjUXUXininininininininVVVVYgVVVVcWjKjKgmUXUXUXUXUXUXrninininUXrnUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXlIbabalIbabalIUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcBxBxBxBxbZVsVsVsRJRJVsVsVsJaXCBxBxpcpcpcpcpcpcBxBxBxBxbZVsVsao tFxaxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXinDmpsBhJLJLJLJLcGUXUXUXUXUXUXUXUXininUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcBxBxBxBxbZVsVsVsRJRJRJVsVsVsJaJyXCBxBxBxBxBxBxBxdKJyJyxAVsVsao tFxaXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbUXUXUXUXUXwsUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXininUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXblUXgcgcgcXjpcpcpcBxBxBxbZVsVsVsRJRJRJRJVsVsVsVsJaJyJyJyJyJyJyJyxAVsVsVsVsRJao diff --git a/maps/southern_cross/southern_cross-8.dmm b/maps/southern_cross/southern_cross-8.dmm index 6230864327..8bc4db0993 100644 --- a/maps/southern_cross/southern_cross-8.dmm +++ b/maps/southern_cross/southern_cross-8.dmm @@ -7,13 +7,13 @@ "aag" = (/obj/machinery/light{dir = 4},/obj/machinery/computer/security{dir = 8},/turf/simulated/shuttle/floor/voidcraft/light,/area/shuttle/ninja) "aah" = (/obj/machinery/vending/cola{dir = 4; name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_station) "aai" = (/obj/machinery/vending/cigarette{dir = 4; name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_station) -"aaj" = (/turf/space,/obj/machinery/portable_atmospherics/canister/phoron,/obj/item/weapon/tank/vox,/turf/unsimulated/floor{icon_state = "asteroid"},/area/skipjack_station) -"aak" = (/turf/space,/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{icon_state = "asteroid"},/area/skipjack_station) +"aaj" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/item/weapon/tank/vox,/turf/space,/turf/unsimulated/floor{icon_state = "asteroid"},/area/skipjack_station) +"aak" = (/obj/item/clothing/head/philosopher_wig,/turf/space,/turf/unsimulated/floor{icon_state = "asteroid"},/area/skipjack_station) "aal" = (/obj/machinery/vending/cigarette{dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "aam" = (/obj/machinery/vending/cigarette{dir = 8},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"aan" = (/turf/space,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_station) +"aan" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/space,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_station) "aao" = (/obj/machinery/vending/coffee{dir = 8},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"aap" = (/turf/space,/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_station) +"aap" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/space,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_station) "aaq" = (/obj/machinery/vending/snack{dir = 8},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) "aar" = (/obj/machinery/vending/cola{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) "aas" = (/obj/machinery/vending/coffee{dir = 1},/turf/unsimulated/floor{dir = 5; icon_state = "vault"},/area/centcom/bar) @@ -40,13 +40,13 @@ "aaN" = (/obj/machinery/vending/boozeomat{dir = 1; req_access = null},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant) "aaO" = (/obj/machinery/vending/engivend{dir = 1},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant) "aaP" = (/obj/machinery/vending/tool{dir = 1},/turf/simulated/shuttle/floor/black,/area/shuttle/merchant) -"aaQ" = (/turf/space,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/shuttle/skipjack) -"aaR" = (/turf/space,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{dir = 8; frequency = 1331; id_tag = "vox_west_control"; pixel_x = 27; req_access = list(150); tag_airpump = null; tag_chamber_sensor = null; tag_exterior_door = null; tag_interior_door = null},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; id_tag = null},/obj/machinery/light/small,/obj/effect/map_helper/airlock/atmos/chamber_pump,/turf/simulated/shuttle/plating,/area/shuttle/skipjack) -"aaS" = (/turf/space,/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) -"aaT" = (/turf/space,/obj/machinery/biogenerator,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) -"aaU" = (/turf/space,/obj/machinery/honey_extractor,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) -"aaV" = (/turf/space,/obj/machinery/seed_storage/garden{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) -"aaW" = (/turf/space,/obj/machinery/vending/hydronutrients{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) +"aaQ" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/space,/turf/simulated/shuttle/plating,/area/shuttle/skipjack) +"aaR" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{dir = 8; frequency = 1331; id_tag = "vox_west_control"; pixel_x = 27; req_access = list(150); tag_airpump = null; tag_chamber_sensor = null; tag_exterior_door = null; tag_interior_door = null},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; id_tag = null},/obj/machinery/light/small,/obj/effect/map_helper/airlock/atmos/chamber_pump,/turf/space,/turf/simulated/shuttle/plating,/area/shuttle/skipjack) +"aaS" = (/obj/item/weapon/stool/padded,/turf/space,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) +"aaT" = (/obj/machinery/biogenerator,/turf/space,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) +"aaU" = (/obj/machinery/honey_extractor,/turf/space,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) +"aaV" = (/obj/machinery/seed_storage/garden{dir = 1},/turf/space,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) +"aaW" = (/obj/machinery/vending/hydronutrients{dir = 1},/turf/space,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) "aaX" = (/obj/machinery/smartfridge{dir = 2},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "aaY" = (/obj/machinery/vending/boozeomat{dir = 2},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "aaZ" = (/obj/machinery/computer/pod{dir = 4; id = "thunderdomeaxe"; name = "Thunderdome Axe Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) @@ -841,6 +841,7 @@ "hYS" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/unsimulated/floor{dir = 5; icon_state = "vault"},/area/centcom/specops) "hZH" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = 4; pixel_y = -2},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) "hZO" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/mecha/working/ripley/mining,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant) +"iaB" = (/obj/machinery/access_button{dir = 8; name = "exterior access button"; pixel_x = 25; pixel_y = 6},/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/ninja_dojo/dojo) "iaK" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security/tactical/bandolier,/turf/simulated/shuttle/floor/voidcraft,/area/shuttle/syndicate) "iaT" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "iaZ" = (/obj/machinery/door/airlock/voidcraft/vertical{req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/dark,/area/shuttle/syndicate) @@ -2338,7 +2339,7 @@ vFivFivFivFivFivFivFivFinXcsrgtgQtgQtgQtgQtgQtgQtgQtgQnXcjUWjUWjUWjUWjUWjUWjUWes vFivFivFinXcnXcnXcnXcnXcnXcoJGtgQkwPawzawzawzpKRtgQtgQnXcnXcaibaibnXcjUWesrrolesresresresresrrolesrjUWnsfjUWjUWgjrmDpnyqnyqnyqnyqnyqjXSjXSnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsmcsxMOdNQbzTdNQdNQdNQlywomUlMYlMYlMYxMOxMOxMOxMOxMOlMYlMYlMYlMYaBzomUdAbhSzwdawdatpmwdalHIdtVmcsmcsmcsmcsmcstOXiVutOXppEppEppEppEppEppEppEppEppEuMqppEppEppEtOXcxZaFzaFzaFzacPtOXweCfWifWitOXtOXtOXmcsvFicFQgQFfxLgQFcFQvFimcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi vFivFivFinXcwwzaxPaacnXctgQtgQtgQpFyhgahgahgajevtgQtgQtgQnXcgoEgoEnXcesresrununcEaadgxTtpxnvBunuesresrjUWjUWjUWgjrmDpnyqnyqnyqnyqjXSdLGsXZjXSnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsmcsxMObeVdNQbeVdNQmoyvpVxMOlMYlMYlMYlMYlMYlMYlMYlMYlMYlMYlMYlMYlMYfSpdAbwdaptDjFbkSiwdalHIdtVmcsmcsmcsmcsmcstOXtOXtOXppEnvFvywppEppEppEppEsgnxIQtOXppEppEppEtOXiYSaFzaFzaFzmhKtOXbKgfWifWiqJExsZtOXmcsvFivFicFQfIscFQvFivFimcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi vFivFivFinXclOilOilOiaFitgQtgQtgQpFyhgahgahgajevtgQtgQtgQlxXgoEgoElxXaZjaUiesrpxLxVZxVZxVZqyqrhtoLsesrjUWjUWjUWgjrmDpnyqnyqnyqnyqjXSjKFvsIjXSnyqnyqoDZnyqkwCnyqnyqnyqnyqnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsmcsxMOiGPkJdweGkJdbftkJdxMOdAblMYlMYlMYlMYlMYlMYlMYlMYlMYxMOxMOxMOlHIpmEdAbwdawdawdafjXlHIdtVmcsmcsmcsmcsmcsmcsmcstOXtOXjhjjhjtOXwGtwGttOXjhjjhjtOXtOXppEppEtOXtOXtOXduUtOXtOXtOXtOXdVctOXtOXtOXtOXmcsvFivFivFivFivFivFivFimcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi -vFivFivFinXcjCcjCcjCcnXctgQtgQtgQpFyhgahgahgajevtgQtgQtgQnXcgoEgoEnXcesruQSqkfjZRrhtrhtrhtrhtrhtbgeesrjUWjUWjUWgjrmDpnyqnyqnyqnyqnyqjXSjXSnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsmcsxMOxMOxMOxMOxMOxMOxMOxMOmrRmLCmrRxMOxMOxMOxMOxMOxMOxMOxMOlHIlHIlHIlHIankwdawdawdanTtlHIdtVmcsmcsmcsmcsmcsmcsmcsmcstOXuUPppEppEppEppEppEppEiHWtOXaaeppEppEjhjdZwdJxxDRxDRuRstOXtautausarsarsartOXtOXmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi +vFivFivFinXcjCcjCcjCcnXctgQtgQtgQpFyhgahgahgajevtgQtgQtgQnXcgoEgoEiaBesruQSqkfjZRrhtrhtrhtrhtrhtbgeesrjUWjUWjUWgjrmDpnyqnyqnyqnyqnyqjXSjXSnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsmcsxMOxMOxMOxMOxMOxMOxMOxMOmrRmLCmrRxMOxMOxMOxMOxMOxMOxMOxMOlHIlHIlHIlHIankwdawdawdanTtlHIdtVmcsmcsmcsmcsmcsmcsmcsmcstOXuUPppEppEppEppEppEppEiHWtOXaaeppEppEjhjdZwdJxxDRxDRuRstOXtautausarsarsartOXtOXmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi vFivFivFinXcnXcnXcnXcnXcnXctgQtgQjoYmyKmyKmyKoTltgQtgQnXcnXcaibaibnXcesrunuunuaafrhtrhtrhtaagunuunuesrjUWjUWnsfgjrmDpnyqnyqbnonyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqtrYnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsxMOxMOulblMYlMYdAbdAbxMOpqUpqUpqUpqUgVOxMOoLAlMYlMYlMYkbrxMOxMOlHIlHIlHIwdagwFjFbjFbbJblHIdtVmcsmcsmcsmcsmcsmcsmcsmcstOXuUPppEppEakjgjZppEppEqAVtOXaahppEppEtOXxDRxDRpHAxDRxDRtOXtautauksbksbksbiuttOXmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi vFivFivFinXcjUWjUWjUWjUWnXctgQtgQtgQtgQtgQtgQtgQvcotgQnXcjUWjUWjUWjUWjUWesrunuoEQrhtlcFrhtdebunuesrjUWjUWjUWjUWgjrmDpnyqnyqoDZbnonyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqnyqbnonyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsxMOlMYlMYlMYlMYlMYdAbxMOpqUpqUprSpqUpqUxMOlMYlMYlMYlMYdAbdAbxMOlHIlHIlHIdrYwdawdawdawdalHIdtVmcsmcsmcsmcsmcsmcsmcsmcstOXuUPppEppEuUPcTyppEppEbVjtOXaaippEppEaygxDRxkMgyKhsKxDRhprtautautautautaumuGtOXmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi vFivFivFinXcjUWjUWjUWjUWnXcunYunYunYtgQtgQtgQunYunYunYnXcjUWjUWnsfjUWjUWjUWesresraMCnzucOLesresrjUWjUWjUWjUWjUWgjrmDpnyqnyqnyqnyqnyqnyqnyqeIqnyqjvLnyqjvLnyqjxJnyqnyqnyqnyqnyqmDpgjrvFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFivFidtVmcsmcsmcsmcsmcsmcsmcsmcsxMOlMYlMYlMYlMYlMYlMYmLCpqUkuCfaNtpIpqUmLClMYlMYlMYlMYlMYdAbxMOlHImcslHIlHIaajaakcoRjfCjfCdtVmcsmcsmcsmcsmcsmcsmcsmcstOXuUPuyiuyiaanaapuyippElWztOXtprppEppEtOXxDRxkMgyKhsKxDRtOXtautauksbksbksbiUitOXmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsdtVvFi diff --git a/maps/southern_cross/southern_cross-casino.dmm b/maps/southern_cross/southern_cross-casino.dmm index 04a05e6dac..33b91c5543 100644 --- a/maps/southern_cross/southern_cross-casino.dmm +++ b/maps/southern_cross/southern_cross-casino.dmm @@ -19,8 +19,8 @@ "aS" = (/obj/effect/blocker,/turf/simulated/mineral/ignore_mapgen/cave,/area/surface/outside/plains/mountains) "aT" = (/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/casino/casino_ship) "aV" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/outdoors/grass/heavy{outdoors = 0},/area/casino/casino_ship) -"aW" = (/obj/structure/table/glass,/obj/random/plushie,/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) -"aY" = (/obj/machinery/button/remote/blast_door{id = "Casinoboth 1"; name = "Casino Shutter"; pixel_x = -5; pixel_y = 29; req_one_access = list(200)},/obj/machinery/button/remote/blast_door{dir = 8; id = "CasinoEmergency2"; name = "Middle emergency shutters"; pixel_x = 28; pixel_y = -3; req_access = list(160)},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) +"aW" = (/obj/structure/noticeboard{name = "Sentient prize board"},/turf/simulated/wall/golddiamond,/area/casino/casino_ship) +"aY" = (/obj/machinery/button/remote/blast_door{id = "Casinoboth 1"; name = "Casino Shutter"; pixel_x = -5; pixel_y = 29; req_one_access = list(200)},/obj/machinery/button/remote/blast_door{dir = 8; id = "CasinoEmergency2"; name = "Middle emergency shutters"; pixel_x = 28; pixel_y = -3; req_access = list(160)},/obj/structure/closet/crate/bin,/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) "bb" = (/mob/living/simple_mob/animal/sif/glitterfly,/turf/simulated/floor/water,/area/surface/outside/plains/outpost) "bd" = (/mob/living/simple_mob/animal/sif/tymisian,/turf/simulated/floor/outdoors/dirt{can_atmos_pass = 0; outdoors = 0; temperature = 300},/area/surface/outside/plains/mountains) "bg" = (/obj/structure/flora/tree/winter1,/mob/living/simple_mob/animal/sif/glitterfly,/turf/simulated/floor/outdoors/snow/sif/planetuse{temperature = 293.15},/area/surface/outside/plains/outpost) @@ -165,7 +165,7 @@ "fl" = (/obj/structure/table/fancyblack,/turf/simulated/floor/carpet/oracarpet,/area/casino/casino_ship) "fo" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/device/tape,/obj/item/weapon/pen,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/wood,/area/casino/casino_ship/dorms) "fp" = (/obj/structure/table/fancyblack,/turf/simulated/floor/carpet/turcarpet,/area/casino/casino_ship) -"fq" = (/obj/structure/table/marble,/obj/machinery/door/window/westright{dir = 1; layer = 3.1; name = "Both access"; req_access = list(200)},/obj/machinery/door/blast/shutters{id = "Casinoboth 1"; layer = 3.2; name = "Exchange booth shutters 1"},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) +"fq" = (/obj/machinery/door/window/westright{dir = 1; layer = 3.1; name = "Both access"; req_access = list(200)},/obj/machinery/door/blast/shutters{id = "Casinoboth 1"; layer = 3.2; name = "Exchange booth shutters 1"},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) "fs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/lily2,/turf/simulated/floor/water{outdoors = 0},/area/casino/casino_ship) "ft" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/lily3,/turf/simulated/floor/water{outdoors = 0},/area/casino/casino_ship) "fv" = (/turf/simulated/floor/carpet/turcarpet,/area/casino/casino_ship) @@ -463,7 +463,6 @@ "sc" = (/mob/living/simple_mob/animal/passive/penguin/tux{hovering = 1},/turf/simulated/floor/wood/sif/broken,/area/surface/outside/plains/outpost) "sd" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/outdoors/grass/heavy{outdoors = 0},/area/casino/casino_ship) "sm" = (/obj/random/trash,/turf/simulated/floor/tiled/freezer,/area/submap/lonehome) -"sq" = (/obj/structure/noticeboard{name = "Sentient prize board"},/turf/simulated/wall/golddiamond,/area/casino/casino_ship) "su" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = -3},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = -3},/obj/item/weapon/storage/box/donut{pixel_y = 11},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/casino/casino_ship/dorms) "sy" = (/obj/structure/girder/displaced,/turf/simulated/floor/outdoors/snow/sif/planetuse{temperature = 293.15},/area/surface/outside/plains/outpost) "sA" = (/obj/structure/table/bench/sifwooden,/turf/simulated/floor/outdoors/dirt{can_atmos_pass = 0; outdoors = 0; temperature = 300},/area/surface/outside/plains/mountains) @@ -519,7 +518,7 @@ "vv" = (/obj/structure/sink{pixel_x = -16; pixel_y = 24},/obj/structure/toilet{dir = 8},/turf/simulated/floor/tiled/dark,/area/casino/casino_ship/wing_right) "vx" = (/obj/effect/mist,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/wood,/area/casino/casino_ship) "vA" = (/obj/effect/decal/remains/deer,/turf/simulated/floor/outdoors/dirt{can_atmos_pass = 0; outdoors = 0; temperature = 300},/area/surface/outside/plains/mountains) -"vF" = (/obj/structure/table/glass,/obj/machinery/recharger,/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) +"vF" = (/obj/structure/table/glass,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "vI" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/grass2,/area/casino/casino_ship) "vL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/shutters{dir = 2; id = "Casinodormshutters5"; layer = 3.5; name = "Casino Privacy shutters"},/turf/simulated/floor,/area/casino/casino_ship/dorms) "vN" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/flora/ausbushes/pointybush,/turf/simulated/floor/outdoors/grass/heavy{outdoors = 0},/area/casino/casino_ship) @@ -616,7 +615,6 @@ "Ah" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/grass2,/area/casino/casino_ship) "Ak" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/grass2,/area/casino/casino_ship) "Ao" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/flora/ausbushes/reedbush,/turf/simulated/floor/grass2,/area/casino/casino_ship) -"AA" = (/obj/structure/table/glass,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "AB" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/outdoors/grass/heavy{outdoors = 0},/area/casino/casino_ship) "AF" = (/obj/effect/floor_decal/techfloor/orange{dir = 9},/turf/simulated/floor/tiled/techfloor,/area/casino/casino_ship) "AK" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/flock,/area/surface/outside/plains/mountains) @@ -722,7 +720,6 @@ "Gs" = (/obj/machinery/vending/cola,/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "Gu" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "Casinobar"; layer = 3.1; name = "Casino bar shutter"},/turf/simulated/floor/carpet/oracarpet,/area/casino/casino_ship) "Gz" = (/obj/structure/curtain/open/bed{name = "casino curtain"},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) -"GD" = (/obj/structure/table/glass,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/item/weapon/book/manual/casino,/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "GG" = (/obj/machinery/crystal/ice,/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/surface/outside/plains/mountains) "GL" = (/obj/structure/table/wooden_reinforced,/obj/item/device/starcaster_news,/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "GP" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/animal/sif/glitterfly/rare{canmove = 0; glow_intensity = 0.5; glow_range = 7.5; glow_toggle = 1; move_speed = 10000; movement_cooldown = -10000},/turf/simulated/floor/tiled/white,/area/submap/lonehome) @@ -912,7 +909,7 @@ "Sf" = (/obj/machinery/light{layer = 3},/turf/simulated/floor/water/deep/pool,/area/casino/casino_ship) "Sh" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/flora/ausbushes/reedbush,/turf/simulated/floor/outdoors/grass/heavy{outdoors = 0},/area/casino/casino_ship) "Sn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/grass2,/area/casino/casino_ship) -"Sp" = (/obj/machinery/button/remote/blast_door{dir = 1; id = "Casinoboth 2"; name = "Casino Shutter"; pixel_x = -4; pixel_y = -29; req_one_access = list(200)},/obj/machinery/button/remote/blast_door{dir = 8; id = "Casinoprizes"; name = "Prize Shutters"; pixel_x = 28; pixel_y = 4; req_one_access = list(200)},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) +"Sp" = (/obj/machinery/button/remote/blast_door{dir = 1; id = "Casinoboth 2"; name = "Casino Shutter"; pixel_x = -4; pixel_y = -29; req_one_access = list(200)},/obj/machinery/button/remote/blast_door{dir = 8; id = "Casinoprizes"; name = "Prize Shutters"; pixel_x = 28; pixel_y = 4; req_one_access = list(200)},/obj/structure/table/marble,/obj/item/modular_computer/laptop/preset/custom_loadout/hybrid,/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) "Sq" = (/obj/machinery/button/remote/blast_door{id = "Casinodormshutters2"; name = "Casino Dorm Shutters"; pixel_x = 24; pixel_y = -6},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/hosdouble,/turf/simulated/floor/wood,/area/casino/casino_ship/dorms) "Sv" = (/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/turf/simulated/floor/outdoors/grass/heavy{outdoors = 0},/area/casino/casino_ship) "Sx" = (/obj/structure/table/rack/shelf/steel,/obj/item/weapon/storage/toolbox/electrical{pixel_y = 7},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/submap/lonehome) @@ -987,7 +984,7 @@ "WJ" = (/obj/structure/bed/chair/comfy/purp{dir = 8},/turf/simulated/floor/wood,/area/casino/casino_ship) "WL" = (/turf/simulated/floor/wood/sif/broken,/area/surface/outside/plains/outpost) "WQ" = (/turf/simulated/floor/outdoors/dirt{can_atmos_pass = 0; outdoors = 0; temperature = 300},/area/submap/lonehome) -"WS" = (/obj/machinery/door/airlock/silver{name = "Lounge"},/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) +"WS" = (/obj/machinery/door/airlock/silver{name = "Lounge"; req_one_access = list(300)},/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "WT" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/floor/wood/sif,/area/submap/lonehome) "WV" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) "Xf" = (/obj/structure/flora/tree/winter,/obj/effect/zone_divider,/turf/simulated/floor/outdoors/snow/sif/planetuse{temperature = 293.15},/area/surface/outside/plains/outpost) @@ -1029,7 +1026,7 @@ "Zj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/machinery/door/blast/shutters{dir = 2; id = "Casinodormshutters5"; layer = 3.5; name = "Casino Privacy shutters"},/turf/simulated/floor,/area/casino/casino_ship/dorms) "Zl" = (/obj/structure/bed/chair/comfy/red{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/casino/casino_ship) "Zn" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/casino/casino_ship/wing_left) -"Zq" = (/obj/structure/table/marble,/obj/machinery/door/window/westright{dir = 2; layer = 3.1; name = "Both access"; req_access = list(200)},/obj/machinery/door/blast/shutters{dir = 2; id = "Casinoboth 2"; layer = 3.2; name = "Exchange booth shutters 2"},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) +"Zq" = (/obj/machinery/door/window/westright{dir = 2; layer = 3.1; name = "Both access"; req_access = list(200)},/obj/machinery/door/blast/shutters{dir = 2; id = "Casinoboth 2"; layer = 3.2; name = "Exchange booth shutters 2"},/turf/simulated/floor/carpet/blucarpet,/area/casino/casino_ship) "Zs" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 8; id = "Casinobar"; layer = 3.1; name = "Casino bar shutter"},/turf/simulated/floor/carpet/oracarpet,/area/casino/casino_ship) "Zt" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/casino/casino_ship/wing_left) "Zw" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/tiled/freezer,/area/casino/casino_ship/dorms) @@ -1044,7 +1041,7 @@ "ZP" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/casino/casino_ship/wing_right) "ZR" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/red/bordercorner,/turf/simulated/floor/tiled,/area/casino/casino_ship/wing_right) "ZW" = (/obj/structure/table/glass,/obj/item/toy/eight_ball/conch,/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) -"ZY" = (/obj/structure/table/glass,/obj/item/toy/eight_ball,/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) +"ZY" = (/obj/structure/table/glass,/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/casino/casino_ship) "ZZ" = (/obj/structure/table/bench/sifwooden,/obj/machinery/light,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 5},/obj/effect/mist,/turf/simulated/floor/wood,/area/casino/casino_ship) (1,1,1) = {" @@ -1185,19 +1182,19 @@ hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNgNgNgNgNgNcqNsabYLxXxXxXTXabujdJdJdJdJdJpJabHhbN hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNgNgNgNAOgNcqNsabUbMuytUbZtabLlXZQOoDqYpPKbabXUbNgtbNRIbNacacacacBnAdAdNCeFeFeFdzdzAYdzevWobNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNkEbNbNbNbNbNbNbNBFbNbNbNbNbNBFbNbNbNbNbNBFbNbNbNeJacqWCbAfAfAfpdVdpdpdpdoZacqiqibDbDbDnBeEeEeEwaeEeEeEmUacacacmNmNmNmNlFmNmNmNmNmNmNmNmNfBmNmNmNmNmNmNmNaFmNmNmNaFmNmNmNmNmNmNmNmNmNmNmNfBmNwtmNmNmNblmNmNmNmNmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNgNabNsabababababababababababababababZIbNgtqaykSvePfEfEczSveVEPHheFeFeFeFeFeFeFeXZFbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNQokEbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNQobNbNbNbNbNbNocacPttFAfoZoZZzoZoZDHoZmWacbDbDbDbDbDacWtpMtoacOHpMOHacacacacgNgNmNmNlFmNmNmNdqmNmNcCmNmNmNmNmNmNmNmNmNmNmNaFmNmNmNmNmNmNmNmNmNmNmNdqmNmNmNmNaFmNmNblmNmNmNmNwtmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNgNgNgNgNdrcqacVdgzNHKpFnrdxHPJXvQqrdGLRAXveFbNgtkbzljrpdfEePpdDcNojkacbObNbNeFeFeFeFeoqFbNbNeFenhMhMhMhMhMeneFeFeFeFiefjcRacmzeFeFeFeFeFGSeFeFeFGSsdPifsftaVoEfFzntzKwbNbNXMacxzoZAfoZDHoZoZCvoZoZoZacacacwvacacacacacacacacacacacacacacacmNmNmNlFmNmNmNmNmNmNmNhXhXmNmNeGmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNhXblmNdqmNmNmNmNmNav -hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcgNgNgNgNgNdrcqacRqDcfLeFeFrdXWXiXveFrdXWKrXveFbNgtfPNGRqpdqGjgAfzlpdhZackybNbNeFeFeFieiEdzbNbNeFacjGjGjGjGjGaceFjQjQjQeFYXcZUTvFeFeFeFceacacaceFnGaczNpzpzpzDaacacacacacbNbNvUacrLqWAfSLoZxzTxJDtFRYCvacMMeFeFQqLXlBRXwULXXWRXXMaclOlOuOHiacgNmNmNlFmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNhXmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNblmNmNmNmNmNmNmNav -hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcgNgNgNcpgNdrcqacTTiVjReFeFeFeFeFeFeFeFeFeFeFeFbNgtVtjVexjUkckfkMkSAoeyJceFbNbNeFeFeFlboMxdRBbNhMZsdzdzdzdzdzGueFjQPYjQeFdzwVacGDeFeFeFdztXfeacfqacacqwfyfOPEVmacyjaQaRacRBbNCRacacactUacacacacacacacacacIMeFeFeFTgXWYVEjTglBYVSnaclOdzdzHiBWgNmNmNlFmNeGmNmNmNmNmNmNhXmNmNmNmNmNhXmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNaFmNmNmNmNblmNmNmNmNmNmNmNav -hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNgNdrcqacAFaTQPbNbNbNbNbNbNbNbNbNbNbNbNbNgtbNBFbNbNbNbNbNbNBFbNbNbNbNbNbNbNbNbNbNbNbNbNhMZsdzulpknjdzGueFjQjQjQeFdzJMacaWeFeFeFdzMCqvGzbDaYacpTCDoJCDTZacydbDPHacbNbNdzdzlCdzdzdzdzdzdzlCdzdzdzacHheFeFeFeFeFeFQqeFeFeFQqaclOdzdzHiBtgNmNmNlFmNmNmNmNcCmNmNmNmNmNmNmNeGmNmNmNfBmNmNmNmNmNmNmNmNdqmNmNmNmNeGmNmNmNmNmNmNmNblmNhYmNeGmNmNmNav +hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcgNgNgNgNgNdrcqacRqDcfLeFeFrdXWXiXveFrdXWKrXveFbNgtfPNGRqpdqGjgAfzlpdhZackybNbNeFeFeFieiESObNbNeFacjGjGjGjGjGaceFjQjQjQeFYXcZUTvFeFeFeFceacacaceFnGaczNpzpzpzDaacacacacacbNbNvUacrLqWAfSLoZxzTxJDtFRYCvacMMeFeFQqLXlBRXwULXXWRXXMaclOlOuOHiacgNmNmNlFmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNhXmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNblmNmNmNmNmNmNmNav +hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcgNgNgNcpgNdrcqacTTiVjReFeFeFeFeFeFeFeFeFeFeFeFbNgtVtjVexjUkckfkMkSAoeyJceFbNbNeFeFeFlboMxdRBbNhMZsdzdzdzdzdzGueFjQPYjQeFdzwVacZYeFeFeFdztXfeacfqacacqwfyfOPEVmacyjaQaRacRBbNCRacacactUacacacacacacacacacIMeFeFeFTgXWYVEjTglBYVSnaclOdzdzHiBWgNmNmNlFmNeGmNmNmNmNmNmNhXmNmNmNmNmNhXmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNaFmNmNmNmNblmNmNmNmNmNmNmNav +hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNgNdrcqacAFaTQPbNbNbNbNbNbNbNbNbNbNbNbNbNgtbNBFbNbNbNbNbNbNBFbNbNbNbNbNbNbNbNbNbNbNbNbNhMZsdzulpknjdzGueFjQjQjQeFdzJMaWMzeFeFeFdzMCqvGzbDaYacpTCDoJCDTZacydbDPHacbNbNdzdzlCdzdzdzdzdzdzlCdzdzdzacHheFeFeFeFeFeFQqeFeFeFQqaclOdzdzHiBtgNmNmNlFmNmNmNmNcCmNmNmNmNmNmNmNeGmNmNmNfBmNmNmNmNmNmNmNmNdqmNmNmNmNeGmNmNmNmNmNmNmNblmNhYmNeGmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNmNgNgNgNdrcqacBybwbxbNbNbNFPsQdclrdcmaRBbNbNbNgtbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNhMZsdzZxzdImdzpeeFeFeFeFeFdzLvUTHheFeFeFdzoQbDkCbDbDHQbDbDbDbDbDHQbDbDbDbtbNbNdzdzdzdzdzdzdzdzdzdzdzdzdzWSeFeFeFeFeFeFeFeFeFeFeFeFPMlOdzZlYqBtgNmNmNlFmNmNmNhXmNmNmNmNmNmNmNmNmNmNmNmNeGmNmNmNmNmNhYmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNblmNmNmNmNmNmNmNav -hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNcpgNdrcqacIPzCNXbNbNbNbNbNbNbNbNbNbNbNbNbNgtbNQobNbNbNbNbNbNQobNbNbNbNbNbNbNbNbNbNbNbNbNhMZsdzKiobEVdzGueFjQjQjQeFdzRxacAAeFeFeFdzMCqvVnbDSpacRDWwPwWwxQacYEbDbEacbNbNdzdzlpdzdzdzdzdzdzlpdzdzdzaceFeFeFeFeFeFeFGSeFeFeFGSaclOdzdzHiBtmNmNmNlFmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNhXmNfBmNmNmNmNfBmNfBmNmNmNmNmNmNmNmNmNmNmNmNmNblmNmNmNmNmNmNmNav +hPmcmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNcpgNdrcqacIPzCNXbNbNbNbNbNbNbNbNbNbNbNbNbNgtbNQobNbNbNbNbNbNQobNbNbNbNbNbNbNbNbNbNbNbNbNhMZsdzKiobEVdzGueFjQjQjQeFdzRxaWMzeFeFeFdzMCqvVnbDSpacRDWwPwWwxQacYEbDbEacbNbNdzdzlpdzdzdzdzdzdzlpdzdzdzaceFeFeFeFeFeFeFGSeFeFeFGSaclOdzdzHiBtmNmNmNlFmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNhXmNfBmNmNmNmNfBmNfBmNmNmNmNmNmNmNmNmNmNmNmNmNblmNmNmNmNmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNmNmNgNgNgNdrcqacOPJplZeFeFeFeFeFeFeFeFeFeFeFeFbNgtmrSvmtSvQWSvmAmDmAnLJceFbNbNeFeFeFlbnTTARBbNhMZsdzdzdzdzdzGueFjQPYjQeFdzwVacZYeFeFeFdztXquacZqacaczWKhYMvQuoacINBqbRacRBbNEkacacacySacacacacacacacacacwWeFeFeFLXlBRXHPLXXWRXoyaclOdzdzHinZmNmNmNlFmNmNmNcCmNmNmNmNmNmNmNmNmNmNmNmNmNaimNmNmNfBmNmNmNmNmNmNmNmNhXmNmNmNmNmNmNmNblmNmNmNaFmNdqmNav -hPmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNgNgNgNdrcqacVdozoPeFeFrdXWmQXveFrdmsXWXveFbNgtpgNGpdNopdDcpApQpApVackybNbNeFeFeFiepZdzbNbNeFackvkvkvkvkvaceFjQjQjQeFaLGeUTvFeFeFeFcesqsqsqeFnGaczNpzpzpzDaacacacacacbNbNXMaccilOlOlODyaccmbVKdqXYNacZIeFeFGSTgXWYVABTglBYVrsaclOlOEJHiacgNmNmNlFmNmNmNmNmNXPmNmNmNmNdqmNmNmNeGmNmNcCmNmNmNmNmNmNmNmNdqmNmNeGmNaFanmNmNwtmNmNblmNhXmNmNmNmNmNav +hPmcmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNgNgNgNdrcqacVdozoPeFeFrdXWmQXveFrdmsXWXveFbNgtpgNGpdNopdDcpApQpApVackybNbNeFeFeFiepZSObNbNeFackvkvkvkvkvaceFjQjQjQeFaLGeUTvFeFeFeFceacacaceFnGaczNpzpzpzDaacacacacacbNbNXMaccilOlOlODyaccmbVKdqXYNacZIeFeFGSTgXWYVABTglBYVrsaclOlOEJHiacgNmNmNlFmNmNmNmNmNXPmNmNmNmNdqmNmNmNeGmNmNcCmNmNmNmNmNmNmNmNdqmNmNeGmNaFanmNmNwtmNmNblmNhXmNmNmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmNmNmNmNgNgNcpgNdrcqacRqzlrFKpFnrdGLyvXvGSrdXWwPXveFbNgtfPpdRqjgczfEgzAfpArzacbObNbNeFeFeFeFrWCSbNbNeFcHhMhMhMhMhMcHeFeFeFeFierYsFacmzeFeFeFeFeFQqeFeFeFQqtrcScSttudOAuGOAchKwbNbNocacUelOlOlOEoacmPmPvxVjVjacacacItacacacacacacacacacacacacacacacgNmNmNfXmNmNmNmNmNmNmNmNmNmNfBmNmNmNmNmNmNmNmNdqmNmNmNmNmNmNmNcCmNmNmNmNmNmNmNmNmNmNblmNmNmNmNmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNmNgNgNgNhkTwhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkMMbNgtiIvIkSfEfEePfEvNwbeyHheFeFeFeFeFeFeFeoQjbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNBFkEbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNBFbNbNbNbNbNbNeJacDElOlOlOlOcUdjdjvxVjVjacdklOlOlOdkacogsJIzlOdflODleEunVVacgNmNmNmNlFmNmNmNmNmNmNmNdqmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNeGmNmNmNmNmNmNmNdqmNmNmNmNmNmNblmNmNmNmNmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmNmNgNgNgNgNgNgNeSTwhkbXdebAaqbndevvhkAUEbkdkdcohkGsbNgtbNBFbNacacacacSWekekkaeFeFeFdzdzAYdzwzWobNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNkEbNbNbNbNbNbNbNQobNbNbNbNbNQobNbNbNbNbNQobNbNbNLnacUelOlOlOlOacZMMFZZxhdBaclOdzdzdzlOqKlOlOlOlOlODyacWtrNacacmNmNmNmNlFmNmNmNmNmNmNhXmNmNhXmNmNmNmNmNmNeGhXmNmNmNmNmNmNmNmNeGmNfBmNmNmNmNmNmNmNmNmNblmNmNmNwtmNmNmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmNgNmNgNgNgNAOgNeSTwhkPNjyyblUybjyPNhkIKlUlUlUlUhkHhbNAZTOUKFPacnAlXacuZrKTfcMeFeFeFdzZcoCcexnzSOQCXuBdzdzdzdzdzqFaLOQCXCSdzdzSOHGackyeFeFeFGSeFaPaPaPaPyDaPaPaPaPaPbCaPaPaPaPaPOpaPaPBTlOlOlOqCacacacacacacactvdzdzdzJbaclOlOlOZBWJacacacacacgNmNmNeGmNlFhXmNmNmNmNmNmNmNmNmNmNmNdqmNmNmNfBmNmNeGmNmNmNmNmNmNmNmNmNmNcCaFmNmNmNmNmNmNblmNmNmNmNmNhYmNav hPmcmcmcmcmcmcmcmcmcmcmcmcmNmNmNmNmNgNgNgNepeShkhkhkhkeRhkhkhkhkhkmehkhkhkhkhkVNfRhkfSGmacdyPUacuqmyFapDeFeFeFdzdzdzdzxuxAdwdLQhdwelzseFindhQhdSelxAdhdLQhShacbOeFeFknlLrxaPejcKlMbhlNaPejcKlMbhlNaPejcKlMbhlNaPlOlOlOlOlOMXihmCmCmCXMaclOdzdzdzlOacdydydyHslOacacacgNgNmNmNmNmNmNlFmNmNmNmNmNeGmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNblwtmNmNmNmNmNmNav -hPmcmcmcmcmcmcmcmcmcmNmNmNmNmNgNgNgNgNgNgNepeShkeHeThklUSXVvybuixblUlUlUVFlUlUlUyFhkYnjOacdZacaceFeFeFeFeFeFeFeFeFeFeFeFIbeqZWdMeqIbeFeFeFIbeqeqcIeueqeqIbeFeFeFeFeFMzXMjraPZweYaPlPKVaPZweYaPlPSbaPZweYaPlPTKaPeEeEeEeEeEeEihmCmCSBgyaclOgJwDfJlOacdyeseLacacacmNmNmNmNmNmNmNmNmNlFmNmNfBmNmNmNmNmNmNmNmNmNmNmNmNeGmNmNmNmNmNmNmNmNmNfBmNmNmNmNmNmNmNmNmNmNmNhXblmNmNmNaFmNmNmNav +hPmcmcmcmcmcmcmcmcmcmNmNmNmNmNgNgNgNgNgNgNepeShkeHeThklUSXVvybuixblUlUlUVFlUlUlUyFhkYnjOacdZacaceFeFeFeFeFeFeFeFeFeFeFHhIbeqZWdMeqIbeFeFeFIbeqeqcIeueqeqIbHheFeFeFeFMzXMjraPZweYaPlPKVaPZweYaPlPSbaPZweYaPlPTKaPeEeEeEeEeEeEihmCmCSBgyaclOgJwDfJlOacdyeseLacacacmNmNmNmNmNmNmNmNmNlFmNmNfBmNmNmNmNmNmNmNmNmNmNmNmNeGmNmNmNmNmNmNmNmNmNfBmNmNmNmNmNmNmNmNmNmNmNhXblmNmNmNaFmNmNmNav hPmcmcmcmcmcmcmcmcmcmNmNmNcCmNgNgNmNgNcpgNepeShkeHlUIJlUlUlUpplUlUlUlUilhkgsGcZGnVhkYnjOaclhdytReFeFeFeFeFnQeFeFeFeFeFeFeFeFeFeFdzdzdzdzdzdzdzeFeFeFeFeFeFeFeFeFnQeFwfvUczaPaPaPaPoifoaPaPaPaPoifoaPaPaPaPoifoaPihihihihihihihmCmCmCXMaclOkYHWdzlOacacacacacmNgNmNmNmNmNmNmNmNmNmNlFmNmNmNmNeGmNmNmNdqmNmNmNmNmNeGmNfBmNmNfBmNhXmNmNmNmNmNmNmNmNhXmNmNmNwtmNmNmNblwtmNmNmNmNmNmNav hPmcmcmcmcmcmcmcmcmcmNmNcCmNmNmNmNmNgNgNgNeSTwhkcPilhkurBXUWIHJHRiOmVGlUVFRiVKlUZPhkphOaacdZacaceFeFeFeFeFeFeFeFeFeFeFeFeFeFeFeFdzdzdzdzdzdzdzeFeFeFeFeFeFeFeFeFeFeFwyfhfEaPmOfGyolPbhaPmOfGyolPbhaPmOfGyolPbhaPBxmCmCmCmCmCmCmCmCmCLnaclOlOWnlOlOacacacmNgNmNmNmNwtmNmNmNmNmNmNmNlFmNmNmNmNmNmNmNmNyfmNmNmNmNmNmNmNmNmNmNmNmNhXmNmNmNmNmNmNmNmNmNdqmNmNmNmNmNmNblmNmNmNmNmNeGmNav hPmcmcmcmcmcmcmcmcmcmNmNmNmNmNmNmNgNgNAOgNeSTwhkcPlUhkFZeeewpvyCRiOmVGuchkFAyblUZPhkYahWacdyPUacXyPfrKTfFaKleFkEkEkEkEkEeFeFeFeFeFeFeFeFeFeFeFeFeFeFeFkCkCkCkCkCeFeFfVocfEaPbhlPlPlPQEaPbhlPlPlPpxaPbhlPlPlPxKaPmCmCmCmCmCmCmCmCmCSBgyacBVMnacacacacmNgNmNmNmNmNmNcCmNmNmNmNmNeGmNlFmNmNmNmNmNmNmNmNaFmNmNmNmNmNmNmNmNeGmNeGmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNmNblmNmNaFmNmNmNmNav diff --git a/maps/southern_cross/southern_cross.dm b/maps/southern_cross/southern_cross.dm index 79df7a1960..8145663b4c 100644 --- a/maps/southern_cross/southern_cross.dm +++ b/maps/southern_cross/southern_cross.dm @@ -50,7 +50,7 @@ #include "southern_cross-9.dmm" #include "southern_cross-10.dmm" //CHOMPStation Edit End - #include "southern_cross-casino.dmm" //CHOMPedit: Disabled to save resources and loaded in during events - Jack + //#include "southern_cross-casino.dmm" //CHOMPedit: Disabled to save resources and loaded in during events - Jack #include "submaps/_southern_cross_submaps.dm" diff --git a/maps/submaps/surface_submaps/mountains/mountains.dm b/maps/submaps/surface_submaps/mountains/mountains.dm index a7ac3cc3bb..2fffd44a72 100644 --- a/maps/submaps/surface_submaps/mountains/mountains.dm +++ b/maps/submaps/surface_submaps/mountains/mountains.dm @@ -41,6 +41,7 @@ #include "Cliff1.dmm" #include "excavation1.dmm" #include "spatial_anomaly.dmm" +#include "speakeasy_vr.dmm" #endif // The 'mountains' is the mining z-level, and has a lot of caves. @@ -235,7 +236,7 @@ cost = 5 allow_duplicates = TRUE template_group = "Underground Cliffs" - + /datum/map_template/surface/mountains/normal/deadly_rabbit // VOREStation Edit name = "The Killer Rabbit" desc = "A cave where the Knights of the Round have fallen to a murderous Rabbit." @@ -363,3 +364,11 @@ mappath = 'maps/submaps/surface_submaps/mountains/spatial_anomaly.dmm' cost = 20 fixed_orientation = TRUE + +/datum/map_template/surface/mountains/normal/Speakeasy //VOREStation add + name = "Speakeasy" + desc = "A hidden underground bar to serve drinks in secret and in style." + mappath = 'maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm' + cost = 10 + allow_duplicates = FALSE + diff --git a/maps/submaps/surface_submaps/mountains/mountains_areas.dm b/maps/submaps/surface_submaps/mountains/mountains_areas.dm index d39e38823b..4078c4b988 100644 --- a/maps/submaps/surface_submaps/mountains/mountains_areas.dm +++ b/maps/submaps/surface_submaps/mountains/mountains_areas.dm @@ -163,3 +163,7 @@ /area/submap/spatial_anomaly name = "POI - Spatial Anomaly" ambience = AMBIENCE_FOREBODING + +/area/submap/Speakeasy //VOREStation add + name = "POI - Speakeasy" + requires_power = FALSE \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm b/maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm new file mode 100644 index 0000000000..6d6cc6cdbb --- /dev/null +++ b/maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm @@ -0,0 +1,54 @@ +"a" = (/turf/template_noop,/area/submap/Speakeasy) +"c" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"f" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"g" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"h" = (/obj/random/handgun,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"i" = (/obj/item/clothing/head/fedora,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"j" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"k" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"l" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"m" = (/obj/structure/table/woodentable,/obj/machinery/light/poi{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"n" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"o" = (/obj/structure/simple_door/wood,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"p" = (/obj/machinery/media/jukebox,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"s" = (/obj/structure/bed/chair/wood{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"u" = (/obj/structure/table/gamblingtable,/obj/machinery/light/poi{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"v" = (/obj/structure/table/fancyblack,/obj/item/clothing/mask/smokable/cigarette/cigar,/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"w" = (/turf/simulated/wall/wood,/area/submap/Speakeasy) +"x" = (/obj/structure/bed/chair/sofa/blue/left{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"B" = (/turf/simulated/floor/wood,/area/submap/Speakeasy) +"C" = (/turf/simulated/mineral/floor/cave,/area/submap/Speakeasy) +"D" = (/obj/structure/bed/chair/sofa/black/corner{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"E" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"H" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"I" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"K" = (/obj/effect/floor_decal/corner/black/diagonal,/turf/simulated/floor/tiled/neutral,/area/submap/Speakeasy) +"L" = (/obj/structure/bed/chair/wood{dir = 8},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"M" = (/obj/machinery/light/poi{dir = 1},/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"N" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"O" = (/obj/machinery/light/poi{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"R" = (/obj/structure/bed/chair/sofa/black{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"U" = (/obj/structure/bed/chair/sofa/blue/right{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"V" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_soft/full{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"W" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"X" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"Y" = (/obj/structure/table/fancyblack,/obj/random/cash/big,/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) + +(1,1,1) = {" +aaaaaaaaaaaaaaaa +awwwwwwwwwwaaaaa +awnnwBMlMBwwwwaa +awiBjBYvYBwfLwwa +awhBjBcEcBwgBBwa +awwwwBBBBBwBWWwa +awXHwwwowwwBNmwa +awBBBOBBBBBBNNwa +awVNININNIBBggwa +awBkkkkkkkBBBBwa +awpBBBBBBBKKKWwa +awwxffBBBBKKKuwa +aawDRUBBBBKKKgwa +aawwwwBBBBsfLwwa +aaaaawwowwwwwwaa +aaaaaaCCCaaaaaaa +"} diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 3b5e916f3d..ca612423f8 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -24331,6 +24331,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) +<<<<<<< HEAD "aOO" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -24344,6 +24345,16 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aOO" = ( +/obj/machinery/flasher{ + id = "SurfaceBrigFlash"; + pixel_y = -20 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aOP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -24650,6 +24661,7 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) +<<<<<<< HEAD "aPj" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -24658,6 +24670,33 @@ /obj/structure/table/standard, /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_6) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aPj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/corner/lightorange{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aPk" = ( /obj/machinery/shower{ dir = 1 @@ -25515,6 +25554,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) +<<<<<<< HEAD "aQO" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -25528,6 +25568,24 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aQO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aQP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -25835,6 +25893,7 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) +<<<<<<< HEAD "aRs" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -25843,6 +25902,23 @@ /obj/structure/table/standard, /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_4) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aRs" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aRt" = ( /obj/machinery/shower{ dir = 1 @@ -26561,6 +26637,7 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) +<<<<<<< HEAD "aSZ" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -26574,6 +26651,16 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aSZ" = ( +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aTa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -26912,6 +26999,7 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) +<<<<<<< HEAD "aTH" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -26920,6 +27008,22 @@ /obj/structure/table/standard, /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_2) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aTH" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/button/flasher{ + id = "SurfaceVisitFlash"; + pixel_y = -20 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aTI" = ( /obj/machinery/shower{ dir = 1 @@ -28484,6 +28588,7 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) +<<<<<<< HEAD "aWp" = ( /obj/structure/cable/green{ d1 = 1; @@ -28492,6 +28597,20 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +======= +"aWp" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/machinery/flasher{ + id = "SurfaceVisitFlash"; + pixel_y = -20 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/surfacebase/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "aWq" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -28919,6 +29038,92 @@ /obj/random/junk, /turf/simulated/floor/wood, /area/crew_quarters/sleep/maintDorm2) +"aXo" = ( +/obj/machinery/button/remote/airlock{ + id = "brigouter"; + name = "Outer Brig Doors"; + pixel_x = 24; + pixel_y = -4; + req_access = list(2) + }, +/obj/machinery/button/remote/airlock{ + id = "briginner"; + name = "Inner Brig Doors"; + pixel_x = 34; + pixel_y = -4; + req_access = list(2) + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightorange/bordercorner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightorange/bordercorner2{ + dir = 6 + }, +/obj/machinery/button/flasher{ + id = "SurfaceBrigFlash"; + pixel_x = 30; + pixel_y = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/lowerhall) +"aXp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) +"aXq" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/corner/lightorange{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) "aXr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31686,15 +31891,6 @@ "cGJ" = ( /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"cGU" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/turf/simulated/floor/tiled/dark, -/area/tether/surfacebase/security/brig) "cHW" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 10 @@ -33007,13 +33203,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) -"hzx" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/turf/simulated/floor/tiled/dark, -/area/tether/surfacebase/security/brig) "hAe" = ( /turf/simulated/floor/looking_glass{ dir = 5 @@ -34957,29 +35146,6 @@ /obj/structure/closet/crate/bin, /turf/simulated/floor/carpet/bcarpet, /area/tether/surfacebase/funny/mimeoffice) -"nmf" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/brig) "nmA" = ( /obj/machinery/door/airlock/silver{ name = "Mime's Office"; @@ -36102,26 +36268,6 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/funny/hideyhole) -"rzZ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/corner/lightorange{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/brig) "rBG" = ( /obj/structure/closet, /obj/item/weapon/material/minihoe, @@ -36903,38 +37049,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"uDQ" = ( -/obj/machinery/button/remote/airlock{ - id = "brigouter"; - name = "Outer Brig Doors"; - pixel_x = 24; - pixel_y = -4; - req_access = list(2) - }, -/obj/machinery/button/remote/airlock{ - id = "briginner"; - name = "Inner Brig Doors"; - pixel_x = 34; - pixel_y = -4; - req_access = list(2) - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/lightorange/bordercorner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/lightorange/bordercorner2{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/lowerhall) "uEK" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -37419,24 +37533,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) -"wxV" = ( -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/effect/floor_decal/corner/lightorange{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/brig) "wzA" = ( /obj/structure/catwalk, /obj/machinery/alarm{ @@ -45653,7 +45749,7 @@ vRL hFq neZ diq -uDQ +aXo mvM fLB dMu @@ -45936,9 +46032,9 @@ tiJ kmb pCj kUN -cGU +aTH qwV -nmf +aXp hMu abT bbd @@ -46214,13 +46310,13 @@ wwm jio pCj dju -kmb +aOO pCj dju -kmb +aOO pCj jzW -hzx +aWp qwV wtD wQS @@ -46640,15 +46736,15 @@ aad mYf rQe ybc -rzZ -hTw +aPj hTw hTw hTw +aRs hTw uFs ddU -wxV +aXq nID iKy anp @@ -47208,11 +47304,11 @@ aad pCj wjq wjq -pKE +aQO pmV loj plW -tdh +aSZ fqa fOy eAd diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm index 3de57692fc..97d5f7bab4 100644 --- a/maps/tether/tether-06-station2.dmm +++ b/maps/tether/tether-06-station2.dmm @@ -144,30 +144,18 @@ /turf/simulated/floor/tiled, /area/security/brig/visitation) "ap" = ( -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 4 +/obj/effect/floor_decal/corner/white/border{ + dir = 8 }, -/obj/effect/floor_decal/corner/red/border/shifted{ - dir = 4 +/obj/item/weapon/paper/crumpled{ + name = "basketball" }, -/obj/effect/floor_decal/corner/red{ - dir = 6 +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/button/remote/airlock{ - id = "visitdoor"; - name = "Visitation Access"; - pixel_y = -24 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/security/brig/visitation) +/turf/simulated/floor/tiled/monotile, +/area/security/brig) "aq" = ( /obj/machinery/light{ dir = 4 @@ -388,13 +376,11 @@ /turf/simulated/floor/tiled/dark, /area/security/brig) "aO" = ( -/obj/effect/floor_decal/corner/white/border{ - dir = 8 +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" }, -/obj/item/weapon/paper/crumpled{ - name = "basketball" - }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/tiled, /area/security/brig) "aP" = ( /turf/simulated/mineral/floor/vacuum, @@ -1833,16 +1819,35 @@ /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) "cO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 +/obj/effect/floor_decal/borderfloor/shifted{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border/shifted{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + id = "visitdoor"; + name = "Visitation Access"; + pixel_y = -24 }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/dark, -/area/security/brig) +/obj/machinery/button/flasher{ + id = "AsteroidVisitingFlash"; + pixel_x = -10; + pixel_y = -20 + }, +/turf/simulated/floor/tiled, +/area/security/brig/visitation) "cP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -1948,12 +1953,24 @@ /turf/simulated/floor/tiled/dark, /area/security/recstorage) "cW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/effect/floor_decal/borderfloor/shifted{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border/shifted{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red{ dir = 9 }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "AsteroidVisitingFlash"; + pixel_y = -20 + }, /turf/simulated/floor/tiled, -/area/security/brig) +/area/security/brig/visitation) "cX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -2260,20 +2277,20 @@ /turf/simulated/floor/tiled, /area/security/security_cell_hallway) "dt" = ( -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, -/obj/effect/floor_decal/corner/red/border/shifted{ - dir = 8 +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/effect/floor_decal/corner/red{ - dir = 9 +/obj/machinery/flasher{ + id = "AsteroidSecFlash"; + pixel_y = -20 }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/security/brig/visitation) +/turf/simulated/floor/tiled/dark, +/area/security/brig) "du" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 @@ -2513,12 +2530,14 @@ /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) "dQ" = ( -/obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" + }, /turf/simulated/floor/tiled, /area/security/brig) "dR" = ( @@ -7798,6 +7817,58 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/starboard) +<<<<<<< HEAD +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +"lU" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +"lV" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +======= +"lU" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"lV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "AsteroidSecFlash"; + pixel_x = 20; + pixel_y = 20 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "lW" = ( /obj/structure/cable/green{ d1 = 4; @@ -9565,6 +9636,43 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/starboard) +<<<<<<< HEAD +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +"oB" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_r" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +======= +"oB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "oC" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -9587,9 +9695,36 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "oD" = ( +<<<<<<< HEAD /obj/structure/shuttle/engine/propulsion{ dir = 8; icon_state = "propulsion_l" +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +/obj/structure/stairs/spawner/west, +/turf/simulated/sky/virgo3b/west, +/turf/simulated/floor/tiled/white, +/area/medical/biostorage) +"oE" = ( +/obj/structure/toilet{ + pixel_y = 6 + }, +/obj/machinery/light/small{ + dir = 1 +======= +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +"oE" = ( +/obj/structure/toilet{ + pixel_y = 6 + }, +/obj/machinery/light/small{ + dir = 1 +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes }, /turf/space, /turf/simulated/shuttle/plating/airless/carry, @@ -9615,6 +9750,7 @@ /obj/structure/stairs/spawner/west, /turf/simulated/sky/virgo3b/west, /turf/simulated/floor/tiled/white, +<<<<<<< HEAD /area/medical/biostorage) ======= "oG" = ( @@ -9623,6 +9759,31 @@ /turf/simulated/floor/tiled/white, /area/medical/biostorage) >>>>>>> 1030f26c08... Merge pull request #9904 from Heroman3003/la-coppera +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +/area/medical/recoveryrestroom) +======= +/area/medical/recoveryrestroom) +"oG" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +"oH" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_r" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +"oI" = ( +/obj/structure/stairs/spawner/west, +/turf/simulated/sky/virgo3b/west, +/turf/simulated/floor/tiled/white, +/area/medical/biostorage) +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes "oM" = ( /turf/simulated/open, /area/engineering/foyer_mezzenine) @@ -10294,7 +10455,6 @@ /area/ai_monitored/storage/eva) "qj" = ( /obj/structure/table/woodentable, -/obj/item/device/binoculars, /obj/item/weapon/folder/blue, /obj/structure/cable/green{ d1 = 1; @@ -18756,27 +18916,6 @@ /obj/item/weapon/book/manual/medical_diagnostics_manual, /turf/simulated/floor/tiled/white, /area/maintenance/station/sec_lower) -"Nc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - dir = 5 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/security/brig) "Nf" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -18792,21 +18931,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/locker_room) -"Ng" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/red/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/red/bordercorner2{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/security/security_cell_hallway) "Nm" = ( /obj/structure/bed/chair{ dir = 8 @@ -27205,7 +27329,7 @@ bh af ao dk -ap +cO dj dL Tk @@ -27489,7 +27613,7 @@ Fq af cG do -dt +cW af XR UT @@ -28193,22 +28317,22 @@ UO Hc aS EE -aO +ap ak bm -DF +aO ar bb bt -cW +dQ bv bB es -dQ +lU Ye cn YK -Nc +oB hQ YN jf @@ -28523,7 +28647,13 @@ vE wm ws xj +<<<<<<< HEAD oG +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +oD +======= +oI +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes vT aP aP @@ -28633,7 +28763,7 @@ cd ce bK Zu -Ng +lV JD TY aE @@ -28909,13 +29039,13 @@ XT GM aS aY -cO +dt aS aY -cO +dt aS aY -cO +dt aS PJ Ph @@ -35462,11 +35592,25 @@ hl DI RX DL +<<<<<<< HEAD oD oE oE oE oF +||||||| parent of f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes +lU +lV +lV +lV +oB +======= +oD +oG +oG +oG +oH +>>>>>>> f19bc87ece... Merge pull request #10230 from TheFurryFeline/TFF-Brig_Flashes oY sW ef diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm index 58aa3400ab..8f53b49f8b 100644 --- a/maps/tether/tether_areas.dm +++ b/maps/tether/tether_areas.dm @@ -973,144 +973,185 @@ icon_state = "recreation_area_restroom" sound_env = SMALL_ENCLOSED -/area/crew_quarters/sleep - limit_mob_size = FALSE - /area/crew_quarters/sleep/maintDorm1 name = "\improper Construction Dorm 1" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/maintDorm2 name = "\improper Construction Dorm 2" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/maintDorm3 name = "\improper Construction Dorm 3" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/maintDorm4 name = "\improper Construction Dorm 4" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_1 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_2 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_3 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_4 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_5 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_6 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_7 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_8 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_9 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_10 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_11 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_12 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_1 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_2 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_3 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_4 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_5 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_6 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_7 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_8 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_9 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_10 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_1/holo name = "\improper Dorm 1 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/Dorm_3/holo name = "\improper Dorm 3 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/Dorm_5/holo name = "\improper Dorm 5 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/Dorm_7/holo name = "\improper Dorm 7 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/spacedorm1 name = "\improper Visitor Lodging 1" @@ -1118,64 +1159,98 @@ lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/crew_quarters/sleep/spacedorm2 name = "\improper Visitor Lodging 2" icon_state = "dk_yellow" lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/crew_quarters/sleep/spacedorm3 name = "\improper Visitor Lodging 3" icon_state = "dk_yellow" lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/crew_quarters/sleep/spacedorm4 name = "\improper Visitor Lodging 4" icon_state = "dk_yellow" lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE - -/area/holodeck/holodorm limit_mob_size = FALSE + block_suit_sensors = TRUE /area/holodeck/holodorm/source_basic name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_desert name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_seating name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_beach name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_garden name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_boxing name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_snow name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_space name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_off name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/ai_core_foyer name = "\improper AI Core Access" diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index 9e251deb0a..44b4948f0d 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -368,6 +368,8 @@ var/global/list/latejoin_tram = list() ..() for(var/i = 1 to 3) new /obj/item/weapon/gun/energy/locked/frontier(src) + for(var/i = 1 to 2) + new /obj/item/weapon/gun/energy/locked/frontier/holdout(src) // Used at centcomm for the elevator /obj/machinery/cryopod/robot/door/dorms diff --git a/maps/tether_better/tether_things.dm b/maps/tether_better/tether_things.dm index 7e51777370..a0ad2cc1a5 100644 --- a/maps/tether_better/tether_things.dm +++ b/maps/tether_better/tether_things.dm @@ -368,6 +368,8 @@ var/global/list/latejoin_tram = list() ..() for(var/i = 1 to 2) new /obj/item/weapon/gun/energy/locked/frontier(src) + for(var/i = 1 to 2) + new /obj/item/weapon/gun/energy/locked/frontier/holdout(src) // Used at centcomm for the elevator /obj/machinery/cryopod/robot/door/dorms diff --git a/sound/effects/whistle.ogg b/sound/effects/whistle.ogg new file mode 100644 index 0000000000..c52de2f072 Binary files /dev/null and b/sound/effects/whistle.ogg differ diff --git a/sound/items/confetti.ogg b/sound/items/confetti.ogg new file mode 100644 index 0000000000..d9b051089e Binary files /dev/null and b/sound/items/confetti.ogg differ diff --git a/sound/voice/Bug.ogg b/sound/voice/Bug.ogg new file mode 100644 index 0000000000..83486e436f Binary files /dev/null and b/sound/voice/Bug.ogg differ diff --git a/sound/voice/BugBuzz.ogg b/sound/voice/BugBuzz.ogg new file mode 100644 index 0000000000..43fda8be42 Binary files /dev/null and b/sound/voice/BugBuzz.ogg differ diff --git a/sound/voice/BugHiss.ogg b/sound/voice/BugHiss.ogg new file mode 100644 index 0000000000..3ab342f5c9 Binary files /dev/null and b/sound/voice/BugHiss.ogg differ diff --git a/sound/voice/cat_purr.ogg b/sound/voice/cat_purr.ogg new file mode 100644 index 0000000000..1125cb2bbd Binary files /dev/null and b/sound/voice/cat_purr.ogg differ diff --git a/sound/voice/cat_purr_long.ogg b/sound/voice/cat_purr_long.ogg new file mode 100644 index 0000000000..c74b845250 Binary files /dev/null and b/sound/voice/cat_purr_long.ogg differ diff --git a/sound/voice/moth/scream_moth.ogg b/sound/voice/moth/scream_moth.ogg new file mode 100644 index 0000000000..482086fb63 Binary files /dev/null and b/sound/voice/moth/scream_moth.ogg differ diff --git a/sound/voice/multichirp.ogg b/sound/voice/multichirp.ogg new file mode 100644 index 0000000000..2db358e942 Binary files /dev/null and b/sound/voice/multichirp.ogg differ diff --git a/sound/voice/quack.ogg b/sound/voice/quack.ogg new file mode 100644 index 0000000000..cdf3516e89 Binary files /dev/null and b/sound/voice/quack.ogg differ diff --git a/sound/voice/teshchirp.ogg b/sound/voice/teshchirp.ogg new file mode 100644 index 0000000000..f13c80dd33 Binary files /dev/null and b/sound/voice/teshchirp.ogg differ diff --git a/sound/voice/teshsqueak.ogg b/sound/voice/teshsqueak.ogg new file mode 100644 index 0000000000..41d205ab9f Binary files /dev/null and b/sound/voice/teshsqueak.ogg differ diff --git a/sound/voice/teshtrill.ogg b/sound/voice/teshtrill.ogg new file mode 100644 index 0000000000..db30e988e5 Binary files /dev/null and b/sound/voice/teshtrill.ogg differ diff --git a/tgui/packages/tgui/interfaces/Cleanbot.js b/tgui/packages/tgui/interfaces/Cleanbot.js index 949b1794d9..33a810b024 100644 --- a/tgui/packages/tgui/interfaces/Cleanbot.js +++ b/tgui/packages/tgui/interfaces/Cleanbot.js @@ -12,6 +12,7 @@ export const Cleanbot = (props, context) => { version, blood, patrol, + vocal, wet_floors, spray_blood, rgbpanel, @@ -42,13 +43,37 @@ export const Cleanbot = (props, context) => { {!locked && (
    - + + + + + + + + {/* VOREStation Edit: Not really used on Vore.*/} + {/* + + */} + {/* VOREStation Edit End */} +
    ) || null} {(!locked && open) && ( @@ -101,4 +126,4 @@ export const Cleanbot = (props, context) => { ); -}; \ No newline at end of file +}; diff --git a/tgui/packages/tgui/interfaces/Farmbot.js b/tgui/packages/tgui/interfaces/Farmbot.js index 0b1332d69b..55222c4068 100644 --- a/tgui/packages/tgui/interfaces/Farmbot.js +++ b/tgui/packages/tgui/interfaces/Farmbot.js @@ -120,4 +120,4 @@ export const Farmbot = (props, context) => { ); -}; \ No newline at end of file +}; diff --git a/tgui/packages/tgui/interfaces/Floorbot.js b/tgui/packages/tgui/interfaces/Floorbot.js index 9c2770340a..95b4834c78 100644 --- a/tgui/packages/tgui/interfaces/Floorbot.js +++ b/tgui/packages/tgui/interfaces/Floorbot.js @@ -9,6 +9,7 @@ export const Floorbot = (props, context) => { on, open, locked, + vocal, amount, possible_bmode, improvefloors, @@ -43,6 +44,14 @@ export const Floorbot = (props, context) => { {!locked && (
    + + + - {will_patrol && ( + {!!bot_patrolling && ( )} @@ -96,4 +97,4 @@ export const Secbot = (props, context) => { ); -}; \ 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 b92bcd7aae..0b5082cc16 100644 --- a/tgui/packages/tgui/public/tgui.bundle.js +++ b/tgui/packages/tgui/public/tgui.bundle.js @@ -32,4 +32,4 @@ r.perf.mark("inception",window.__inception__),r.perf.mark("init");var d,u=(0,l.c /*! (C) WebReflection Mit Style License */ if(!document.createEvent){var t,n=!0,o=!1,r="__IE8__"+Math.random(),i=Object.defineProperty||function(e,t,n){e[t]=n.value},a=Object.defineProperties||function(t,n){for(var o in n)if(l.call(n,o))try{i(t,o,n[o])}catch(r){e.console}},c=Object.getOwnPropertyDescriptor,l=Object.prototype.hasOwnProperty,d=e.Element.prototype,u=e.Text.prototype,s=/^[a-z]+$/,m=/loaded|complete/,p={},h=document.createElement("div"),C=document.documentElement,f=C.removeAttribute,N=C.setAttribute,b=function(e){return{enumerable:!0,writable:!0,configurable:!0,value:e}};k(e.HTMLCommentElement.prototype,d,"nodeValue"),k(e.HTMLScriptElement.prototype,null,"text"),k(u,null,"nodeValue"),k(e.HTMLTitleElement.prototype,null,"text"),i(e.HTMLStyleElement.prototype,"textContent",(t=c(e.CSSStyleSheet.prototype,"cssText"),_((function(){return t.get.call(this.styleSheet)}),(function(e){t.set.call(this.styleSheet,e)}))));var V=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;i(e.CSSStyleDeclaration.prototype,"opacity",{get:function(){var e=this.filter.match(V);return e?(e[1]/100).toString():""},set:function(e){this.zoom=1;var t=!1;e=e<1?" alpha(opacity="+Math.round(100*e)+")":"",this.filter=this.filter.replace(V,(function(){return t=!0,e})),!t&&e&&(this.filter+=e)}}),a(d,{textContent:{get:L,set:S},firstElementChild:{get:function(){for(var e=this.childNodes||[],t=0,n=e.length;t3?c(a):null,V=String(a.key),g=String(a.char),v=a.location,_=a.keyCode||(a.keyCode=V)&&V.charCodeAt(0)||0,k=a.charCode||(a.charCode=g)&&g.charCodeAt(0)||0,y=a.bubbles,L=a.cancelable,B=a.repeat,w=a.locale,x=a.view||e;if(a.which||(a.which=a.keyCode),"initKeyEvent"in m)m.initKeyEvent(t,y,L,x,p,C,h,f,_,k);else if(0>>0),t=Element.prototype,n=t.querySelector,o=t.querySelectorAll;function r(t,n,o){t.setAttribute(e,null);var r=n.call(t,String(o).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(t,n,o,r){return n+"["+e+"]"+(r||" ")})));return t.removeAttribute(e),r}t.querySelector=function(e){return r(this,n,e)},t.querySelectorAll=function(e){return r(this,o,e)}}()}}(window),function(e){var t=e.WeakMap||function(){var e,t=0,n=!1,o=!1;function r(t,r,i){o=i,n=!1,e=undefined,t.dispatchEvent(r)}function i(e){this.value=e}function c(){t++,this.__ce__=new a("@DOMMap:"+t+Math.random())}return i.prototype.handleEvent=function(t){n=!0,o?t.currentTarget.removeEventListener(t.type,this,!1):e=this.value},c.prototype={constructor:c,"delete":function(e){return r(e,this.__ce__,!0),n},get:function(t){r(t,this.__ce__,!1);var n=e;return e=undefined,n},has:function(e){return r(e,this.__ce__,!1),n},set:function(e,t){return r(e,this.__ce__,!0),e.addEventListener(this.__ce__.type,new i(t),!1),this}},c}();function n(){}function o(e,t,n){function r(e){r.once&&(e.currentTarget.removeEventListener(e.type,t,r),r.removed=!0),r.passive&&(e.preventDefault=o.preventDefault),"function"==typeof r.callback?r.callback.call(this,e):r.callback&&r.callback.handleEvent(e),r.passive&&delete e.preventDefault}return r.type=e,r.callback=t,r.capture=!!n.capture,r.passive=!!n.passive,r.once=!!n.once,r.removed=!1,r}n.prototype=(Object.create||Object)(null),o.preventDefault=function(){};var r,i,a=e.CustomEvent,c=e.dispatchEvent,l=e.addEventListener,d=e.removeEventListener,u=0,s=function(){u++},m=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},p=function(e){return"".concat(e.capture?"1":"0",e.passive?"1":"0",e.once?"1":"0")};try{l("_",s,{once:!0}),c(new a("_")),c(new a("_")),d("_",s,{once:!0})}catch(h){}1!==u&&(i=new t,r=function(e){if(e){var t=e.prototype;t.addEventListener=function(e){return function(t,r,a){if(a&&"boolean"!=typeof a){var c,l,d,u=i.get(this),s=p(a);u||i.set(this,u=new n),t in u||(u[t]={handler:[],wrap:[]}),l=u[t],(c=m.call(l.handler,r))<0?(c=l.handler.push(r)-1,l.wrap[c]=d=new n):d=l.wrap[c],s in d||(d[s]=o(t,r,a),e.call(this,t,d[s],d[s].capture))}else e.call(this,t,r,a)}}(t.addEventListener),t.removeEventListener=function(e){return function(t,n,o){if(o&&"boolean"!=typeof o){var r,a,c,l,d=i.get(this);if(d&&t in d&&(c=d[t],-1<(a=m.call(c.handler,n))&&(r=p(o))in(l=c.wrap[a]))){for(r in e.call(this,t,l[r],l[r].capture),delete l[r],l)return;c.handler.splice(a,1),c.wrap.splice(a,1),0===c.handler.length&&delete d[t]}}else e.call(this,t,n,o)}}(t.removeEventListener)}},e.EventTarget?r(EventTarget):(r(e.Text),r(e.Element||e.HTMLElement),r(e.HTMLDocument),r(e.Window||{prototype:e}),r(e.XMLHttpRequest)))}(window)},function(e,t,n){"use strict";!function(e){if("undefined"!=typeof e.setAttribute){var t=function(e){return e.replace(/-[a-z]/g,(function(e){return e[1].toUpperCase()}))};e.setProperty=function(e,n){var o=t(e);if(!n)return this.removeAttribute(o);var r=String(n);return this.setAttribute(o,r)},e.getPropertyValue=function(e){var n=t(e);return this.getAttribute(n)||null},e.removeProperty=function(e){var n=t(e),o=this.getAttribute(n);return this.removeAttribute(n),o}}}(CSSStyleDeclaration.prototype)},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},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){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";(function(e){var o=void 0!==e&&e||"undefined"!=typeof self&&self||window,r=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(r.call(setTimeout,o,arguments),clearTimeout)},t.setInterval=function(){return new i(r.call(setInterval,o,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(o,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(439),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||void 0,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||void 0}).call(this,n(76))},function(e,t,n){"use strict";(function(e,t){!function(e,n){if(!e.setImmediate){var o,r,i,a,c,l=1,d={},u=!1,s=e.document,m=Object.getPrototypeOf&&Object.getPrototypeOf(e);m=m&&m.setTimeout?m:e,"[object process]"==={}.toString.call(e.process)?o=function(e){t.nextTick((function(){h(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){h(e.data)},o=function(e){i.port2.postMessage(e)}):s&&"onreadystatechange"in s.createElement("script")?(r=s.documentElement,o=function(e){var t=s.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,r.removeChild(t),t=null},r.appendChild(t)}):o=function(e){setTimeout(h,0,e)}:(a="setImmediate$"+Math.random()+"$",c=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&h(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",c,!1):e.attachEvent("onmessage",c),o=function(t){e.postMessage(a+t,"*")}),m.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n1)for(var n=1;n=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1?r-1:0),a=1;a1?t-1:0),o=1;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var o=n(0),r=n(10),i=n(448),a=n(24),c=n(19);function l(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var d=(0,a.createLogger)("ByondUi"),u=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),f=this.state.viewBox,N=function(e,t,n,o){if(0===e.length)return[];var i=(0,r.zipWith)(Math.min).apply(void 0,e),a=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),o!==undefined&&(i[1]=o[0],a[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,i,a,t)}))(e)}(i,f,c,l);if(N.length>0){var b=N[0],V=N[N.length-1];N.push([f[0]+h,V[1]]),N.push([f[0]+h,-h]),N.push([-h,-h]),N.push([-h,b[1]])}var g=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,i.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:a})]})},a}(o.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(0),r=n(10),i=n(19);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,c=e.backgroundColor,l=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["content","children","className","color","backgroundColor"]);return l.color=t?null:"transparent",l.backgroundColor=a||c,(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["ColorBox",n,(0,i.computeBoxClassName)(l)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(l))))};t.ColorBox=a,a.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(0),r=n(10),i=n(19),a=n(129);function c(e,t){if(null==e)return{};var n,o,r={},i=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,n=t.options,r=void 0===n?[]:n,i=t.placeholder,a=r.map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(){e.setSelected(t)}},t)}));return i&&a.unshift((0,o.createVNode)(1,"div","Dropdown__menuentry",[(0,o.createTextVNode)("-- "),i,(0,o.createTextVNode)(" --")],0,{onClick:function(){e.setSelected(null)}},i)),a},d.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,d=t.over,u=t.noscroll,s=t.nochevron,m=t.width,p=t.maxHeight,h=(t.onClick,t.selected,t.disabled),C=t.placeholder,f=c(t,["color","over","noscroll","nochevron","width","maxHeight","onClick","selected","disabled","placeholder"]),N=f.className,b=c(f,["className"]),V=d?!this.state.open:this.state.open,g=this.state.open?(0,o.createVNode)(1,"div",(0,r.classes)([u?"Dropdown__menu-noscroll":"Dropdown__menu",d&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:m,"max-height":p}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Box,Object.assign({width:m,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,h&&"Button--disabled",N])},b,{onClick:function(){h&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",this.state.selected||C,0),!!s||(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,a.Icon,{name:V?"chevron-up":"chevron-down"}),2)]}))),g],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var o=n(0),r=n(182),i=n(10);function a(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=a(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=i.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,c=a(e,["size","style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},c)))};t.GridColumn=l,c.defaultHooks=i.pureComponentHooks,c.Column=l},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(0),r=n(10),i=n(19);function a(e,t){if(null==e)return{};var n,o,r={},i=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,i=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),i&&i(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),this.props.autofocus&&(t.focus(),t.selectionStart=0,t.selectionEnd=t.value.length))},d.componentDidUpdate=function(e,t){var n=this.state.editing,o=e.value,r=this.props.value,i=this.inputRef.current;i&&!n&&o!==r&&(i.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=(e.autofocus,a(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder","autofocus"])),l=c.className,d=c.fluid,u=a(c,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.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.Knob=void 0;var o=n(0),r=n(5),i=n(10),a=n(19),c=n(130),l=n(131);t.Knob=function(e){if(Byond.IS_LTE_IE8)return(0,o.normalizeProps)((0,o.createComponentVNode)(2,l.NumberInput,Object.assign({},e)));var t=e.animated,n=e.forcedInputWidth,d=e.format,u=e.maxValue,s=e.minValue,m=e.onChange,p=e.onDrag,h=e.step,C=e.stepPixelSize,f=e.suppressFlicker,N=e.unit,b=e.value,V=e.className,g=e.style,v=e.fillValue,_=e.color,k=e.ranges,y=void 0===k?{}:k,L=e.size,B=e.bipolar,w=(e.children,e.popUpPosition),x=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["animated","forcedInputWidth","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children","popUpPosition"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,forcedInputWidth:n,format:d,maxValue:u,minValue:s,onChange:m,onDrag:p,step:h,stepPixelSize:C,suppressFlicker:f,unit:N,value:b},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,l=e.displayElement,d=e.inputElement,m=e.handleDragStart,p=(0,r.scale)(null!=v?v:c,s,u),h=(0,r.scale)(c,s,u),C=_||(0,r.keyOfMatchingRange)(null!=v?v:n,y)||"default",f=270*(h-.5);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+C,B&&"Knob--bipolar",V,(0,a.computeBoxClassName)(x)]),[(0,o.createVNode)(1,"div","Knob__circle",(0,o.createVNode)(1,"div","Knob__cursorBox",(0,o.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+f+"deg)"}}),2),t&&(0,o.createVNode)(1,"div",(0,i.classes)(["Knob__popupValue",w&&"Knob__popupValue--"+w]),l,0),(0,o.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,o.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,o.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,o.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((B?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),d],0,Object.assign({},(0,a.computeBoxProps)(Object.assign({style:Object.assign({"font-size":L+"rem"},g)},x)),{onMouseDown:m})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var o=n(0),r=n(181);function i(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,o.createComponentVNode)(2,r.Flex.Item,{mx:1,children:(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,o.createComponentVNode)(2,r.Flex.Item),(0,o.createComponentVNode)(2,r.Flex.Item,{children:n}),(0,o.createComponentVNode)(2,r.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NanoMap=void 0;var o=n(0),r=n(2),i=n(1);var a=function(e){return e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.returnValue=!1,!1},c=function(e){var t,n;function c(t){var n;n=e.call(this,t)||this;var o=window.innerWidth/2-256,r=window.innerHeight/2-256;return n.state={offsetX:o,offsetY:r,transform:"none",dragging:!1,originX:null,originY:null,zoom:1},n.handleDragStart=function(e){n.ref=e.target,n.setState({dragging:!1,originX:e.screenX,originY:e.screenY}),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd),a(e)},n.handleDragMove=function(e){n.setState((function(t){var n=Object.assign({},t),o=e.screenX-n.originX,r=e.screenY-n.originY;return t.dragging?(n.offsetX+=o,n.offsetY+=r,n.originX=e.screenX,n.originY=e.screenY):n.dragging=!0,n})),a(e)},n.handleDragEnd=function(e){n.setState({dragging:!1,originX:null,originY:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a(e)},n.handleZoom=function(e,o){n.setState((function(e){var n=Math.min(Math.max(o,1),8),r=1.5*(n-e.zoom);e.zoom=n;var i=e.offsetX-262*r;i<-500&&(i=-500),i>500&&(i=500);var a=e.offsetY-256*r;return a<-200&&(a=-200),a>200&&(a=200),e.offsetX=i,e.offsetY=a,t.onZoom&&t.onZoom(e.zoom),e}))},n}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,c.prototype.render=function(){var e=(0,i.useBackend)(this.context).config,t=this.state,n=t.dragging,a=t.offsetX,c=t.offsetY,d=t.zoom,u=void 0===d?1:d,s=this.props.children,m=280*u+"px",p={width:m,height:m,"margin-top":c+"px","margin-left":a+"px",overflow:"hidden",position:"relative","background-image":"url("+e.map+"_nanomap_z"+e.mapZLevel+".png)","background-size":"cover","background-repeat":"no-repeat","text-align":"center",cursor:n?"move":"auto"};return(0,o.createComponentVNode)(2,r.Box,{className:"NanoMap__container",children:[(0,o.createComponentVNode)(2,r.Box,{style:p,textAlign:"center",onMouseDown:this.handleDragStart,children:(0,o.createComponentVNode)(2,r.Box,{children:s})}),(0,o.createComponentVNode)(2,l,{zoom:u,onZoom:this.handleZoom})]})},c}(o.Component);t.NanoMap=c;c.Marker=function(e,t){var n=e.x,i=e.y,c=e.zoom,l=void 0===c?1:c,d=e.icon,u=e.tooltip,s=e.color,m=e.onClick,p=2*n*l-l-3,h=2*i*l-l-3;return(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,r.Box,{position:"absolute",className:"NanoMap__marker",lineHeight:"0",bottom:h+"px",left:p+"px",onMouseDown:function(e){a(e),m(e)},children:[(0,o.createComponentVNode)(2,r.Icon,{name:d,color:s,fontSize:"6px"}),(0,o.createComponentVNode)(2,r.Tooltip,{content:u})]}),2)};var l=function(e,t){var n=(0,i.useBackend)(t),a=n.act,c=n.config,l=n.data;return(0,o.createComponentVNode)(2,r.Box,{className:"NanoMap__zoomer",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Zoom",children:(0,o.createComponentVNode)(2,r.Slider,{minValue:"1",maxValue:"8",stepPixelSize:"10",format:function(e){return e+"x"},value:e.zoom,onDrag:function(t,n){return e.onZoom(t,n)}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Z-Level",children:l.map_levels.sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return(0,o.createComponentVNode)(2,r.Button,{selected:~~e==~~c.mapZLevel,content:e,onClick:function(){a("setZLevel",{mapZLevel:e})}},e)}))})]})})};c.Zoomer=l},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var o=n(0),r=n(10),i=n(19),a=n(179);t.Modal=function(e){var t,n=e.className,c=e.children,l=e.onEnter,d=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","children","onEnter"]);return l&&(t=function(e){13===(e.which||e.keyCode)&&l(e)}),(0,o.createComponentVNode)(2,a.Dimmer,{onKeyDown:t,children:(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Modal",n,(0,i.computeBoxClassName)(d)]),c,0,Object.assign({},(0,i.computeBoxProps)(d))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(0),r=n(10),i=n(19);var a=function(e){var t=e.className,n=e.color,a=e.info,c=(e.warning,e.success),l=e.danger,d=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","color","info","warning","success","danger"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Box,Object.assign({className:(0,r.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",c&&"NoticeBox--type--success",l&&"NoticeBox--type--danger",t])},d)))};t.NoticeBox=a,a.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var o=n(0),r=n(5),i=n(10),a=n(19);var c=function(e){var t=e.className,n=e.value,c=e.minValue,l=void 0===c?0:c,d=e.maxValue,u=void 0===d?1:d,s=e.color,m=e.ranges,p=void 0===m?{}:m,h=e.children,C=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","value","minValue","maxValue","color","ranges","children"]),f=(0,r.scale)(n,l,u),N=h!==undefined,b=s||(0,r.keyOfMatchingRange)(n,p)||"default";return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+b,t,(0,a.computeBoxClassName)(C)]),[(0,o.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,r.clamp01)(f)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",N?h:(0,r.toFixed)(100*f)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(C))))};t.ProgressBar=c,c.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(0),r=n(10),i=n(19);var a=function(e){var t=e.className,n=e.title,a=e.level,c=void 0===a?1:a,l=e.buttons,d=e.fill,u=e.stretchContents,s=e.noTopPadding,m=e.children,p=e.scrollable,h=e.flexGrow,C=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","fill","stretchContents","noTopPadding","children","scrollable","flexGrow"]),f=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),N=!(0,r.isFalsy)(m);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Section","Section--level--"+c,d&&"Section--fill",p&&"Section--scrollable",h&&"Section--flex",t].concat((0,i.computeBoxClassName)(C))),[f&&(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),N&&(0,o.createVNode)(1,"div",(0,r.classes)(["Section__content",!!u&&"Section__content--stretchContents",!!s&&"Section__content--noTopPadding"]),m,0)],0,Object.assign({},(0,i.computeBoxProps)(C))))};t.Section=a,a.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var o=n(0),r=n(5),i=n(10),a=n(19),c=n(130),l=n(131);t.Slider=function(e){if(Byond.IS_LTE_IE8)return(0,o.normalizeProps)((0,o.createComponentVNode)(2,l.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,d=e.maxValue,u=e.minValue,s=e.onChange,m=e.onDrag,p=e.step,h=e.stepPixelSize,C=e.suppressFlicker,f=e.unit,N=e.value,b=e.className,V=e.fillValue,g=e.color,v=e.ranges,_=void 0===v?{}:v,k=e.children,y=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),L=k!==undefined;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:d,minValue:u,onChange:s,onDrag:m,step:p,stepPixelSize:h,suppressFlicker:C,unit:f,value:N},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,l=e.displayElement,s=e.inputElement,m=e.handleDragStart,p=V!==undefined&&null!==V,h=((0,r.scale)(n,u,d),(0,r.scale)(null!=V?V:c,u,d)),C=(0,r.scale)(c,u,d),f=g||(0,r.keyOfMatchingRange)(null!=V?V:n,_)||"default";return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+f,b,(0,a.computeBoxClassName)(y)]),[(0,o.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,r.clamp01)(h)+"%",opacity:.4}}),(0,o.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,r.clamp01)(Math.min(h,C))+"%"}}),(0,o.createVNode)(1,"div","Slider__cursorOffset",[(0,o.createVNode)(1,"div","Slider__cursor"),(0,o.createVNode)(1,"div","Slider__pointer"),t&&(0,o.createVNode)(1,"div","Slider__popupValue",l,0)],0,{style:{width:100*(0,r.clamp01)(C)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",L?k:l,0),s],0,Object.assign({},(0,a.computeBoxProps)(y),{onMouseDown:m})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var o=n(0),r=n(10),i=n(19),a=n(128);function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e.className,n=e.vertical,a=e.children,l=c(e,["className","vertical","children"]);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",t,(0,i.computeBoxClassName)(l)]),(0,o.createVNode)(1,"div","Tabs__tabBox",a,0),2,Object.assign({},(0,i.computeBoxProps)(l))))};t.Tabs=l;l.Tab=function(e){var t=e.className,n=e.selected,i=e.altSelection,l=c(e,["className","selected","altSelection"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",n&&"Tabs__tab--selected",i&&n&&"Tabs__tab--altSelection",t]),selected:!i&&n,color:"transparent"},l)))}},function(e,t,n){var o={"./AICard.js":465,"./APC.js":466,"./AccountsTerminal.js":467,"./AdminShuttleController.js":468,"./AgentCard.js":469,"./AiAirlock.js":470,"./AiRestorer.js":471,"./AiSupermatter.js":472,"./AirAlarm.js":473,"./AlgaeFarm.js":475,"./AppearanceChanger.js":476,"./ArcadeBattle.js":477,"./AreaScrubberControl.js":478,"./AssemblyInfrared.js":479,"./AssemblyProx.js":480,"./AssemblyTimer.js":481,"./AtmosAlertConsole.js":482,"./AtmosControl.js":186,"./AtmosFilter.js":483,"./AtmosMixer.js":484,"./Autolathe.js":485,"./Batteryrack.js":486,"./BeaconLocator.js":487,"./Biogenerator.js":488,"./BodyDesigner.js":489,"./BodyScanner.js":490,"./BombTester.js":491,"./BotanyEditor.js":492,"./BotanyIsolator.js":493,"./BrigTimer.js":494,"./CameraConsole.js":187,"./Canister.js":495,"./CasinoPrizeDispenserCh.js":496,"./CharacterDirectory.js":497,"./ChemDispenser.js":498,"./ChemMaster.js":502,"./ClawMachine.js":503,"./Cleanbot.js":504,"./CloningConsole.js":505,"./ColorMate.js":506,"./CommunicationsConsole.js":189,"./Communicator.js":507,"./ComputerFabricator.js":508,"./CookingAppliance.js":509,"./CrewManifest.js":94,"./CrewMonitor.js":190,"./Cryo.js":510,"./CryoStorage.js":191,"./CryoStorageVr.js":511,"./DNAForensics.js":512,"./DNAModifier.js":513,"./DestinationTagger.js":514,"./DiseaseSplicer.js":515,"./DishIncubator.js":516,"./DisposalBin.js":517,"./DroneConsole.js":518,"./EmbeddedController.js":519,"./ExonetNode.js":520,"./ExosuitFabricator.js":132,"./Farmbot.js":521,"./Fax.js":522,"./FileCabinet.js":523,"./Floorbot.js":524,"./GasPump.js":525,"./GasTemperatureSystem.js":526,"./GeneralAtmoControl.js":527,"./GeneralRecords.js":528,"./Gps.js":529,"./GravityGenerator.js":530,"./GuestPass.js":531,"./GyrotronControl.js":532,"./Holodeck.js":533,"./ICAssembly.js":534,"./ICCircuit.js":535,"./ICDetailer.js":536,"./ICPrinter.js":537,"./IDCard.js":538,"./IdentificationComputer.js":133,"./InventoryPanel.js":539,"./InventoryPanelHuman.js":540,"./IsolationCentrifuge.js":541,"./JanitorCart.js":542,"./Jukebox.js":543,"./LawManager.js":544,"./LookingGlass.js":545,"./MechaControlConsole.js":546,"./Medbot.js":547,"./MedicalRecords.js":548,"./MessageMonitor.js":549,"./Microwave.js":550,"./MiningOreProcessingConsole.js":551,"./MiningStackingConsole.js":552,"./MiningVendor.js":553,"./MuleBot.js":554,"./NIF.js":555,"./NTNetRelay.js":556,"./Newscaster.js":557,"./NoticeBoard.js":558,"./NtosAccessDecrypter.js":559,"./NtosArcade.js":560,"./NtosAtmosControl.js":561,"./NtosCameraConsole.js":562,"./NtosCommunicationsConsole.js":563,"./NtosConfiguration.js":564,"./NtosCrewMonitor.js":565,"./NtosDigitalWarrant.js":566,"./NtosEmailAdministration.js":567,"./NtosEmailClient.js":194,"./NtosFileManager.js":568,"./NtosIdentificationComputer.js":569,"./NtosMain.js":570,"./NtosNetChat.js":571,"./NtosNetDos.js":572,"./NtosNetDownloader.js":573,"./NtosNetMonitor.js":574,"./NtosNetTransfer.js":575,"./NtosNewsBrowser.js":576,"./NtosOvermapNavigation.js":577,"./NtosPowerMonitor.js":578,"./NtosRCON.js":579,"./NtosRevelation.js":580,"./NtosShutoffMonitor.js":581,"./NtosStationAlertConsole.js":582,"./NtosSupermatterMonitor.js":583,"./NtosUAV.js":584,"./NtosWordProcessor.js":585,"./OmniFilter.js":586,"./OmniMixer.js":587,"./OperatingComputer.js":588,"./OvermapDisperser.js":589,"./OvermapEngines.js":200,"./OvermapFull.js":590,"./OvermapHelm.js":201,"./OvermapNavigation.js":195,"./OvermapShieldGenerator.js":591,"./OvermapShipSensors.js":202,"./ParticleAccelerator.js":592,"./PartsLathe.js":593,"./PathogenicIsolator.js":594,"./Pda.js":595,"./Photocopier.js":610,"./PipeDispenser.js":611,"./PlantAnalyzer.js":612,"./PointDefenseControl.js":613,"./PortableGenerator.js":614,"./PortablePump.js":615,"./PortableScrubber.js":616,"./PortableTurret.js":617,"./PowerMonitor.js":135,"./PrecisionEditor.js":618,"./PressureRegulator.js":619,"./PrisonerManagement.js":620,"./RCON.js":196,"./RIGSuit.js":621,"./Radio.js":622,"./RapidPipeDispenser.js":204,"./RequestConsole.js":623,"./ResearchConsole.js":624,"./ResearchServerController.js":625,"./ResleevingConsole.js":626,"./ResleevingPod.js":627,"./RoboticsControlConsole.js":628,"./RogueZones.js":629,"./RustCoreMonitor.js":630,"./RustFuelControl.js":631,"./Secbot.js":632,"./SecurityRecords.js":633,"./SeedStorage.js":634,"./ShieldCapacitor.js":635,"./ShieldGenerator.js":636,"./ShutoffMonitor.js":197,"./ShuttleControl.js":637,"./Signaler.js":203,"./Sleeper.js":638,"./SmartVend.js":639,"./Smes.js":640,"./SolarControl.js":641,"./SpaceHeater.js":642,"./Stack.js":643,"./StarcasterCh.js":644,"./StationAlertConsole.js":198,"./StationBlueprints.js":645,"./SuitCycler.js":646,"./SuitStorageUnit.js":647,"./SupermatterMonitor.js":199,"./SupplyConsole.js":648,"./TEGenerator.js":649,"./Tank.js":650,"./TankDispenser.js":651,"./TelecommsLogBrowser.js":652,"./TelecommsMachineBrowser.js":653,"./TelecommsMultitoolMenu.js":654,"./Teleporter.js":655,"./TelesciConsole.js":656,"./TimeClock.js":657,"./TransferValve.js":658,"./TurbineControl.js":659,"./Turbolift.js":660,"./Uplink.js":661,"./Vending.js":662,"./VolumePanel.js":663,"./VorePanel.js":664,"./Wires.js":665,"./XenoarchArtifactAnalyzer.js":666,"./XenoarchArtifactHarvester.js":667,"./XenoarchDepthScanner.js":668,"./XenoarchHandheldPowerUtilizer.js":669,"./XenoarchReplicator.js":670,"./XenoarchSpectrometer.js":671,"./XenoarchSuspension.js":672,"./pAIAtmos.js":673,"./pAIDirectives.js":674,"./pAIDoorjack.js":675,"./pAIInterface.js":676,"./pAIMedrecords.js":677,"./pAISecrecords.js":678};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=i,e.exports=r,r.id=464},function(e,t,n){"use strict";t.__esModule=!0,t.AICard=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AICard=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.has_ai,u=l.integrity,s=l.backup_capacitor,m=l.flushing,p=l.has_laws,h=l.laws,C=l.wireless,f=l.radio;if(0===d)return(0,o.createComponentVNode)(2,a.Window,{width:600,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createVNode)(1,"h3",null,"No AI detected.",16)})})})});var N=null;N=u>=75?"green":u>=25?"yellow":"red";var b=null;return s>=75&&(b="green"),b=s>=25?"yellow":"red",(0,o.createComponentVNode)(2,a.Window,{width:600,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Stored AI",children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,display:"inline-block",children:(0,o.createVNode)(1,"h3",null,name,0)}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:N,value:u/100})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:b,value:s/100})})]})}),(0,o.createComponentVNode)(2,i.Box,{color:"red",children:(0,o.createVNode)(1,"h2",null,1===m?"Wipe of AI in progress...":"",0)})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Laws",children:!!p&&(0,o.createComponentVNode)(2,i.Box,{children:h.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",children:e},t)}))})||(0,o.createComponentVNode)(2,i.Box,{color:"red",children:(0,o.createVNode)(1,"h3",null,"No laws detected.",16)})}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Wireless Activity",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"check":"times",content:C?"Enabled":"Disabled",color:C?"green":"red",onClick:function(){return c("wireless")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Subspace Transceiver",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"check":"times",content:f?"Enabled":"Disabled",color:f?"green":"red",onClick:function(){return c("radio")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"AI Power",children:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"radiation",confirmIcon:"radiation",disabled:m||0===u,confirmColor:"red",content:"Shutdown",onClick:function(){return c("wipe")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.APC=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(185),l=n(61);t.APC=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=(0,o.createComponentVNode)(2,u);return i.gridCheck?c=(0,o.createComponentVNode)(2,s):i.failTime&&(c=(0,o.createComponentVNode)(2,m)),(0,o.createComponentVNode)(2,a.Window,{width:450,height:475,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:c})})};var 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=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,u=l.locked&&!l.siliconUser,s=(l.normallyLocked,d[l.externalPower]||d[0]),m=d[l.chargingStatus]||d[0],p=l.powerChannels||[],h=l.powerCellStatus/100;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{deny:l.emagged,denialMessage:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{color:"bad",fontSize:"1.5rem",children:"Fault in ID authenticator."}),(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Please contact maintenance for service."})],4)}),(0,o.createComponentVNode)(2,i.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Main Breaker",color:s.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.isOperating?"power-off":"times",content:l.isOperating?"On":"Off",selected:l.isOperating&&!u,color:l.isOperating?"":"bad",disabled:u,onClick:function(){return a("breaker")}}),children:["[ ",s.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:"good",value:h})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Mode",color:m.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.chargeMode?"sync":"times",content:l.chargeMode?"Auto":"Off",selected:l.chargeMode,disabled:u,onClick:function(){return a("charge")}}),children:["[ ",m.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[p.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Auto",selected:!u&&(1===e.status||3===e.status),disabled:u,onClick:function(){return a("channel",t.auto)}}),(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:"On",selected:!u&&2===e.status,disabled:u,onClick:function(){return a("channel",t.on)}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Off",selected:!u&&0===e.status,disabled:u,onClick:function(){return a("channel",t.off)}})],4),children:[e.powerLoad," W"]},e.title)})),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Load",children:l.totalCharging?(0,o.createVNode)(1,"b",null,[l.totalLoad,(0,o.createTextVNode)(" W (+ "),l.totalCharging,(0,o.createTextVNode)(" W charging)")],0):(0,o.createVNode)(1,"b",null,[l.totalLoad,(0,o.createTextVNode)(" W")],0)})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Misc",buttons:!!l.siliconUser&&(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return a("overload")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.coverLocked?"lock":"unlock",content:l.coverLocked?"Engaged":"Disengaged",selected:l.coverLocked,disabled:u,onClick:function(){return a("cover")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Disabled",selected:2===l.nightshiftSetting,onClick:function(){return a("nightshift",{nightshift:2})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Automatic",selected:1===l.nightshiftSetting,onClick:function(){return a("nightshift",{nightshift:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Enabled",selected:3===l.nightshiftSetting,onClick:function(){return a("nightshift",{nightshift:3})}})],4)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:l.emergencyLights?"Enabled":"Disabled",selected:l.emergencyLights,onClick:function(){return a("emergency_lighting")}})})]})})],4)},s=function(e,t){return(0,o.createComponentVNode)(2,l.FullscreenNotice,{title:"System Failure",children:[(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,children:(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"})}),(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,children:"Power surge detected, grid check in effect..."})]})},m=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=n.act,l=(0,o.createComponentVNode)(2,i.Button,{icon:"repeat",content:"Restart Now",color:"good",onClick:function(){return c("reboot")}});return a.locked&&!a.siliconUser&&(l=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Swipe an ID card for manual reboot."})),(0,o.createComponentVNode)(2,i.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:(0,o.createVNode)(1,"h1",null,"SYSTEM FAILURE",16)}),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:(0,o.createVNode)(1,"h2",null,"I/O regulators malfunction detected! Waiting for system reboot...",16)}),(0,o.createComponentVNode)(2,i.Box,{color:"good",children:["Automatic reboot in ",a.failTime," seconds..."]}),(0,o.createComponentVNode)(2,i.Box,{mt:4,children:l})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AccountsTerminal=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.AccountsTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.id_inserted,s=d.id_card,m=d.access_level,p=d.machine_id;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:640,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Machine",color:"average",children:p}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"eject":"sign-in-alt",fluid:!0,content:s,onClick:function(){return l("insert_card")}})})]})}),m>0&&(0,o.createComponentVNode)(2,c)]})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,s=c.creating_new_account,m=c.detailed_account_view;return(0,o.createComponentVNode)(2,i.Section,{title:"Menu",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:!s&&!m,icon:"home",onClick:function(){return a("view_accounts_list")},children:"Home"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:s,icon:"cog",onClick:function(){return a("create_account")},children:"New Account"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{disabled:s,icon:"print",onClick:function(){return a("print")},children:"Print"})]}),s&&(0,o.createComponentVNode)(2,l)||m&&(0,o.createComponentVNode)(2,d)||(0,o.createComponentVNode)(2,u)]})},l=function(e,t){var n=(0,r.useBackend)(t).act,a=(0,r.useSharedState)(t,"holder",""),c=a[0],l=a[1],d=(0,r.useSharedState)(t,"money",""),u=d[0],s=d[1];return(0,o.createComponentVNode)(2,i.Section,{title:"Create Account",level:2,children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Account Holder",children:(0,o.createComponentVNode)(2,i.Input,{value:c,fluid:!0,onInput:function(e,t){return l(t)}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Initial Deposit",children:(0,o.createComponentVNode)(2,i.Input,{value:u,fluid:!0,onInput:function(e,t){return s(t)}})})]}),(0,o.createComponentVNode)(2,i.Button,{disabled:!c||!u,mt:1,fluid:!0,icon:"plus",onClick:function(){return n("finalise_create_account",{holder_name:c,starting_funds:u})},content:"Create"})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.access_level,d=c.station_account_number,u=c.account_number,s=c.owner_name,m=c.money,p=c.suspended,h=c.transactions;return(0,o.createComponentVNode)(2,i.Section,{title:"Account Details",level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"ban",selected:p,content:"Suspend",onClick:function(){return a("toggle_suspension")}}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Account Number",children:["#",u]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Holder",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Balance",children:[m,"\u20ae"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:p?"bad":"good",children:p?"SUSPENDED":"Active"})]}),(0,o.createComponentVNode)(2,i.Section,{title:"CentCom Administrator",level:2,mt:1,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Payroll",children:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"bad",fluid:!0,icon:"ban",confirmIcon:"ban",content:"Revoke",confirmContent:"This cannot be undone.",disabled:u===d,onClick:function(){return a("revoke_payroll")}})})})}),l>=2&&(0,o.createComponentVNode)(2,i.Section,{title:"Silent Funds Transfer",level:2,children:[(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_funds")},content:"Add Funds"}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("remove_funds")},content:"Remove Funds"})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Transactions",level:2,mt:1,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:"Timestamp"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Target"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Reason"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Value"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Terminal"})]}),h.map((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.date," ",e.time]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.target_name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.purpose}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.amount,"\u20ae"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.source_terminal})]},t)}))]})})]})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.accounts;return(0,o.createComponentVNode)(2,i.Section,{title:"NanoTrasen Accounts",level:2,children:c.length&&(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.owner_name+e.suspended,color:e.suspended?"bad":null,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"#"+e.account_number,onClick:function(){return a("view_account_detail",{account_index:e.account_index})}})},e.account_index)}))})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"There are no accounts available."})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleList=t.AdminShuttleController=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.AdminShuttleController=function(e,t){var n=(0,i.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,u=l.shuttles,s=l.overmap_ships;return(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Classic Shuttles",level:2,children:(0,o.createComponentVNode)(2,a.Table,{children:(0,r.sortBy)((function(e){return e.name}))(u).map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{m:0,content:"JMP",onClick:function(){return c("adminobserve",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{m:0,content:"Fly",onClick:function(){return c("classicmove",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.current_location}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d(e.status)})]},e.ref)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Overmap Ships",level:2,children:(0,o.createComponentVNode)(2,a.Table,{children:(0,r.sortBy)((function(e){var t;return(null==(t=e.name)?void 0:t.toLowerCase())||e.name||e.ref}))(s).map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"JMP",onClick:function(){return c("adminobserve",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Control",onClick:function(){return c("overmap_control",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name})]},e.ref)}))})})]})};t.ShuttleList=l;var d=function(e){switch(e){case 0:return"Idle";case 1:return"Warmup";case 2:return"Transit";default:return"UNK"}}},function(e,t,n){"use strict";t.__esModule=!0,t.AgentCard=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.AgentCard=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.entries,u=l.electronic_warfare;return(0,o.createComponentVNode)(2,a.Window,{width:550,height:400,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Info",children:(0,o.createComponentVNode)(2,i.Table,{children:d.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,{onClick:function(){return c(e.name.toLowerCase().replace(/ /g,""))},icon:"cog"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.value})]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Electronic Warfare",children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u,content:u?"Electronic warfare is enabled. This will prevent you from being tracked by the AI.":"Electronic warfare disabled.",onClick:function(){return c("electronic_warfare")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c={2:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Offline"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=c[d.power.main]||c[0],s=c[d.power.backup]||c[0],m=c[d.shock]||c[0];return(0,o.createComponentVNode)(2,a.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,a.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.AI_present,d=c.error,u=c.name,s=c.laws,m=c.isDead,p=c.restoring,h=c.health,C=c.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:d}),!!C&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return a("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,i.Section,{title:C?"System Status":u,buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:h,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return a("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,i.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.AiSupermatter=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=(n(20),n(61));t.AiSupermatter=function(e,t){var n=(0,r.useBackend)(t).data,i=(n.integrity_percentage,n.ambient_temp,n.ambient_pressure,n.detonating),c=(0,o.createComponentVNode)(2,d);return i&&(c=(0,o.createComponentVNode)(2,l)),(0,o.createComponentVNode)(2,a.Window,{width:500,height:300,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:c})})};var l=function(e,t){return(0,o.createComponentVNode)(2,c.FullscreenNotice,{title:"DETONATION IMMINENT",children:(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{color:"bad",name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"}),(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"CRYSTAL DELAMINATING"}),(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Evacuate area immediately"})]})})},d=function(e,t){var n=(0,r.useBackend)(t).data,a=n.integrity_percentage,c=n.ambient_temp,l=n.ambient_pressure;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Crystal Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:a,maxValue:100,ranges:{good:[90,Infinity],average:[25,90],bad:[-Infinity,25]}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Environment Temperature",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:c,maxValue:1e4,ranges:{bad:[5e3,Infinity],average:[4e3,5e3],good:[-Infinity,4e3]},children:[c," K"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Environment Pressure",children:[l," kPa"]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(0),r=n(5),i=(n(6),n(1)),a=n(2),c=n(28),l=n(3),d=n(185),u=n(474);t.AirAlarm=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),a=r.locked&&!r.siliconUser&&!r.remoteUser;return(0,o.createComponentVNode)(2,l.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m),!a&&(0,o.createComponentVNode)(2,h)]})})};var s=function(e,t){var n=(0,i.useBackend)(t).data,l=(n.environment_data||[]).filter((function(e){return e.value>=.01})),d={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},u=d[n.danger_level]||d[0];return(0,o.createComponentVNode)(2,a.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[l.length>0&&(0,o.createFragment)([l.map((function(e){var t=d[e.danger_level]||d[0];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,c.getGasLabel)(e.name),color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Local status",color:u.color,children:u.localStatusText}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.target_temperature,d=c.rcon;return(0,o.createComponentVNode)(2,a.Section,{title:"Comfort Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Control",children:[(0,o.createComponentVNode)(2,a.Button,{selected:1===d,content:"Off",onClick:function(){return r("rcon",{rcon:1})}}),(0,o.createComponentVNode)(2,a.Button,{selected:2===d,content:"Auto",onClick:function(){return r("rcon",{rcon:2})}}),(0,o.createComponentVNode)(2,a.Button,{selected:3===d,content:"On",onClick:function(){return r("rcon",{rcon:3})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Thermostat",children:(0,o.createComponentVNode)(2,a.Button,{content:l,onClick:function(){return r("temperature")}})})]})})},p={home:{title:"Air Controls",component:function(){return C}},vents:{title:"Vent Controls",component:function(){return f}},scrubbers:{title:"Scrubber Controls",component:function(){return N}},modes:{title:"Operating Mode",component:function(){return b}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},h=function(e,t){var n=(0,i.useLocalState)(t,"screen"),r=n[0],c=n[1],l=p[r]||p.home,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c()}}),children:(0,o.createComponentVNode)(2,d)})},C=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=(0,i.useLocalState)(t,"screen"),d=(l[0],l[1]),u=c.mode,s=c.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,a.Box,{mt:2}),(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},f=function(e,t){var n=(0,i.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,u.Vent,{vent:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,i.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,u.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},b=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.modes;return c&&0!==c.length?c.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,a.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.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,d.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",(0,o.createVNode)(1,"span","color-"+(0,c.getGasColor)(e.name),(0,c.getGasLabel)(e.name),0),2),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return l("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.Scrubber=t.Vent=void 0;var o=n(0),r=n(6),i=n(1),a=n(2);n(28);t.Vent=function(e,t){var n=e.vent,c=(0,i.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,h=n.direction,C=n.external,f=n.internal,N=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,a.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return c("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-in-alt",content:"siphon"!==h?"Pressurizing":"Siphoning",color:"siphon"===h&&"danger",onClick:function(){return c("direction",{id_tag:l,val:Number("siphon"===h)})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return c("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return c("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(f),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return c("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return c("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(C),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return c("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:N,content:"Reset",onClick:function(){return c("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,c=(0,i.useBackend)(t).act,l=n.long_name,d=n.power,u=n.scrubbing,s=n.id_tag,m=(n.widenet,n.filters);return(0,o.createComponentVNode)(2,a.Section,{level:2,title:(0,r.decodeHtmlEntities)(l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return c("power",{id_tag:s,val:Number(!d)})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"filter":"sign-in-alt",color:u||"danger",content:u?"Scrubbing":"Siphoning",onClick:function(){return c("scrubbing",{id_tag:s,val:Number(!u)})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filters",children:u&&m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.val?"check-square-o":"square-o",content:e.name,title:e.name,selected:e.val,onClick:function(){return c(e.command,{id_tag:s,val:!e.val})}},e.name)}))||"N/A"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AlgaeFarm=void 0;var o=n(0),r=n(1),i=n(2),a=(n(20),n(3)),c=(n(5),n(6));t.AlgaeFarm=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.usePower,s=d.materials,m=d.last_flow_rate,p=d.last_power_draw,h=d.inputDir,C=d.outputDir,f=d.input,N=d.output,b=d.errorText;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[b&&(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",verticalAlign:"middle",children:b})}),(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:"Processing",selected:2===u,onClick:function(){return l("toggle")}}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate",children:[m," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Draw",children:[p," W"]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:1}),s.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(0,c.capitalize)(e.display),children:[(0,o.createComponentVNode)(2,i.ProgressBar,{width:"80%",value:e.qty,maxValue:e.max,children:[e.qty,"/",e.max]}),(0,o.createComponentVNode)(2,i.Button,{ml:1,content:"Eject",onClick:function(){return l("ejectMaterial",{mat:e.name})}})]},e.name)}))]}),(0,o.createComponentVNode)(2,i.Table,{mt:1,children:(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Gas Input ("+h+")",children:f?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Pressure",children:[f.pressure," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:f.name,children:[f.percent,"% (",f.moles," moles)"]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No connection detected."})})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Gas Output ("+C+")",children:N?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Pressure",children:[N.pressure," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:N.name,children:[N.percent,"% (",N.moles," moles)"]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No connection detected."})})})]})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AppearanceChanger=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2),l=n(3);t.AppearanceChanger=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.config),N=n.data,b=N.name,V=N.specimen,g=N.gender,v=N.gender_id,_=N.hair_style,k=N.facial_hair_style,y=N.ear_style,L=N.tail_style,B=N.wing_style,w=N.change_race,x=N.change_gender,S=N.change_eye_color,I=N.change_skin_tone,T=N.change_skin_color,A=N.change_hair_color,E=N.change_facial_hair_color,M=N.change_hair,P=N.change_facial_hair,O=N.mapRef,F=r.title,R=S||I||T||A||E,D=-1;w?D=0:x?D=1:R?D=2:M?D=4:P&&(D=5);var j=(0,a.useLocalState)(t,"tabIndex",D),W=j[0],z=j[1];return(0,o.createComponentVNode)(2,l.Window,{width:700,height:650,title:(0,i.decodeHtmlEntities)(F),children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{title:"Reflection",children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:b}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Species",color:w?null:"grey",children:V}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Biological Sex",color:x?null:"grey",children:g?(0,i.capitalize)(g):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Gender Identity",color:R?null:"grey",children:v?(0,i.capitalize)(v):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Hair Style",color:M?null:"grey",children:_?(0,i.capitalize)(_):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Facial Hair Style",color:P?null:"grey",children:k?(0,i.capitalize)(k):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Ear Style",color:M?null:"grey",children:y?(0,i.capitalize)(y):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Tail Style",color:M?null:"grey",children:L?(0,i.capitalize)(L):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Wing Style",color:M?null:"grey",children:B?(0,i.capitalize)(B):"Not Set"})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.ByondUi,{style:{width:"256px",height:"256px"},params:{id:O,type:"map"}})})]})}),(0,o.createComponentVNode)(2,c.Tabs,{children:[w?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:0===W,onClick:function(){return z(0)},children:"Race"}):null,x?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===W,onClick:function(){return z(1)},children:"Gender & Sex"}):null,R?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===W,onClick:function(){return z(2)},children:"Colors"}):null,M?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===W,onClick:function(){return z(3)},children:"Hair"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:5===W,onClick:function(){return z(5)},children:"Ear"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:6===W,onClick:function(){return z(6)},children:"Tail"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:7===W,onClick:function(){return z(7)},children:"Wing"})],4):null,P?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:4===W,onClick:function(){return z(4)},children:"Facial Hair"}):null]}),(0,o.createComponentVNode)(2,c.Box,{height:"43%",children:[w&&0===W?(0,o.createComponentVNode)(2,d):null,x&&1===W?(0,o.createComponentVNode)(2,u):null,R&&2===W?(0,o.createComponentVNode)(2,s):null,M&&3===W?(0,o.createComponentVNode)(2,m):null,P&&4===W?(0,o.createComponentVNode)(2,p):null,M&&5===W?(0,o.createComponentVNode)(2,h):null,M&&6===W?(0,o.createComponentVNode)(2,C):null,M&&7===W?(0,o.createComponentVNode)(2,f):null]})]})})};var d=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.species,u=l.specimen,s=(0,r.sortBy)((function(e){return e.specimen}))(d||[]);return(0,o.createComponentVNode)(2,c.Section,{title:"Species",fill:!0,scrollable:!0,children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{content:e.specimen,selected:u===e.specimen,onClick:function(){return i("race",{race:e.specimen})}},e.specimen)}))})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.gender,d=i.gender_id,u=i.genders,s=i.id_genders;return(0,o.createComponentVNode)(2,c.Section,{title:"Gender & Sex",fill:!0,scrollable:!0,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Biological Sex",children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{selected:e.gender_key===l,content:e.gender_name,onClick:function(){return r("gender",{gender:e.gender_key})}},e.gender_key)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Gender Identity",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{selected:e.gender_key===d,content:e.gender_name,onClick:function(){return r("gender_id",{gender_id:e.gender_key})}},e.gender_key)}))})]})})},s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.change_eye_color,d=i.change_skin_tone,u=i.change_skin_color,s=i.change_hair_color,m=i.change_facial_hair_color,p=i.eye_color,h=i.skin_color,C=i.hair_color,f=i.facial_hair_color,N=i.ears_color,b=i.ears2_color,V=i.tail_color,g=i.tail2_color,v=i.wing_color,_=i.wing2_color;return(0,o.createComponentVNode)(2,c.Section,{title:"Colors",fill:!0,scrollable:!0,children:[l?(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:p,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Eye Color",onClick:function(){return r("eye_color")}})]}):null,d?(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Change Skin Tone",onClick:function(){return r("skin_tone")}})}):null,u?(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:h,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Skin Color",onClick:function(){return r("skin_color")}})]}):null,s?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:C,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Hair Color",onClick:function(){return r("hair_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:N,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Ears Color",onClick:function(){return r("ears_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:b,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Secondary Ears Color",onClick:function(){return r("ears2_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:V,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Tail Color",onClick:function(){return r("tail_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:g,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Secondary Tail Color",onClick:function(){return r("tail2_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:v,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Wing Color",onClick:function(){return r("wing_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:_,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Secondary Wing Color",onClick:function(){return r("wing2_color")}})]})],4):null,m?(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:f,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Facial Hair Color",onClick:function(){return r("facial_hair_color")}})]}):null]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.hair_style,d=i.hair_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Hair",fill:!0,scrollable:!0,children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return r("hair",{hair:e.hairstyle})},selected:e.hairstyle===l,content:e.hairstyle},e.hairstyle)}))})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.facial_hair_style,d=i.facial_hair_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Facial Hair",fill:!0,scrollable:!0,children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return r("facial_hair",{facial_hair:e.facialhairstyle})},selected:e.facialhairstyle===l,content:e.facialhairstyle},e.facialhairstyle)}))})},h=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ear_style,u=l.ear_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Ears",fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("ear",{clear:!0})},selected:null===d,content:"-- Not Set --"}),(0,r.sortBy)((function(e){return e.name.toLowerCase()}))(u).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("ear",{ref:e.instance})},selected:e.name===d,content:e.name},e.instance)}))]})},C=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.tail_style,u=l.tail_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Tails",fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("tail",{clear:!0})},selected:null===d,content:"-- Not Set --"}),(0,r.sortBy)((function(e){return e.name.toLowerCase()}))(u).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("tail",{ref:e.instance})},selected:e.name===d,content:e.name},e.instance)}))]})},f=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.wing_style,u=l.wing_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Wings",fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("wing",{clear:!0})},selected:null===d,content:"-- Not Set --"}),(0,r.sortBy)((function(e){return e.name.toLowerCase()}))(u).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("wing",{ref:e.instance})},selected:e.name===d,content:e.name},e.instance)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ArcadeBattle=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ArcadeBattle=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(l.name,l.temp),u=l.enemyAction,s=l.enemyName,m=l.playerHP,p=l.playerMP,h=l.enemyHP,C=(l.enemyMP,l.gameOver);return(0,o.createComponentVNode)(2,a.Window,{width:400,height:240,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:s,textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Section,{color:"label",children:[(0,o.createComponentVNode)(2,i.Box,{children:d}),(0,o.createComponentVNode)(2,i.Box,{children:!C&&u})]}),(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[m,"HP"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:p,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[p,"MP"]})})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Enemy HP",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:h,minValue:0,maxValue:45,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[h,"HP"]})})})})]}),C&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mt:1,color:"green",content:"New Game",onClick:function(){return c("newgame")}})||(0,o.createComponentVNode)(2,i.Flex,{mt:2,justify:"space-between",spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",onClick:function(){return c("attack")},content:"Attack!"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",onClick:function(){return c("heal")},content:"Heal!"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",onClick:function(){return c("charge")},content:"Recharge!"})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AreaScrubberControl=void 0;var o=n(0),r=n(2),i=n(1),a=n(3),c=n(6);t.AreaScrubberControl=function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=(0,i.useLocalState)(t,"showArea",!1),s=u[0],m=u[1],p=d.scrubbers;return p?(0,o.createComponentVNode)(2,a.Window,{width:600,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Flex,{wrap:"wrap",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"search",content:"Scan",onClick:function(){return c("scan")}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",grow:1,children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"layer-group",content:"Show Areas",selected:s,onClick:function(){return m(!s)}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"toggle-on",content:"All On",onClick:function(){return c("allon")}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",grow:1,children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"toggle-off",content:"All Off",onClick:function(){return c("alloff")}})})]}),(0,o.createComponentVNode)(2,r.Flex,{wrap:"wrap",children:p.map((function(e){return(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"32%",children:(0,o.createComponentVNode)(2,l,{scrubber:e,showArea:s})},e.id)}))})]})})}):(0,o.createComponentVNode)(2,r.Section,{title:"Error",children:[(0,o.createComponentVNode)(2,r.Box,{color:"bad",children:"No Scrubbers Detected."}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"search",content:"Scan",onClick:function(){return c("scan")}})]})};var l=function(e,t){var n=(0,i.useBackend)(t).act,a=e.scrubber,l=e.showArea;return(0,o.createComponentVNode)(2,r.Section,{title:a.name,children:[(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"power-off",content:a.on?"Enabled":"Disabled",selected:a.on,onClick:function(){return n("toggle",{id:a.id})}}),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Pressure",children:[a.pressure," kPa"]}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Flow Rate",children:[a.flow_rate," L/s"]}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Load",children:[a.load," W"]}),l&&(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Area",children:(0,c.toTitleCase)(a.area)})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AssemblyInfrared=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.AssemblyInfrared=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Infrared Unit",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Laser",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",fluid:!0,selected:d,onClick:function(){return c("state")},children:d?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye",fluid:!0,selected:u,onClick:function(){return c("visible")},children:u?"Able to be seen":"Invisible"})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AssemblyProx=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.AssemblyProx=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.timing,m=u.time,p=u.range,h=u.maxRange,C=u.scanning;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Timing Unit",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"stopwatch",selected:s,onClick:function(){return d("timing")},children:s?"Counting Down":"Disabled"}),children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,fluid:!0,value:m/10,minValue:0,maxValue:600,format:function(e){return(0,l.formatTime)((0,r.round)(e))},onDrag:function(e,t){return d("set_time",{time:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prox Unit",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,a.NumberInput,{minValue:1,value:p,maxValue:h,onDrag:function(e,t){return d("range",{range:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Armed",children:[(0,o.createComponentVNode)(2,a.Button,{mr:1,icon:C?"lock":"lock-open",selected:C,onClick:function(){return d("scanning")},children:C?"ARMED":"Unarmed"}),"Movement sensor is active when armed!"]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AssemblyTimer=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.AssemblyTimer=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.timing,m=u.time;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Timing Unit",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"stopwatch",selected:s,onClick:function(){return d("timing")},children:s?"Counting Down":"Disabled"}),children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,fluid:!0,value:m/10,minValue:0,maxValue:600,format:function(e){return(0,l.formatTime)((0,r.round)(e))},onDrag:function(e,t){return d("set_time",{time:t})}})})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.priority_alarms||[],u=l.minor_alarms||[];return(0,o.createComponentVNode)(2,a.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:e.name,color:"bad",onClick:function(){return c("clear",{ref:e.ref})}}),2,null,e.name)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:e.name,color:"average",onClick:function(){return c("clear",{ref:e.ref})}}),2,null,e.name)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(1),i=n(2),a=(n(28),n(3));t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.filter_types||[];return(0,o.createComponentVNode)(2,a.Window,{width:390,height:187,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return c("power")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1,children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:l.last_flow_rate,format:function(e){return e+" L/s"}})}),(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return c("rate",{rate:t})}}),(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return c("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Filter",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{selected:e.selected,content:e.name,onClick:function(){return c("filter",{filterset:e.f_type})}},e.name)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createComponentVNode)(2,a.Window,{width:370,height:195,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return c("power")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure,step:10,onChange:function(e,t){return c("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return c("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:1}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"label",children:(0,o.createVNode)(1,"u",null,"Concentrations",16)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Node 1 ("+l.node1_dir+")",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return c("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Node 2 ("+l.node2_dir+")",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return c("node2",{concentration:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Autolathe=void 0;var o=n(0),r=(n(5),n(41)),i=n(8),a=n(1),c=n(2),l=n(3),d=n(132),u=n(6),s=function(e,t){if(null===e.requirements)return!0;for(var n=Object.keys(e.requirements),o=function(){var n=i[r],o=t.find((function(e){return e.name===n}));return o?o.amount=e[1].price/d.build_eff,e[1]})).sort(l[f]);if(0!==n.length)return b&&(n=n.reverse()),g=!0,(0,o.createComponentVNode)(2,m,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,a.Section,{onClick:function(e){return(0,c.refocusLayout)()},children:g?v:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No items matching your criteria was found!"})})})},u=function(e,t){var n=(0,i.useLocalState)(t,"search",""),r=(n[0],n[1]),c=(0,i.useLocalState)(t,"sort",""),d=(c[0],c[1]),u=(0,i.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:"Alphabetical",options:Object.keys(l),width:"100%",lineHeight:"19px",onSelected:function(e){return d(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"arrow-down":"arrow-up",height:"19px",tooltip:s?"Descending order":"Ascending order",tooltipPosition:"bottom-left",ml:"0.5rem",onClick:function(){return m(!s)}})})]})})},s=function(e,t){return!!e.affordable&&!(e.reagent&&!t.beaker)},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=e.title,d=e.items,u=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Collapsible,Object.assign({open:!0,title:l},u,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s(e,c),content:(e.price/c.build_eff).toLocaleString("en-US"),width:"15%",textAlign:"center",style:{float:"right"},onClick:function(){return r("purchase",{cat:l,name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{style:{clear:"both"}})]},e.name)}))})))}},function(e,t,n){"use strict";t.__esModule=!0,t.BodyDesigner=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3);t.BodyDesigner=function(e,t){var n=(0,i.useBackend)(t),r=n.act,d=n.data,u=d.menu,s=d.disk,m=d.diskStored,p=d.activeBodyRecord,h=l[u];return(0,o.createComponentVNode)(2,c.Window,{width:400,height:650,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[s?(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save To Disk",onClick:function(){return r("savetodisk")},disabled:!p}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Load From Disk",onClick:function(){return r("loadfromdisk")},disabled:!m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return r("ejectdisk")}})]}):null,h]})})};var l={Main:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Database Functions",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:"View Individual Body Records",onClick:function(){return r("menu",{menu:"Body Records"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:"View Stock Body Records",onClick:function(){return r("menu",{menu:"Stock Records"})}})]})})),"Body Records":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.bodyrecords;return(0,o.createComponentVNode)(2,a.Section,{title:"Body Records",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("menu",{menu:"Main"})}}),children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:e.name,onClick:function(){return r("view_brec",{view_brec:e.recref})}},e.name)}))})})),"Stock Records":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.stock_bodyrecords;return(0,o.createComponentVNode)(2,a.Section,{title:"Stock Records",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("menu",{menu:"Main"})}}),children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:e,onClick:function(){return r("view_stock_brec",{view_stock_brec:e})}},e)}))})})),"Specific Record":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.activeBodyRecord,u=l.mapRef;return d?(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"165px",children:(0,o.createComponentVNode)(2,a.Section,{title:"Specific Record",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("menu",{menu:"Main"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.real_name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:d.speciesname}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bio. Sex",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:(0,r.capitalize)(d.gender),onClick:function(){return c("href_conversion",{target_href:"bio_gender",target_value:1})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Synthetic",children:d.synthetic}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Compat",children:[d.locked,(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eye",content:"View OOC Notes",disabled:!d.booc,onClick:function(){return c("boocnotes")}})]})]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"130px",children:(0,o.createComponentVNode)(2,a.ByondUi,{style:{width:"100%",height:"128px"},params:{id:u,type:"map"}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"300px",children:(0,o.createComponentVNode)(2,a.Section,{title:"Customize",height:"300px",style:{overflow:"auto"},children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scale",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:d.scale,onClick:function(){return c("href_conversion",{target_href:"size_multiplier",target_value:1})}})}),Object.keys(d.styles).map((function(e){var t=d.styles[e];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:[t.styleHref?(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:t.style,onClick:function(){return c("href_conversion",{target_href:t.styleHref,target_value:1})}}):null,t.colorHref?(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:t.color,onClick:function(){return c("href_conversion",{target_href:t.colorHref,target_value:1})}}),(0,o.createComponentVNode)(2,a.ColorBox,{verticalAlign:"top",width:"32px",height:"20px",color:t.color,style:{border:"1px solid #fff"}})]}):null,t.colorHref2?(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:t.color2,onClick:function(){return c("href_conversion",{target_href:t.colorHref2,target_value:1})}}),(0,o.createComponentVNode)(2,a.ColorBox,{verticalAlign:"top",width:"32px",height:"20px",color:t.color2,style:{border:"1px solid #fff"}})]}):null]},e)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Body Markings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Marking",onClick:function(){return c("href_conversion",{target_href:"marking_style",target_value:1})}}),(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",justify:"center",align:"center",children:Object.keys(d.markings).map((function(e){var t=d.markings[e];return(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"100%",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{mr:.2,fluid:!0,icon:"times",color:"red",onClick:function(){return c("href_conversion",{target_href:"marking_remove",target_value:e})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,backgroundColor:t,content:e,onClick:function(){return c("href_conversion",{target_href:"marking_color",target_value:e})}})})]})},e)}))})]})]})})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR: Record Not Found!"})})),"OOC Notes":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.activeBodyRecord;return(0,o.createComponentVNode)(2,a.Section,{title:"Body OOC Notes (This is OOC!)",height:"100%",scrollable:!0,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("menu",{menu:"Specific Record"})}}),style:{"word-break":"break-all"},children:c&&c.booc||"ERROR: Body record not found!"})}))}},function(e,t,n){"use strict";t.__esModule=!0,t.BodyScanner=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=[["good","Alive"],["average","Unconscious"],["bad","DEAD"]],d=[["hasBorer","bad",function(e){return"Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended."}],["hasVirus","bad",function(e){return"Viral pathogen detected in blood stream."}],["blind","average",function(e){return"Cataracts detected."}],["colourblind","average",function(e){return"Photoreceptor abnormalities detected."}],["nearsighted","average",function(e){return"Retinal misalignment detected."}],["humanPrey","average",function(e){return"Foreign Humanoid(s) detected: "+e.humanPrey}],["livingPrey","average",function(e){return"Foreign Creature(s) detected: "+e.livingPrey}],["objectPrey","average",function(e){return"Foreign Object(s) detected: "+e.objectPrey}]],u=[["Respiratory","oxyLoss"],["Brain","brainLoss"],["Toxin","toxLoss"],["Radiation","radLoss"],["Brute","bruteLoss"],["Genetic","cloneLoss"],["Burn","fireLoss"],["Paralysis","paralysis"]],s={average:[.25,.5],bad:[.5,Infinity]},m=function(e,t){for(var n=[],o=0;o0?e.reduce((function(e,t){return null===e?t:(0,o.createFragment)([e,!!t&&(0,o.createComponentVNode)(2,a.Box,{children:t})],0)})):null},h=function(e){if(e>100){if(e<300)return"mild infection";if(e<400)return"mild infection+";if(e<500)return"mild infection++";if(e<700)return"acute infection";if(e<800)return"acute infection+";if(e<900)return"acute infection++";if(e>=900)return"septic"}return""};t.BodyScanner=function(e,t){var n=(0,i.useBackend)(t).data,r=n.occupied,a=n.occupant,l=void 0===a?{}:a,d=r?(0,o.createComponentVNode)(2,C,{occupant:l}):(0,o.createComponentVNode)(2,k);return(0,o.createComponentVNode)(2,c.Window,{width:690,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:d})})};var C=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,f,{occupant:t}),(0,o.createComponentVNode)(2,N,{occupant:t}),(0,o.createComponentVNode)(2,b,{occupant:t}),(0,o.createComponentVNode)(2,V,{occupant:t}),(0,o.createComponentVNode)(2,v,{organs:t.extOrgan}),(0,o.createComponentVNode)(2,_,{organs:t.intOrgan})]})},f=function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=d.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"user-slash",onClick:function(){return c("ejectify")},children:"Eject"}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return c("print_p")},children:"Print Report"})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u.maxHealth,value:u.health/u.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l[u.stat][0],children:l[u.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.bodyTempC,0)}),"\xb0C,\xa0",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.bodyTempF,0)}),"\xb0F"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Volume",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.blood.volume,0)})," units\xa0(",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.blood.percent,0)}),"%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Weight",children:(0,r.round)(d.occupant.weight)+"lbs, "+(0,r.round)(d.occupant.weight/2.20463)+"kgs"})]})})},N=function(e){var t=e.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Blood Reagents",children:t.reagents?(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:"Reagent"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:"Amount"})]}),t.reagents.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:[e.amount," Units ",e.overdose?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"OVERDOSING"}):null]})]},e.name)}))]}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"No Blood Reagents Detected"})}),(0,o.createComponentVNode)(2,a.Section,{title:"Stomach Reagents",children:t.ingested?(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:"Reagent"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:"Amount"})]}),t.ingested.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:[e.amount," Units ",e.overdose?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"OVERDOSING"}):null]})]},e.name)}))]}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"No Stomach Reagents Detected"})})],4)},b=function(e){var t=e.occupant,n=t.hasBorer||t.blind||t.colourblind||t.nearsighted||t.hasVirus;return(n=n||t.humanPrey||t.livingPrey||t.objectPrey)?(0,o.createComponentVNode)(2,a.Section,{title:"Abnormalities",children:d.map((function(e,n){if(t[e[0]])return(0,o.createComponentVNode)(2,a.Box,{color:e[1],bold:"bad"===e[1],children:e[2](t)})}))}):(0,o.createComponentVNode)(2,a.Section,{title:"Abnormalities",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No abnormalities found."})})},V=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Damage",children:(0,o.createComponentVNode)(2,a.Table,{children:m(u,(function(e,n,r){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{color:"label",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[e[0],":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:!!n&&n[0]+":"})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,g,{value:t[e[1]],marginBottom:r0&&"0.5rem",value:e.totalLoss/100,ranges:s,children:[(0,o.createComponentVNode)(2,a.Box,{float:"left",display:"inline",children:[!!e.bruteLoss&&(0,o.createComponentVNode)(2,a.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"bone"}),(0,r.round)(e.bruteLoss,0),"\xa0",(0,o.createComponentVNode)(2,a.Tooltip,{position:"top",content:"Brute damage"})]}),!!e.fireLoss&&(0,o.createComponentVNode)(2,a.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"fire"}),(0,r.round)(e.fireLoss,0),(0,o.createComponentVNode)(2,a.Tooltip,{position:"top",content:"Burn damage"})]})]}),(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:(0,r.round)(e.totalLoss,0)})]})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:"33%",children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",display:"inline",children:p([e.internalBleeding&&"Internal bleeding",!!e.status.bleeding&&"External bleeding",e.lungRuptured&&"Ruptured lung",e.destroyed&&"Destroyed",!!e.status.broken&&e.status.broken,h(e.germ_level),!!e.open&&"Open incision"])}),(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:[p([!!e.status.splinted&&"Splinted",!!e.status.robotic&&"Robotic",!!e.status.dead&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DEAD"})]),p(e.implants.map((function(e){return e.known?e.name:"Unknown object"})))]})]})]},t)}))]})})},_=function(e){return 0===e.organs.length?(0,o.createComponentVNode)(2,a.Section,{title:"Internal Organs",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"N/A"})}):(0,o.createComponentVNode)(2,a.Section,{title:"Internal Organs",children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Damage"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:"Injuries"})]}),e.organs.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{textTransform:"capitalize",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"33%",children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:e.maxHealth,value:e.damage/100,mt:t>0&&"0.5rem",ranges:s,children:(0,r.round)(e.damage,0)})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:"33%",children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",display:"inline",children:p([h(e.germ_level),!!e.inflamed&&"Appendicitis detected."])}),(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:p([1===e.robotic&&"Robotic",2===e.robotic&&"Assisted",!!e.dead&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DEAD"})])})]})]},t)}))]})})},k=function(){return(0,o.createComponentVNode)(2,a.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant detected."]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BombTester=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);n(24);t.BombTester=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.simulating,s=d.mode,m=d.tank1,p=d.tank1ref,h=d.tank2,C=d.tank2ref,f=d.canister,N=d.sim_canister_output;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:400,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:u&&(0,o.createComponentVNode)(2,c)||(0,o.createComponentVNode)(2,i.Section,{title:"Virtual Explosive Simulator v2.01",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("set_mode",{mode:1})},selected:1===s,children:"Single Tank"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("set_mode",{mode:2})},selected:2===s,children:"Transfer Valve"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("set_mode",{mode:3})},selected:3===s,children:"Canister"})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Primary Slot",children:m&&(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("remove_tank",{ref:p})},icon:"eject",children:m})||(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("add_tank",{slot:1})},icon:"upload",children:"Insert Tank"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Secondary Slot",children:h&&(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("remove_tank",{ref:C})},icon:"eject",children:h})||(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("add_tank",{slot:2})},icon:"upload",children:"Insert Tank"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Connected Canister",buttons:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("canister_scan")},icon:"search",children:"Scan"}),children:f&&(0,o.createComponentVNode)(2,i.Box,{color:"label",children:f})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No tank connected."})}),f&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Canister Release Pressure",children:(0,o.createComponentVNode)(2,i.Slider,{minValue:0,value:N,maxValue:1013.25,onDrag:function(e,t){return l("set_can_pressure",{pressure:t})}})})]}),(0,o.createComponentVNode)(2,i.Button,{mt:2,color:"red",icon:"bomb",fontSize:2,onClick:function(){return l("start_sim")},fluid:!0,children:"Begin Simulation"})]})})})};var c=function(e){var t,n;function r(t){var n;n=e.call(this,t)||this;var o=Math.random()>.5,r=Math.random()>.5;return n.state={x:o?340:0,y:r?205:0,reverseX:!1,reverseY:!1},n.process=setInterval((function(){n.setState((function(e){var t=Object.assign({},e);return t.reverseX?t.x-2<-5?(t.reverseX=!1,t.x+=2):t.x-=2:t.x+2>340?(t.reverseX=!0,t.x-=2):t.x+=2,t.reverseY?t.y-2<-20?(t.reverseY=!1,t.y+=2):t.y-=2:t.y+2>205?(t.reverseY=!0,t.y-=2):t.y+=2,t}))}),1),n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=r.prototype;return a.componentWillUnmount=function(){clearInterval(this.process)},a.render=function(){var e=this.state,t={position:"relative",left:e.x+"px",top:e.y+"px"};return(0,o.createComponentVNode)(2,i.Section,{title:"Simulation in progress!",fill:!0,children:(0,o.createComponentVNode)(2,i.Box,{position:"absolute",style:{overflow:"hidden",width:"100%",height:"100%"},children:(0,o.createComponentVNode)(2,i.Icon,{style:t,name:"bomb",size:10,color:"red"})})})},r}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.BotanyEditor=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.BotanyEditor=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.activity,u=l.degradation,s=l.disk,m=l.sourceName,p=l.locus,h=l.loaded;return d?(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Scanning..."})})}):(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Buffered Genetic Data",children:s&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Source",children:m}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gene Decay",children:[u,"%"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Locus",children:p})]}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"eject",onClick:function(){return c("eject_disk")},children:"Eject Loaded Disk"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No disk loaded."})}),(0,o.createComponentVNode)(2,i.Section,{title:"Loaded Material",children:h&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:h})}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"cog",onClick:function(){return c("apply_gene")},children:"Apply Gene Mods"}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"eject",onClick:function(){return c("eject_packet")},children:"Eject Target"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No target seed packet loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BotanyIsolator=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.BotanyIsolator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.geneMasks,u=l.activity,s=l.degradation,m=l.disk,p=l.loaded,h=l.hasGenetics,C=l.sourceName;return u?(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Scanning..."})})}):(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Buffered Genetic Data",children:h&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Source",children:C}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gene decay",children:[s,"%"]}),m&&d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.mask,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:"download",onClick:function(){return c("get_gene",{get_gene:e.tag})},children:"Extract"})},e.mask)}))||null]}),m&&(0,o.createComponentVNode)(2,i.Box,{mt:1,children:[(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("eject_disk")},children:"Eject Loaded Disk"}),(0,o.createComponentVNode)(2,i.Button,{icon:"trash",onClick:function(){return c("clear_buffer")},children:"Clear Genetic Buffer"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{mt:1,warning:!0,children:"No disk inserted."})]})||(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No Data Buffered."}),m&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("eject_disk")},children:"Eject Loaded Disk"})||(0,o.createComponentVNode)(2,i.NoticeBox,{mt:1,warning:!0,children:"No disk inserted."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Loaded Material",children:p&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Packet Loaded",children:p})}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"cog",onClick:function(){return c("scan_genome")},children:"Process Genome"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("eject_packet")},children:"Eject Packet"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No packet loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.BrigTimer=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:138,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Cell Timer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:u.timing?"Stop":"Start",selected:u.timing,onClick:function(){return d(u.timing?"stop":"start")}}),u.flash_found&&(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.flash_charging?"Recharging":"Flash",disabled:u.flash_charging,onClick:function(){return d("flash")}})||null],0),children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,fluid:!0,value:u.time_left/10,minValue:0,maxValue:u.max_time_left/10,format:function(e){return(0,l.formatTime)((0,r.round)(e))},onDrag:function(e,t){return d("time",{time:t})}}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"hourglass-start",content:"Add "+(0,l.formatTime)(u.preset_short/10),onClick:function(){return d("preset",{preset:"short"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"hourglass-start",content:"Add "+(0,l.formatTime)(u.preset_medium/10),onClick:function(){return d("preset",{preset:"medium"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"hourglass-start",content:"Add "+(0,l.formatTime)(u.preset_long/10),onClick:function(){return d("preset",{preset:"long"})}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Canister=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(20),l=n(3);t.Canister=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.connected,m=u.can_relabel,p=u.pressure,h=u.releasePressure,C=u.defaultReleasePressure,f=u.minReleasePressure,N=u.maxReleasePressure,b=u.valveOpen,V=u.holding;return(0,o.createComponentVNode)(2,l.Window,{width:360,height:242,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Canister",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",disabled:!m,content:"Relabel",onClick:function(){return d("relabel")}}),children:(0,o.createComponentVNode)(2,a.LabeledControls,{children:[(0,o.createComponentVNode)(2,a.LabeledControls.Item,{minWidth:"66px",label:"Tank Pressure",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:p,format:function(e){return e<1e4?(0,r.toFixed)(e)+" kPa":(0,c.formatSiUnit)(1e3*e,1,"Pa")}})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Regulator",children:(0,o.createComponentVNode)(2,a.Box,{position:"relative",left:"-8px",children:[(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!b&&"yellow",value:h,unit:"kPa",minValue:f,maxValue:N,stepPixelSize:1,onDrag:function(e,t){return d("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-20px",color:"transparent",icon:"fast-forward",onClick:function(){return d("pressure",{pressure:N})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,position:"absolute",top:"16px",right:"-20px",color:"transparent",icon:"undo",onClick:function(){return d("pressure",{pressure:C})}})]})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Valve",children:(0,o.createComponentVNode)(2,a.Button,{my:.5,width:"50px",lineHeight:2,fontSize:"11px",color:b?V?"caution":"danger":null,content:b?"Open":"Closed",onClick:function(){return d("valve")}})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{mr:1,label:"Port",children:(0,o.createComponentVNode)(2,a.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{size:1.25,name:s?"plug":"times",color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Tooltip,{content:s?"Connected":"Disconnected",position:"top"})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",buttons:!!V&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",color:b&&"danger",content:"Eject",onClick:function(){return d("eject")}}),children:[!!V&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:V.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V.pressure})," kPa"]})]}),!V&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Holding Tank"})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CasinoPrizeDispenserCh=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3);n(24);var l={Alphabetical:function(e,t){return e-t},"By availability":function(e,t){return-(e.affordable-t.affordable)},"By price":function(e,t){return e.price-t.price}};t.CasinoPrizeDispenserCh=function(e,t){var n=(0,i.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",scrollable:!0,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,d)],4)})})};var d=function(e,t){var n=(0,i.useBackend)(t),d=(n.act,n.data),u=d.points,m=d.items,p=(0,i.useLocalState)(t,"search",""),h=p[0],C=(p[1],(0,i.useLocalState)(t,"sort","Alphabetical")),f=C[0],N=(C[1],(0,i.useLocalState)(t,"descending",!1)),b=N[0],V=(N[1],(0,r.createSearch)(h,(function(e){return e[0]}))),g=!1,v=Object.entries(m).map((function(e,t){var n=Object.entries(e[1]).filter(V).map((function(e){return e[1].affordable=u>=e[1].price,e[1]})).sort(l[f]);if(0!==n.length)return b&&(n=n.reverse()),g=!0,(0,o.createComponentVNode)(2,s,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,a.Section,{onClick:function(e){return(0,c.refocusLayout)()},children:g?v:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No items matching your criteria was found!"})})})},u=function(e,t){var n=(0,i.useLocalState)(t,"search",""),r=(n[0],n[1]),c=(0,i.useLocalState)(t,"sort",""),d=(c[0],c[1]),u=(0,i.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:"Alphabetical",options:Object.keys(l),width:"100%",lineHeight:"19px",onSelected:function(e){return d(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"arrow-down":"arrow-up",height:"19px",tooltip:s?"Descending order":"Ascending order",tooltipPosition:"bottom-left",ml:"0.5rem",onClick:function(){return m(!s)}})})]})})},s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.title),l=e.items,d=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Collapsible,Object.assign({open:!0,title:c},d,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,a.Button,{content:e.price.toLocaleString("en-US"),width:"15%",textAlign:"center",style:{float:"right"},onClick:function(){return r("purchase",{cat:c,name:e.name,price:e.price,restriction:e.restriction})}}),(0,o.createComponentVNode)(2,a.Box,{style:{clear:"both"}})]},e.name)}))})))}},function(e,t,n){"use strict";t.__esModule=!0,t.CharacterDirectory=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=function(e){switch(e){case"Unset":return"label";case"Pred":return"red";case"Prey":return"blue";case"Switch":return"purple";case"Non-Vore":return"green"}};t.CharacterDirectory=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.personalVisibility,m=u.personalTag,p=u.personalErpTag,h=u.personalEventTag,C=(0,r.useLocalState)(t,"overlay",null),f=C[0];C[1];return(0,o.createComponentVNode)(2,a.Window,{width:640,height:480,resizeable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:f&&(0,o.createComponentVNode)(2,l)||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:s?"Shown":"Not Shown",onClick:function(){return c("setVisible")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Vore Tag",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:m,onClick:function(){return c("setTag")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ERP Tag",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:p,onClick:function(){return c("setErpTag")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Event Pref",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:h,onClick:function(){return c("setEventTag")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Advertisement",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Edit Ad",onClick:function(){return c("editAd")}})})]})}),(0,o.createComponentVNode)(2,d)],4)})})};var l=function(e,t){var n=(0,r.useLocalState)(t,"overlay",null),a=n[0],l=n[1];return(0,o.createComponentVNode)(2,i.Section,{title:a.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back",onClick:function(){return l(null)}}),children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Vore Tag",children:(0,o.createComponentVNode)(2,i.Box,{p:1,backgroundColor:c(a.tag),children:a.tag})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"ERP Tag",children:(0,o.createComponentVNode)(2,i.Box,{children:a.erptag})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Event Pref",children:(0,o.createComponentVNode)(2,i.Box,{children:a.eventtag})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Character Ad",children:(0,o.createComponentVNode)(2,i.Box,{style:{"word-break":"break-all"},children:a.character_ad?a.character_ad.split("\n").map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:e},t)})):"Unset."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"OOC Notes",children:(0,o.createComponentVNode)(2,i.Box,{style:{"word-break":"break-all"},children:a.ooc_notes?a.ooc_notes.split("\n").map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:e},t)})):"Unset."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Flavor Text",children:(0,o.createComponentVNode)(2,i.Box,{style:{"word-break":"break-all"},children:a.flavor_text?a.flavor_text.split("\n").map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:e},t)})):"Unset."})})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.directory,d=(0,r.useLocalState)(t,"sortId","name"),s=d[0],m=(d[1],(0,r.useLocalState)(t,"sortOrder","name")),p=m[0],h=(m[1],(0,r.useLocalState)(t,"overlay",null)),C=(h[0],h[1]);return(0,o.createComponentVNode)(2,i.Section,{title:"Directory",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Refresh",onClick:function(){return a("refresh")}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,u,{id:"name",children:"Name"}),(0,o.createComponentVNode)(2,u,{id:"tag",children:"Vore Tag"}),(0,o.createComponentVNode)(2,u,{id:"erptag",children:"ERP Tag"}),(0,o.createComponentVNode)(2,u,{id:"eventtag",children:"Event Pref"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"View"})]}),l.sort((function(e,t){var n=p?1:-1;return e[s].localeCompare(t[s])*n})).map((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{backgroundColor:c(e.tag),children:[(0,o.createComponentVNode)(2,i.Table.Cell,{p:1,children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.tag}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.erptag}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.eventtag}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return C(e)},color:"transparent",icon:"sticky-note",mr:1,content:"View"})})]},t)}))]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data,e.id),c=e.children,l=(0,r.useLocalState)(t,"sortId","name"),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"sortOrder","name"),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{width:"100%",color:d!==a&&"transparent",onClick:function(){d===a?p(!m):(u(a),p(!0))},children:[c,d===a&&(0,o.createComponentVNode)(2,i.Icon,{name:m?"sort-up":"sort-down",ml:"0.25rem;"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(1),i=n(2),a=n(188),c=n(3),l=[5,10,20,30,40,60],d=[1,5,10];t.ChemDispenser=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:390,height:655,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.amount;return(0,o.createComponentVNode)(2,i.Section,{title:"Settings",flex:"content",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Dispense",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"row",wrap:"wrap",spacing:"1",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",children:(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",selected:c===e,content:e+"u",m:"0",fluid:!0,onClick:function(){return a("amount",{amount:e})}})},t)}))})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Custom Amount",children:(0,o.createComponentVNode)(2,i.Slider,{step:1,stepPixelSize:5,value:c,minValue:1,maxValue:120,onDrag:function(e,t){return a("amount",{amount:t})}})})]})})},s=function(e,t){for(var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.chemicals,d=void 0===l?[]:l,u=[],s=0;s<(d.length+1)%3;s++)u.push(!0);return(0,o.createComponentVNode)(2,i.Section,{title:c.glass?"Drink Dispenser":"Chemical Dispenser",flexGrow:"1",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"row",wrap:"wrap",height:"100%",spacingPrecise:"2",align:"flex-start",alignContent:"flex-start",children:[d.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"40%",height:"20px",children:(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",width:"100%",height:"100%",align:"flex-start",content:e.title+" ("+e.amount+")",onClick:function(){return a("dispense",{reagent:e.id})}})},t)})),u.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"25%",height:"20px"},t)}))]})})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,u=l.isBeakerLoaded,s=l.beakerCurrentVolume,m=l.beakerMaxVolume,p=l.beakerContents,h=void 0===p?[]:p;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",flex:"content",minHeight:"25%",buttons:(0,o.createComponentVNode)(2,i.Box,{children:[!!u&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:2,children:[s," / ",m," units"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u,onClick:function(){return c("ejectBeaker")}})]}),children:(0,o.createComponentVNode)(2,a.BeakerContents,{beakerLoaded:u,beakerContents:h,buttons:function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{content:"Isolate",icon:"compress-arrows-alt",onClick:function(){return c("remove",{reagent:e.id,amount:-1})}}),d.map((function(t,n){return(0,o.createComponentVNode)(2,i.Button,{content:t,onClick:function(){return c("remove",{reagent:e.id,amount:t})}},n)})),(0,o.createComponentVNode)(2,i.Button,{content:"ALL",onClick:function(){return c("remove",{reagent:e.id,amount:e.volume})}})],0)}})})}},function(e,t,n){"use strict";e.exports=n(500)()},function(e,t,n){"use strict";var o=n(501);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,a){if(a!==o){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(188),l=n(45),d=[1,5,10,30,60];t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data,i=n.condi,c=n.beaker,d=n.beaker_reagents,p=void 0===d?[]:d,h=n.buffer_reagents,C=void 0===h?[]:h,f=n.mode;return(0,o.createComponentVNode)(2,a.Window,{width:575,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,l.ComplexModal),(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,u,{beaker:c,beakerReagents:p,bufferNonEmpty:C.length>0}),(0,o.createComponentVNode)(2,s,{mode:f,bufferReagents:C}),(0,o.createComponentVNode)(2,m,{isCondiment:i,bufferNonEmpty:C.length>0})]})]})};var u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,u=(n.data,e.beaker),s=e.beakerReagents,m=e.bufferNonEmpty;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:m?(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"eject",disabled:!u,content:"Eject and Clear Buffer",onClick:function(){return a("eject")}}):(0,o.createComponentVNode)(2,i.Button,{icon:"eject",disabled:!u,content:"Eject and Clear Buffer",onClick:function(){return a("eject")}}),children:u?(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:!0,beakerContents:s,buttons:function(e,n){return(0,o.createComponentVNode)(2,i.Box,{mb:n0?(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:!0,beakerContents:s,buttons:function(e,r){return(0,o.createComponentVNode)(2,i.Box,{mb:r0?l.desc:"N/A"}),l.blood_type&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood type",children:l.blood_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood DNA",className:"LabeledList__breakContents",children:l.blood_dna})],4),!c.condi&&(0,o.createComponentVNode)(2,i.Button,{icon:c.printing?"spinner":"print",disabled:c.printing,iconSpin:!!c.printing,ml:"0.5rem",content:"Print",onClick:function(){return a("print",{idx:l.idx,beaker:e.args.beaker})}})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.ClawMachine=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ClawMachine=function(e,t){var n,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=(d.wintick,d.instructions),s=d.gameStatus,m=d.winscreen;return"CLAWMACHINE_NEW"===s?n=(0,o.createComponentVNode)(2,i.Box,{align:"center",children:[(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),(0,o.createVNode)(1,"b",null,"Pay to Play!",16)," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),u,(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Start",onClick:function(){return l("newgame")}})]}):"CLAWMACHINE_END"===s?n=(0,o.createComponentVNode)(2,i.Box,{align:"center",children:[(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),(0,o.createVNode)(1,"b",null,"Thank you for playing!",16)," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),m,(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Close",onClick:function(){return l("return")}})]}):"CLAWMACHINE_ON"===s&&(n=(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[-Infinity,0],average:[1,7],good:[8,Infinity]},value:d.wintick,minValue:0,maxValue:10})})}),(0,o.createComponentVNode)(2,i.Box,{align:"center",children:[(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br"),u,(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Up",onClick:function(){return l("pointless")}}),(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Left",onClick:function(){return l("pointless")}}),(0,o.createComponentVNode)(2,i.Button,{content:"Right",onClick:function(){return l("pointless")}}),(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Down",onClick:function(){return l("pointless")}})]})]})),(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createVNode)(1,"center",null,n,0)})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cleanbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Cleanbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.locked,m=l.version,p=l.blood,h=(l.patrol,l.wet_floors),C=l.spray_blood,f=l.rgbpanel,N=l.red_switch,b=l.green_switch,V=l.blue_switch;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Station Cleaner "+m,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("start")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:s?"good":"bad",children:s?"Locked":"Unlocked"})]})}),!s&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:p?"toggle-on":"toggle-off",selected:p,onClick:function(){return c("blood")},children:p?"Cleans Blood":"Ignores Blood"})})||null,!s&&u&&(0,o.createComponentVNode)(2,i.Section,{title:"Maintenance Panel",children:f&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{fontSize:5.39,icon:N?"toggle-on":"toggle-off",backgroundColor:N?"red":"maroon",onClick:function(){return c("red_switch")}}),(0,o.createComponentVNode)(2,i.Button,{fontSize:5.39,icon:b?"toggle-on":"toggle-off",backgroundColor:b?"green":"darkgreen",onClick:function(){return c("green_switch")}}),(0,o.createComponentVNode)(2,i.Button,{fontSize:5.39,icon:V?"toggle-on":"toggle-off",backgroundColor:V?"blue":"darkblue",onClick:function(){return c("blue_switch")}})]})||(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Odd Looking Screw Twiddled",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,selected:h,onClick:function(){return c("wet_floors")},icon:"screwdriver",children:h?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Weird Button Pressed",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"brown",selected:C,onClick:function(){return c("spray_blood")},icon:"screwdriver",children:C?"Yes":"No"})})]})})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CloningConsole=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(28),l=n(45),d=n(3),u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,l=n.data,d=e.args,u=d.activerecord,s=d.realname,m=d.health,p=d.unidentity,h=d.strucenzymes,C=m.split(" - ");return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:"Records of "+s,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:C.length>1?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.oxy,display:"inline",children:C[0]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.toxin,display:"inline",children:C[2]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.brute,display:"inline",children:C[3]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.burn,display:"inline",children:C[1]})],4):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Unknown"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"UI",className:"LabeledList__breakContents",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"SE",className:"LabeledList__breakContents",children:h}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk",children:[(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!l.disk,icon:"arrow-circle-down",content:"Import",onClick:function(){return r("disk",{option:"load"})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export UI",onClick:function(){return r("disk",{option:"save",savetype:"ui"})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export UI and UE",onClick:function(){return r("disk",{option:"save",savetype:"ue"})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export SE",onClick:function(){return r("disk",{option:"save",savetype:"se"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:!l.podready,icon:"user-plus",content:"Clone",onClick:function(){return r("clone",{ref:u})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Delete",onClick:function(){return r("del_rec")}})]})]})})};t.CloningConsole=function(e,t){var n=(0,i.useBackend)(t);n.act,n.data.menu;return(0,l.modalRegisterBodyOverride)("view_rec",u),(0,o.createComponentVNode)(2,d.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,l.ComplexModal,{maxWidth:"75%",maxHeight:"75%"}),(0,o.createComponentVNode)(2,d.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,C),(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,flexGrow:"1",children:(0,o.createComponentVNode)(2,m)})]})]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.menu;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,icon:"home",onClick:function(){return r("menu",{num:1})},children:"Main"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,icon:"folder",onClick:function(){return r("menu",{num:2})},children:"Records"})]})},m=function(e,t){var n,r=(0,i.useBackend)(t).data.menu;return 1===r?n=(0,o.createComponentVNode)(2,p):2===r&&(n=(0,o.createComponentVNode)(2,h)),n},p=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.loading,u=l.scantemp,s=l.occupant,m=l.locked,p=l.can_brainscan,h=l.scan_mode,C=l.numberofpods,f=l.pods,N=l.selected_pod,b=m&&!!s;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{display:"inline",color:"label",children:"Scanner Lock:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s,selected:b,icon:b?"toggle-on":"toggle-off",content:b?"Engaged":"Disengaged",onClick:function(){return c("lock")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:b||!s,icon:"user-slash",content:"Eject Occupant",onClick:function(){return c("eject")}})],4),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:d?(0,o.createComponentVNode)(2,a.Box,{color:"average",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"spinner",spin:!0}),"\xa0 Scanning..."]}):(0,o.createComponentVNode)(2,a.Box,{color:u.color,children:u.text})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"brain":"male",content:h?"Brain":"Body",onClick:function(){return c("toggle_mode")}})})]}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s||d,icon:"user",content:"Scan Occupant",mt:"0.5rem",mb:"0",onClick:function(){return c("scan")}})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Pods",level:"2",children:C?f.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:e.progress/100,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[-Infinity,.25]},mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,a.Button,{selected:N===e.pod,icon:N===e.pod&&"check",content:"Select",mt:"0.5rem",onClick:function(){return c("selectpod",{ref:e.pod})}}),(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"pod_"+e.status+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:["Pod #",t+1]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.biomass>=150?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.biomass>=150?"circle":"circle-o"}),"\xa0",e.biomass]}),n]},t)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No pods detected. Unable to clone."})})],4)},h=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.records;return c.length?(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{icon:"user",mb:"0.5rem",content:e.realname,onClick:function(){return r("view_rec",{ref:e.record})}},t)}))}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No records found."]})})},C=function(e,t){var n,r=(0,i.useBackend)(t),c=r.act,l=r.data.temp;if(l&&l.text&&!(l.text.length<=0)){var d=((n={})[l.style]=!0,n);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.NoticeBox,Object.assign({},d,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",children:l.text}),(0,o.createComponentVNode)(2,a.Button,{icon:"times-circle",float:"right",onClick:function(){return c("cleartemp")}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]})))}},f=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.scanner,d=c.numberofpods,u=c.autoallowed,s=c.autoprocess,m=c.disk;return(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{display:"inline",color:"label",children:"Auto-processing:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{selected:s,icon:s?"toggle-on":"toggle-off",content:s?"Enabled":"Disabled",onClick:function(){return r("autoprocess",{on:s?0:1})}})],4),(0,o.createComponentVNode)(2,a.Button,{disabled:!m,icon:"eject",content:"Eject Disk",onClick:function(){return r("disk",{option:"eject"})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanner",children:l?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Connected"}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not connected!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pods",children:d?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[d," connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ColorMate=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ColorMate=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.items,u=l.activecolor,s=Math.min(270+15*d.length,600);return(0,o.createComponentVNode)(2,a.Window,{width:300,height:s,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:d.length&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Paint",children:(0,o.createComponentVNode)(2,i.Flex,{justify:"center",align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",children:(0,o.createComponentVNode)(2,i.Box,{backgroundColor:u,width:"120px",height:"120px"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50% ",children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eye-dropper",onClick:function(){return c("select")},children:"Select Color"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"fill-drip",onClick:function(){return c("paint")},children:"Paint Items"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"tint-slash",onClick:function(){return c("clear")},children:"Remove Paintjob"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",onClick:function(){return c("eject")},children:"Eject Items"})]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Items",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:["#",t+1,": ",e]},t)}))})],4)||(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No items inserted."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Communicator=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2),l=n(3),d=n(94),u={};t.Communicator=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=r.currentTab,d=r.video_comm,C=(r.mapRef,(0,a.useLocalState)(t,"videoSetting",0)),f=C[0],N=C[1];return(0,o.createComponentVNode)(2,l.Window,{width:475,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[d&&(0,o.createComponentVNode)(2,s,{videoSetting:f,setVideoSetting:N}),(!d||0!==f)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,c.Box,{height:"88%",mb:1,style:{"overflow-y":"auto"},children:u[i]||(0,o.createComponentVNode)(2,m)}),(0,o.createComponentVNode)(2,h,{videoSetting:f,setVideoSetting:N})],4)]})})};var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(i.video_comm,i.mapRef),d=e.videoSetting,u=e.setVideoSetting;return 0===d?(0,o.createComponentVNode)(2,c.Box,{width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,c.ByondUi,{width:"100%",height:"95%",params:{id:l,type:"map"}}),(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",spacing:1,mt:.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,icon:"window-minimize",onClick:function(){return u(1)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"video-slash",onClick:function(){return r("endvideo")}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"phone-slash",onClick:function(){return r("hang_up")}})})]})]}):1===d?(0,o.createComponentVNode)(2,c.Box,{style:{position:"absolute",right:"5px",bottom:"50px","z-index":1},children:[(0,o.createComponentVNode)(2,c.Section,{p:0,m:0,children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,icon:"window-minimize",onClick:function(){return u(2)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,icon:"window-maximize",onClick:function(){return u(0)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"video-slash",onClick:function(){return r("endvideo")}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"phone-slash",onClick:function(){return r("hang_up")}})})]})}),(0,o.createComponentVNode)(2,c.ByondUi,{width:"200px",height:"200px",params:{id:l,type:"map"}})]}):null},m=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data.currentTab);return(0,o.createComponentVNode)(2,c.Section,{title:"Error!",children:["You tried to access tab #",r,", but there was no template defined!"]})},p=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),l=r.time,d=r.connectionStatus,u=r.owner,s=r.occupation;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{color:"average",children:l}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Icon,{color:1===d?"good":"bad",name:1===d?"signal":"exclamation-triangle"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{color:"average",children:(0,i.decodeHtmlEntities)(u)}),(0,o.createComponentVNode)(2,c.Flex.Item,{color:"average",children:(0,i.decodeHtmlEntities)(s)})]})})},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.flashlight,l=e.videoSetting,d=e.setVideoSetting;return(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2===l?"60%":"80%",children:(0,o.createComponentVNode)(2,c.Button,{p:1,fluid:!0,icon:"home",iconSize:2,textAlign:"center",onClick:function(){return r("switch_tab",{switch_tab:1})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"20%",children:(0,o.createComponentVNode)(2,c.Button,{icon:"lightbulb",iconSize:2,p:1,fluid:!0,textAlign:"center",selected:i,tooltip:"Flashlight",tooltipPosition:"top",onClick:function(){return r("Light")}})}),2===l&&(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"20%",children:(0,o.createComponentVNode)(2,c.Button,{icon:"video",iconSize:2,p:1,fluid:!0,textAlign:"center",tooltip:"Open Video",tooltipPosition:"top",onClick:function(){return d(1)}})})]})},C=function(e,t){var n=(0,a.useBackend)(t).data,o=n.voice_mobs,r=n.communicating,i=n.requestsReceived,c=n.invitesSent,l=n.video_comm;return!("Phone"!==e||!(o.length||r.length||i.length||c.length||l))};u[1]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.homeScreen;return(0,o.createComponentVNode)(2,c.Flex,{mt:2,wrap:"wrap",align:"center",justify:"center",children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"25%",textAlign:"center",mb:2,children:[(0,o.createComponentVNode)(2,c.Button,{style:{"border-radius":"10%",border:"1px solid #000"},width:"64px",height:"64px",position:"relative",onClick:function(){return r("switch_tab",{switch_tab:e.number})},children:(0,o.createComponentVNode)(2,c.Icon,{spin:C(e.module,t),color:C(e.module,t)?"bad":null,name:e.icon,position:"absolute",size:3,top:"25%",left:"25%"})}),(0,o.createComponentVNode)(2,c.Box,{children:e.module})]},e.number)}))})}));var f=function(e,t){for(var n=(0,a.useBackend)(t),r=n.act,i=n.data.targetAddress,l=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"].map((function(e){return(0,o.createComponentVNode)(2,c.Button,{content:e,fontSize:2,fluid:!0,onClick:function(){return r("add_hex",{add_hex:e})}},e)})),d=[],u=0;un?t.length>n?t.slice(0,n)+"...":t:e+t},V=function(e,t,n,o){if(n<0||n>o.length)return N(e,t)?"TinderMessage_First_Sent":"TinderMessage_First_Received";var r=N(e,t),i=N(o[n],t);return r&&i?"TinderMessage_Subsequent_Sent":r||i?r?"TinderMessage_First_Sent":"TinderMessage_First_Received":"TinderMessage_Subsequent_Received"};u[40]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.targetAddressName,u=l.targetAddress,s=l.imList,m=(0,a.useLocalState)(t,"clipboardMode",!1),p=m[0],h=m[1];return p?(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,style:{"white-space":"nowrap","overflow-x":"hidden"},width:"90%",children:b("Conversation with ",(0,i.decodeHtmlEntities)(d),30)}),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:p,tooltip:"Exit Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return h(!p)}}),height:"100%",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"95%","overflow-y":"auto"},children:s.map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{className:N(e,u)?"ClassicMessage_Sent":"ClassicMessage_Received",children:[N(e,u)?"You":"Them",": ",e.im]},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return r("message",{message:u})},content:"Message"})]}):(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,style:{"white-space":"nowrap","overflow-x":"hidden"},width:"100%",children:b("Conversation with ",(0,i.decodeHtmlEntities)(d),30)}),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:p,tooltip:"Enter Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return h(!p)}}),height:"100%",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"95%","overflow-y":"auto"},children:s.map((function(e,t,n){return(0,o.createComponentVNode)(2,c.Box,{textAlign:N(e,u)?"right":"left",mb:1,children:(0,o.createComponentVNode)(2,c.Box,{maxWidth:"75%",className:V(e,u,t-1,n),inline:!0,children:(0,i.decodeHtmlEntities)(e.im)})},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return r("message",{message:u})},content:"Message"})]})}));var g=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data.target_feed;return(0,o.createComponentVNode)(2,c.Section,{title:(0,i.decodeHtmlEntities)(l.name)+" by "+(0,i.decodeHtmlEntities)(l.author),level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Back",icon:"chevron-up",onClick:function(){return r("newsfeed",{newsfeed:null})}}),children:l.messages.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{children:["- ",(0,i.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/png;base64,"+e.img}),(0,i.decodeHtmlEntities)(e.caption)||null]}),(0,o.createComponentVNode)(2,c.Box,{color:"grey",children:["[",e.message_type," by ",(0,i.decodeHtmlEntities)(e.author)," - ",e.time_stamp,"]"]})]},e.ref)}))})},v=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.feeds,u=l.latest_news;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Recent News",level:2,children:(0,o.createComponentVNode)(2,c.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{mb:2,children:[(0,o.createVNode)(1,"h5",null,[(0,i.decodeHtmlEntities)(e.channel),(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"chevron-up",onClick:function(){return r("newsfeed",{newsfeed:e.index})},content:"Go to"})],0),"- ",(0,i.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,c.Box,{children:["[image omitted, view story for more details]",e.caption||null]}),(0,o.createComponentVNode)(2,c.Box,{fontSize:.9,children:["[",e.message_type," by ",(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"average",children:e.author})," - ",e.time_stamp,"]"]})]},e.index)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"News Feeds",level:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"chevron-up",onClick:function(){return r("newsfeed",{newsfeed:e.index})},content:e.name},e.index)}))})],4)};u[5]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=r.feeds,l=r.target_feed;return(0,o.createComponentVNode)(2,c.Section,{title:"News",stretchContents:!0,height:"100%",children:!i.length&&(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Error: No newsfeeds available. Please try again later."})||l&&(0,o.createComponentVNode)(2,g)||(0,o.createComponentVNode)(2,v)})}));u[6]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.note;return(0,o.createComponentVNode)(2,c.Section,{title:"Note Keeper",height:"100%",stretchContents:!0,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"pen",onClick:function(){return r("edit")},content:"Edit Notes"}),children:(0,o.createComponentVNode)(2,c.Section,{color:"average",width:"100%",height:"100%",style:{"word-break":"break-all","overflow-y":"auto"},children:i})})}));u[7]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),l=(n.act,n.data),d=l.aircontents,u=l.weather;return(0,o.createComponentVNode)(2,c.Section,{title:"Weather",children:[(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Current Conditions",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,r.filter)((function(e){return"0"!==e.val||"Pressure"===e.entry||"Temperature"===e.entry}))(d).map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.entry,color:(t=e.val,n=e.bad_low,r=e.poor_low,a=e.poor_high,l=e.bad_high,ta?"average":t>l?"bad":"good"),children:[e.val,(0,i.decodeHtmlEntities)(e.units)]},e.entry);var t,n,r,a,l}))})}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Weather Reports",children:!!u.length&&(0,o.createComponentVNode)(2,c.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.Planet,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Time",children:e.Time}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Weather",children:(0,i.toTitleCase)(e.Weather)}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:["Current: ",e.Temperature.toFixed(),"\xb0C | High: ",e.High.toFixed(),"\xb0C | Low: ",e.Low.toFixed(),"\xb0C"]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Wind Direction",children:e.WindDir}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Wind Speed",children:e.WindSpeed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Forecast",children:(0,i.decodeHtmlEntities)(e.Forecast)})]})},e.Planet)}))})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No weather reports available. Please check back later."})})]})})),u[8]=(0,o.createComponentVNode)(2,d.CrewManifestContent);u[9]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.owner,u=l.occupation,s=l.connectionStatus,m=l.address,p=l.visible,h=l.ring,C=l.selfie_mode;return(0,o.createComponentVNode)(2,c.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Owner",children:(0,o.createComponentVNode)(2,c.Button,{icon:"pen",fluid:!0,content:(0,i.decodeHtmlEntities)(d),onClick:function(){return r("rename")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Camera Mode",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:C?"Front-facing Camera":"Rear-facing Camera",onClick:function(){return r("selfie_mode")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Occupation",children:(0,i.decodeHtmlEntities)(u)}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Connection",children:1===s?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Connected"}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Disconnected"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Device EPv2 Address",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:p,selected:p,fluid:!0,content:p?"This device can be seen by other devices.":"This device is invisible to other devices.",onClick:function(){return r("toggle_visibility")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Ringer",children:(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:h,selected:h,fluid:!0,content:h?"Ringer on.":"Ringer off.",onClick:function(){return r("toggle_ringer")}})})]})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(0),r=(n(6),n(1)),i=n(2),a=n(3);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,a.Window,{title:"Personal Computer Vendor",width:500,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,c),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act;n.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,i.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,i.Box,{mt:3,children:(0,o.createComponentVNode)(2,i.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return a("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return a("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"good",children:[c.totalprice,"\u20ae"]}),children:[(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,i.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_battery,onClick:function(){return a("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Upgraded",selected:2===c.hw_battery,onClick:function(){return a("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:3===c.hw_battery,onClick:function(){return a("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_disk,onClick:function(){return a("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Upgraded",selected:2===c.hw_disk,onClick:function(){return a("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:3===c.hw_disk,onClick:function(){return a("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_netcard,onClick:function(){return a("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_netcard,onClick:function(){return a("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:2===c.hw_netcard,onClick:function(){return a("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_nanoprint,onClick:function(){return a("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_nanoprint,onClick:function(){return a("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,i.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_card,onClick:function(){return a("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_card,onClick:function(){return a("hw_card",{card:"1"})}})})]}),2!==c.devtype&&(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_cpu,onClick:function(){return a("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:2===c.hw_cpu,onClick:function(){return a("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_tesla,onClick:function(){return a("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_tesla,onClick:function(){return a("hw_tesla",{tesla:"1"})}})})]})]}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return a("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,i.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,i.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:"Please swipe your ID now to authorize payment of:"}),"\xa0",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"good",children:[a.totalprice,"\u20ae"]})]})]})},u=function(e,t){return(0,o.createComponentVNode)(2,i.Section,{minHeight:"282px",children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"28px",mt:10,children:"Thank you for your purchase!"}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,mt:1,textAlign:"center",children:"If you experience any difficulties with your new device, please contact your local network administrator."})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CookingAppliance=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.CookingAppliance=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.temperature,u=l.optimalTemp,s=l.temperatureEnough,m=l.efficiency,p=l.containersRemovable,h=l.our_contents;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(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.ProgressBar,{color:s?"good":"blue",value:d,maxValue:u,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:d}),"\xb0C / ",u,"\xb0C"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Efficiency",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m}),"%"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Containers",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:h.map((function(e,t){return e.empty?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Slot #"+(t+1),children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("slot",{slot:t+1})},children:"Empty"})}):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Slot #"+(t+1),verticalAlign:"middle",children:(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!p,onClick:function(){return c("slot",{slot:t+1})},children:e.container||"No Container"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.progressText[0],value:e.progress,maxValue:1,children:e.progressText[1]})})]})},t)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=[{label:"Resp.",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"}],l=[["good","Conscious"],["average","Unconscious"],["bad","DEAD"]];t.Cryo=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:520,height:470,resizeable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{className:"Layout__content--flexColumn",children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,d=n.data,s=d.isOperating,m=d.hasOccupant,p=d.occupant,h=void 0===p?[]:p,C=d.cellTemperature,f=d.cellTemperatureStatus,N=d.isBeakerLoaded;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Occupant",flexGrow:"1",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"user-slash",onClick:function(){return a("ejectOccupant")},disabled:!m,children:"Eject"}),children:m?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Occupant",children:h.name||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{min:h.health,max:h.maxHealth,value:h.health/h.maxHealth,color:h.health>0?"good":"average",children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(h.health)})})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:l[h.stat][0],children:l[h.stat][1]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(h.bodyTemperature)})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:h[e.type]/100,ranges:{bad:[.01,Infinity]},children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(h[e.type])})})},e.id)}))]}):(0,o.createComponentVNode)(2,i.Flex,{height:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant detected."]})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Cell",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return a("ejectBeaker")},disabled:!N,children:"Eject Beaker"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a(s?"switchOff":"switchOn")},selected:s,children:s?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",color:f,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:C})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",children:(0,o.createComponentVNode)(2,u)})]})})],4)},u=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data),c=a.isBeakerLoaded,l=a.beakerLabel,d=a.beakerVolume;return c?(0,o.createFragment)([l||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No label"}),(0,o.createComponentVNode)(2,i.Box,{color:!d&&"bad",children:d?(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:d,format:function(e){return Math.round(e)+" units remaining"}}):"Beaker is empty"})],0):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No beaker loaded"})}},function(e,t,n){"use strict";t.__esModule=!0,t.CryoStorageItemsVr=t.CryoStorageVr=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(191);t.CryoStorageVr=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=d.real_name,s=d.allow_items,m=(0,r.useLocalState)(t,"tab",0),p=m[0],h=m[1];return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===p,onClick:function(){return h(0)},children:"Crew"}),!!s&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===p,onClick:function(){return h(1)},children:"Items"})]}),(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:["Welcome, ",u,"."]}),0===p&&(0,o.createComponentVNode)(2,c.CryoStorageCrew),!!s&&1===p&&(0,o.createComponentVNode)(2,l)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.items);return(0,o.createComponentVNode)(2,i.Section,{title:"Stored Items",children:a.length&&a.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:e},e)}))||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No items stored."})})};t.CryoStorageItemsVr=l},function(e,t,n){"use strict";t.__esModule=!0,t.DNAForensics=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.DNAForensics=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.scan_progress,u=l.scanning,s=l.bloodsamp,m=l.bloodsamp_desc;return(0,o.createComponentVNode)(2,a.Window,{width:540,height:326,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{selected:u,disabled:!s,icon:"power-off",onClick:function(){return c("scanItem")},children:u?"Halt Scan":"Begin Scan"}),(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:"eject",onClick:function(){return c("ejectItem")},children:"Eject Bloodsample"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scan Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[99,Infinity],violet:[-Infinity,99]},value:d,maxValue:100})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Blood Sample",children:s&&(0,o.createComponentVNode)(2,i.Box,{children:[s,(0,o.createComponentVNode)(2,i.Box,{color:"label",children:m})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No blood sample inserted."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DNAModifier=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(45),l=[["good","Alive"],["average","Unconscious"],["bad","DEAD"]],d=[["ui","Modify U.I.","dna"],["se","Modify S.E.","dna"],["buffer","Transfer Buffers","syringe"],["rejuvenators","Rejuvenators","flask"]],u=[5,10,20,30,50];t.DNAModifier=function(e,t){var n,i=(0,r.useBackend)(t),l=(i.act,i.data),d=l.irradiating,u=l.dnaBlockSize,p=l.occupant;return t.dnaBlockSize=u,t.isDNAInvalid=!p.isViableSubject||!p.uniqueIdentity||!p.structuralEnzymes,d&&(n=(0,o.createComponentVNode)(2,g,{duration:d})),(0,o.createComponentVNode)(2,a.Window,{width:660,height:700,resizable:!0,children:[(0,o.createComponentVNode)(2,c.ComplexModal),n,(0,o.createComponentVNode)(2,a.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m)]})]})};var s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,d=c.locked,u=c.hasOccupant,s=c.occupant;return(0,o.createComponentVNode)(2,i.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{color:"label",display:"inline",mr:"0.5rem",children:"Door Lock:"}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u,selected:d,icon:d?"toggle-on":"toggle-off",content:d?"Engaged":"Disengaged",onClick:function(){return a("toggleLock")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u||d,icon:"user-slash",content:"Eject",onClick:function(){return a("ejectOccupant")}})],4),children:u?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:s.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{min:s.minHealth,max:s.maxHealth,value:s.health/s.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:l[s.stat][0],children:l[s.stat][1]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider)]})}),t.isDNAInvalid?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-circle"}),"\xa0 The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure."]}):(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,i.ProgressBar,{min:"0",max:"100",value:s.radiationLevel/100,color:"average"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Unique Enzymes",children:c.occupant.uniqueEnzymes?c.occupant.uniqueEnzymes:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-circle"}),"\xa0 Unknown"]})})]})],0):(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"Cell unoccupied."})})},m=function(e,t){var n,a=(0,r.useBackend)(t),c=a.act,l=a.data,u=l.selectedMenuKey,s=l.hasOccupant;l.occupant;return s?t.isDNAInvalid?(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:(0,o.createComponentVNode)(2,i.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No operation possible on this subject."]})})}):("ui"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,C)],4):"se"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,C)],4):"buffer"===u?n=(0,o.createComponentVNode)(2,f):"rejuvenators"===u&&(n=(0,o.createComponentVNode)(2,V)),(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:u===e[0],onClick:function(){return c("selectMenuKey",{key:e[0]})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:e[2]}),e[1]]},t)}))}),n]})):(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:(0,o.createComponentVNode)(2,i.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant in DNA modifier."]})})})},p=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.selectedUIBlock,d=c.selectedUISubBlock,u=c.selectedUITarget,s=c.occupant;return(0,o.createComponentVNode)(2,i.Section,{title:"Modify Unique Identifier",level:"2",children:[(0,o.createComponentVNode)(2,v,{dnaString:s.uniqueIdentity,selectedBlock:l,selectedSubblock:d,blockSize:t.dnaBlockSize,action:"selectUIBlock"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.Knob,{minValue:"1",maxValue:"15",stepPixelSize:"20",value:u,format:function(e){return e.toString(16).toUpperCase()},ml:"0",onChange:function(e,t){return a("changeUITarget",{value:t})}})})}),(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",content:"Irradiate Block",mt:"0.5rem",onClick:function(){return a("pulseUIRadiation")}})]})},h=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.selectedSEBlock,d=c.selectedSESubBlock,u=c.occupant;return(0,o.createComponentVNode)(2,i.Section,{title:"Modify Structural Enzymes",level:"2",children:[(0,o.createComponentVNode)(2,v,{dnaString:u.structuralEnzymes,selectedBlock:l,selectedSubblock:d,blockSize:t.dnaBlockSize,action:"selectSEBlock"}),(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",content:"Irradiate Block",onClick:function(){return a("pulseSERadiation")}})]})},C=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.radiationIntensity,d=c.radiationDuration;return(0,o.createComponentVNode)(2,i.Section,{title:"Radiation Emitter",level:"2",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Intensity",children:(0,o.createComponentVNode)(2,i.Knob,{minValue:"1",maxValue:"10",stepPixelSize:"20",value:l,popUpPosition:"right",ml:"0",onChange:function(e,t){return a("radiationIntensity",{value:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Duration",children:(0,o.createComponentVNode)(2,i.Knob,{minValue:"1",maxValue:"20",stepPixelSize:"10",unit:"s",value:d,popUpPosition:"right",ml:"0",onChange:function(e,t){return a("radiationDuration",{value:t})}})})]}),(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",content:"Pulse Radiation",tooltip:"Mutates a random block of either the occupant's UI or SE.",tooltipPosition:"top-right",mt:"0.5rem",onClick:function(){return a("pulseRadiation")}})]})},f=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.buffers.map((function(e,t){return(0,o.createComponentVNode)(2,N,{id:t+1,name:"Buffer "+(t+1),buffer:e},t)})));return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Buffers",level:"2",children:a}),(0,o.createComponentVNode)(2,b)],4)},N=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.id,d=e.name,u=e.buffer,s=c.isInjectorReady,m=d+(u.data?" - "+u.label:"");return(0,o.createComponentVNode)(2,i.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,i.Section,{title:m,level:"3",mx:"0",lineHeight:"18px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:!u.data,icon:"trash",content:"Clear",onClick:function(){return a("bufferOption",{option:"clear",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u.data,icon:"pen",content:"Rename",onClick:function(){return a("bufferOption",{option:"changeLabel",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u.data||!c.hasDisk,icon:"save",content:"Export",tooltip:"Exports this buffer to the currently loaded data disk.",tooltipPosition:"bottom-left",onClick:function(){return a("bufferOption",{option:"saveDisk",id:l})}})],4),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Write",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",content:"Subject U.I",mb:"0",onClick:function(){return a("bufferOption",{option:"saveUI",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",content:"Subject U.I and U.E.",mb:"0",onClick:function(){return a("bufferOption",{option:"saveUIAndUE",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",content:"Subject S.E.",mb:"0",onClick:function(){return a("bufferOption",{option:"saveSE",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!c.hasDisk||!c.disk.data,icon:"arrow-circle-down",content:"From Disk",mb:"0",onClick:function(){return a("bufferOption",{option:"loadDisk",id:l})}})]}),!!u.data&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Subject",children:u.owner||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Data Type",children:["ui"===u.type?"Unique Identifiers":"Structural Enzymes",!!u.ue&&" and Unique Enzymes"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transfer to",children:[(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Injector",mb:"0",onClick:function(){return a("bufferOption",{option:"createInjector",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Block Injector",mb:"0",onClick:function(){return a("bufferOption",{option:"createInjector",id:l,block:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"user",content:"Subject",mb:"0",onClick:function(){return a("bufferOption",{option:"transfer",id:l})}})]})],4)]}),!u.data&&(0,o.createComponentVNode)(2,i.Box,{color:"label",mt:"0.5rem",children:"This buffer is empty."})]})})},b=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.hasDisk,d=c.disk;return(0,o.createComponentVNode)(2,i.Section,{title:"Data Disk",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:!l||!d.data,icon:"trash",content:"Wipe",onClick:function(){return a("wipeDisk")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return a("ejectDisk")}})],4),children:l?d.data?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Label",children:d.label?d.label:"No label"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Subject",children:d.owner?d.owner:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Data Type",children:["ui"===d.type?"Unique Identifiers":"Structural Enzymes",!!d.ue&&" and Unique Enzymes"]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"Disk is blank."}):(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",my:"1rem",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"save-o",size:"4"}),(0,o.createVNode)(1,"br"),"No disk inserted."]})})},V=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.isBeakerLoaded,d=c.beakerVolume,s=c.beakerLabel;return(0,o.createComponentVNode)(2,i.Section,{title:"Rejuvenators and Beaker",level:"2",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return a("ejectBeaker")}}),children:l?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Inject",children:[u.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{disabled:e>d,icon:"syringe",content:e,onClick:function(){return a("injectRejuvenators",{amount:e})}},t)})),(0,o.createComponentVNode)(2,i.Button,{disabled:d<=0,icon:"syringe",content:"All",onClick:function(){return a("injectRejuvenators",{amount:d})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",children:[(0,o.createComponentVNode)(2,i.Box,{mb:"0.5rem",children:s||"No label"}),d?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:[d," unit",1===d?"":"s"," remaining"]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Empty"})]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",my:"25%",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",size:"4"}),(0,o.createVNode)(1,"br"),"No beaker loaded."]})})},g=function(e,t){return(0,o.createComponentVNode)(2,i.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"spinner",size:"5",spin:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:(0,o.createVNode)(1,"h1",null,[(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"}),(0,o.createTextVNode)("\xa0Irradiating occupant\xa0"),(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"})],4)}),(0,o.createComponentVNode)(2,i.Box,{color:"label",children:(0,o.createVNode)(1,"h3",null,[(0,o.createTextVNode)("For "),e.duration,(0,o.createTextVNode)(" second"),1===e.duration?"":"s"],0)})]})},v=function(e,t){for(var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.dnaString),l=e.selectedBlock,d=e.selectedSubblock,u=e.blockSize,s=e.action,m=c.split(""),p=[],h=function(e){for(var t=e/u+1,n=[],r=function(r){var c=r+1;n.push((0,o.createComponentVNode)(2,i.Button,{selected:l===t&&d===c,content:m[e+r],mb:"0",onClick:function(){return a(s,{block:t,subblock:c})}}))},c=0;c1?"Dangerous!":null]},e.stage)}))||(0,o.createComponentVNode)(2,i.Box,{children:"No virus sample loaded."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Affected Species",color:"label",children:[m&&m.length?null:"None",m.sort().join(", ")]}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Reverse Engineering",children:[(0,o.createComponentVNode)(2,i.Box,{color:"bad",mb:1,children:(0,o.createVNode)(1,"i",null,"CAUTION: Reverse engineering will destroy the viral sample.",16)}),d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.stage,icon:"exchange-alt",onClick:function(){return a("grab",{grab:e.reference})}},e.stage)})),(0,o.createComponentVNode)(2,i.Button,{content:"Species",icon:"exchange-alt",onClick:function(){return a("affected_species")}})]})],4)]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.dish_inserted,c.buffer),d=c.species_buffer,u=(c.effects,c.info);c.growth,c.affected_species,c.busy;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Memory Buffer",children:l?(0,o.createComponentVNode)(2,i.Box,{children:[l.name," (",l.stage,")"]}):d?(0,o.createComponentVNode)(2,i.Box,{children:d}):"Empty"})}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"save",content:"Save To Disk",disabled:!l&&!d,onClick:function(){return a("disk")}}),l?(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #1",disabled:l.stage>1,onClick:function(){return a("splice",{splice:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #2",disabled:l.stage>2,onClick:function(){return a("splice",{splice:2})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #3",disabled:l.stage>3,onClick:function(){return a("splice",{splice:3})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #4",disabled:l.stage>4,onClick:function(){return a("splice",{splice:4})}})]}):d?(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice Species",disabled:!d||u,onClick:function(){return a("splice",{splice:5})}})}):null]})}},function(e,t,n){"use strict";t.__esModule=!0,t.DishIncubator=void 0;var o=n(0),r=(n(5),n(20)),i=n(1),a=n(2),c=n(3);t.DishIncubator=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.system_in_use,m=d.food_supply,p=d.radiation,h=d.growth,C=d.toxins,f=d.chemicals_inserted,N=d.can_breed_virus,b=d.chemical_volume,V=d.max_chemical_volume,g=d.dish_inserted,v=d.blood_already_infected,_=d.virus,k=d.analysed,y=d.infection_rate;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Environmental Conditions",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:u,content:u?"On":"Off",onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"radiation",content:"Add Radiation",onClick:function(){return l("rad")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,color:"red",icon:"trash",confirmIcon:"trash",content:"Flush System",disabled:!s,onClick:function(){return l("flush")}})})]}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Food",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,ranges:{good:[40,Infinity],average:[20,40],bad:[-Infinity,20]},value:m})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,color:p>=50?"bad":h>=25?"average":"good",value:p,children:[(0,r.formatCommaNumber)(1e4*p)," \xb5Sv"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxicity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,ranges:{bad:[50,Infinity],average:[25,50],good:[-Infinity,25]},value:C})})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:N?"Vial":"Chemicals",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject "+(N?"Vial":"Chemicals"),disabled:!f,onClick:function(){return l("ejectchem")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"virus",content:"Breed Virus",disabled:!N,onClick:function(){return l("virus")}})],4),children:f&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:V,value:b,children:[b,"/",V]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Breeding Environment",color:N?"good":"average",children:[g?N?"Suitable":"No hemolytic samples detected":"N/A",v?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"CAUTION: Viral infection detected in blood sample."}):null]})]})})||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No chemicals inserted."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virus Dish",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Dish",disabled:!g,onClick:function(){return l("ejectdish")}}),children:g?_?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Density",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,ranges:{good:[50,Infinity],average:[25,50],bad:[-Infinity,25]},value:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Infection Rate",children:k?y:"Unknown."})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No virus detected."}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No dish loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalBin=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.DisposalBin=function(e,t){var n,c,l=(0,r.useBackend)(t),d=l.act,u=l.data;return 2===u.mode?(n="good",c="Ready"):u.mode<=0?(n="bad",c="N/A"):1===u.mode?(n="average",c="Pressurizing"):(n="average",c="Idle"),(0,o.createComponentVNode)(2,a.Window,{width:300,height:250,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Status"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"State",color:n,children:c}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[-Infinity,0],average:[0,99],good:[99,Infinity]},value:u.pressure,minValue:0,maxValue:100})})]}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Controls"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Handle",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:u.isAI||u.panel_open,content:"Disengaged",selected:u.flushing?null:"selected",onClick:function(){return d("disengageHandle")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:u.isAI||u.panel_open,content:"Engaged",selected:u.flushing?"selected":null,onClick:function(){return d("engageHandle")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:-1===u.mode,content:"Off",selected:u.mode?null:"selected",onClick:function(){return d("pumpOff")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:-1===u.mode,content:"On",selected:u.mode?"selected":null,onClick:function(){return d("pumpOn")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,i.Button,{icon:"sign-out-alt",disabled:u.isAI,content:"Eject Contents",onClick:function(){return d("eject")}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DroneConsole=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.DroneConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.drones,u=l.areas,s=l.selected_area,m=l.fabricator,p=l.fabPower;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Drone Fabricator",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!m,selected:p,icon:"power-off",content:p?"Enabled":"Disabled",onClick:function(){return c("toggle_fab")}}),children:m?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Linked."}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["Fabricator not detected.",(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Search for Fabricator",onClick:function(){return c("search_fab")}})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Request Drone",children:[(0,o.createComponentVNode)(2,i.Dropdown,{options:u?u.sort():null,selected:s,width:"100%",onSelected:function(e){return c("set_dcall_area",{area:e})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"share-square",content:"Send Ping",onClick:function(){return c("ping")}})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Maintenance Units",children:d&&d.length?(0,o.createComponentVNode)(2,i.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Resync",onClick:function(){return c("resync",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"exclamation-triangle",color:"red",content:"Shutdown",onClick:function(){return c("shutdown",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:e.loc}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:[e.charge," / ",e.maxCharge]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Active",children:e.active?"Yes":"No"})]})},e.name)}))}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No drones detected."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmbeddedController=void 0;var o=n(0),r=(n(6),n(5),n(1)),i=n(2),a=n(3),c=((0,n(24).createLogger)("fuck"),{});t.EmbeddedController=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.internalTemplateName),l=c[i];if(!l)throw Error("Unable to find Component for template name: "+i);return(0,o.createComponentVNode)(2,a.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=e.bars;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.color(e.value),minValue:e.minValue,maxValue:e.maxValue,value:e.value,children:e.textValue})},e.label)}))})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=n.act,l=!0;a.interior_status&&"open"===a.interior_status.state?l=!1:a.external_pressure&&a.chamber_pressure&&(l=!(Math.abs(a.external_pressure-a.chamber_pressure)>5));var d=!0;return a.exterior_status&&"open"===a.exterior_status.state?d=!1:a.internal_pressure&&a.chamber_pressure&&(d=!(Math.abs(a.internal_pressure-a.chamber_pressure)>5)),(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{disabled:a.airlock_disabled,icon:"arrow-left",content:"Cycle to Exterior",onClick:function(){return c("cycle_ext")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:a.airlock_disabled,icon:"arrow-right",content:"Cycle to Interior",onClick:function(){return c("cycle_int")}})]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:a.airlock_disabled,color:l?"":"bad",icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",content:"Force Exterior Door",onClick:function(){return c("force_ext")}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:a.airlock_disabled,color:d?"":"bad",icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",content:"Force Interior Door",onClick:function(){return c("force_int")}})]})],4)},u=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=(n.act,{docked:(0,o.createComponentVNode)(2,s),undocking:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"EJECTING-STAND CLEAR!"}),undocked:(0,o.createComponentVNode)(2,i.Box,{color:"grey",children:"POD EJECTED"}),docking:(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"INITIALIZING..."})}),l=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"ERROR"});return"open"===a.exterior_status.state?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"OPEN"}):"unlocked"===a.exterior_status.lock?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"UNSECURED"}):"locked"===a.exterior_status.lock&&(l=(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"SECURED"})),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Escape Pod Status",children:c[a.docking_status]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Docking Hatch",children:l})]})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.data;n.act;return a.armed?(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"ARMED"}):(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"SYSTEMS OK"})},m=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=n.act;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{disabled:!a.override_enabled,icon:"exclamation-triangle",content:"Force Exterior Door",color:"docked"!==a.docking_status?"bad":"",onClick:function(){return c("force_door")}}),(0,o.createComponentVNode)(2,i.Button,{selected:a.override_enabled,color:"docked"!==a.docking_status?"bad":"average",icon:"exclamation-triangle",content:"Override",onClick:function(){return c("toggle_override")}})]})},p=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=(n.act,{docked:(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"DOCKED"}),docking:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"DOCKING"}),undocking:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"UNDOCKING"}),undocked:(0,o.createComponentVNode)(2,i.Box,{color:"grey",children:"NOT IN USE"})}[a.docking_status]);return a.override_enabled&&(c=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[a.docking_status.toUpperCase(),"-OVERRIDE ENABLED"]})),c};c.AirlockConsoleAdvanced=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"},s=[{minValue:0,maxValue:202,value:c.external_pressure,label:"External Pressure",textValue:c.external_pressure+" kPa",color:u},{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:u},{minValue:0,maxValue:202,value:c.internal_pressure,label:"Internal Pressure",textValue:c.internal_pressure+" kPa",color:u}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{bars:s}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Purge",onClick:function(){return a("purge")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"lock-open",content:"Secure",onClick:function(){return a("secure")}})]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.AirlockConsoleSimple=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=[{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"}}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{bars:u}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.AirlockConsolePhoron=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=[{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"}},{minValue:0,maxValue:100,value:c.chamber_phoron,label:"Chamber Phoron",textValue:c.chamber_phoron+" mol",color:function(e){return e>5?"bad":e>.5?"average":"good"}}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{bars:u}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.AirlockConsoleDocking=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=[{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"}}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Dock",buttons:c.airlock_disabled||c.override_enabled?(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",color:c.override_enabled?"red":"",content:"Override",onClick:function(){return a("toggle_override")}}):null,children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,l,{bars:u}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.DockingConsoleSimple=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"ERROR"});return"open"===c.exterior_status.state?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"OPEN"}):"unlocked"===c.exterior_status.lock?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"UNSECURED"}):"locked"===c.exterior_status.lock&&(l=(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"SECURED"})),(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",disabled:!c.override_enabled,content:"Force exterior door",onClick:function(){return a("force_door")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",color:c.override_enabled?"red":"",content:"Override",onClick:function(){return a("toggle_override")}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Dock Status",children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Docking Hatch",children:l})]})})};c.DockingConsoleMulti=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Docking Status",children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,i.Section,{title:"Airlocks",children:n.airlocks.length?(0,o.createComponentVNode)(2,i.LabeledList,{children:n.airlocks.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:e.override_enabled?"bad":"good",label:e.name,children:e.override_enabled?"OVERRIDE ENABLED":"STATUS OK"},e.name)}))}):(0,o.createComponentVNode)(2,i.Flex,{height:"100%",mt:"0.5em",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"door-closed",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No airlocks found."]})})})],4)};c.DoorAccessConsole=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l="open"===c.interior_status.state||"closed"===c.exterior_status.state,d="open"===c.exterior_status.state||"closed"===c.interior_status.state;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:l?"arrow-left":"exclamation-triangle",content:l?"Cycle To Exterior":"Lock Exterior Door",onClick:function(){a(l?"cycle_ext_door":"force_ext")}}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"arrow-right":"exclamation-triangle",content:d?"Cycle To Interior":"Lock Interior Door",onClick:function(){a(d?"cycle_int_door":"force_int")}})],0),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Exterior Door Status",children:"closed"===c.exterior_status.state?"Locked":"Open"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Interior Door Status",children:"closed"===c.interior_status.state?"Locked":"Open"})]})})};c.EscapePodConsole=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",disabled:c.armed,color:c.armed?"bad":"average",content:"ARM",onClick:function(){return a("manual_arm")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",disabled:!c.can_force,color:"bad",content:"MANUAL EJECT",onClick:function(){return a("force_launch")}})]})]})],4)};c.EscapePodBerthConsole=function(e,t){(0,r.useBackend)(t).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,m)})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ExonetNode=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ExonetNode=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.allowPDAs,s=l.allowCommunicators,m=l.allowNewscasters,p=l.logs;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,content:"Power "+(d?"On":"Off"),onClick:function(){return c("toggle_power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Incoming PDA Messages",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:u,content:u?"Open":"Closed",onClick:function(){return c("toggle_PDA_port")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Incoming Communicators",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:s,content:s?"Open":"Closed",onClick:function(){return c("toggle_communicator_port")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Incoming Newscaster Content",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:m,content:m?"Open":"Closed",onClick:function(){return c("toggle_newscaster_port")}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Logging",children:(0,o.createComponentVNode)(2,i.Flex,{wrap:"wrap",children:[p.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{m:"2px",basis:"49%",grow:t%2,children:e},t)})),p&&0!==p.length?null:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No logs found."})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Farmbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Farmbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.locked,s=l.tank,m=l.tankVolume,p=l.tankMaxVolume,h=l.waters_trays,C=l.refills_water,f=l.uproots_weeds,N=l.replaces_nutriment;l.collects_produce,l.removes_dead;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:540,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Hyrdoponic Assisting Unit v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("power")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Water Tank",children:s&&(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,maxValue:p,children:[m," / ",p]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No water tank detected."})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:u?"good":"bad",children:u?"Locked":"Unlocked"})]})}),!u&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Watering Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Water plants",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"toggle-on":"toggle-off",selected:h,onClick:function(){return c("water")},children:h?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Refill watertank",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"toggle-on":"toggle-off",selected:C,onClick:function(){return c("refill")},children:C?"Yes":"No"})})]})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Weeding controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Weed plants",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"toggle-on":"toggle-off",selected:f,onClick:function(){return c("weed")},children:f?"Yes":"No"})})})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Nutriment controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Replace fertilizer",children:(0,o.createComponentVNode)(2,i.Button,{icon:N?"toggle-on":"toggle-off",selected:N,onClick:function(){return c("replacenutri")},children:N?"Yes":"No"})})})})]})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.FaxContent=t.Fax=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(95),l=n(96);t.Fax=function(e,t){return(0,r.useBackend)(t).data.authenticated?(0,o.createComponentVNode)(2,a.Window,{width:600,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,c.LoginInfo),(0,o.createComponentVNode)(2,d)]})}):(0,o.createComponentVNode)(2,a.Window,{width:600,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,l.LoginScreen)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.bossName,d=c.copyItem,u=c.cooldown,s=c.destination;return(0,o.createComponentVNode)(2,i.Section,{children:[!!u&&(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Transmitter arrays realigning. Please stand by."}),(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Network",children:[l," Quantum Entanglement Network"]})}),d&&(0,o.createComponentVNode)(2,i.Box,{mt:1,children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Currently Sending",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sending To",children:(0,o.createComponentVNode)(2,i.Button,{icon:"map-marker-alt",content:s,onClick:function(){return a("dept")}})})]}),(0,o.createComponentVNode)(2,i.Button,{icon:"share-square",onClick:function(){return a("send")},content:"Send",fluid:!0})]})||(0,o.createComponentVNode)(2,i.Box,{mt:1,children:"Please insert item to transmit."})]})};t.FaxContent=d;var u=function(e,t){var n=(0,r.useBackend)(t),a=n.act;return n.data.copyItem?(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",onClick:function(){return a("remove")},content:"Remove Item"})}):null}},function(e,t,n){"use strict";t.__esModule=!0,t.FileCabinet=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.FileCabinet=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data.contents,u=(0,r.sortBy)((function(e){return e.name}))(d||[]);return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"file",content:e.name,onClick:function(){return l("retrieve",{ref:e.ref})}},e.ref)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Floorbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Floorbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.locked,m=l.amount,p=l.possible_bmode,h=l.improvefloors,C=l.eattiles,f=l.maketiles,N=l.bmode;return(0,o.createComponentVNode)(2,a.Window,{width:390,height:310,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Station Floor Repairer v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("start")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tiles Left",children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:s?"good":"bad",children:s?"Locked":"Unlocked"})]})}),!s&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Improves Floors",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"toggle-on":"toggle-off",selected:h,onClick:function(){return c("improve")},children:h?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Finds Tiles",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"toggle-on":"toggle-off",selected:C,onClick:function(){return c("tiles")},children:C?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Makes Metal Sheets into Tiles",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"toggle-on":"toggle-off",selected:f,onClick:function(){return c("make")},children:f?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Bridge Mode",children:(0,o.createComponentVNode)(2,i.Dropdown,{over:!0,width:"100%",placeholder:"Disabled",selected:N,options:p,onSelected:function(e){return c("bridgemode",{dir:e})}})})]})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GasPump=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.GasPump=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.pressure_set,s=l.last_flow_rate,m=l.last_power_draw,p=l.max_power_draw;return(0,o.createComponentVNode)(2,a.Window,{width:470,height:290,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:s/10})," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Load",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,minValue:0,maxValue:p,color:m=100?s="Running":!d&&u>0&&(s="DISCHARGING"),(0,o.createComponentVNode)(2,a.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",color:"red",content:"Toggle Breaker",confirmContent:d?"This will disable gravity!":"This will enable gravity!",onClick:function(){return c("gentoggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Breaker Setting",children:d?"Generator Enabled":"Generator Disabled"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Mode",children:["Generator ",s]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Status",children:[u,"%"]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GuestPass=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.GuestPass=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=(d.access,d.area),s=d.giver,m=d.giveName,p=d.reason,h=d.duration,C=d.mode,f=d.log,N=d.uid;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:1===C&&(0,o.createComponentVNode)(2,a.Section,{title:"Activity Log",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"scroll",content:"Activity Log",selected:!0,onClick:function(){return l("mode",{mode:0})}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",onClick:function(){return l("print")},fluid:!0,mb:1}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Logs",children:f.length&&f.map((function(e){return(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:e}},e)}))||(0,o.createComponentVNode)(2,a.Box,{children:"No logs."})})]})||(0,o.createComponentVNode)(2,a.Section,{title:"Guest pass terminal #"+N,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"scroll",content:"Activity Log",onClick:function(){return l("mode",{mode:1})}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Issuing ID",children:(0,o.createComponentVNode)(2,a.Button,{content:s||"Insert ID",onClick:function(){return l("id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Issued To",children:(0,o.createComponentVNode)(2,a.Button,{content:m,onClick:function(){return l("giv_name")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reason",children:(0,o.createComponentVNode)(2,a.Button,{content:p,onClick:function(){return l("reason")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Duration (minutes)",children:(0,o.createComponentVNode)(2,a.Button,{content:h,onClick:function(){return l("duration")}})})]}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"check",fluid:!0,content:"Issue Pass",onClick:function(){return l("issue")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Access",level:2,children:(0,r.sortBy)((function(e){return e.area_name}))(u).map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.on,content:e.area_name,onClick:function(){return l("access",{access:e.area})}},e.area)}))})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GyrotronControlContent=t.GyrotronControl=void 0;var o=n(0),r=n(1),i=n(3),a=n(2);t.GyrotronControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.gyros;return(0,o.createComponentVNode)(2,a.Section,{title:"Gyrotrons",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set Tag",onClick:function(){return i("set_tag")}}),children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Position"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Fire Delay"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Strength"})]}),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,{children:[e.x,", ",e.y,", ",e.z]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.active?"Online":"Offline",selected:e.active,disabled:!e.deployed,onClick:function(){return i("toggle_active",{gyro:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!e.active&&"yellow",value:e.fire_delay,unit:"decisecond(s)",minValue:1,maxValue:60,stepPixelSize:1,onDrag:function(t,n){return i("set_rate",{gyro:e.ref,rate:n})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!e.active&&"yellow",value:e.strength,unit:"penta-dakw",minValue:1,maxValue:50,stepPixelSize:1,onDrag:function(t,n){return i("set_str",{gyro:e.ref,str:n})}})})]},e.name)}))]})})};t.GyrotronControlContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.supportedPrograms,u=l.restrictedPrograms,s=l.currentProgram,m=l.isSilicon,p=l.safetyDisabled,h=l.emagged,C=l.gravity,f=d;return p&&(f=f.concat(u)),(0,o.createComponentVNode)(2,a.Window,{width:400,height:610,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Programs",children:f.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{color:-1!==u.indexOf(e)?"bad":null,icon:"eye",content:e,selected:s===e,fluid:!0,onClick:function(){return c("program",{program:e})}},e)}))}),!!m&&(0,o.createComponentVNode)(2,i.Section,{title:"Override",children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",fluid:!0,disabled:h,color:p?"good":"bad",onClick:function(){return c("AIoverride")},children:[!!h&&"Error, unable to control. ",p?"Enable Safeties":"Disable Safeties"]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Safeties",children:p?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"DISABLED"}):(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"ENABLED"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gravity",children:(0,o.createComponentVNode)(2,i.Button,{icon:"user-astronaut",selected:C,onClick:function(){return c("gravity")},children:C?"Enabled":"Disabled"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ICAssembly=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=(n(6),n(20));t.ICAssembly=function(e,t){var n=(0,i.useBackend)(t),u=(n.act,n.data),s=u.total_parts,m=u.max_components,p=u.total_complexity,h=u.max_complexity,C=u.battery_charge,f=u.battery_max,N=u.net_power,b=u.unremovable_circuits,V=u.removable_circuits;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:380,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Space in Assembly",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[0,.25],average:[.5,.75],bad:[.75,1]},value:s/m,maxValue:1,children:[s," / ",m," (",(0,r.round)(s/m*100,1),"%)"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[0,.25],average:[.5,.75],bad:[.75,1]},value:p/h,maxValue:1,children:[p," / ",h," (",(0,r.round)(p/h*100,1),"%)"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell Charge",children:C&&(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{bad:[0,.25],average:[.5,.75],good:[.75,1]},value:C/f,maxValue:1,children:[C," / ",f," (",(0,r.round)(C/f*100,1),"%)"]})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No cell detected."})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Net Energy",children:0===N?"0 W/s":(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:N,format:function(e){return"-"+(0,l.formatPower)(Math.abs(e))+"/s"}})})]})}),b.length&&(0,o.createComponentVNode)(2,d,{title:"Built-in Components",circuits:b})||null,V.length&&(0,o.createComponentVNode)(2,d,{title:"Removable Components",circuits:V})||null]})})};var d=function(e,t){var n=(0,i.useBackend)(t).act,r=e.title,c=e.circuits;return(0,o.createComponentVNode)(2,a.Section,{title:r,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("open_circuit",{ref:e.ref})},children:"View"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("rename_circuit",{ref:e.ref})},children:"Rename"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("scan_circuit",{ref:e.ref})},children:"Debugger Scan"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("remove_circuit",{ref:e.ref})},children:"Remove"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("bottom_circuit",{ref:e.ref})},children:"Move to Bottom"})]},e.ref)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ICCircuit=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6),l=n(20);t.ICCircuit=function(e,t){var n=(0,r.useBackend)(t),c=n.act,s=n.data,m=(s.name,s.desc),p=s.displayed_name,h=(s.removable,s.complexity),C=s.power_draw_idle,f=s.power_draw_per_use,N=s.extended_desc,b=s.inputs,V=s.outputs,g=s.activators;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:400,resizable:!0,title:p,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Stats",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("rename")},children:"Rename"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("scan")},children:"Scan with Device"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("remove")},children:"Remove"})],4),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Complexity",children:h}),C&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Draw (Idle)",children:(0,l.formatPower)(C)})||null,f&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Draw (Active)",children:(0,l.formatPower)(f)})||null]}),N]}),(0,o.createComponentVNode)(2,i.Section,{title:"Circuit",children:[(0,o.createComponentVNode)(2,i.Flex,{textAlign:"center",spacing:1,children:[b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Inputs",children:(0,o.createComponentVNode)(2,d,{list:b})})})||null,(0,o.createComponentVNode)(2,i.Flex.Item,{basis:b.length&&V.length?"33%":b.length||V.length?"45%":"100%",children:(0,o.createComponentVNode)(2,i.Section,{title:p,mb:1,children:(0,o.createComponentVNode)(2,i.Box,{children:m})})}),V.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Outputs",children:(0,o.createComponentVNode)(2,d,{list:V})})})||null]}),(0,o.createComponentVNode)(2,i.Section,{title:"Triggers",children:g.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("pin_name",{pin:e.ref})},children:e.pulse_out?"":""}),(0,o.createComponentVNode)(2,u,{pin:e})]},e.name)}))})]})]})})};var d=function(e,t){var n=(0,r.useBackend)(t).act;return e.list.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("pin_name",{pin:e.ref})},children:[(0,c.decodeHtmlEntities)(e.type),": ",e.name]}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("pin_data",{pin:e.ref})},children:e.data}),(0,o.createComponentVNode)(2,u,{pin:e})]},e.ref)}))},u=function(e,t){var n=(0,r.useBackend)(t).act,a=e.pin;return a.linked.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("pin_unwire",{pin:a.ref,link:e.ref})},children:e.name}),"@\xa0",(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("examine",{ref:e.holder_ref})},children:e.holder_name})]},e.ref)}))}},function(e,t,n){"use strict";t.__esModule=!0,t.ICDetailer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(6);t.ICDetailer=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.detail_color,s=d.color_list;return(0,o.createComponentVNode)(2,a.Window,{width:420,height:254,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:Object.keys(s).map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{ml:0,mr:0,mb:-.4,mt:0,tooltip:(0,c.toTitleCase)(e),tooltipPosition:t%6==5?"left":"right",height:"64px",width:"64px",onClick:function(){return l("change_color",{color:e})},style:s[e]===u?{border:"4px solid black","border-radius":0}:{"border-radius":0},backgroundColor:s[e]},e)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ICPrinter=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(8);n(24);t.ICPrinter=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.metal,u=c.max_metal,s=c.metal_per_sheet,m=(c.debug,c.upgraded),p=c.can_clone;c.assembly_to_clone,c.categories;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:630,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Metal",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:l,maxValue:u,children:[l/s," / ",u/s," sheets"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Circuits Available",children:m?"Advanced":"Regular"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Assembly Cloning",children:p?"Available":"Unavailable"})]}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:"Note: A red component name means that the printer must be upgraded to create that component."})]}),(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){return!!e.can_build&&!(e.cost>t.metal)},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,d=n.data,u=d.categories,s=(d.debug,(0,r.useSharedState)(t,"categoryTarget",null)),m=s[0],p=s[1],h=(0,c.filter)((function(e){return e.name===m}))(u)[0];return(0,o.createComponentVNode)(2,i.Section,{title:"Circuits",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:(0,c.sortBy)((function(e){return e.name}))(u).map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:m===e.name,onClick:function(){return p(e.name)},children:e.name},e.name)}))}),h&&(0,o.createComponentVNode)(2,i.Section,{title:h.name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,c.sortBy)((function(e){return e.name}))(h.items).map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,labelColor:e.can_build?"good":"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!l(e,d),icon:"print",onClick:function(){return a("build",{build:e.path})},children:"Print"}),children:e.desc},e.name)}))})})||"No category selected."]})}},function(e,t,n){"use strict";t.__esModule=!0,t.IDCard=void 0;var o=n(0),r=n(2),i=n(1),a=n(3),c=n(192);t.IDCard=function(e,t){var n=(0,i.useBackend)(t).data,l=n.registered_name,d=n.sex,u=n.age,s=n.assignment,m=n.fingerprint_hash,p=n.blood_type,h=n.dna_hash,C=n.photo_front,f=[{name:"Sex",val:d},{name:"Age",val:u},{name:"Blood Type",val:p},{name:"Fingerprint",val:m},{name:"DNA Hash",val:h}];return(0,o.createComponentVNode)(2,a.Window,{width:470,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Flex,{children:[(0,o.createComponentVNode)(2,r.Flex.Item,{basis:"25%",textAlign:"left",children:(0,o.createComponentVNode)(2,r.Box,{inline:!0,style:{width:"101px",height:"120px",overflow:"hidden",outline:"2px solid #4972a1"},children:C&&(0,o.createVNode)(1,"img",null,null,1,{src:C.substr(1,C.length-1),style:{width:"300px","margin-left":"-94px","-ms-interpolation-mode":"nearest-neighbor"}})||(0,o.createComponentVNode)(2,r.Icon,{name:"user",size:8,ml:1.5,mt:2.5})})}),(0,o.createComponentVNode)(2,r.Flex.Item,{basis:0,grow:1,children:(0,o.createComponentVNode)(2,r.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:e.name,children:e.val},e.name)}))})})]}),(0,o.createComponentVNode)(2,r.Flex,{className:"IDCard__NamePlate",align:"center",justify:"space-around",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",children:l})}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.RankIcon,{rank:s})})}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",children:s})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.InventoryPanel=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.InventoryPanel=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.slots,u=l.internalsValid;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:200,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d&&d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:e.item?"hand-paper":"gift",onClick:function(){return c(e.act)},children:e.item||"Nothing"})},e.name)}))})}),u&&(0,o.createComponentVNode)(2,i.Section,{title:"Actions",children:u&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"lungs",onClick:function(){return c("internals")},children:"Set Internals"})||null})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.InventoryPanelHuman=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.InventoryPanelHuman=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.slots,u=l.specialSlots,s=(l.internals,l.internalsValid),m=l.sensors,p=l.handcuffed,h=l.handcuffedParams,C=l.legcuffed,f=l.legcuffedParams,N=l.accessory;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[d&&d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:e.item?"hand-paper":"gift",onClick:function(){return c(e.act,e.params)},children:e.item||"Nothing"})},e.name)})),(0,o.createComponentVNode)(2,i.LabeledList.Divider),u&&u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:e.item?"hand-paper":"gift",onClick:function(){return c(e.act,e.params)},children:e.item||"Nothing"})},e.name)}))]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"running",onClick:function(){return c("targetSlot",{slot:"splints"})},children:"Remove Splints"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"hand-paper",onClick:function(){return c("targetSlot",{slot:"pockets"})},children:"Empty Pockets"}),s&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"lungs",onClick:function(){return c("targetSlot",{slot:"internals"})},children:"Set Internals"})||null,m&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"book-medical",onClick:function(){return c("targetSlot",{slot:"sensors"})},children:"Set Sensors"})||null,p&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"bad",icon:"unlink",onClick:function(){return c("targetSlot",h)},children:"Handcuffed"})||null,C&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"bad",icon:"unlink",onClick:function(){return c("targetSlot",f)},children:"Legcuffed"})||null,N&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"bad",icon:"unlink",onClick:function(){return c("targetSlot",{slot:"tie"})},children:"Remove Accessory"})||null]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.IsolationCentrifuge=void 0;var o=n(0),r=(n(5),n(20),n(1)),i=n(2),a=n(3);t.IsolationCentrifuge=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.busy,u=l.antibodies,s=l.pathogens,m=l.is_antibody_sample,p=l.sample_inserted,h=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No vial detected."});return p&&(h=u||s?(0,o.createFragment)([u?(0,o.createComponentVNode)(2,i.Section,{title:"Antibodies",children:u}):null,s.length?(0,o.createComponentVNode)(2,i.Section,{title:"Pathogens",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:s.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:e.spread_type},e.name)}))})}):null],0):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No antibodies or viral strains detected."})),(0,o.createComponentVNode)(2,a.Window,{width:400,height:500,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:d?(0,o.createComponentVNode)(2,i.Section,{title:"The Centrifuge is currently busy.",color:"bad",children:(0,o.createVNode)(1,"center",null,(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:d}),2)}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:m?"Antibody Sample":"Blood Sample",children:[(0,o.createComponentVNode)(2,i.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"print",content:"Print",disabled:!u&&!s.length,onClick:function(){return c("print")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",content:"Eject Vial",disabled:!p,onClick:function(){return c("sample")}})})]}),h]}),u&&!m||s.length?(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[u&&!m?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Isolate Antibodies",children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:u,onClick:function(){return c("antibody")}})}):null,s.length?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Isolate Strain",children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:e.name,onClick:function(){return c("isolate",{isolate:e.reference})}},e.name)}))}):null]})}):null],0)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.JanitorCart=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.JanitorCart=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.mybag,s=d.mybucket,m=d.mymop,p=d.myspray,h=d.myreplacer,C=d.signs;d.icons;return(0,o.createComponentVNode)(2,a.Window,{width:210,height:180,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:u||"Garbage Bag Slot",tooltipPosition:"bottom-right",color:u?"grey":"transparent",style:{border:u?null:"2px solid grey"},onClick:function(){return c("bag")},children:(0,o.createComponentVNode)(2,l,{iconkey:"mybag"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:s||"Bucket Slot",tooltipPosition:"bottom",color:s?"grey":"transparent",style:{border:s?null:"2px solid grey"},onClick:function(){return c("bucket")},children:(0,o.createComponentVNode)(2,l,{iconkey:"mybucket"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:m||"Mop Slot",tooltipPosition:"bottom-left",color:m?"grey":"transparent",style:{border:m?null:"2px solid grey"},onClick:function(){return c("mop")},children:(0,o.createComponentVNode)(2,l,{iconkey:"mymop"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:p||"Spray Slot",tooltipPosition:"top-right",color:p?"grey":"transparent",style:{border:p?null:"2px solid grey"},onClick:function(){return c("spray")},children:(0,o.createComponentVNode)(2,l,{iconkey:"myspray"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:h||"Light Replacer Slot",tooltipPosition:"top",color:h?"grey":"transparent",style:{border:h?null:"2px solid grey"},onClick:function(){return c("replacer")},children:(0,o.createComponentVNode)(2,l,{iconkey:"myreplacer"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:C||"Signs Slot",tooltipPosition:"top-left",color:C?"grey":"transparent",style:{border:C?null:"2px solid grey"},onClick:function(){return c("sign")},children:(0,o.createComponentVNode)(2,l,{iconkey:"signs"})})]})})};var c={mybag:"trash",mybucket:"fill",mymop:"broom",myspray:"spray-can",myreplacer:"lightbulb",signs:"sign"},l=function(e,t){var n=(0,r.useBackend)(t).data,a=e.iconkey,l=n.icons;return a in l?(0,o.createVNode)(1,"img",null,null,1,{src:l[a].substr(1,l[a].length-1),style:{position:"absolute",left:0,right:0,top:0,bottom:0,width:"64px",height:"64px","-ms-interpolation-mode":"nearest-neighbor"}}):(0,o.createComponentVNode)(2,i.Icon,{style:{position:"absolute",left:"4px",right:0,top:"20px",bottom:0,width:"64px",height:"64px"},fontSize:2,name:c[a]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(0),r=n(5),i=n(8),a=n(1),c=n(2),l=n(3);t.Jukebox=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.playing,m=u.loop_mode,p=u.volume,h=u.current_track_ref,C=u.current_track,f=u.percent,N=u.tracks;return(0,o.createComponentVNode)(2,l.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Currently Playing",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Title",children:s&&C&&(0,o.createComponentVNode)(2,c.Box,{children:[C.title," by ",C.artist||"Unkown"]})||(0,o.createComponentVNode)(2,c.Box,{children:"Stopped"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"play",disabled:s,onClick:function(){return d("play")},children:"Play"}),(0,o.createComponentVNode)(2,c.Button,{icon:"stop",disabled:!s,onClick:function(){return d("stop")},children:"Stop"})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loop Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"play",onClick:function(){return d("loopmode",{loopmode:1})},selected:1===m,children:"Next"}),(0,o.createComponentVNode)(2,c.Button,{icon:"random",onClick:function(){return d("loopmode",{loopmode:2})},selected:2===m,children:"Shuffle"}),(0,o.createComponentVNode)(2,c.Button,{icon:"redo",onClick:function(){return d("loopmode",{loopmode:3})},selected:3===m,children:"Repeat"}),(0,o.createComponentVNode)(2,c.Button,{icon:"step-forward",onClick:function(){return d("loopmode",{loopmode:4})},selected:4===m,children:"Once"})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:f,maxValue:1,color:"good"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,c.Slider,{minValue:0,step:.01,value:p,maxValue:1,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[0,.25]},format:function(e){return(0,r.round)(100*e,1)+"%"},onChange:function(e,t){return d("volume",{val:(0,r.round)(t,2)})}})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Available Tracks",children:N.length&&(0,i.sortBy)((function(e){return e.title}))(N).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"play",selected:h===e.ref,onClick:function(){return d("change_track",{change_track:e.ref})},children:e.title},e.ref)}))||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Error: No songs loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LawManager=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.LawManager=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data.isSlaved);return(0,o.createComponentVNode)(2,a.Window,{width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[l&&(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:["Law-synced to ",l]})||null,(0,o.createComponentVNode)(2,c)]})})};var c=function(e,t){var n=(0,r.useSharedState)(t,"lawsTabIndex",0),a=n[0],c=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===a,onClick:function(){return c(0)},children:"Law Management"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===a,onClick:function(){return c(1)},children:"Law Sets"})]}),0===a&&(0,o.createComponentVNode)(2,l)||null,1===a&&(0,o.createComponentVNode)(2,u)||null],0)},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.ion_law_nr,u=c.ion_law,s=c.zeroth_law,m=c.inherent_law,p=c.supplied_law,h=c.supplied_law_position,C=c.zeroth_laws,f=c.has_zeroth_laws,N=c.ion_laws,b=c.has_ion_laws,V=c.inherent_laws,g=c.has_inherent_laws,v=c.supplied_laws,_=c.has_supplied_laws,k=c.isAI,y=c.isMalf,L=c.isAdmin,B=c.channel,w=c.channels,x=C.map((function(e){return e.zero=!0,e})).concat(V);return(0,o.createComponentVNode)(2,i.Section,{children:[b&&(0,o.createComponentVNode)(2,d,{laws:N,title:l+" Laws:",mt:-2})||null,(f||g)&&(0,o.createComponentVNode)(2,d,{laws:x,title:"Inherent Laws",mt:-2})||null,_&&(0,o.createComponentVNode)(2,d,{laws:v,title:"Supplied Laws",mt:-2})||null,(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Controls",mt:-2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Statement Channel",children:w.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.channel,selected:B===e.channel,onClick:function(){return a("law_channel",{law_channel:e.channel})}},e.channel)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"State Laws",children:(0,o.createComponentVNode)(2,i.Button,{icon:"volume-up",onClick:function(){return a("state_laws")},children:"State Laws"})}),k&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Law Notification",children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation",onClick:function(){return a("notify_laws")},children:"Notify"})})||null]})}),y&&(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Add Laws",mt:-2,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,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Law"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Index"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Add"})]}),L&&!f&&(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Zero"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:s,fluid:!0,onChange:function(e,t){return a("change_zeroth_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_zeroth_law")},children:"Add"})})]})||null,(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Ion"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:u,fluid:!0,onChange:function(e,t){return a("change_ion_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_ion_law")},children:"Add"})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Inherent"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:m,fluid:!0,onChange:function(e,t){return a("change_inherent_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_inherent_law")},children:"Add"})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Supplied"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:p,fluid:!0,onChange:function(e,t){return a("change_supplied_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("change_supplied_law_position")},children:h})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_supplied_law")},children:"Add"})})]})]})})||null]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.isMalf,d=c.isAdmin,u=e.laws,s=e.title,m=e.noButtons,p=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["laws","title","noButtons"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Section,Object.assign({level:2,title:s},p,{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,{collapsing:!0,children:"Index"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Law"}),!m&&(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"State"})||null,l&&!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Edit"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Delete"})],4)||null]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[e.index,"."]}),(0,o.createComponentVNode)(2,i.Table.Cell,{color:e.zero?"bad":null,children:e.law}),!m&&(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"volume-up",selected:e.state,onClick:function(){return a("state_law",{ref:e.ref,state_law:!e.state})},children:e.state?"Yes":"No"})})||null,l&&!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:e.zero&&!d,icon:"pen",onClick:function(){return a("edit_law",{edit_law:e.ref})},children:"Edit"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:e.zero&&!d,color:"bad",icon:"trash",onClick:function(){return a("delete_law",{delete_law:e.ref})},children:"Delete"})})],4)||null]},e.index)}))]})})))},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.isMalf,u=c.law_sets;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Remember: Stating laws other than those currently loaded may be grounds for decommissioning! - NanoTrasen"}),u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{disabled:!l,icon:"sync",onClick:function(){return a("transfer_laws",{transfer_laws:e.ref})},children:"Load Laws"}),(0,o.createComponentVNode)(2,i.Button,{icon:"volume-up",onClick:function(){return a("state_law_set",{state_law_set:e.ref})},children:"State Laws"})],4),children:[e.laws.has_ion_laws&&(0,o.createComponentVNode)(2,d,{noButtons:!0,laws:e.laws.ion_laws,title:e.laws.ion_law_nr+" Laws:"})||null,(e.laws.has_zeroth_laws||e.laws.has_inherent_laws)&&(0,o.createComponentVNode)(2,d,{noButtons:!0,laws:e.laws.zeroth_laws.concat(e.laws.inherent_laws),title:e.header})||null,e.laws.has_supplied_laws&&(0,o.createComponentVNode)(2,d,{noButtons:!0,laws:e.laws.supplied_laws,title:"Supplied Laws"})||null]},e.name)}))||null],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.LookingGlass=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.LookingGlass=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.supportedPrograms,u=l.currentProgram,s=l.immersion,m=l.gravity,p=Math.min(180+23*d.length,600);return(0,o.createComponentVNode)(2,a.Window,{width:300,height:p,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Programs",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eye",selected:e===u,onClick:function(){return c("program",{program:e})},children:e},e)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gravity",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"user-astronaut",selected:m,onClick:function(){return c("gravity")},children:m?"Enabled":"Disabled"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Full Immersion",children:(0,o.createComponentVNode)(2,i.Button,{mt:-1,fluid:!0,icon:"eye",selected:s,onClick:function(){return c("immersion")},children:s?"Enabled":"Disabled"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechaControlConsole=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6);t.MechaControlConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.beacons,s=d.stored_data;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[s.length&&(0,o.createComponentVNode)(2,i.Modal,{children:(0,o.createComponentVNode)(2,i.Section,{height:"400px",style:{"overflow-y":"auto"},title:"Log",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"window-close",onClick:function(){return l("clear_log")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:["(",e.time,") (",e.year,")"]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,c.decodeHtmlEntities)(e.message)})]},e.time)}))})})||null,u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"comment",onClick:function(){return l("send_message",{mt:e.ref})},children:"Message"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return l("get_log",{mt:e.ref})},children:"View Log"}),(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"red",content:"EMP",icon:"bomb",onClick:function(){return l("shock",{mt:e.ref})}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.75*e.maxHealth,Infinity],average:[.5*e.maxHealth,.75*e.maxHealth],bad:[-Infinity,.5*e.maxHealth]},value:e.health,maxValue:e.maxHealth})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Charge",children:e.cell&&(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.75*e.cellMaxCharge,Infinity],average:[.5*e.cellMaxCharge,.75*e.cellMaxCharge],bad:[-Infinity,.5*e.cellMaxCharge]},value:e.cellCharge,maxValue:e.cellMaxCharge})||(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Cell Installed"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Air Tank",children:[e.airtank,"kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pilot",children:e.pilot||"Unoccupied"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:(0,c.toTitleCase)(e.location)||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Active Equipment",children:e.active||"None"}),e.cargoMax&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cargo Space",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[.75*e.cargoMax,Infinity],average:[.5*e.cargoMax,.75*e.cargoMax],good:[-Infinity,.5*e.cargoMax]},value:e.cargoUsed,maxValue:e.cargoMax})})||null]})},e.name)}))||(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No mecha beacons found."})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Medbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Medbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.beaker,m=l.beaker_total,p=l.beaker_max,h=l.locked,C=l.heal_threshold,f=l.heal_threshold_max,N=l.injection_amount_min,b=l.injection_amount,V=l.injection_amount_max,g=l.use_beaker,v=l.declare_treatment,_=l.vocal;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Medical Unit v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("power")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:"eject",onClick:function(){return c("eject")},children:"Eject"}),children:s&&(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,maxValue:p,children:[m," / ",p]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No beaker loaded."})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:h?"good":"bad",children:h?"Locked":"Unlocked"})]})}),!h&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavioral Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Healing Threshold",children:(0,o.createComponentVNode)(2,i.NumberInput,{fluid:!0,minValue:0,maxValue:f,value:C,onDrag:function(e,t){return c("adj_threshold",{val:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Injection Amount",children:(0,o.createComponentVNode)(2,i.NumberInput,{fluid:!0,minValue:N,maxValue:V,value:b,onDrag:function(e,t){return c("adj_inject",{val:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Reagent Source",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:g?"toggle-on":"toggle-off",selected:g,onClick:function(){return c("use_beaker")},children:g?"Loaded Beaker (When available)":"Internal Synthesizer"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Treatment Report",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:v?"toggle-on":"toggle-off",selected:v,onClick:function(){return c("declaretreatment")},children:v?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Speaker",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:_?"toggle-on":"toggle-off",selected:_,onClick:function(){return c("togglevoice")},children:_?"On":"Off"})})]})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalRecords=void 0;var o=n(0),r=n(1),i=n(2),a=n(45),c=n(3),l=n(95),d=n(96),u=n(62),s=(n(6),function(e,t){(0,a.modalOpen)(e,"edit",{field:t.edit,value:t.value})});t.MedicalRecords=function(e,t){var n,s=(0,r.useBackend)(t).data,C=s.authenticated,f=s.screen;return C?(2===f?n=(0,o.createComponentVNode)(2,m):3===f?n=(0,o.createComponentVNode)(2,p):4===f?n=(0,o.createComponentVNode)(2,h):5===f?n=(0,o.createComponentVNode)(2,N):6===f&&(n=(0,o.createComponentVNode)(2,b)),(0,o.createComponentVNode)(2,c.Window,{width:800,height:380,resizable:!0,children:[(0,o.createComponentVNode)(2,a.ComplexModal,{maxHeight:"100%",maxWidth:"80%"}),(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,l.LoginInfo),(0,o.createComponentVNode)(2,u.TemporaryNotice),(0,o.createComponentVNode)(2,V),(0,o.createComponentVNode)(2,i.Section,{height:"calc(100% - 5rem)",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,c.Window,{width:800,height:380,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d.LoginScreen)})})};var m=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.records;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search by Name, DNA, or ID",onChange:function(e,t){return a("search",{t1:t})}}),(0,o.createComponentVNode)(2,i.Box,{mt:"0.5rem",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{icon:"user",mb:"0.5rem",content:e.id+": "+e.name,onClick:function(){return a("d_rec",{d_rec:e.ref})}},t)}))})],4)},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Backup to Disk",disabled:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"upload",content:"Upload from Disk",my:"0.5rem",disabled:!0}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",content:"Delete All Medical Records",onClick:function(){return n("del_all")}})],4)},h=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.medical,d=c.printing;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"General Data",level:2,mt:"-6px",children:(0,o.createComponentVNode)(2,C)}),(0,o.createComponentVNode)(2,i.Section,{title:"Medical Data",level:2,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",level:2,children:[(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Medical Record",color:"bad",onClick:function(){return a("del_r")}}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"spinner":"print",disabled:d,iconSpin:!!d,content:"Print Entry",ml:"0.5rem",onClick:function(){return a("print_p")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back",mt:"0.5rem",onClick:function(){return a("screen",{screen:2})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.general;return n&&n.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"left",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:n.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[(0,o.createComponentVNode)(2,i.Box,{height:"20px",display:"inline-block",children:e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)}))}),!!e.edit&&(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",onClick:function(){return s(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"right",textAlign:"right",children:!!n.has_photos&&n.photos.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e.substr(1,e.length-1),style:{width:"96px","margin-bottom":"0.5rem","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createVNode)(1,"br"),"Photo #",t+1]},t)}))})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General records lost!"})},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.medical;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)})),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return s(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Comments/Log",level:2,children:[0===l.comments.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",display:"inline",children:e.header}),(0,o.createVNode)(1,"br"),e.text,(0,o.createComponentVNode)(2,i.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return c("del_c",{del_c:t+1})}})]},t)})),(0,o.createComponentVNode)(2,i.Button,{icon:"comment-medical",content:"Add Entry",color:"good",mt:"0.5rem",mb:"0",onClick:function(){return(0,a.modalOpen)(t,"add_c")}})]})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["Medical records lost!",(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"New Record",ml:"0.5rem",onClick:function(){return c("new")}})]})},N=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.virus;return c.sort((function(e,t){return e.name>t.name?1:-1})),c.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"flask",content:e.name,mb:"0.5rem",onClick:function(){return a("vir",{vir:e.D})}}),(0,o.createVNode)(1,"br")],4,t)}))},b=function(e,t){var n=(0,r.useBackend)(t).data.medbots;return 0===n.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"There are no Medbots."}):n.map((function(e,t){return(0,o.createComponentVNode)(2,i.Collapsible,{open:!0,title:e.name,children:(0,o.createComponentVNode)(2,i.Box,{px:"0.5rem",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:[e.area||"Unknown"," (",e.x,", ",e.y,")"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:e.on?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Online"}),(0,o.createComponentVNode)(2,i.Box,{mt:"0.5rem",children:e.use_beaker?"Reservoir: "+e.total_volume+"/"+e.maximum_volume:"Using internal synthesizer."})],4):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Offline"})})]})})},t)}))},V=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.screen;return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===c,onClick:function(){return a("screen",{screen:2})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:5===c,onClick:function(){return a("screen",{screen:5})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"database"}),"Virus Database"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:6===c,onClick:function(){return a("screen",{screen:6})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"plus-square"}),"Medbot Tracking"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:3===c,onClick:function(){return a("screen",{screen:3})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"wrench"}),"Record Maintenance"]})]})};(0,a.modalRegisterBodyOverride)("virus",(function(e,t){var n=(0,r.useBackend)(t).act,a=e.args;return(0,o.createComponentVNode)(2,i.Section,{level:2,m:"-1rem",title:a.name||"Virus",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return n("modal_close")}}),children:(0,o.createComponentVNode)(2,i.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Spread",children:[a.spread_text," Transmission"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Possible cure",children:a.antigen}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rate of Progression",children:a.rate}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Antibiotic Resistance",children:[a.resistance,"%"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species Affected",children:a.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Symptoms",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:a.symptoms.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.stage+". "+e.name,children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",children:"Strength:"})," ",e.strength,"\xa0",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",children:"Aggressiveness:"})," ",e.aggressiveness]},e.stage)}))})})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.MessageMonitor=void 0;var o=n(0),r=(n(5),n(6)),i=n(1),a=n(2),c=n(3),l=n(62),d=n(61);t.MessageMonitor=function(e,t){var n,r=(0,i.useBackend)(t),d=(r.act,r.data),p=d.auth,h=d.linkedServer,C=(d.message,d.hacking),f=d.emag;return n=C||f?(0,o.createComponentVNode)(2,u):p?h?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR"}):(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,c.Window,{width:670,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.TemporaryNotice),n]})})};var u=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.isMalfAI);return(0,o.createComponentVNode)(2,d.FullscreenNotice,{title:"ERROR",children:r?(0,o.createComponentVNode)(2,a.Box,{children:"Brute-forcing for server key. It will take 20 seconds for every character that the password has."}):(0,o.createComponentVNode)(2,a.Box,{children:["01000010011100100111010101110100011001010010110",(0,o.createVNode)(1,"br"),"10110011001101111011100100110001101101001011011100110011",(0,o.createVNode)(1,"br"),"10010000001100110011011110111001000100000011100110110010",(0,o.createVNode)(1,"br"),"10111001001110110011001010111001000100000011010110110010",(0,o.createVNode)(1,"br"),"10111100100101110001000000100100101110100001000000111011",(0,o.createVNode)(1,"br"),"10110100101101100011011000010000001110100011000010110101",(0,o.createVNode)(1,"br"),"10110010100100000001100100011000000100000011100110110010",(0,o.createVNode)(1,"br"),"10110001101101111011011100110010001110011001000000110011",(0,o.createVNode)(1,"br"),"00110111101110010001000000110010101110110011001010111001",(0,o.createVNode)(1,"br"),"00111100100100000011000110110100001100001011100100110000",(0,o.createVNode)(1,"br"),"10110001101110100011001010111001000100000011101000110100",(0,o.createVNode)(1,"br"),"00110000101110100001000000111010001101000011001010010000",(0,o.createVNode)(1,"br"),"00111000001100001011100110111001101110111011011110111001",(0,o.createVNode)(1,"br"),"00110010000100000011010000110000101110011001011100010000",(0,o.createVNode)(1,"br"),"00100100101101110001000000111010001101000011001010010000",(0,o.createVNode)(1,"br"),"00110110101100101011000010110111001110100011010010110110",(0,o.createVNode)(1,"br"),"10110010100101100001000000111010001101000011010010111001",(0,o.createVNode)(1,"br"),"10010000001100011011011110110111001110011011011110110110",(0,o.createVNode)(1,"br"),"00110010100100000011000110110000101101110001000000111001",(0,o.createVNode)(1,"br"),"00110010101110110011001010110000101101100001000000111100",(0,o.createVNode)(1,"br"),"10110111101110101011100100010000001110100011100100111010",(0,o.createVNode)(1,"br"),"10110010100100000011010010110111001110100011001010110111",(0,o.createVNode)(1,"br"),"00111010001101001011011110110111001110011001000000110100",(0,o.createVNode)(1,"br"),"10110011000100000011110010110111101110101001000000110110",(0,o.createVNode)(1,"br"),"00110010101110100001000000111001101101111011011010110010",(0,o.createVNode)(1,"br"),"10110111101101110011001010010000001100001011000110110001",(0,o.createVNode)(1,"br"),"10110010101110011011100110010000001101001011101000010111",(0,o.createVNode)(1,"br"),"00010000001001101011000010110101101100101001000000111001",(0,o.createVNode)(1,"br"),"10111010101110010011001010010000001101110011011110010000",(0,o.createVNode)(1,"br"),"00110100001110101011011010110000101101110011100110010000",(0,o.createVNode)(1,"br"),"00110010101101110011101000110010101110010001000000111010",(0,o.createVNode)(1,"br"),"00110100001100101001000000111001001101111011011110110110",(0,o.createVNode)(1,"br"),"10010000001100100011101010111001001101001011011100110011",(0,o.createVNode)(1,"br"),"10010000001110100011010000110000101110100001000000111010",(0,o.createVNode)(1,"br"),"001101001011011010110010100101110"]})})},s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.isMalfAI;return(0,o.createComponentVNode)(2,d.FullscreenNotice,{title:"Welcome",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.5rem",bold:!0,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"}),"Unauthorized"]}),(0,o.createComponentVNode)(2,a.Box,{color:"label",my:"1rem",children:["Decryption Key:",(0,o.createComponentVNode)(2,a.Input,{placeholder:"Decryption Key",ml:"0.5rem",onChange:function(e,t){return r("auth",{key:t})}})]}),!!c&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",onClick:function(){return r("hack")}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"Please authenticate with the server in order to show additional options."})]})},m=function(e,t){var n,r=(0,i.useBackend)(t),c=r.act,l=r.data.linkedServer,d=(0,i.useLocalState)(t,"tabIndex",0),u=d[0],s=d[1];return 0===u?n=(0,o.createComponentVNode)(2,p):1===u?n=(0,o.createComponentVNode)(2,h,{logs:l.pda_msgs,pda:!0}):2===u?n=(0,o.createComponentVNode)(2,h,{logs:l.rc_msgs,rc:!0}):3===u?n=(0,o.createComponentVNode)(2,C):4===u&&(n=(0,o.createComponentVNode)(2,f)),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===u,onClick:function(){return s(0)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"bars"})," Main Menu"]},"Main"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"font"})," Message Logs"]},"MessageLogs"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"bold"})," Request Logs"]},"RequestLogs"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===u,onClick:function(){return s(3)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"comment-alt"})," Admin Messaging"]},"AdminMessage"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:4===u,onClick:function(){return s(4)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"comment-slash"})," Spam Filter"]},"SpamFilter"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{color:"red",onClick:function(){return c("deauth")},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"sign-out-alt"})," Log Out"]},"Logout")]}),(0,o.createComponentVNode)(2,a.Box,{m:2,children:n})],4)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.linkedServer;return(0,o.createComponentVNode)(2,a.Section,{title:"Main Menu",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"link",content:"Server Link",onClick:function(){return r("find")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Server "+(c.active?"Enabled":"Disabled"),selected:c.active,onClick:function(){return r("active")}})],4),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Server Status",children:(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Good"})})}),(0,o.createComponentVNode)(2,a.Button,{mt:1,icon:"key",content:"Set Custom Key",onClick:function(){return r("pass")}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",confirmIcon:"exclamation-triangle",icon:"exclamation-triangle",content:"Clear Message Logs"}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",confirmIcon:"exclamation-triangle",icon:"exclamation-triangle",content:"Clear Request Logs"})]})},h=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=(n.data,e.logs),d=e.pda,u=e.rc;return(0,o.createComponentVNode)(2,a.Section,{title:d?"PDA Logs":u?"Request Logs":"Logs",buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",icon:"trash",confirmIcon:"trash",content:"Delete All",onClick:function(){return c(d?"del_pda":"del_rc")}}),children:(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{m:"2px",basis:"49%",grow:t%2,children:(0,o.createComponentVNode)(2,a.Section,{title:e.sender+" -> "+e.recipient,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{confirmContent:"Delete Log?",color:"bad",icon:"trash",confirmIcon:"trash",onClick:function(){return c("delete",{id:e.ref,type:u?"rc":"pda"})}}),children:u?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:e.message}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Verification",color:"Unauthenticated"===e.id_auth?"bad":"good",children:(0,r.decodeHtmlEntities)(e.id_auth)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stamp",children:e.stamp})]}):e.message})},e.ref)}))})})},C=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.possibleRecipients,d=c.customsender,u=c.customrecepient,s=c.customjob,m=c.custommessage,p=Object.keys(l);return(0,o.createComponentVNode)(2,a.Section,{title:"Admin Messaging",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sender",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:d,onChange:function(e,t){return r("set_sender",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sender's Job",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return r("set_sender_job",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recipient",children:(0,o.createComponentVNode)(2,a.Dropdown,{value:u,options:p,width:"100%",mb:-.7,onSelected:function(e){return r("set_recipient",{val:l[e]})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",verticalAlign:"top",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,mb:.5,value:m,onChange:function(e,t){return r("set_message",{val:t})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"comment",content:"Send Message",onClick:function(){return r("send_message")}})]})},f=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.linkedServer;return(0,o.createComponentVNode)(2,a.Section,{title:"Spam Filtering",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:c.spamFilter.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"trash",color:"bad",content:"Delete",onClick:function(){return r("deltoken",{deltoken:e.index})}}),children:e.token},e.index)}))}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add New Entry",onClick:function(){return r("addtoken")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Microwave=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.Microwave=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.config,d=n.data,u=d.broken,s=d.operating,m=d.dirty,p=d.items;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:u&&(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Bzzzzttttt!!"})})||s&&(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"good",children:["Microwaving in progress!",(0,o.createVNode)(1,"br"),"Please wait...!"]})})||m&&(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["This microwave is dirty!",(0,o.createVNode)(1,"br"),"Please clean it before use!"]})})||p.length&&(0,o.createComponentVNode)(2,i.Section,{level:1,title:"Ingredients",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",onClick:function(){return c("cook")},children:"Microwave"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("dispose")},children:"Eject"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[e.amt," ",e.extra]},e.name)}))})})||(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[l.title," is empty."]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningOreProcessingConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=(n(8),n(193));t.MiningOreProcessingConsole=function(e,t){var n=(0,i.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=(d.ores,d.showAllOres,d.power),p=d.speed;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,l.MiningUser,{insertIdText:(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",mr:1,onClick:function(){return r("insert")},children:"Insert ID"}),"in order to claim points."]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",selected:p,onClick:function(){return r("speed_toggle")},children:p?"High-Speed Active":"High-Speed Inactive"}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:s,onClick:function(){return r("power")},children:s?"Smelting":"Not Smelting"})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current unclaimed points",buttons:(0,o.createComponentVNode)(2,a.Button,{disabled:u<1,icon:"download",onClick:function(){return r("claim")},children:"Claim"}),children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})}),(0,o.createComponentVNode)(2,m)]})})};var d=["Not Processing","Smelting","Compressing","Alloying"],u=["verdantium","mhydrogen","diamond","platinum","uranium","gold","silver","rutile","phoron","marble","lead","sand","carbon","hematite"],s=function(e,t){return-1===u.indexOf(e.ore)||-1===u.indexOf(t.ore)?e.ore-t.ore:u.indexOf(t.ore)-u.indexOf(e.ore)},m=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,u=l.ores,m=l.showAllOres;l.power;return(0,o.createComponentVNode)(2,a.Section,{title:"Ore Processing Controls",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"toggle-on":"toggle-off",selected:m,onClick:function(){return c("showAllOres")},children:m?"All Ores":"Ores in Machine"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u.length&&u.sort(s).map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.toTitleCase)(e.name),buttons:(0,o.createComponentVNode)(2,a.Dropdown,{width:"120px",color:(0===e.processing?"red":1===e.processing&&"green")||2===e.processing&&"blue"||3===e.processing&&"yellow",options:d,selected:d[e.processing],onSelected:function(t){return c("toggleSmelting",{ore:e.ore,set:d.indexOf(t)})}}),children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:e.amount})})},e.ore)}))||(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No ores in machine."})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningStackingConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3);n(8);t.MiningStackingConsole=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=d.stacktypes,s=d.stackingAmt;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Stacker Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stacking",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,value:s,minValue:1,maxValue:50,stepPixelSize:5,onChange:function(e,t){return l("change_stack",{amt:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),u.length&&u.sort().map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.toTitleCase)(e.type),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return l("release_stack",{stack:e.type})},children:"Eject"}),children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:e.amt})},e.type)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Empty",color:"average",children:"No stacks in machine."})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=n(193);var d={Alphabetical:function(e,t){return e-t},"By availability":function(e,t){return-(e.affordable-t.affordable)},"By price":function(e,t){return e.price-t.price}};t.MiningVendor=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:400,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",scrollable:!0,children:[(0,o.createComponentVNode)(2,l.MiningUser,{insertIdText:"Please insert an ID in order to make purchases."}),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,u)]})})};var u=function(e,t){var n=(0,i.useBackend)(t),l=(n.act,n.data),u=l.has_id,s=l.id,p=l.items,h=(0,i.useLocalState)(t,"search",""),C=h[0],f=(h[1],(0,i.useLocalState)(t,"sort","Alphabetical")),N=f[0],b=(f[1],(0,i.useLocalState)(t,"descending",!1)),V=b[0],g=(b[1],(0,r.createSearch)(C,(function(e){return e[0]}))),v=!1,_=Object.entries(p).map((function(e,t){var n=Object.entries(e[1]).filter(g).map((function(e){return e[1].affordable=u&&s.points>=e[1].price,e[1]})).sort(d[N]);if(0!==n.length)return V&&(n=n.reverse()),v=!0,(0,o.createComponentVNode)(2,m,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,a.Section,{onClick:function(e){return(0,c.refocusLayout)()},children:v?_:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No items matching your criteria was found!"})})})},s=function(e,t){var n=(0,i.useLocalState)(t,"search",""),r=(n[0],n[1]),c=(0,i.useLocalState)(t,"sort",""),l=(c[0],c[1]),u=(0,i.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:"Alphabetical",options:Object.keys(d),width:"100%",lineHeight:"19px",onSelected:function(e){return l(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"arrow-down":"arrow-up",height:"19px",tooltip:s?"Descending order":"Ascending order",tooltipPosition:"bottom-left",ml:"0.5rem",onClick:function(){return m(!s)}})})]})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=e.title,d=e.items,u=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Collapsible,Object.assign({open:!0,title:l},u,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,a.Button,{disabled:!c.has_id||c.id.points=450?"Overcharged":e>=250?"Good Charge":"Low Charge":e>=250?"NIF Power Requirement met.":e>=150?"Fluctuations in available power.":"Power failure imminent."},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=(n.config,n.data),u=c.nif_percent,s=c.nif_stat,m=(c.last_notification,c.nutrition),p=c.isSynthetic,h=c.modules,C=e.setViewing;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"NIF Condition",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u,minValue:0,maxValue:100,ranges:{good:[50,Infinity],average:[25,50],bad:[-Infinity,0]},children:[l(s,u)," (",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:u}),"%)"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"NIF Power",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,minValue:0,maxValue:700,ranges:{good:[250,Infinity],average:[150,250],bad:[0,150]},children:d(m,p)})})]}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"NIFSoft Modules",mt:1,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",color:"bad",confirmContent:"UNINSTALL?",confirmIcon:"trash",tooltip:"Uninstall Module",tooltipPosition:"left",onClick:function(){return a("uninstall",{module:e.ref})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"search",onClick:function(){return C(e)},tooltip:"View Information",tooltipPosition:"left"})],4),children:e.activates&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,selected:e.active,content:e.stat_text,onClick:function(){return a("toggle_module",{module:e.ref})}})||(0,o.createComponentVNode)(2,i.Box,{children:e.stat_text})},e.ref)}))})})]})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.theme;return(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"NIF Theme",verticalAlign:"top",children:(0,o.createComponentVNode)(2,i.Dropdown,{width:"100%",placeholder:"Default",selected:l,options:c,onSelected:function(e){return a("setTheme",{theme:e})}})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NTNetRelay=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(61);t.NTNetRelay=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=i.dos_crashed,u=(i.enabled,i.dos_overload,i.dos_capacity,(0,o.createComponentVNode)(2,l));return c&&(u=(0,o.createComponentVNode)(2,d)),(0,o.createComponentVNode)(2,a.Window,{width:c?700:500,height:c?600:300,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:u})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.dos_crashed,c.enabled),d=c.dos_overload,u=c.dos_capacity;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:l,content:"Relay "+(l?"On":"Off"),onClick:function(){return a("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Network Buffer Status",children:[d," / ",u," GQ"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Options",children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",content:"Purge network blacklist",onClick:function(){return a("purge")}})})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act;n.data;return(0,o.createComponentVNode)(2,c.FullscreenNotice,{title:"ERROR",children:[(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"}),(0,o.createVNode)(1,"h2",null,"NETWORK BUFFERS OVERLOADED",16),(0,o.createVNode)(1,"h3",null,"Overload Recovery Mode",16),(0,o.createVNode)(1,"i",null,"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.",16),(0,o.createVNode)(1,"h3",null,"ADMINISTRATIVE OVERRIDE",16),(0,o.createVNode)(1,"b",null," CAUTION - Data loss may occur ",16)]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",content:"Purge buffered traffic",onClick:function(){return a("restart")}})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Newscaster=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=n(62);t.Newscaster=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data);r.screen,r.user;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.TemporaryNotice,{decode:!0}),(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.user,(0,i.useSharedState)(t,"screen","Main Menu")),c=r[0],l=r[1],d=u[c];return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,d,{setScreen:l})})},u={"Main Menu":function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.securityCaster,l=r.wanted_issue,d=e.setScreen;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Main Menu",children:[l&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eye",onClick:function(){return d("View Wanted")},color:"bad",children:"Read WANTED Issue"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eye",onClick:function(){return d("View List")},children:"View Feed Channels"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",onClick:function(){return d("New Channel")},children:"Create Feed Channel"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",onClick:function(){return d("New Story")},children:"Create Feed Message"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"print",onClick:function(){return d("Print")},children:"Print Newspaper"})]}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:"Feed Security Functions",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",onClick:function(){return d("New Wanted")},children:'Manage "Wanted" Issue'})})],0)},"New Channel":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.channel_name,u=l.c_locked,s=l.user,m=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Creating new Feed Channel",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Channel Name",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:(0,r.decodeHtmlEntities)(d),onInput:function(e,t){return c("set_channel_name",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Channel Author",color:"good",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Accept Public Feeds",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"lock-open",selected:!u,onClick:function(){return c("set_channel_lock")},children:u?"No":"Yes"})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"good",icon:"plus",onClick:function(){return c("submit_new_channel")},children:"Submit Channel"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return m("Main Menu")},children:"Cancel"})]})},"View List":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data.channels,d=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Station Feed Channels",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return d("Main Menu")},children:"Back"}),children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eye",color:e.admin?"good":e.censored?"bad":"",onClick:function(){c("show_channel",{show_channel:e.ref}),d("View Selected Channel")},children:(0,r.decodeHtmlEntities)(e.name)},e.name)}))})},"New Story":function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.channel_name,d=c.user,u=c.msg,s=c.photo_data,m=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Creating new Feed Message...",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiving Channel",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return r("set_channel_receiving")},children:l||"Unset"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Author",color:"good",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Body",verticalAlign:"top",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Section,{width:"99%",inline:!0,children:u||"(no message yet)"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{verticalAlign:"top",onClick:function(){return r("set_new_message")},icon:"pen",tooltip:"Edit Message",tooltipPosition:"left"})})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attach Photo",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"image",onClick:function(){return r("set_attachment")},children:s?"Photo Attached":"No Photo"})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"good",icon:"plus",onClick:function(){return r("submit_new_message")},children:"Submit Message"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return m("Main Menu")},children:"Cancel"})]})},Print:function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.total_num,d=c.active_num,u=c.message_num,s=c.paper_remaining,m=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Printing",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",mb:1,children:["Newscaster currently serves a total of ",l," Feed channels, ",d," of which are active, and a total of ",u," Feed stories."]}),(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Liquid Paper remaining",children:[100*s," cm\xb3"]})}),(0,o.createComponentVNode)(2,a.Button,{mt:1,fluid:!0,color:"good",icon:"plus",onClick:function(){return r("print_paper")},children:"Print Paper"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return m("Main Menu")},children:"Cancel"})]})},"New Wanted":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.channel_name,u=l.msg,s=l.photo_data,m=l.user,p=l.wanted_issue,h=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Wanted Issue Handler",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return h("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Already In Circulation",children:"A wanted issue is already in circulation. You can edit or cancel it below."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Name",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:(0,r.decodeHtmlEntities)(d),onInput:function(e,t){return c("set_channel_name",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:(0,r.decodeHtmlEntities)(u),onInput:function(e,t){return c("set_wanted_desc",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attach Photo",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"image",onClick:function(){return c("set_attachment")},children:s?"Photo Attached":"No Photo"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prosecutor",color:"good",children:m})]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,fluid:!0,color:"good",icon:"plus",onClick:function(){return c("submit_wanted")},children:"Submit Wanted Issue"}),!!p&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"average",icon:"minus",onClick:function(){return c("cancel_wanted")},children:"Take Down Issue"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return h("Main Menu")},children:"Cancel"})]})},"View Wanted":function(e,t){var n=(0,i.useBackend)(t),c=(n.act,n.data.wanted_issue),l=e.setScreen;return c?(0,o.createComponentVNode)(2,a.Section,{title:"--STATIONWIDE WANTED ISSUE--",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return l("Main Menu")},children:"Back"}),children:(0,o.createComponentVNode)(2,a.Box,{color:"white",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submitted by",color:"good",children:(0,r.decodeHtmlEntities)(c.author)}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal",children:(0,r.decodeHtmlEntities)(c.criminal)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,r.decodeHtmlEntities)(c.desc)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Photo",children:c.img&&(0,o.createVNode)(1,"img",null,null,1,{src:c.img})||"None"})]})})}):(0,o.createComponentVNode)(2,a.Section,{title:"No Outstanding Wanted Issues",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return l("Main Menu")},children:"Back"}),children:"There are no wanted issues currently outstanding."})},"View Selected Channel":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.viewing_channel,u=l.securityCaster,s=l.company,m=e.setScreen;return d?(0,o.createComponentVNode)(2,a.Section,{title:(0,r.decodeHtmlEntities)(d.name),buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"bad",icon:"ban",confirmIcon:"ban",content:"Issue D-Notice",onClick:function(){return c("toggle_d_notice",{ref:d.ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("View List")},children:"Back"})],0),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Channel Created By",children:u&&(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"bad",icon:"strikethrough",confirmIcon:"strikethrough",content:(0,r.decodeHtmlEntities)(d.author),tooltip:"Censor?",confirmContent:"Censor Author",onClick:function(){return c("censor_channel_author",{ref:d.ref})}})||(0,o.createComponentVNode)(2,a.Box,{children:(0,r.decodeHtmlEntities)(d.author)})})}),!!d.censored&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:["ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a ",s," D-Notice. No further feed story additions are allowed while the D-Notice is in effect."]}),!!d.messages.length&&d.messages.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{children:["- ",(0,r.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/png;base64,"+e.img}),(0,r.decodeHtmlEntities)(e.caption)||null]}),(0,o.createComponentVNode)(2,a.Box,{color:"grey",children:["[Story by ",(0,r.decodeHtmlEntities)(e.author)," - ",e.timestamp,"]"]}),!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{mt:1,color:"bad",icon:"strikethrough",confirmIcon:"strikethrough",content:"Censor Story",onClick:function(){return c("censor_channel_story_body",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"bad",icon:"strikethrough",confirmIcon:"strikethrough",content:"Censor Author",onClick:function(){return c("censor_channel_story_author",{ref:e.ref})}})],4)]},e.ref)}))||!d.censored&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No feed messages found in channel."})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Channel Not Found",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("View List")},children:"Back"}),children:"The channel you were looking for no longer exists."})}}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBoard=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.NoticeBoard=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.notices;return(0,o.createComponentVNode)(2,a.Window,{width:330,height:300,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:l.length?(0,o.createComponentVNode)(2,i.LabeledList,{children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[e.isphoto&&(0,o.createComponentVNode)(2,i.Button,{icon:"image",content:"Look",onClick:function(){return c("look",{ref:e.ref})}})||e.ispaper&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"sticky-note",content:"Read",onClick:function(){return c("read",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Write",onClick:function(){return c("write",{ref:e.ref})}})],4)||"Unknown Entity",(0,o.createComponentVNode)(2,i.Button,{icon:"minus-circle",content:"Remove",onClick:function(){return c("remove",{ref:e.ref})}})]},t)}))}):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No notices posted here."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAccessDecrypter=void 0;var o=n(0),r=n(1),i=n(3),a=n(133),c=n(2);t.NtosAccessDecrypter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.message,s=d.running,m=d.rate,p=d.factor,h=d.regions,C=function(e){for(var t="";t.lengthp?t+="0":t+="1";return t};return(0,o.createComponentVNode)(2,i.NtosWindow,{width:600,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:u&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:u})||s&&(0,o.createComponentVNode)(2,c.Section,{children:["Attempting to decrypt network access codes. Please wait. Rate: ",m," PHash/s",(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"ban",onClick:function(){return l("PRG_reset")},children:"Abort"})]})||(0,o.createComponentVNode)(2,c.Section,{title:"Pick access code to decrypt",children:h.length&&(0,o.createComponentVNode)(2,a.IdentificationComputerRegions,{actName:"PRG_execute"})||(0,o.createComponentVNode)(2,c.Box,{children:"Please insert ID card."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(0),r=n(75),i=n(1),a=n(2),c=n(3);t.NtosArcade=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(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:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.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===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("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===d.GameActive,onClick:function(){return l("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===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,a.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmosControl=void 0;var o=n(0),r=n(3),i=n(186);t.NtosAtmosControl=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:870,height:708,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.AtmosControlContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCameraConsole=void 0;var o=n(0),r=n(3),i=n(187);t.NtosCameraConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:870,height:708,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.CameraConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCommunicationsConsole=void 0;var o=n(0),r=n(1),i=n(3),a=n(189);t.NtosCommunicationsConsole=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.CommunicationsConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,h=l.disk_size,C=l.disk_used,f=l.hardware,N=void 0===f?[]:f;return(0,o.createComponentVNode)(2,a.NtosWindow,{theme:d,width:520,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,i.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"File System",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:C,minValue:0,maxValue:h,color:"good",children:[C," GQ / ",h," GQ"]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Hardware Components",children:N.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,i.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return c("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewMonitor=void 0;var o=n(0),r=n(3),i=n(190);t.NtosCrewMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.CrewMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosDigitalWarrant=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(8);t.NtosDigitalWarrant=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=(i.warrantname,i.warrantcharges,i.warrantauth),d=(i.type,i.allwarrants,(0,o.createComponentVNode)(2,l));return c&&(d=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:500,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:d})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act;n.data.allwarrants;return(0,o.createComponentVNode)(2,i.Section,{title:"Warrants",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"plus",fluid:!0,onClick:function(){return a("addwarrant")},children:"Create New Warrant"}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Arrest Warrants",children:(0,o.createComponentVNode)(2,d,{type:"arrest"})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Search Warrants",children:(0,o.createComponentVNode)(2,d,{type:"search"})})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=e.type,u=l.allwarrants,s=(0,c.filter)((function(e){return e.arrestsearch===d}))(u);return(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:"arrest"===d?"Name":"Location"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"arrest"===d?"Charges":"Reason"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Authorized By"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Edit"})]}),s.length&&s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.warrantname}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.charges}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.auth}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrant",{id:e.id})}})})]},e.id)}))||(0,o.createComponentVNode)(2,i.Table.Row,{children:(0,o.createComponentVNode)(2,i.Table.Cell,{colspan:"3",color:"bad",children:["No ",d," warrants found."]})})]})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.warrantname,d=c.warrantcharges,u=c.warrantauth,s=c.type,m="arrest"===s,p="arrest"===s?"Name":"Location",h="arrest"===s?"Charges":"Reason";return(0,o.createComponentVNode)(2,i.Section,{title:m?"Editing Arrest Warrant":"Editing Search Warrant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"save",onClick:function(){return a("savewarrant")},children:"Save"}),(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"trash",onClick:function(){return a("deletewarrant")},children:"Delete"}),(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("back")},children:"Back"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:p,buttons:m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"search",onClick:function(){return a("editwarrantname")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrantnamecustom")}})],4)||(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrantnamecustom")}}),children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:h,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrantcharges")}}),children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Authorized By",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"balance-scale",onClick:function(){return a("editwarrantauth")}}),children:u})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosEmailAdministration=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(194);t.NtosEmailAdministration=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=i.error,m=i.cur_title,p=i.current_account,h=(0,o.createComponentVNode)(2,l);return c?h=(0,o.createComponentVNode)(2,d):m?h=(0,o.createComponentVNode)(2,u):p&&(h=(0,o.createComponentVNode)(2,s)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:600,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:h})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.accounts;return(0,o.createComponentVNode)(2,i.Section,{title:"Welcome to the NTNet Email Administration System",children:[(0,o.createComponentVNode)(2,i.Box,{italic:!0,mb:1,children:"SECURE SYSTEM - Have your identification ready"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"plus",onClick:function(){return a("newaccount")},children:"Create New Account"}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,mt:1,mb:1,children:"Select account to administrate"}),c.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eye",onClick:function(){return a("viewaccount",{viewaccount:e.uid})},children:e.login},e.uid)}))]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.error;return(0,o.createComponentVNode)(2,i.Section,{title:"Message",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("back")},children:"Back"}),children:c})},u=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,c.NtosEmailClientViewMessage,{administrator:!0})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.error,c.msg_title,c.msg_body,c.msg_timestamp,c.msg_source,c.current_account),d=c.cur_suspended,u=c.messages;c.accounts;return(0,o.createComponentVNode)(2,i.Section,{title:"Viewing "+l+" in admin mode",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("back")},children:"Back"}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Account Status",children:(0,o.createComponentVNode)(2,i.Button,{color:d?"bad":"",icon:"ban",tooltip:(d?"Uns":"S")+"uspend Account?",onClick:function(){return a("ban")},children:d?"Suspended":"Normal"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,i.Button,{icon:"key",onClick:function(){return a("changepass")},children:"Change Password"})})]}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Messages",children:u.length&&(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:"Source"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Title"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Received at"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Actions"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.source}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.title}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.timestamp}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return a("viewmail",{viewmail:e.uid})},children:"View"})})]},e.uid)}))]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No messages found in selected account."})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);n(6);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.filename,p=d.filedata,h=d.error,C=d.files,f=void 0===C?[]:C,N=d.usbfiles,b=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(m||h)&&(0,o.createComponentVNode)(2,i.Section,{title:"Viewing File "+m,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Edit",onClick:function(){return l("PRG_edit")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"print",content:"Print",onClick:function(){return l("PRG_printfile")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Close",onClick:function(){return l("PRG_closefile")}})],4),children:[h||null,p&&(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:p}})]})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,c,{files:f,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onOpen:function(e){return l("PRG_openfile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,i.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,c,{usbmode:!0,files:b,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})||null,(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return l("PRG_newtextfile")},children:"New Text File"})})],0)})})};var c=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,a=e.usbmode,c=e.onUpload,l=e.onDelete,d=e.onRename,u=e.onOpen;return(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:"File"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.undeletable?e.name:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Input,{width:"80%",content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}}),(0,o.createComponentVNode)(2,i.Button,{content:"Open",onClick:function(){return u(e.name)}})],4)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(a?(0,o.createComponentVNode)(2,i.Button,{icon:"download",tooltip:"Download",onClick:function(){return c(e.name)}}):(0,o.createComponentVNode)(2,i.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return c(e.name)}}))],0)})]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosIdentificationComputer=void 0;var o=n(0),r=(n(8),n(1)),i=(n(2),n(3)),a=(n(6),n(28),n(133));t.NtosIdentificationComputer=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.IdentificationComputerContent,{ntos:!0})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c={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",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,h=d.light_on,C=d.comp_light_color,f=d.removable_media,N=void 0===f?[]:f,b=d.login,V=void 0===b?[]:b;return(0,o.createComponentVNode)(2,a.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{width:"144px",icon:"lightbulb",selected:h,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",h?"ON":"OFF"]}),(0,o.createComponentVNode)(2,i.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,i.ColorBox,{ml:1,color:C})]})]}),(0,o.createComponentVNode)(2,i.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject ID",disabled:!V.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{children:["ID Name: ",V.IDName]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:["Assignment: ",V.IDJob]})]})}),!!N.length&&(0,o.createComponentVNode)(2,i.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,i.Table,{children:N.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,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,i.Table,{children:m.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,{fluid:!0,color:"transparent",icon:c[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,width:"18px",children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",tooltip:"Set Autorun",tooltipPosition:"left",selected:e.autorun,onClick:function(){return l("PC_setautorun",{name:e.name})},children:"AR"})})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,h=l.is_operator,C=l.all_channels,f=void 0===C?[]:C,N=l.clients,b=void 0===N?[]:N,V=l.messages,g=void 0===V?[]:V,v=null!==p,_=s||u;return(0,o.createComponentVNode)(2,a.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.Section,{height:"600px",children:(0,o.createComponentVNode)(2,i.Table,{height:"580px",children:(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,i.Box,{height:"560px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return c("PRG_newchannel",{new_channel_name:t})}}),f.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return c("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return c("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return c("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[(0,o.createComponentVNode)(2,i.Box,{height:"560px",overflowY:"scroll",children:v&&(_?g.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,i.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,i.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,i.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return c("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,i.Box,{height:"465px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e.name},e.name)}))}),v&&_&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return c("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return c("PRG_leavechannel")}})],4),!!h&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return c("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return c("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return c("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.relays,d=void 0===l?[]:l,u=c.focus,s=c.target,m=c.speed,p=c.overload,h=c.capacity,C=c.error;if(C)return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.NoticeBox,{children:C}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return a("PRG_reset")}})],4);var f=function(e){for(var t="",n=p/h;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,i.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)})]}):(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.id,selected:u===e.id,onClick:function(){return a("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return a("PRG_execute")}})]})};t.NtosNetDosContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3);t.NtosNetDownloader=function(e,t){var n=(0,i.useBackend)(t),r=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,h=void 0===p?[]:p,C=d.error,f=d.hacked_programs,N=void 0===f?[]:f,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!C&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:C}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return r("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:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:h.map((function(e){return(0,o.createComponentVNode)(2,l,{program:e},e.filename)}))}),!!b&&(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."}),N.map((function(e){return(0,o.createComponentVNode)(2,l,{program:e},e.filename)}))]})]})})};var l=function(e,t){var n=e.program,c=(0,i.useBackend)(t),l=c.act,d=c.data,u=d.disk_size,s=d.disk_used,m=d.downloadcompletion,p=(d.downloading,d.downloadname),h=d.downloadsize,C=d.downloadspeed,f=d.downloads_queue,N=u-s;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:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:h,value:m,children:[(0,r.round)(m/h*100,1),"% (",C,"GQ/s)"]})||-1!==f.indexOf(n.filename)&&(0,o.createComponentVNode)(2,a.Button,{icon:"ban",color:"bad",onClick:function(){return l("PRG_removequeued",{filename:n.filename})},children:"Queued..."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:n.size>N,onClick:function(){return l("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.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!"]}),n.size>N&&(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:n.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(0),r=n(2),i=n(1),a=n(3);t.NtosNetMonitor=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,h=l.config_systemcontrol,C=l.idsalarm,f=l.idsstatus,N=l.ntnetmaxlogs,b=l.maxlogs,V=l.minlogs,g=l.banned_nids,v=l.ntnetlogs,_=void 0===v?[]:v;return(0,o.createComponentVNode)(2,a.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[(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:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return c("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"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:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return c("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return c("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return c("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:h?"power-off":"times",content:h?"ENABLED":"DISABLED",selected:h,onClick:function(){return c("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!C&&(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:"Banned NIDs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:"ban",onClick:function(){return c("ban_nid")},children:"Ban NID"}),(0,o.createComponentVNode)(2,r.Button,{icon:"balance-scale",onClick:function(){return c("unban_nid")},children:"Unban NID"})],4),children:g.join(", ")||"None"}),(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 c("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return c("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:N,minValue:V,maxValue:b,width:"39px",onChange:function(e,t){return c("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 c("purgelogs")}}),children:_.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetTransfer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosNetTransfer=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),m=i.error,p=i.downloading,h=i.uploading,C=i.upload_filelist,f=(0,o.createComponentVNode)(2,s);return m?f=(0,o.createComponentVNode)(2,c):p?f=(0,o.createComponentVNode)(2,l):h?f=(0,o.createComponentVNode)(2,d):C.length&&(f=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:575,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:f})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.error;return(0,o.createComponentVNode)(2,i.Section,{title:"An error has occured during operation.",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("PRG_reset")},children:"Reset"}),children:["Additional Information: ",c]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.download_name,d=c.download_progress,u=c.download_size,s=c.download_netspeed;return(0,o.createComponentVNode)(2,i.Section,{title:"Download in progress",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Downloaded File",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d,maxValue:u,children:[d," / ",u," GQ"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transfer Speed",children:[s," GQ/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Controls",children:(0,o.createComponentVNode)(2,i.Button,{icon:"ban",onClick:function(){return a("PRG_reset")},children:"Cancel Download"})})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.upload_clients,d=c.upload_filename,u=c.upload_haspassword;return(0,o.createComponentVNode)(2,i.Section,{title:"Server enabled",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Clients Connected",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Provided file",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Server Password",children:u?"Enabled":"Disabled"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Commands",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"lock",onClick:function(){return a("PRG_setpassword")},children:"Set Password"}),(0,o.createComponentVNode)(2,i.Button,{icon:"ban",onClick:function(){return a("PRG_reset")},children:"Cancel Upload"})]})]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.upload_filelist;return(0,o.createComponentVNode)(2,i.Section,{title:"File transfer server ready.",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("PRG_reset")},children:"Cancel"}),children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"lock",onClick:function(){return a("PRG_setpassword")},children:"Set Password"}),(0,o.createComponentVNode)(2,i.Section,{title:"Pick file to serve.",level:2,children:c.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"upload",onClick:function(){return a("PRG_uploadfile",{uid:e.uid})},children:[e.filename," (",e.size,"GQ)"]},e.uid)}))})]})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.servers;return(0,o.createComponentVNode)(2,i.Section,{title:"Available Files",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"upload",onClick:function(){return a("PRG_uploadmenu")},children:"Send File"}),children:c.length&&(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.uid,children:[!!e.haspassword&&(0,o.createComponentVNode)(2,i.Icon,{name:"lock",mr:1}),e.filename,"\xa0 (",e.size,"GQ)\xa0",(0,o.createComponentVNode)(2,i.Button,{icon:"download",onClick:function(){return a("PRG_downloadfile",{uid:e.uid})},children:"Download"})]},e.uid)}))})||(0,o.createComponentVNode)(2,i.Box,{children:"No upload servers found."})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNewsBrowser=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(75);t.NtosNewsBrowser=function(e,t){var n=(0,r.useBackend)(t),c=n.act,s=n.data,m=s.article,p=s.download,h=s.message,C=(0,o.createComponentVNode)(2,d);return m?C=(0,o.createComponentVNode)(2,l):p&&(C=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:575,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:[h," ",(0,o.createComponentVNode)(2,i.Button,{icon:"times",onClick:function(){return c("PRG_clearmessage")}})]}),C]})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.article;if(!l)return(0,o.createComponentVNode)(2,i.Section,{children:"Error: Article not found."});var d=l.title,u=l.cover,s=l.content;return(0,o.createComponentVNode)(2,i.Section,{title:"Viewing: "+d,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"save",onClick:function(){return a("PRG_savearticle")},children:"Save"}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",onClick:function(){return a("PRG_reset")},children:"Close"})],4),children:[!!u&&(0,o.createVNode)(1,"img",null,null,1,{src:(0,c.resolveAsset)(u)}),(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:s}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.showing_archived,d=c.all_articles;return(0,o.createComponentVNode)(2,i.Section,{title:"Articles List",buttons:(0,o.createComponentVNode)(2,i.Button.Checkbox,{onClick:function(){return a("PRG_toggle_archived")},checked:l,children:"Show Archived"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",onClick:function(){return a("PRG_openarticle",{uid:e.uid})}}),children:[e.size," GQ"]},e.uid)}))||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Error",children:"There appear to be no outstanding news articles on NTNet today."})})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.download,l=c.download_progress,d=c.download_maxprogress,u=c.download_rate;return(0,o.createComponentVNode)(2,i.Section,{title:"Downloading...",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:"good",minValue:0,value:l,maxValue:d,children:[l," / ",d," GQ"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Download Speed",children:[u," GQ/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Controls",children:(0,o.createComponentVNode)(2,i.Button,{icon:"ban",fluid:!0,onClick:function(){return a("PRG_reset")},children:"Abort Download"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosOvermapNavigation=void 0;var o=n(0),r=n(3),i=n(195);t.NtosOvermapNavigation=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:380,height:530,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.OvermapNavigationContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(0),r=n(3),i=n(135);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.PowerMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRCON=void 0;var o=n(0),r=n(3),i=n(196);t.NtosRCON=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:630,height:440,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.RCONContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(0),r=n(2),i=n(1),a=n(3);t.NtosRevelation=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data;return(0,o.createComponentVNode)(2,a.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return c("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:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return c("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosShutoffMonitor=void 0;var o=n(0),r=n(3),i=n(197);t.NtosShutoffMonitor=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.ShutoffMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(0),r=n(3),i=n(198);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.StationAlertConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitor=void 0;var o=n(0),r=n(3),i=n(199);t.NtosSupermatterMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.SupermatterMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosUAV=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosUAV=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.current_uav,u=l.signal_strength,s=l.in_use,m=l.paired_uavs;return(0,o.createComponentVNode)(2,a.NtosWindow,{width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Selected UAV",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"UAV",children:d&&d.status||"[Not Connected]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Signal",children:d&&u||"[Not Connected]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:d&&(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d.power,onClick:function(){return c("power_uav")},children:d.power?"Online":"Offline"})||"[Not Connected]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Camera",children:d&&(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:s,disabled:!d.power,onClick:function(){return c("view_uav")},children:d.power?"Available":"Unavailable"})||"[Not Connected]"})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Paired UAVs",children:m.length&&m.map((function(e){return(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"quidditch",onClick:function(){return c("switch_uav",{switch_uav:e.uavref})},children:e.name})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"times",onClick:function(){return c("del_uav",{del_uav:e.uavref})}})})]},e.uavref)}))||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No UAVs Paired."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWordProcessor=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosWordProcessor=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.PC_device_theme,u=l.error,s=l.browsing,m=l.files,p=(l.usbconnected,l.usbfiles,l.filename),h=l.filedata;return(0,o.createComponentVNode)(2,a.NtosWindow,{resizable:!0,theme:d,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:u&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[(0,o.createVNode)(1,"h2",null,"An Error has occured:",16),"Additional Information: ",u,"Please try again. If the problem persists, contact your system administrator for assistance.",(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back to menu",onClick:function(){return c("PRG_backtomenu")}})]})||s&&(0,o.createComponentVNode)(2,i.Section,{title:"File Browser",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back to editor",onClick:function(){return c("PRG_closebrowser")}}),children:(0,o.createComponentVNode)(2,i.Section,{title:"Available documents (local)",level:2,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:"Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Size (GQ)"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0})]}),m.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,{children:e.size}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"file-word",onClick:function(){return c("PRG_openfile",{PRG_openfile:e.name})},children:"Open"})})]},t)}))]})})})||(0,o.createComponentVNode)(2,i.Section,{title:"Document: "+p,children:[(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_newfile")},children:"New"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_loadmenu")},children:"Load"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_savefile")},children:"Save"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_saveasfile")},children:"Save As"})]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_editfile")},children:"Edit"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_txtrpeview")},children:"Preview"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_taghelp")},children:"Formatting Help"}),(0,o.createComponentVNode)(2,i.Button,{disabled:!h,onClick:function(){return c("PRG_printfile")},children:"Print"})]}),(0,o.createComponentVNode)(2,i.Section,{mt:1,children:(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:h}})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OmniFilter=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=function(e){return e.input?"Input":e.output?"Output":e.f_type?e.f_type:"Disabled"};t.OmniFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.config,m=d.ports,p=d.set_flow_rate,h=d.last_flow_rate;return(0,o.createComponentVNode)(2,a.Window,{width:360,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:s?"Configuration":"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:u?"On":"Off",selected:u,disabled:s,onClick:function(){return l("power")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",selected:s,onClick:function(){return l("configure")}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:m?m.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.dir+" Port",children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{content:"IN",selected:e.input,icon:"compress-arrows-alt",onClick:function(){return l("switch_mode",{mode:"in",dir:e.dir})}}),(0,o.createComponentVNode)(2,i.Button,{content:"OUT",selected:e.output,icon:"expand-arrows-alt",onClick:function(){return l("switch_mode",{mode:"out",dir:e.dir})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",disabled:e.input||e.output,content:e.f_type||"None",onClick:function(){return l("switch_filter",{mode:e.f_type,dir:e.dir})}})],4):c(e)},e.dir)})):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No Ports Detected"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Flow Rate",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Flow Rate",children:[h," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate Limit",children:s?(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:p/10+" L/s",onClick:function(){return l("set_flow_rate")}}):p/10+" L/s"})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OmniMixer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=function(e){return e.input?"Input":e.output?"Output":e.f_type?e.f_type:"Disabled"};t.OmniMixer=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.power,s=d.config,m=d.ports,p=d.set_flow_rate,h=d.last_flow_rate;return(0,o.createComponentVNode)(2,a.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:s?"Configuration":"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:u?"On":"Off",selected:u,disabled:s,onClick:function(){return c("power")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",selected:s,onClick:function(){return c("configure")}})],4),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,{textAlign:"center",children:"Port"}),s?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Input"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Output"})],4):(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Mode"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Concentration"}),s?(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Lock"}):null]}),m?m.map((function(e){return(0,o.createComponentVNode)(2,l,{port:e,config:s},e.dir)})):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No Ports Detected"})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Flow Rate",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Flow Rate",children:[h," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate Limit",children:s?(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:p/10+" L/s",onClick:function(){return c("set_flow_rate")}}):p/10+" L/s"})]})})]})})};var l=function(e,t){var n=(0,r.useBackend)(t).act,a=e.port,l=e.config;return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:a.dir+" Port"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:l?(0,o.createComponentVNode)(2,i.Button,{content:"IN",selected:a.input,disabled:a.output,icon:"compress-arrows-alt",onClick:function(){return n("switch_mode",{mode:a.input?"none":"in",dir:a.dir})}}):c(a)}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:l?(0,o.createComponentVNode)(2,i.Button,{content:"OUT",selected:a.output,icon:"expand-arrows-alt",onClick:function(){return n("switch_mode",{mode:"out",dir:a.dir})}}):100*a.concentration+"%"}),l?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",width:"20%",children:(0,o.createComponentVNode)(2,i.Button,{width:"100%",icon:"wrench",disabled:!a.input,content:a.input?100*a.concentration+" %":"-",onClick:function(){return n("switch_con",{dir:a.dir})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,i.Button,{icon:a.con_lock?"lock":"lock-open",disabled:!a.input,selected:a.con_lock,content:a.f_type||"None",onClick:function(){return n("switch_conlock",{dir:a.dir})}})})],4):null]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(5),i=n(1),a=n(3),c=n(2),l=[["good","Conscious"],["average","Unconscious"],["bad","DEAD"]],d=[["Resp.","oxyLoss"],["Toxin","toxLoss"],["Brute","bruteLoss"],["Burn","fireLoss"]],u={average:[.25,.5],bad:[.5,Infinity]},s=["bad","average","average","good","average","average","bad"];t.OperatingComputer=function(e,t){var n,r=(0,i.useBackend)(t),l=r.act,d=r.data,u=d.hasOccupant,s=d.choice;return n=s?(0,o.createComponentVNode)(2,h):u?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,a.Window,{width:650,height:455,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:!s,icon:"user",onClick:function(){return l("choiceOff")},children:"Patient"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:!!s,icon:"cog",onClick:function(){return l("choiceOn")},children:"Options"})]}),(0,o.createComponentVNode)(2,c.Section,{flexGrow:"1",children:n})]})})};var m=function(e,t){var n=(0,i.useBackend)(t).data.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Patient",level:"2",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:n.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",color:l[n.stat][0],children:l[n.stat][1]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:n.maxHealth,value:n.health/n.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),d.map((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e[0]+" Damage",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:"100",value:n[e[1]]/100,ranges:u,children:(0,r.round)(n[e[1]])},t)},t)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:n.maxTemp,value:n.bodyTemperature/n.maxTemp,color:s[n.temperatureSuitability+3],children:[(0,r.round)(n.btCelsius),"\xb0C, ",(0,r.round)(n.btFaren),"\xb0F"]})}),!!n.hasBlood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:n.bloodMax,value:n.bloodLevel/n.bloodMax,ranges:{bad:[-Infinity,.6],average:[.6,.9],good:[.6,Infinity]},children:[n.bloodPercent,"%, ",n.bloodLevel,"cl"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pulse",children:[n.pulse," BPM"]})],4)]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Current Procedure",level:"2",children:n.surgery&&n.surgery.length?(0,o.createComponentVNode)(2,c.LabeledList,{children:n.surgery.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Current State",children:e.currentStage}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Next Steps",children:e.nextSteps.map((function(e){return(0,o.createVNode)(1,"div",null,e,0,null,e)}))})]})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No procedure ongoing."})})],4)},p=function(){return(0,o.createComponentVNode)(2,c.Flex,{textAlign:"center",height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No patient detected."]})})},h=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,l=a.verbose,d=a.health,u=a.healthAlarm,s=a.oxy,m=a.oxyAlarm,p=a.crit;return(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loudspeaker",children:(0,o.createComponentVNode)(2,c.Button,{selected:l,icon:l?"toggle-on":"toggle-off",content:l?"On":"Off",onClick:function(){return r(l?"verboseOff":"verboseOn")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health Announcer",children:(0,o.createComponentVNode)(2,c.Button,{selected:d,icon:d?"toggle-on":"toggle-off",content:d?"On":"Off",onClick:function(){return r(d?"healthOff":"healthOn")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health Announcer Threshold",children:(0,o.createComponentVNode)(2,c.Knob,{bipolar:!0,minValue:"-100",maxValue:"100",value:u,stepPixelSize:"5",ml:"0",format:function(e){return e+"%"},onChange:function(e,t){return r("health_adj",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Oxygen Alarm",children:(0,o.createComponentVNode)(2,c.Button,{selected:s,icon:s?"toggle-on":"toggle-off",content:s?"On":"Off",onClick:function(){return r(s?"oxyOff":"oxyOn")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Oxygen Alarm Threshold",children:(0,o.createComponentVNode)(2,c.Knob,{bipolar:!0,minValue:"-100",maxValue:"100",value:m,stepPixelSize:"5",ml:"0",onChange:function(e,t){return r("oxy_adj",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Critical Alert",children:(0,o.createComponentVNode)(2,c.Button,{selected:p,icon:p?"toggle-on":"toggle-off",content:p?"On":"Off",onClick:function(){return r(p?"critOff":"critOn")}})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OvermapDisperser=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(134);t.OvermapDisperser=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=l.faillink,u=l.calibration,s=l.overmapdir,m=l.cal_accuracy,p=l.strength,h=l.range,C=l.next_shot,f=l.nopower,N=(l.skill,l.chargeload);return d?(0,o.createComponentVNode)(2,i.Section,{title:"Error",children:"Machine is incomplete, out of range, or misaligned!"}):(0,o.createComponentVNode)(2,i.Flex,{wrap:"wrap",spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"22%",children:(0,o.createComponentVNode)(2,i.Section,{title:"Targeting",textAlign:"center",children:(0,o.createComponentVNode)(2,c.OvermapPanControls,{actToDo:"choose",selected:function(e){return e===s}})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"74%",grow:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Charge",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[f&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Error",children:"At least one part of the machine is unpowered."})||null,(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Load Type",children:N}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cooldown",children:0===C&&(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Ready"})||C>1&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:C})," Seconds",(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Warning: Do not fire during cooldown."})]})||null})]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",mt:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Calibration",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m}),"%",(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"exchange-alt",onClick:function(){return a("skill_calibration")},children:"Pre-Calibration"}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:u.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:["Cal #",t,":",(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"random",onClick:function(){return a("calibration",{calibration:t})},children:e.toString()})]},t)}))})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"45%",grow:1,mt:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Setup",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Strength",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"fist-raised",onClick:function(){return a("strength")},children:p})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Radius",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"expand-arrows-alt",onClick:function(){return a("range")},children:h})})]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,mt:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"red",icon:"bomb",onClick:function(){return a("fire")},children:"Fire ORB"})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OvermapFull=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(200),l=n(201),d=n(202);t.OvermapFull=function(e,t){var n=(0,r.useLocalState)(t,"overmapFullState",0),u=n[0],s=n[1];return(0,o.createComponentVNode)(2,a.Window,{width:800,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===u,onClick:function(){return s(0)},children:"Engines"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Helm"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Sensors"})]}),0===u&&(0,o.createComponentVNode)(2,c.OvermapEnginesContent),1===u&&(0,o.createComponentVNode)(2,l.OvermapHelmContent),2===u&&(0,o.createComponentVNode)(2,d.OvermapShipSensorsContent)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OvermapShieldGenerator=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.OvermapShieldGenerator=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:500,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=c.modes,s=c.offline_for;return s?(0,o.createComponentVNode)(2,i.Section,{title:"EMERGENCY SHUTDOWN",color:"bad",children:["An emergency shutdown has been initiated - generator cooling down. Please wait until the generator cools down before resuming operation. Estimated time left: ",s," seconds."]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Section,{title:"Field Calibration",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:e.status,onClick:function(){return a("toggle_mode",{toggle_mode:e.flag})},children:e.status?"Enabled":"Disabled"}),children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:e.desc}),(0,o.createComponentVNode)(2,i.Box,{mt:.5,children:["Multiplier: ",e.multiplier]})]},e.name)}))})],4)},l=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data),c=a.running,l=a.overloaded,d=a.mitigation_max,u=a.mitigation_physical,s=a.mitigation_em,m=a.mitigation_heat,p=a.field_integrity,h=a.max_energy,C=a.current_energy,f=a.percentage_energy,N=a.total_segments,b=a.functional_segments,V=a.field_radius,g=a.target_radius,v=a.input_cap_kw,_=a.upkeep_power_usage,k=a.power_usage,y=a.spinup_counter;return(0,o.createComponentVNode)(2,i.Section,{title:"System Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Generator is",children:1===c&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Shutting Down"})||2===c&&(l&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Overloaded"})||(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Running"}))||3===c&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Inactive"})||4===c&&(0,o.createComponentVNode)(2,i.Box,{color:"blue",children:["Spinning Up\xa0",g!==V&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:"(Adjusting Radius)"})||(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:[2*y,"s"]})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Offline"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy Storage",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:C,maxValue:h,children:[C," / ",h," MJ (",f,"%)"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shield Integrity",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p}),"%"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mitigation",children:[s,"% EM / ",u,"% PH / ",m,"% HE / ",d,"% MAX"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Upkeep Energy Use",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:_})," kW"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Energy Use",children:v&&(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:k,maxValue:v,children:[k," / ",v," kW"]})})||(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:k})," kW (No Limit)"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Field Size",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:b}),"\xa0/\xa0",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:N})," m\xb2 (radius ",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:V}),", target ",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:g}),")"]})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.running,d=c.hacked,u=c.idle_multiplier,s=c.idle_valid_values;return(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createFragment)([l>=2&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("begin_shutdown")},selected:!0,children:"Turn off"}),3===l&&(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("toggle_idle",{toggle_idle:0})},children:"Activate"})||(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("toggle_idle",{toggle_idle:1})},selected:!0,children:"Deactivate"})]})||(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("start_generator")},children:"Turn on"}),l&&d&&(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",onClick:function(){return a("emergency_shutdown")},color:"bad",children:"EMERGENCY SHUTDOWN"})||null],0),children:[(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",onClick:function(){return a("set_range")},children:"Set Field Range"}),(0,o.createComponentVNode)(2,i.Button,{icon:"bolt",onClick:function(){return a("set_input_cap")},children:"Set Input Cap"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Set inactive power use intensity",children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{selected:e===u,disabled:4===l,onClick:function(){return a("switch_idle",{switch_idle:e})},children:e},e)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ParticleAccelerator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.assembled,u=l.power,s=l.strength;return(0,o.createComponentVNode)(2,a.Window,{width:350,height:185,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Run Scan",onClick:function(){return c("scan")}}),children:(0,o.createComponentVNode)(2,i.Box,{color:d?"good":"bad",children:d?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:!d,onClick:function(){return c("power")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"backward",disabled:!d,onClick:function(){return c("remove_strength")}})," ",String(s).padStart(1,"0")," ",(0,o.createComponentVNode)(2,i.Button,{icon:"forward",disabled:!d,onClick:function(){return c("add_strength")}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PartsLathe=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6),l=n(132);t.PartsLathe=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(u.panelOpen,u.copyBoard),m=u.copyBoardReqComponents,p=u.queue,h=u.building,C=u.buildPercent,f=u.error,N=u.recipies;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[f&&(0,o.createComponentVNode)(2,i.NoticeBox,{danger:!0,children:["Missing Materials: ",f]})||null,(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,l.Materials,{displayAllMat:!0})}),h&&(0,o.createComponentVNode)(2,i.Section,{title:"Currently Building",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:(0,c.toTitleCase)(h)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:"good",value:C,maxValue:100})})]})})||null,s&&(0,o.createComponentVNode)(2,i.Section,{title:"Circuit Reader",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loaded Circuit",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return d("ejectBoard")},children:"Eject"}),children:(0,c.toTitleCase)(s)})}),m&&m.length&&(0,o.createFragment)([m.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:[e.qty," x ",(0,c.toTitleCase)(e.name)]},e.name)})),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",onClick:function(){return d("queueBoard")},children:"Build All"})],0)||(0,o.createComponentVNode)(2,i.Box,{children:"Board has no required components."})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Queue",children:p.length&&p.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:["#",t+1,": ",(0,c.toTitleCase)(e),(t>0||!h)&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"times",onClick:function(){return d("cancel",{cancel:t+1})},children:"Cancel"})||null]},e)}))||(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Queue Empty"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",children:N.length&&N.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",onClick:function(){return d("queue",{queue:e.type})},children:(0,c.toTitleCase)(e.name)})},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PathogenicIsolator=void 0;var o=n(0),r=(n(5),n(20),n(1)),i=n(45),a=n(2),c=n(3),l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.can_print,l=e.args;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",title:l.name||"Virus",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{disabled:!c,icon:"print",content:"Print",onClick:function(){return i("print",{type:"virus_record",vir:l.record})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",color:"red",onClick:function(){return i("modal_close")}})],4),children:(0,o.createComponentVNode)(2,a.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Spread",children:[l.spread_text," Transmission"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Possible cure",children:l.antigen}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate of Progression",children:l.rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Antibiotic Resistance",children:[l.resistance,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species Affected",children:l.species}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Symptoms",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:l.symptoms.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.stage+". "+e.name,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",children:"Strength:"})," ",e.strength,"\xa0"]}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",children:"Aggressiveness:"})," ",e.aggressiveness]})]},e.stage)}))})})]})})})};t.PathogenicIsolator=function(e,t){var n=(0,r.useBackend)(t),s=(n.act,n.data.isolating),m=(0,r.useLocalState)(t,"tabIndex",0),p=m[0],h=m[1],C=null;return 0===p?C=(0,o.createComponentVNode)(2,d):1===p&&(C=(0,o.createComponentVNode)(2,u)),(0,i.modalRegisterBodyOverride)("virus",l),(0,o.createComponentVNode)(2,c.Window,{height:500,width:520,resizable:!0,children:[(0,o.createComponentVNode)(2,i.ComplexModal,{maxHeight:"100%",maxWidth:"95%"}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[s&&(0,o.createComponentVNode)(2,a.NoticeBox,{warning:!0,children:"The Isolator is currently isolating..."})||null,(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===p,onClick:function(){return h(0)},children:"Home"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===p,onClick:function(){return h(1)},children:"Database"})]}),C]})]})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data,l=c.syringe_inserted,d=c.pathogen_pool,u=c.can_print;return(0,o.createComponentVNode)(2,a.Section,{title:"Pathogens",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return i("print",{type:"patient_diagnosis"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Syringe",disabled:!l,onClick:function(){return i("eject")}})],4),children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:[(0,o.createVNode)(1,"u",null,[(0,o.createTextVNode)("Stamm #"),e.unique_id],0),e.is_in_database?" (Analyzed)":" (Not Analyzed)"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"virus",content:"Isolate",onClick:function(){return i("isolate",{isolate:e.reference})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Database",disabled:!e.is_in_database,onClick:function(){return i("view_entry",{vir:e.record})}})]})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",mb:1,children:e.name}),e.dna]})]},e.unique_id)}))||(l?(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No samples detected."}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No syringe inserted."}))})},u=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data,l=c.database,d=c.can_print;return(0,o.createComponentVNode)(2,a.Section,{title:"Database",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!d,onClick:function(){return i("print",{type:"virus_list"})}}),children:l.length&&l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"search",onClick:function(){return i("view_entry",{vir:e.record})},children:e.name},e.name)}))||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"The viral database is empty."})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Pda=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(177),l=n(596);t.Pda=function(e,t){var n=(0,r.useBackend)(t),m=(n.act,n.data),p=m.app,h=m.owner,C=m.useRetro;if(!h)return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{stretchContents:!0,children:"Warning: No ID information found! Please swipe ID!"})})});var f=function(e){var t;try{t=l("./"+e+".js")}catch(o){if("MODULE_NOT_FOUND"===o.code)return(0,c.routingError)("notFound",e);throw o}var n=t[e];return n||(0,c.routingError)("missingExport",e)}(p.template),N=(0,r.useLocalState)(t,"settingsMode",!1),b=N[0],V=N[1];return(0,o.createComponentVNode)(2,a.Window,{width:580,height:670,theme:C?"pda-retro":null,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d,{settingsMode:b,setSettingsMode:V}),b&&(0,o.createComponentVNode)(2,u)||(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Icon,{name:p.icon,mr:1}),p.name]}),p:1,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,i.Box,{mb:8}),(0,o.createComponentVNode)(2,s,{setSettingsMode:V})]})})};var d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.settingsMode,d=e.setSettingsMode,u=c.idInserted,s=c.idLink,m=(c.cartridge_name,c.stationTime);return(0,o.createComponentVNode)(2,i.Box,{mb:1,children:(0,o.createComponentVNode)(2,i.Flex,{align:"center",justify:"space-between",children:[!!u&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",color:"transparent",onClick:function(){return a("Authenticate")},content:s})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,textAlign:"center",bold:!0,children:m}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{selected:l,onClick:function(){return d(!l)},icon:"cog"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return a("Retro")},icon:"adjust"})]})]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.idInserted,d=c.idLink,u=c.cartridge_name,s=c.touch_silent;return(0,o.createComponentVNode)(2,i.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"R.E.T.R.O Mode",children:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Retro Theme",onClick:function(){return a("Retro")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Touch Sounds",children:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",selected:!s,content:s?"Disabled":"Enabled",onClick:function(){return a("TouchSounds")}})}),!!u&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cartridge",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return a("Eject")},content:u})}),!!l&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID Card",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return a("Authenticate")},content:d})})]})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.setSettingsMode,d=c.app,u=c.useRetro;return(0,o.createComponentVNode)(2,i.Box,{position:"fixed",bottom:"0%",left:"0%",right:"0%",backgroundColor:u?"#6f7961":"#1b1b1b",children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"transparent",iconColor:d.has_back?"white":"disabled",textAlign:"center",icon:"undo",mb:0,fontSize:1.7,onClick:function(){return a("Back")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"transparent",iconColor:d.is_home?"disabled":"white",textAlign:"center",icon:"home",mb:0,fontSize:1.7,onClick:function(){l(!1),a("Home")}})})]})})}},function(e,t,n){var o={"./pda_atmos_scan.js":597,"./pda_janitor.js":598,"./pda_main_menu.js":599,"./pda_manifest.js":600,"./pda_medical.js":601,"./pda_messenger.js":602,"./pda_news.js":603,"./pda_notekeeper.js":604,"./pda_power.js":605,"./pda_security.js":606,"./pda_signaller.js":607,"./pda_status_display.js":608,"./pda_supply.js":609};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=i,e.exports=r,r.id=596},function(e,t,n){"use strict";t.__esModule=!0,t.pda_atmos_scan=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2);t.pda_atmos_scan=function(e,t){var n=(0,a.useBackend)(t),l=(n.act,n.data.aircontents);return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,r.filter)((function(e){return"0"!==e.val||"Pressure"===e.entry||"Temperature"===e.entry}))(l).map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.entry,color:(t=e.val,n=e.bad_low,r=e.poor_low,a=e.poor_high,l=e.bad_high,ta?"average":t>l?"bad":"good"),children:[e.val,(0,i.decodeHtmlEntities)(e.units)]},e.entry);var t,n,r,a,l}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_janitor=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_janitor=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.janitor);return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Location",children:0===a.user_loc.x&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Unknown"})||(0,o.createComponentVNode)(2,i.Box,{children:[a.user_loc.x," / ",a.user_loc.y]})})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Mop Locations",children:a.mops&&(0,o.createVNode)(1,"ul",null,a.mops.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Status: "),e.status],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No mops detected nearby."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Mop Bucket Locations",children:a.buckets&&(0,o.createVNode)(1,"ul",null,a.buckets.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Capacity: "),e.volume,(0,o.createTextVNode)("/"),e.max_volume],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No buckets detected nearby."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Cleanbot Locations",children:a.cleanbots&&(0,o.createVNode)(1,"ul",null,a.cleanbots.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Status: "),e.status],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No cleanbots detected nearby."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Janitorial Cart Locations",children:a.carts&&(0,o.createVNode)(1,"ul",null,a.carts.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Water Level: "),e.volume,(0,o.createTextVNode)("/"),e.max_volume],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No janitorial carts detected nearby."})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_main_menu=void 0;var o=n(0),r=(n(5),n(1)),i=n(2);t.pda_main_menu=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.owner,d=c.ownjob,u=c.idInserted,s=c.categories,m=c.pai,p=c.notifying;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Owner",color:"average",children:[l,", ",d]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Update PDA Info",disabled:!u,onClick:function(){return a("UpdateInfo")}})})]})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Functions",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:s.map((function(e){var t=c.apps[e];return t&&t.length?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e,children:t.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:e.ref in p?e.notify_icon:e.icon,iconSpin:e.ref in p,color:e.ref in p?"red":"transparent",content:e.name,onClick:function(){return a("StartProgram",{program:e.ref})}},e.ref)}))},e):null}))})}),!!m&&(0,o.createComponentVNode)(2,i.Section,{level:2,title:"pAI",children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"cog",content:"Configuration",onClick:function(){return a("pai",{option:1})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",content:"Eject pAI",onClick:function(){return a("pai",{option:2})}})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_manifest=void 0;var o=n(0),r=(n(8),n(1)),i=n(2),a=n(94);t.pda_manifest=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.Box,{color:"white",children:(0,o.createComponentVNode)(2,a.CrewManifestContent)})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_medical=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_medical=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.recordsList,d=c.records;if(d){var u=d.general,s=d.medical;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"General Data",children:u&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General record lost!"})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Medical Data",children:s&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:s.b_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Disabilities",children:s.mi_dis}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.mi_dis_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Disabilities",children:s.ma_dis}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.ma_dis_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Allergies",children:s.alg}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.alg_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Disease",children:s.cdi}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.cdi_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes",children:s.notes})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Medical record lost!"})})]})}return(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Select a record",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"eye",fluid:!0,content:e.Name,onClick:function(){return a("Records",{target:e.ref})}},e.ref)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_messenger=void 0;var o=n(0),r=n(6),i=n(8),a=n(1),c=n(2);t.pda_messenger=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data);r.auto_scroll,r.convo_name,r.convo_job,r.messages;return r.active_conversation?(0,o.createComponentVNode)(2,d):(0,o.createComponentVNode)(2,u)};var l=function(e,t,n){if(t<0||t>n.length)return e.sent?"TinderMessage_First_Sent":"TinderMessage_First_Received";var o=n[t].sent;return e.sent&&o?"TinderMessage_Subsequent_Sent":e.sent||o?e.sent?"TinderMessage_First_Sent":"TinderMessage_First_Received":"TinderMessage_Subsequent_Received"},d=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=(u.auto_scroll,u.convo_name),m=u.convo_job,p=u.messages,h=u.active_conversation,C=(u.useRetro,(0,a.useLocalState)(t,"clipboardMode",!1)),f=C[0],N=C[1],b=(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Conversation with "+s+" ("+m+")",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:f,tooltip:"Enter Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return N(!f)}}),height:"450px",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"97%","overflow-y":"auto"},children:(0,i.filter)((function(e){return e.target===h}))(p).map((function(e,t,n){return(0,o.createComponentVNode)(2,c.Box,{textAlign:e.sent?"right":"left",mb:1,children:(0,o.createComponentVNode)(2,c.Box,{maxWidth:"75%",className:l(e,t-1,n),inline:!0,children:(0,r.decodeHtmlEntities)(e.message)})},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return d("Message",{target:h})},content:"Reply"})]});return f&&(b=(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Conversation with "+s+" ("+m+")",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:f,tooltip:"Exit Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return N(!f)}}),height:"450px",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"97%","overflow-y":"auto"},children:(0,i.filter)((function(e){return e.target===h}))(p).map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{className:e.sent?"ClassicMessage_Sent":"ClassicMessage_Received",children:[e.sent?"You:":"Them:"," ",(0,r.decodeHtmlEntities)(e.message)]},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return d("Message",{target:h})},content:"Reply"})]})),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Messenger Functions",children:(0,o.createComponentVNode)(2,c.Button,{icon:"trash",color:"bad",onClick:function(){return d("Clear",{option:"Convo"})},children:"Delete Conversations"})})}),b]})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(i.auto_scroll,i.convopdas),d=i.pdas,u=i.charges,m=(i.plugins,i.silent),p=i.toff;return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Messenger Functions",children:[(0,o.createComponentVNode)(2,c.Button,{selected:!m,icon:m?"volume-mute":"volume-up",onClick:function(){return r("Toggle Ringer")},children:["Ringer: ",m?"Off":"On"]}),(0,o.createComponentVNode)(2,c.Button,{color:p?"bad":"green",icon:"power-off",onClick:function(){return r("Toggle Messenger")},children:["Messenger: ",p?"Off":"On"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"bell",onClick:function(){return r("Ringtone")},children:"Set Ringtone"}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",color:"bad",onClick:function(){return r("Clear",{option:"All"})},children:"Delete All Conversations"})]})}),!p&&(0,o.createComponentVNode)(2,c.Box,{children:[!!u&&(0,o.createComponentVNode)(2,c.Box,{children:[u," charges left."]}),!l.length&&!d.length&&(0,o.createComponentVNode)(2,c.Box,{children:"No other PDAs located."})||(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,s,{title:"Current Conversations",pdas:l,msgAct:"Select Conversation"}),(0,o.createComponentVNode)(2,s,{title:"Other PDAs",pdas:d,msgAct:"Message"})]})]})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",mt:2,children:"Messenger Offline."})]})},s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=e.pdas,d=e.title,u=e.msgAct,s=i.charges,m=i.plugins;return l&&l.length?(0,o.createComponentVNode)(2,c.Section,{level:2,title:d,children:l.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-circle-down",content:e.Name,onClick:function(){return r(u,{target:e.Reference})}}),!!s&&m.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{icon:t.icon,content:t.name,onClick:function(){return r("Messenger Plugin",{plugin:t.ref,target:e.Reference})}},t.ref)}))]},e.Reference)}))}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:d,children:"No PDAs found."})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_news=void 0;var o=n(0),r=(n(8),n(6)),i=n(1),a=n(2);t.pda_news=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),d=r.feeds,u=r.target_feed;return(0,o.createComponentVNode)(2,a.Box,{children:!d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Error: No newsfeeds available. Please try again later."})||u&&(0,o.createComponentVNode)(2,c)||(0,o.createComponentVNode)(2,l)})};var c=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data.target_feed;return(0,o.createComponentVNode)(2,a.Section,{title:(0,r.decodeHtmlEntities)(l.name)+" by "+(0,r.decodeHtmlEntities)(l.author),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"chevron-up",onClick:function(){return c("newsfeed",{newsfeed:null})}}),children:l.messages.length&&l.messages.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{children:["- ",(0,r.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/png;base64,"+e.img}),(0,r.decodeHtmlEntities)(e.caption)||null]}),(0,o.createComponentVNode)(2,a.Box,{color:"grey",children:["[",e.message_type," by ",(0,r.decodeHtmlEntities)(e.author)," - ",e.time_stamp,"]"]})]},e.ref)}))||(0,o.createComponentVNode)(2,a.Box,{children:["No stories found in ",l.name,"."]})})},l=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.feeds,u=l.latest_news;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Recent News",level:2,children:u.length&&(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{mb:2,children:[(0,o.createVNode)(1,"h5",null,[(0,r.decodeHtmlEntities)(e.channel),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"chevron-up",onClick:function(){return c("newsfeed",{newsfeed:e.index})},content:"Go to"})],0),"- ",(0,r.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,a.Box,{children:["[image omitted, view story for more details]",e.caption||null]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:.9,children:["[",e.message_type," by ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:e.author})," - ",e.time_stamp,"]"]})]},e.index)}))})||(0,o.createComponentVNode)(2,a.Box,{children:"No recent stories found."})}),(0,o.createComponentVNode)(2,a.Section,{title:"News Feeds",level:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"chevron-up",onClick:function(){return c("newsfeed",{newsfeed:e.index})},content:e.name},e.index)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_notekeeper=void 0;var o=n(0),r=n(1),i=n(2);t.pda_notekeeper=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.note;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:c}})}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("Edit")},content:"Edit Notes"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_power=void 0;var o=n(0),r=n(1),i=n(135);t.pda_power=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.PowerMonitorContent)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_security=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_security=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.recordsList,d=c.records;if(d){var u=d.general,s=d.security;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"General Data",children:u&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General record lost!"})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Security Data",children:s&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Criminal Status",children:s.criminal}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Crimes",children:s.mi_crim}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.mi_crim_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Crimes",children:s.ma_crim}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.ma_crim_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes:",children:s.notes})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Security record lost!"})})]})}return(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Select a record",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"eye",fluid:!0,content:e.Name,onClick:function(){return a("Records",{target:e.ref})}},e.ref)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_signaller=void 0;var o=n(0),r=(n(8),n(6),n(1),n(2),n(203));t.pda_signaller=function(e,t){return(0,o.createComponentVNode)(2,r.SignalerContent)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_status_display=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_status_display=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.records;return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Code",children:[(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"trash",content:"Clear",onClick:function(){return a("Status",{statdisp:"blank"})}}),(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"cog",content:"Evac ETA",onClick:function(){return a("Status",{statdisp:"shuttle"})}}),(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"cog",content:"Message",onClick:function(){return a("Status",{statdisp:"message"})}}),(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"exclamation-triangle",content:"ALERT",onClick:function(){return a("Status",{statdisp:"alert"})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Message line 1",children:(0,o.createComponentVNode)(2,i.Button,{content:c.message1+" (set)",icon:"pen",onClick:function(){return a("Status",{statdisp:"setmsg1"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Message line 2",children:(0,o.createComponentVNode)(2,i.Button,{content:c.message2+" (set)",icon:"pen",onClick:function(){return a("Status",{statdisp:"setmsg2"})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_supply=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_supply=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.supply);return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:a.shuttle_moving?"Moving to station "+a.shuttle_eta:"Shuttle at "+a.shuttle_loc})}),(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"good",bold:!0,children:"Current Approved Orders"}),a.approved.length&&a.approved.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["#",e.Number," - ",e.Name," approved by ",e.OrderedBy,(0,o.createVNode)(1,"br"),e.Comment]},e.Number)}))||(0,o.createComponentVNode)(2,i.Box,{children:"None!"}),(0,o.createComponentVNode)(2,i.Box,{color:"good",bold:!0,children:"Current Requested Orders"}),a.requests.length&&a.requests.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["#",e.Number," - ",e.Name," requested by ",e.OrderedBy,(0,o.createVNode)(1,"br"),e.Comment]},e.Number)}))||(0,o.createComponentVNode)(2,i.Box,{children:"None!"})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Photocopier=void 0;var o=n(0),r=n(2),i=n(1),a=n(3);t.Photocopier=function(e,t){var n=(0,i.useBackend)(t).data,u=n.isAI,s=n.has_toner,m=n.has_item;return(0,o.createComponentVNode)(2,a.Window,{title:"Photocopier",width:240,height:u?309:234,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[s?(0,o.createComponentVNode)(2,c):(0,o.createComponentVNode)(2,r.Section,{title:"Toner",children:(0,o.createComponentVNode)(2,r.Box,{color:"average",children:"No inserted toner cartridge."})}),m?(0,o.createComponentVNode)(2,l):(0,o.createComponentVNode)(2,r.Section,{title:"Options",children:(0,o.createComponentVNode)(2,r.Box,{color:"average",children:"No inserted item."})}),!!u&&(0,o.createComponentVNode)(2,d)]})})};var c=function(e,t){var n=(0,i.useBackend)(t),a=(n.act,n.data),c=a.max_toner,l=a.current_toner,d=.66*c,u=.33*c;return(0,o.createComponentVNode)(2,r.Section,{title:"Toner",children:(0,o.createComponentVNode)(2,r.ProgressBar,{ranges:{good:[d,c],average:[u,d],bad:[0,u]},value:l,minValue:0,maxValue:c})})},l=function(e,t){var n=(0,i.useBackend)(t),a=n.act,c=n.data,l=c.num_copies;c.has_enough_toner;return(0,o.createComponentVNode)(2,r.Section,{title:"Options",children:[(0,o.createComponentVNode)(2,r.Flex,{children:[(0,o.createComponentVNode)(2,r.Flex.Item,{mt:.4,width:11,color:"label",children:"Make copies:"}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,width:2.6,height:1.65,step:1,stepPixelSize:8,minValue:1,maxValue:10,value:l,onDrag:function(e,t){return a("set_copies",{num_copies:t})}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Button,{ml:.2,icon:"copy",textAlign:"center",onClick:function(){return a("make_copy")},children:"Copy"})})]}),(0,o.createComponentVNode)(2,r.Button,{mt:.5,textAlign:"center",icon:"reply",fluid:!0,onClick:function(){return a("remove")},children:"Remove item"})]})},d=function(e,t){var n=(0,i.useBackend)(t),a=n.act,c=n.data.can_AI_print;return(0,o.createComponentVNode)(2,r.Section,{title:"AI Options",children:(0,o.createComponentVNode)(2,r.Box,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"images",textAlign:"center",disabled:!c,onClick:function(){return a("ai_photo")},children:"Print photo from database"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PipeDispenser=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(204);t.PipeDispenser=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.disposals,s=d.p_layer,m=d.pipe_layers,p=d.categories,h=void 0===p?[]:p,C=(0,r.useLocalState)(t,"categoryName"),f=C[0],N=C[1],b=h.find((function(e){return e.cat_name===f}))||h[0];return(0,o.createComponentVNode)(2,a.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[!u&&(0,o.createComponentVNode)(2,i.Section,{title:"Layer",children:(0,o.createComponentVNode)(2,i.Box,{children:Object.keys(m).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:m[e]===s,content:e,onClick:function(){return l("p_layer",{p_layer:m[e]})}},e)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Pipes",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:h.map((function(e,t){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{fluid:!0,icon:c.ICON_BY_CATEGORY_NAME[e.cat_name],selected:e.cat_name===b.cat_name,onClick:function(){return N(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==b?void 0:b.recipes.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,ellipsis:!0,content:e.pipe_name,title:e.pipe_name,onClick:function(){return l("dispense_pipe",{ref:e.ref,bent:e.bent,category:b.cat_name})}},e.pipe_name)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PlantAnalyzer=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.PlantAnalyzer=function(e,t){var n=(0,r.useBackend)(t).data,i=250;return n.seed&&(i+=18*n.seed.trait_info.length),n.reagents&&n.reagents.length&&(i+=55,i+=20*n.reagents.length),(0,o.createComponentVNode)(2,a.Window,{width:400,height:i,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.no_seed,d=c.seed,u=c.reagents;return l?(0,o.createComponentVNode)(2,i.Section,{title:"Analyzer Unused",children:"You should go scan a plant! There is no data currently loaded."}):(0,o.createComponentVNode)(2,i.Section,{title:"Plant Information",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"print",onClick:function(){return a("print")},children:"Print Report"}),(0,o.createComponentVNode)(2,i.Button,{icon:"window-close",color:"red",onClick:function(){return a("close")}})],4),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Plant Name",children:[d.name,"#",d.uid]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Endurance",children:d.endurance}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Yield",children:d.yield}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maturation Time",children:d.maturation_time}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Production Time",children:d.production_time}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Potency",children:d.potency})]}),u.length&&(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Plant Reagents",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[e.volume," unit(s)."]},e.name)}))})})||null,(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Other Data",children:d.trait_info.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",mb:.4,children:e},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PointDefenseControl=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.PointDefenseControl=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.id,u=l.turrets;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Fire Assist Mainframe: "+(d||"[no tag]"),children:u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{level:2,title:e.id,buttons:(0,o.createComponentVNode)(2,i.Button,{selected:e.active,icon:"power-off",onClick:function(){return c("toggle_active",{target:e.ref})},children:e.active?"Online":"Offline"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Effective range",children:e.effective_range}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Reaction wheel delay",children:e.reaction_wheel_delay}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Recharge time",children:e.recharge_time})]})},e.id)}))||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Error: No weapon systems detected. Please check network connection."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableGenerator=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(5);t.PortableGenerator=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.fuel_stored/d.fuel_capacity,s=(u>=.5?"good":u>.15&&"average")||"bad";return(0,o.createComponentVNode)(2,a.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[!d.anchored&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,i.Button,{icon:d.active?"power-off":"times",onClick:function(){return l("toggle_power")},selected:d.active,disabled:!d.ready_to_boot,children:d.active?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fuel Type",buttons:d.fuel_stored>=1&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"eject",disabled:d.active,onClick:function(){return l("eject")},children:"Eject"}),children:(0,o.createComponentVNode)(2,i.Box,{color:s,children:[d.fuel_stored,"cm\xb3 ",d.sheet_name]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current fuel level",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d.fuel_stored/d.fuel_capacity,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]},children:[d.fuel_stored,"cm\xb3 / ",d.fuel_capacity,"cm\xb3"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fuel Usage",children:[d.fuel_usage," cm\xb3/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d.temperature_current,maxValue:d.temperature_max+30,color:d.temperature_overheat?"bad":"good",children:[(0,c.round)(d.temperature_current),"\xb0C"]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Output",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current output",color:d.unsafe_output?"bad":null,children:d.power_output}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"minus",onClick:function(){return l("lower_power")},children:d.power_generated}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return l("higher_power")},children:d.power_generated})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:!d.connected&&"bad",children:d.connected?d.power_available:"Unconnected"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(205);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=d.target_pressure,m=d.default_pressure,p=d.min_pressure,h=d.max_pressure;return(0,o.createComponentVNode)(2,a.Window,{width:330,height:375,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.PortableBasicInfo),(0,o.createComponentVNode)(2,i.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,i.Slider,{mt:"0.4em",animated:!0,minValue:p,maxValue:h,value:s,unit:"kPa",stepPixelSize:.3,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",disabled:s===h,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(0),r=n(1),i=n(2),a=(n(28),n(3)),c=n(205);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.rate,s=d.minrate,m=d.maxrate;return(0,o.createComponentVNode)(2,a.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,c.PortableBasicInfo),(0,o.createComponentVNode)(2,i.Section,{title:"Power Regulator",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Volume Rate",children:(0,o.createComponentVNode)(2,i.Slider,{mt:"0.4em",animated:!0,minValue:s,maxValue:m,value:u,unit:"L/s",onChange:function(e,t){return l("volume_adj",{vol:t})}})})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.locked,u=l.on,s=l.lethal,m=l.lethal_is_configurable,p=l.targetting_is_configurable,h=l.check_weapons,C=l.neutralize_noaccess,f=l.neutralize_norecord,N=l.neutralize_criminals,b=l.neutralize_all,V=l.neutralize_nonsynth,g=l.neutralize_unidentified,v=l.neutralize_down;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Swipe an ID card to ",d?"unlock":"lock"," this interface."]}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:d,onClick:function(){return c("power")}})}),!!m&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Lethals",children:(0,o.createComponentVNode)(2,i.Button,{icon:s?"exclamation-triangle":"times",content:s?"On":"Off",color:s?"bad":"",disabled:d,onClick:function(){return c("lethal")}})})]})}),!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Humanoid Targets",children:[(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:N,content:"Wanted Criminals",disabled:d,onClick:function(){return c("autharrest")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:f,content:"No Sec Record",disabled:d,onClick:function(){return c("authnorecord")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:h,content:"Unauthorized Weapons",disabled:d,onClick:function(){return c("authweapon")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:C,content:"Unauthorized Access",disabled:d,onClick:function(){return c("authaccess")}})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Other Targets",children:[(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:g,content:"Unidentified Lifesigns (Xenos, Animals, Etc)",disabled:d,onClick:function(){return c("authxeno")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:V,content:"All Non-Synthetics",disabled:d,onClick:function(){return c("authsynth")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:v,content:"Downed Targets",disabled:d,onClick:function(){return c("authdown")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:b,content:"All Entities",disabled:d,onClick:function(){return c("authall")}})]})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PrecisionEditor=void 0;var o=n(0),r=(n(8),n(1)),i=n(2),a=n(3);n(183);t.PrecisionEditor=function(e,t){var n=(0,r.useBackend)(t),u=(n.act,n.data.screenstate);return(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Seed status",children:["main"===u&&(0,o.createComponentVNode)(2,c),"colors"===u&&(0,o.createComponentVNode)(2,l),"reagents"===u&&(0,o.createComponentVNode)(2,d)]})})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.health,d=c.plantcolor,u=c.fruitcolor,s=c.chems,m=c.seedname;return(0,o.createComponentVNode)(2,i.LabeledList,{children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:m}),l<100?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:100-l+"%"}):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:"UNVIABLE"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Plant Color",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fruit Color",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Chems produced in fruit (click to splice out)",children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:e.displayname,onClick:function(){return a("prune",{gene_name:e.name})}},e.displayname)}))}),(0,o.createComponentVNode)(2,i.Button,{content:"Edit Colors",onClick:function(){return a("change_focus",{window:"colors"})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Add Reagents",onClick:function(){return a("change_focus",{window:"reagents"})}}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,i.Button,{content:"Eject Seed",onClick:function(){return a("eject")}})],0):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Waiting",children:"There is currently no seed loaded."})})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.plantcolor,d=c.fruitcolor;return(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Plant Color",children:l}),(0,o.createComponentVNode)(2,i.ColorBox,{color:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fruit Color",children:d}),(0,o.createComponentVNode)(2,i.ColorBox,{color:d}),(0,o.createComponentVNode)(2,i.Button,{content:"Change plant color",onClick:function(){return a("change_color",{option:0})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Change fruit color",onClick:function(){return a("change_color",{option:1})}}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,i.Button,{content:"Return",onClick:function(){return a("change_focus",{window:"main"})}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.beakerchems,d=c.health;return(0,o.createComponentVNode)(2,i.LabeledList,{children:[d<100?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:100-d+"%"}):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:"UNVIABLE"}),(0,o.createComponentVNode)(2,i.NoticeBox,{info:1,width:19,height:9,ml:1,children:["Available chems to choose are based on the reagents stored in the beaker. "," A minimum of 100 units of reagent is required to generate a viable sequence. ","The chosen reagent will be consumed in the process.",(0,o.createComponentVNode)(2,i.Box,{bold:1,mt:1,children:"This process severely damages genetic integrity."})]}),(0,o.createComponentVNode)(2,i.Box,{width:20,opacity:.5,ml:1,mt:6,mb:2,children:["Plant will produce 1 additional unit for every 25 units beyond 100"," (modified by potency)"]}),l?(0,o.createFragment)([d<100?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Available reagents",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:e.displayname,onClick:function(){return a("add_chem",{target_chem:e.name})}},e.displayname)}))}):(0,o.createComponentVNode)(2,i.NoticeBox,{warning:1,children:"WARNING: Genetic integrity of seed is too poor to proceed."}),(0,o.createComponentVNode)(2,i.Button,{content:"Eject Beaker",onClick:function(){return a("eject_beaker")}})],0):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Waiting",children:"There is currently no beaker loaded."}),(0,o.createComponentVNode)(2,i.Button,{content:"Return",onClick:function(){return a("change_focus",{window:"main"})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PressureRegulator=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.PressureRegulator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.pressure_set,s=(l.max_pressure,l.input_pressure),m=l.output_pressure,p=l.regulate_mode,h=l.set_flow_rate,C=l.last_flow_rate;return(0,o.createComponentVNode)(2,a.Window,{width:470,height:370,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:s/100})," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m/100})," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:C/10})," L/s"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:d?"Unlocked":"Closed",selected:d,onClick:function(){return c("toggle_valve")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure Regulation",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:"Off",selected:0===p,onClick:function(){return c("regulate_mode",{mode:"off"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"compress-arrows-alt",content:"Input",selected:1===p,onClick:function(){return c("regulate_mode",{mode:"input"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",content:"Output",selected:2===p,onClick:function(){return c("regulate_mode",{mode:"output"})}})],4)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Desired Output Pressure",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"compress-arrows-alt",content:"MIN",onClick:function(){return c("set_press",{press:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",content:"MAX",onClick:function(){return c("set_press",{press:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:"SET",onClick:function(){return c("set_press",{press:"set"})}})],4),children:[u/100," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate Limit",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"compress-arrows-alt",content:"MIN",onClick:function(){return c("set_flow_rate",{press:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",content:"MAX",onClick:function(){return c("set_flow_rate",{press:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:"SET",onClick:function(){return c("set_flow_rate",{press:"set"})}})],4),children:[h/10," L/s"]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PrisonerManagement=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);n(20);t.PrisonerManagement=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.locked,u=l.chemImplants,s=l.trackImplants;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:d&&(0,o.createComponentVNode)(2,i.Section,{title:"Locked",textAlign:"center",children:["This interface is currently locked.",(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"unlock",onClick:function(){return c("lock")},children:"Unlock"})})]})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Interface Lock",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lock",onClick:function(){return c("lock")},children:"Lock Interface"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Chemical Implants",children:u.length&&(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Host"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Units Remaining"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Inject"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:e.host}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:[e.units,"u remaining"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("inject",{imp:e.ref,val:1})},children:"(1)"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("inject",{imp:e.ref,val:5})},children:"(5)"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("inject",{imp:e.ref,val:10})},children:"(10)"})]})]},e.ref)}))]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No chemical implants found."})}),(0,o.createComponentVNode)(2,i.Section,{title:"Tracking Implants",children:s.length&&(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Host"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Location"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Message"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:[e.host," (",e.id,")"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:e.loc}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("warn",{imp:e.ref})},children:"Message"})})]},e.ref)}))]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No chemical implants found."})})],4)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RIGSuit=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6);t.RIGSuit=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),s=c.interfacelock,m=c.malf,p=c.aicontrol,h=c.ai,C=null;return s||m?C=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"--HARDSUIT INTERFACE OFFLINE--"}):!h&&p&&(C=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"-- HARDSUIT CONTROL OVERRIDDEN BY AI --"})),(0,o.createComponentVNode)(2,a.Window,{height:480,width:550,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:C||(0,o.createFragment)([(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.chargestatus,d=c.charge,u=c.maxcharge,s=c.aioverride,m=c.sealing,p=c.sealed,h=c.emagged,C=c.securitycheck,f=c.coverlock,N=(0,o.createComponentVNode)(2,i.Button,{content:"Suit "+(m?"seals working...":p?"is Active":"is Inactive"),icon:m?"redo":p?"power-off":"lock-open",iconSpin:m,disabled:m,selected:p,onClick:function(){return a("toggle_seals")}}),b=(0,o.createComponentVNode)(2,i.Button,{content:"AI Control "+(s?"Enabled":"Disabled"),selected:s,icon:"robot",onClick:function(){return a("toggle_ai_control")}});return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([N,b],0),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Supply",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,maxValue:50,value:l,ranges:{good:[35,Infinity],average:[15,35],bad:[-Infinity,15]},children:[d," / ",u]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cover Status",children:h||!C?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Error - Maintenance Lock Control Offline"}):(0,o.createComponentVNode)(2,i.Button,{icon:f?"lock":"lock-open",content:f?"Locked":"Unlocked",onClick:function(){return a("toggle_suit_lock")}})})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=l.sealing,u=l.helmet,s=l.helmetDeployed,m=l.gauntlets,p=l.gauntletsDeployed,h=l.boots,C=l.bootsDeployed,f=l.chest,N=l.chestDeployed;return(0,o.createComponentVNode)(2,i.Section,{title:"Hardware",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Helmet",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"sign-out-alt":"sign-in-alt",content:s?"Deployed":"Deploy",disabled:d,selected:s,onClick:function(){return a("toggle_piece",{piece:"helmet"})}}),children:u?(0,c.capitalize)(u):"ERROR"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gauntlets",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:p?"sign-out-alt":"sign-in-alt",content:p?"Deployed":"Deploy",disabled:d,selected:p,onClick:function(){return a("toggle_piece",{piece:"gauntlets"})}}),children:m?(0,c.capitalize)(m):"ERROR"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Boots",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:C?"sign-out-alt":"sign-in-alt",content:C?"Deployed":"Deploy",disabled:d,selected:C,onClick:function(){return a("toggle_piece",{piece:"boots"})}}),children:h?(0,c.capitalize)(h):"ERROR"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Chestpiece",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:N?"sign-out-alt":"sign-in-alt",content:N?"Deployed":"Deploy",disabled:d,selected:N,onClick:function(){return a("toggle_piece",{piece:"chest"})}}),children:f?(0,c.capitalize)(f):"ERROR"})]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=l.sealed,u=l.sealing,s=l.primarysystem,m=l.modules;return!d||u?(0,o.createComponentVNode)(2,i.Section,{title:"Modules",children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"HARDSUIT SYSTEMS OFFLINE"})}):(0,o.createComponentVNode)(2,i.Section,{title:"Modules",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",mb:"0.2rem",fontSize:1.5,children:["Selected Primary: ",(0,c.capitalize)(s||"None")]}),m&&m.map((function(e,t){return(0,o.createComponentVNode)(2,i.Section,{level:2,title:(0,c.toTitleCase)(e.name)+(e.damage?" (damaged)":""),buttons:(0,o.createFragment)([e.can_select?(0,o.createComponentVNode)(2,i.Button,{selected:e.name===s,content:e.name===s?"Selected":"Select",icon:"arrow-circle-right",onClick:function(){return a("interact_module",{module:e.index,module_mode:"select"})}}):null,e.can_use?(0,o.createComponentVNode)(2,i.Button,{content:e.engagestring,icon:"arrow-circle-down",onClick:function(){return a("interact_module",{module:e.index,module_mode:"engage"})}}):null,e.can_toggle?(0,o.createComponentVNode)(2,i.Button,{selected:e.is_active,content:e.is_active?e.deactivatestring:e.activatestring,icon:"arrow-circle-down",onClick:function(){return a("interact_module",{module:e.index,module_mode:"toggle"})}}):null],0),children:[e.damage>=2?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"-- MODULE DESTROYED --"}):(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:[(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["Engage: ",e.engagecost]}),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["Active: ",e.activecost]}),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["Passive: ",e.passivecost]})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:e.desc})]}),e.charges?(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Module Charges",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Selected",children:(0,c.capitalize)(e.chargetype)}),e.charges.map((function(t,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(0,c.capitalize)(t.caption),children:(0,o.createComponentVNode)(2,i.Button,{selected:e.realchargetype===t.index,icon:"arrow-right",onClick:function(){return a("interact_module",{module:e.index,module_mode:"select_charge_type",charge_type:t.index})}})},t.caption)}))]})})}):null]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(0),r=(n(8),n(5)),i=n(1),a=n(2),c=n(28),l=n(3);t.Radio=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.rawfreq,m=u.minFrequency,p=u.maxFrequency,h=u.listening,C=u.broadcasting,f=u.subspace,N=u.subspaceSwitchable,b=u.chan_list,V=u.loudspeaker,g=u.mic_cut,v=u.spk_cut,_=u.useSyndMode,k=c.RADIO_CHANNELS.find((function(e){return e.freq===Number(s)})),y=156;return b&&b.length>0?y+=28*b.length+6:y+=24,N&&(y+=38),(0,o.createComponentVNode)(2,l.Window,{width:310,height:y,resizable:!0,theme:_?"syndicate":"",children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Frequency",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},onDrag:function(e,t){return d("setFrequency",{freq:(0,r.round)(10*t)})}}),k&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"37px",icon:h?"volume-up":"volume-mute",selected:h,disabled:v,onClick:function(){return d("listen")}}),(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"37px",icon:C?"microphone":"microphone-slash",selected:C,disabled:g,onClick:function(){return d("broadcast")}}),!!N&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"bullhorn",selected:f,content:"Subspace Tx "+(f?"ON":"OFF"),onClick:function(){return d("subspace")}})}),!!N&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"volume-up":"volume-mute",selected:V,content:"Loudspeaker",onClick:function(){return d("toggleLoudspeaker")}})})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Channels",children:[(!b||0===b.length)&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"No channels detected."}),(0,o.createComponentVNode)(2,a.LabeledList,{children:b?b.map((function(e){var t=c.RADIO_CHANNELS.find((function(t){return t.freq===Number(e.freq)})),n="default";return t&&(n=t.color),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.display_name,labelColor:n,textAlign:"right",children:e.secure_channel&&f?(0,o.createComponentVNode)(2,a.Button,{icon:e.sec_channel_listen?"square-o":"check-square-o",selected:!e.sec_channel_listen,content:e.sec_channel_listen?"Off":"On",onClick:function(){return d("channel",{channel:e.chan})}}):(0,o.createComponentVNode)(2,a.Button,{content:"Switch",selected:e.chan===s,onClick:function(){return d("specFreq",{channel:e.chan})}})},e.chan)})):null})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RequestConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=function(e,t){var n=(0,i.useBackend)(t).act,r=e.dept_list,c=e.department;return(0,o.createComponentVNode)(2,a.LabeledList,{children:r.sort().map((function(e){return e!==c&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"envelope-open-text",onClick:function(){return n("write",{write:e,priority:1})},children:"Message"}),(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",onClick:function(){return n("write",{write:e,priority:2})},children:"High Priority"})],4)})||null}))})},d={0:function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.silent;return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,a.Button,{selected:!c,icon:c?"volume-mute":"volume-up",onClick:function(){return r("toggleSilent")},children:["Speaker ",c?"OFF":"ON"]})})},1:function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.department,d=r.assist_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Request assistance from another department",children:(0,o.createComponentVNode)(2,l,{dept_list:d,department:c})})},2:function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.department,d=r.supply_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Supplies",children:(0,o.createComponentVNode)(2,l,{dept_list:d,department:c})})},3:function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.department,d=r.info_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Report Anonymous Information",children:(0,o.createComponentVNode)(2,l,{dept_list:d,department:c})})},4:function(e,t){var n=(0,i.useBackend)(t),r=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:2,color:"good",children:"Message Sent Successfully"}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",onClick:function(){return r("setScreen",{setScreen:0})},children:"Continue"})})]})},5:function(e,t){var n=(0,i.useBackend)(t),r=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:1.5,bold:!0,color:"bad",children:"An error occured. Message Not Sent."}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",onClick:function(){return r("setScreen",{setScreen:0})},children:"Continue"})})]})},6:function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data.message_log;return(0,o.createComponentVNode)(2,a.Section,{title:"Messages",children:l.length&&l.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.decodeHtmlEntities)(e[0]),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return c("print",{print:t+1})},children:"Print"}),children:(0,r.decodeHtmlEntities)(e[1])},t)}))||(0,o.createComponentVNode)(2,a.Box,{children:"No messages."})})},7:function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.message,u=l.recipient,s=l.priority,m=l.msgStamped,p=l.msgVerified;return(0,o.createComponentVNode)(2,a.Section,{title:"Message Authentication",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message for "+u,children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Priority",children:2===s?"High Priority":1===s?"Normal Priority":"Unknown"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Validated By",color:p?"good":"bad",children:(0,r.decodeHtmlEntities)(p)||"No Validation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stamped By",color:m?"good":"bad",children:(0,r.decodeHtmlEntities)(m)||"No Stamp"})]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,icon:"share",onClick:function(){return c("department",{department:u})},children:"Send Message"}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return c("setScreen",{setScreen:0})},children:"Back"})]})},8:function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=(c.department,c.screen,c.message_log,c.newmessagepriority,c.silent,c.announcementConsole,c.assist_dept,c.supply_dept,c.info_dept,c.message),d=(c.recipient,c.priority,c.msgStamped,c.msgVerified,c.announceAuth);return(0,o.createComponentVNode)(2,a.Section,{title:"Send Station-Wide Announcement",children:[d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",mb:1,children:"ID Verified. Authentication Accepted."}),(0,o.createComponentVNode)(2,a.Section,{title:"Message",mt:1,maxHeight:"200px",scrollable:!0,buttons:(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"pen",onClick:function(){return r("writeAnnouncement")},children:"Edit"}),children:l||"No Message"})],4)||(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mb:1,children:"Swipe your ID card to authenticate yourself."}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l||!d,icon:"share",onClick:function(){return r("sendAnnouncement")},children:"Announce"}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return r("setScreen",{setScreen:0})},children:"Back"})]})}};t.RequestConsole=function(e,t){var n=(0,i.useBackend)(t),r=n.act,l=n.data,u=l.screen,s=l.newmessagepriority,m=l.announcementConsole,p=d[u];return(0,o.createComponentVNode)(2,c.Window,{width:520,height:410,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:6===u,onClick:function(){return r("setScreen",{setScreen:6})},icon:"envelope-open-text",children:"Messages"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return r("setScreen",{setScreen:1})},icon:"share-square",children:"Assistance"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return r("setScreen",{setScreen:2})},icon:"share-square",children:"Supplies"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===u,onClick:function(){return r("setScreen",{setScreen:3})},icon:"share-square-o",children:"Report"}),m&&(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:8===u,onClick:function(){return r("setScreen",{setScreen:8})},icon:"volume-up",children:"Announce"})||null,(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===u,onClick:function(){return r("setScreen",{setScreen:0})},icon:"cog"})]}),s&&(0,o.createComponentVNode)(2,a.Section,{title:s>1?"NEW PRIORITY MESSAGES":"There are new messages!",color:s>1?"bad":"average",bold:s>1})||null,(0,o.createComponentVNode)(2,p)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ResearchConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=function(e,t){var n=(0,i.useBackend)(t).data,o=e.title,r=n[e.target];return"number"==typeof r?o+" - Page "+(r+1):o},d=function(e,t){var n=(0,i.useBackend)(t).act,r=e.target;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return n(r,{reset:!0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-left",onClick:function(){return n(r,{reverse:-1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-right",onClick:function(){return n(r,{reverse:1})}})],4)},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.info.tech,l=e.disk;if(!l||!l.present)return null;var d=(0,i.useSharedState)(t,"saveDialogTech",!1),u=d[0],s=d[1];return u?(0,o.createComponentVNode)(2,a.Section,{title:"Load Technology to Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return s(!1)}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){s(!1),r("copy_tech",{copy_tech_ID:e.id})},children:"Copy To Disk"})},e.name)}))})}):(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Contents",children:"(Technology Data Disk)"})}),l.stored&&(0,o.createComponentVNode)(2,a.Box,{mt:2,children:[(0,o.createComponentVNode)(2,a.Box,{children:l.name}),(0,o.createComponentVNode)(2,a.Box,{children:["Level: ",l.level]}),(0,o.createComponentVNode)(2,a.Box,{children:["Description: ",l.desc]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return r("updt_tech")},children:"Upload to Database"}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return r("clear_tech")},children:"Clear Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_tech")},children:"Eject Disk"})]})]})||(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{children:"This disk has no data stored on it."}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return s(!0)},children:"Load Tech To Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_tech")},children:"Eject Disk"})]})]})},s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,u=c.info.designs,s=e.disk;if(!s||!s.present)return null;var m=(0,i.useSharedState)(t,"saveDialogData",!1),p=m[0],h=m[1];return p?(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l,{title:"Load Design to Disk",target:"design_page"}),buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return h(!1)}}),(0,o.createComponentVNode)(2,d,{target:"design_page"})||null],0),children:[(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search for...",value:c.search,onInput:function(e,t){return r("search",{search:t})},mb:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){h(!1),r("copy_design",{copy_design_ID:e.id})},children:"Copy To Disk"})},e.name)}))})]}):(0,o.createComponentVNode)(2,a.Box,{children:s.stored&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:s.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lathe Type",children:s.build_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Materials",children:Object.keys(s.materials).map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e," x ",s.materials[e]]},e)}))})]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return r("updt_design")},children:"Upload to Database"}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return r("clear_design")},children:"Clear Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_design")},children:"Eject Disk"})]})]})||(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:.5,children:"This disk has no data stored on it."}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return h(!0)},children:"Load Design To Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_design")},children:"Eject Disk"})]})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,u=e.target,s=e.designs,m=e.buildName,p=e.buildFiveName;return u?(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l,{target:"builder_page",title:"Designs"}),buttons:(0,o.createComponentVNode)(2,d,{target:"builder_page"}),children:[(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search for...",value:c.search,onInput:function(e,t){return r("search",{search:t})},mb:1}),s&&s.length?s.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex,{width:"100%",justify:"space-between",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"40%",style:{"word-wrap":"break-all"},children:e.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"15%",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{mb:-1,icon:"wrench",onClick:function(){return r(m,{build:e.id,imprint:e.id})},children:"Build"}),p&&(0,o.createComponentVNode)(2,a.Button,{mb:-1,onClick:function(){return r(p,{build:e.id,imprint:e.id})},children:"x5"})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"45%",style:{"word-wrap":"break-all"},children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",children:e.mat_list.join(" ")}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",ml:1,children:e.chem_list.join(" ")})]})]}),(0,o.createComponentVNode)(2,a.Divider)],4,e.id)})):(0,o.createComponentVNode)(2,a.Box,{children:"No items could be found matching the parameters (page or search)."})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Error"})},p=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=e.name,u=null,s=null;if("Protolathe"===d?(u=l.info.linked_lathe,s=l.lathe_designs):(u=l.info.linked_imprinter,s=l.imprinter_designs),!u||!u.present)return(0,o.createComponentVNode)(2,a.Section,{title:d,children:["No ",d," found."]});var p=u,h=p.total_materials,C=p.max_materials,f=p.total_volume,N=p.max_volume,b=p.busy,V=p.mats,g=p.reagents,v=p.queue,_=(0,i.useSharedState)(t,"protoTab",0),k=_[0],y=_[1],L="transparent",B=!1,w="layer-group";b?(w="hammer",L="average",B=!0):v&&v.length&&(w="sync",L="green",B=!0);var x="Protolathe"===d?"removeP":"removeI",S="Protolathe"===d?"lathe_ejectsheet":"imprinter_ejectsheet",I="Protolathe"===d?"disposeP":"disposeI",T="Protolathe"===d?"disposeallP":"disposeallI";return(0,o.createComponentVNode)(2,a.Section,{title:d,buttons:b&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",spin:!0})||null,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Materials",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,maxValue:C,children:[h," cm\xb3 / ",C," cm\xb3"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemicals",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:f,maxValue:N,children:[f,"u / ",N,"u"]})})]}),(0,o.createComponentVNode)(2,a.Tabs,{mt:1,children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"wrench",selected:0===k,onClick:function(){return y(0)},children:"Build"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:w,iconSpin:B,color:L,selected:1===k,onClick:function(){return y(1)},children:"Queue"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"cookie-bite",selected:2===k,onClick:function(){return y(2)},children:"Mat Storage"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"flask",selected:3===k,onClick:function(){return y(3)},children:"Chem Storage"})]}),0===k&&(0,o.createComponentVNode)(2,m,{target:u,designs:s,buildName:"Protolathe"===d?"build":"imprint",buildFiveName:"Protolathe"===d?"buildfive":null})||1===k&&(0,o.createComponentVNode)(2,a.LabeledList,{children:v.length&&v.map((function(e){return 1===e.index?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,labelColor:"bad",children:b?(0,o.createComponentVNode)(2,a.Button,{disabled:!0,icon:"trash",children:"Remove"}):(0,o.createComponentVNode)(2,a.Box,{children:["(Awaiting Materials)",(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"trash",onClick:function(){var t;return c(x,((t={})[x]=e.index,t))},children:"Remove"})]})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){var t;return c(x,((t={})[x]=e.index,t))},children:"Remove"})},e.name)}))||(0,o.createComponentVNode)(2,a.Box,{m:1,children:"Queue Empty."})})||2===k&&(0,o.createComponentVNode)(2,a.LabeledList,{children:V.map((function(e){var n=(0,i.useLocalState)(t,"ejectAmt"+e.name,0),l=n[0],d=n[1];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.toTitleCase)(e.name),buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NumberInput,{minValue:0,width:"100px",value:l,maxValue:e.sheets,onDrag:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!e.removable,onClick:function(){var t;d(0),c(S,((t={})[S]=e.name,t.amount=l,t))},children:"Num"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!e.removable,onClick:function(){var t;return c(S,((t={})[S]=e.name,t.amount=50,t))},children:"All"})],4),children:[e.amount," cm\xb3"]},e.name)}))})||3===k&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:g.length&&g.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume,"u",(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",onClick:function(){return c(I,{dispose:e.id})},children:"Purge"})]},e.name)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Empty",children:"No chems detected"})}),(0,o.createComponentVNode)(2,a.Button,{mt:1,icon:"trash",onClick:function(){return c(T)},children:"Disposal All Chemicals In Storage"})]})||(0,o.createComponentVNode)(2,a.Box,{children:"Error"})]})},h=[{name:"Protolathe",icon:"wrench",template:(0,o.createComponentVNode)(2,p,{name:"Protolathe"})},{name:"Circuit Imprinter",icon:"digital-tachograph",template:(0,o.createComponentVNode)(2,p,{name:"Circuit Imprinter"})},{name:"Destructive Analyzer",icon:"eraser",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.info.linked_destroy;if(!c.present)return(0,o.createComponentVNode)(2,a.Section,{title:"Destructive Analyzer",children:"No destructive analyzer found."});var l=c.loaded_item,d=c.origin_tech;return(0,o.createComponentVNode)(2,a.Section,{title:"Destructive Analyzer",children:l&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Origin Tech",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.level,"\xa0\xa0",e.current&&"(Current: "+e.current+")"]},e.name)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",children:"No origin tech found."})})})]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,color:"red",icon:"eraser",onClick:function(){return r("deconstruct")},children:"Deconstruct Item"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_item")},children:"Eject Item"})]})||(0,o.createComponentVNode)(2,a.Box,{children:"No Item Loaded. Standing-by..."})})}))},{name:"Settings",icon:"cog",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.info,l=c.sync,d=c.linked_destroy,u=c.linked_imprinter,s=c.linked_lathe,m=(0,i.useSharedState)(t,"settingsTab",0),p=m[0],h=m[1];return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"cogs",onClick:function(){return h(0)},selected:0===p,children:"General"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"link",onClick:function(){return h(1)},selected:1===p,children:"Device Linkages"})]}),0===p&&(0,o.createComponentVNode)(2,a.Box,{children:[l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",onClick:function(){return r("sync")},children:"Sync Database with Network"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"unlink",onClick:function(){return r("togglesync")},children:"Disconnect from Research Network"})],4)||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"link",onClick:function(){return r("togglesync")},children:"Connect to Research Network"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"lock",onClick:function(){return r("lock")},children:"Lock Console"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"red",icon:"trash",onClick:function(){return r("reset")},children:"Reset R&D Database"})]})||1===p&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",mb:1,onClick:function(){return r("find_device")},children:"Re-sync with Nearby Devices"}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.present&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destructive Analyzer",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",onClick:function(){return r("disconnect",{disconnect:"destroy"})},children:"Disconnect"})})||null,s.present&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Protolathe",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",onClick:function(){return r("disconnect",{disconnect:"lathe"})},children:"Disconnect"})})||null,u.present&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Circuit Imprinter",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",onClick:function(){return r("disconnect",{disconnect:"imprinter"})},children:"Disconnect"})})||null]})]})||(0,o.createComponentVNode)(2,a.Box,{children:"Error"})]})}))},{name:"Research List",icon:"flask",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.tech;return(0,o.createComponentVNode)(2,a.Section,{title:"Current Research Levels",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return r("print",{print:1})},children:"Print This Page"}),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:[(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{children:[" - Level ",e.level]})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.desc})})]},e.name)}))})})}))},{name:"Design List",icon:"file",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,u=c.designs;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l,{title:"Researched Technologies & Designs",target:"design_page"}),buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return r("print",{print:2})},children:"Print This Page"}),(0,o.createComponentVNode)(2,d,{target:"design_page"})||null],0),children:[(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search for...",value:c.search,onInput:function(e,t){return r("search",{search:t})},mb:1}),u&&u.length&&(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.desc},e.name)}))})||(0,o.createComponentVNode)(2,a.Box,{color:"warning",children:"No designs found."})]})}))},{name:"Disk Operations",icon:"save",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.info),c=r.d_disk,l=r.t_disk;return c.present||l.present?(0,o.createComponentVNode)(2,a.Section,{title:"Disk Operations",children:[(0,o.createComponentVNode)(2,u,{disk:l}),(0,o.createComponentVNode)(2,s,{disk:c})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Disk Operations",children:"No disk inserted."})}))}];t.ResearchConsole=function(e,t){var n=(0,i.useBackend)(t),r=n.act,l=n.data,d=l.busy_msg,u=l.locked,s=(0,i.useSharedState)(t,"rdmenu",0),m=s[0],p=s[1],C=!1;return(d||u)&&(C=!0),(0,o.createComponentVNode)(2,c.Window,{width:850,height:630,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:h.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:e.icon,selected:m===t,disabled:C,onClick:function(){return p(t)},children:e.name},t)}))}),d&&(0,o.createComponentVNode)(2,a.Section,{title:"Processing...",children:d})||u&&(0,o.createComponentVNode)(2,a.Section,{title:"Console Locked",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("lock")},icon:"lock-open",children:"Unlock"})})||h[m].template]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ResearchServerController=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(8);t.ResearchServerController=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,a.Window,{width:575,height:430,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data),c=(a.badmin,a.servers),l=(a.consoles,(0,r.useSharedState)(t,"selectedServer",null)),u=l[0],s=l[1],m=c.find((function(e){return e.id===u}));return m?(0,o.createComponentVNode)(2,d,{setSelectedServer:s,server:m}):(0,o.createComponentVNode)(2,i.Section,{title:"Server Selection",children:c.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return s(e.id)},children:e.name})},e.name)}))})},d=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.badmin),c=e.server,l=e.setSelectedServer,d=(0,r.useSharedState)(t,"tab",0),p=d[0],h=d[1];return(0,o.createComponentVNode)(2,i.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return l(null)},children:"Back"}),children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===p,onClick:function(){return h(0)},children:"Access Rights"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===p,onClick:function(){return h(1)},children:"Data Management"}),a&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===p,onClick:function(){return h(2)},color:"red",children:"Server-to-Server Transfer"})||null]}),0===p&&(0,o.createComponentVNode)(2,u,{server:c})||null,1===p&&(0,o.createComponentVNode)(2,s,{server:c})||null,2===p&&a&&(0,o.createComponentVNode)(2,m,{server:c})||null]})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.server,d=c.consoles,u=function(e,t){return-1!==e.id_with_upload.indexOf(t.id)},s=function(e,t){return-1!==e.id_with_download.indexOf(t.id)};return(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Consoles",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name+" ("+e.loc+")",children:[(0,o.createComponentVNode)(2,i.Button,{icon:u(l,e)?"lock-open":"lock",selected:u(l,e),onClick:function(){return a("toggle_upload",{server:l.ref,console:e.ref})},children:u(l,e)?"Upload On":"Upload Off"}),(0,o.createComponentVNode)(2,i.Button,{icon:s(l,e)?"lock-open":"lock",selected:s(l,e),onClick:function(){return a("toggle_download",{server:l.ref,console:e.ref})},children:s(l,e)?"Download On":"Download Off"})]},e.name)}))})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=(n.data,e.server);return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Research Levels",children:l.tech.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",confirmIcon:"trash",color:"red",content:"Reset",onClick:function(){return a("reset_tech",{server:l.ref,tech:e.id})}})},e.name)}))}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Designs",children:(0,c.filter)((function(e){return!!e.name}))(l.designs).map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",confirmIcon:"trash",color:"red",content:"Delete",onClick:function(){return a("reset_design",{server:l.ref,design:e.id})}})},e.name)}))})],4)},m=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.server,d=c.badmin,u=c.servers;return d?(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Server Data Transfer",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button.Confirm,{fluid:!0,color:"bad",content:(0,o.createComponentVNode)(2,i.Box,{children:["Transfer from ",l.name," To ",e.name]}),onClick:function(){return a("transfer_data",{server:l.ref,target:e.ref})}})},e.name)}))}):null}},function(e,t,n){"use strict";t.__esModule=!0,t.ResleevingConsole=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=(n(28),n(45)),l=n(3),d=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.args),l=c.activerecord,d=c.realname,u=c.obviously_dead,s=c.oocnotes,m=c.can_sleeve_active;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:"Mind Record ("+d+")",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",color:"red",onClick:function(){return r("modal_close")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:!m,icon:"user-plus",content:"Sleeve",onClick:function(){return r("sleeve",{ref:l,mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"user-plus",content:"Card",onClick:function(){return r("sleeve",{ref:l,mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"OOC Notes",children:(0,o.createComponentVNode)(2,a.Section,{style:{"word-break":"break-all",height:"100px"},scrollable:!0,children:s})})]})})},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.args),l=c.activerecord,d=c.realname,u=c.species,s=c.sex,m=c.mind_compat,p=c.synthetic,h=c.oocnotes,C=c.can_grow_active;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:"Body Record ("+d+")",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",color:"red",onClick:function(){return r("modal_close")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bio. Sex",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Compat",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Synthetic",children:p?"Yes":"No"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"OOC Notes",children:(0,o.createComponentVNode)(2,a.Section,{style:{"word-break":"break-all",height:"100px"},scrollable:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{disabled:!C,icon:"user-plus",content:p?"Build":"Grow",onClick:function(){return r("create",{ref:l})}})})]})})};t.ResleevingConsole=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),C=(r.menu,r.coredumped),f=r.emergency,N=(0,o.createFragment)([(0,o.createComponentVNode)(2,g),(0,o.createComponentVNode)(2,v),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,flexGrow:"1",children:(0,o.createComponentVNode)(2,m)})],4);return C&&(N=(0,o.createComponentVNode)(2,p)),f&&(N=(0,o.createComponentVNode)(2,h)),(0,c.modalRegisterBodyOverride)("view_b_rec",u),(0,c.modalRegisterBodyOverride)("view_m_rec",d),(0,o.createComponentVNode)(2,l.Window,{width:640,height:520,resizable:!0,children:[(0,o.createComponentVNode)(2,c.ComplexModal,{maxWidth:"75%",maxHeight:"75%"}),(0,o.createComponentVNode)(2,l.Window.Content,{className:"Layout__content--flexColumn",children:N})]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.menu;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,icon:"home",onClick:function(){return r("menu",{num:1})},children:"Main"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,icon:"folder",onClick:function(){return r("menu",{num:2})},children:"Body Records"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===c,icon:"folder",onClick:function(){return r("menu",{num:3})},children:"Mind Records"})]})},m=function(e,t){var n,r=(0,i.useBackend)(t).data,a=r.menu,c=r.bodyrecords,l=r.mindrecords;return 1===a?n=(0,o.createComponentVNode)(2,C):2===a?n=(0,o.createComponentVNode)(2,V,{records:c,actToDo:"view_b_rec"}):3===a&&(n=(0,o.createComponentVNode)(2,V,{records:l,actToDo:"view_m_rec"})),n},p=function(e,t){return(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",justify:"space-evenly",align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Icon,{size:12,color:"bad",name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"bad",mt:5,children:(0,o.createVNode)(1,"h2",null,"TransCore dump completed. Resleeving offline.",16)})]})})},h=function(e,t){var n=(0,i.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:(0,o.createVNode)(1,"h1",null,"TRANSCORE DUMP",16)}),(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:(0,o.createVNode)(1,"h2",null,"!!WARNING!!",16)}),(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"This will transfer all minds to the dump disk, and the TransCore will be made unusable until post-shift maintenance! This should only be used in emergencies!"}),(0,o.createComponentVNode)(2,a.Box,{mt:4,children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Disk",color:"good",onClick:function(){return n("ejectdisk")}})}),(0,o.createComponentVNode)(2,a.Box,{mt:4,children:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",content:"Core Dump",confirmContent:"Disable Transcore?",color:"bad",onClick:function(){return n("coredump")}})})]})},C=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data);r.loading,r.scantemp,r.occupant,r.locked,r.can_brainscan,r.scan_mode,r.pods,r.selected_pod;return(0,o.createComponentVNode)(2,a.Section,{title:"Pods",level:"2",children:[(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,b),(0,o.createComponentVNode)(2,N)]})},f=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.pods,u=l.spods,s=l.selected_pod;return d&&d.length?d.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:e.progress/100,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[-Infinity,.25]},mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,a.Button,{selected:s===e.pod,icon:s===e.pod&&"check",content:"Select",mt:u&&u.length?"2rem":"0.5rem",onClick:function(){return c("selectpod",{ref:e.pod})}}),(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"pod_"+e.status+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.biomass>=150?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.biomass>=150?"circle":"circle-o"}),"\xa0",e.biomass]}),n]},t)})):null},N=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.sleevers,d=c.spods,u=c.selected_sleever;return l&&l.length?l.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"sleeve_"+(e.occupied?"occupied":"empty")+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:e.occupied?"label":"bad",children:e.name}),(0,o.createComponentVNode)(2,a.Button,{selected:u===e.sleever,icon:u===e.sleever&&"check",content:"Select",mt:d&&d.length?"3rem":"1.5rem",onClick:function(){return r("selectsleever",{ref:e.sleever})}})]},t)})):null},b=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.spods,u=l.selected_printer;return d&&d.length?d.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:e.progress/100,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[-Infinity,.25]},mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,a.Button,{selected:u===e.spod,icon:u===e.spod&&"check",content:"Select",mt:"0.5rem",onClick:function(){return c("selectprinter",{ref:e.spod})}}),(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"synthprinter"+(e.busy?"_working":"")+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.steel>=15e3?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.steel>=15e3?"circle":"circle-o"}),"\xa0",e.steel]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.glass>=15e3?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.glass>=15e3?"circle":"circle-o"}),"\xa0",e.glass]}),n]},t)})):null},V=function(e,t){var n=(0,i.useBackend)(t).act,r=e.records,c=e.actToDo;return r.length?(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:r.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{icon:"user",mb:"0.5rem",content:e.name,onClick:function(){return n(c,{ref:e.recref})}},t)}))}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No records found."]})})},g=function(e,t){var n,r=(0,i.useBackend)(t),c=r.act,l=r.data.temp;if(l&&l.text&&!(l.text.length<=0)){var d=((n={})[l.style]=!0,n);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.NoticeBox,Object.assign({},d,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",children:l.text}),(0,o.createComponentVNode)(2,a.Button,{icon:"times-circle",float:"right",onClick:function(){return c("cleartemp")}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]})))}},v=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.pods,l=r.spods,d=r.sleevers;r.autoallowed,r.autoprocess,r.disk;return(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pods",children:c&&c.length?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[c.length," connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"SynthFabs",children:l&&l.length?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[l.length," connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sleevers",children:d&&d.length?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[d.length," Connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ResleevingPod=void 0;var o=n(0),r=n(3),i=n(1),a=n(2);t.ResleevingPod=function(e,t){var n=(0,i.useBackend)(t).data,c=n.occupied,l=n.name,d=n.health,u=n.maxHealth,s=n.stat,m=n.mindStatus,p=n.mindName,h=n.resleeveSick,C=n.initialSick;return(0,o.createComponentVNode)(2,r.Window,{width:300,height:350,resizeable:!0,children:(0,o.createComponentVNode)(2,r.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:c?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:2===s?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DEAD"}):1===s?(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Unconscious"}):(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.5,Infinity],average:[.25,.5],bad:[-Infinity,.25]},value:d/u,children:[d,"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Status",children:m?"Present":"Missing"}),m?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Occupying",children:p}):""]}),h?(0,o.createComponentVNode)(2,a.Box,{color:"average",mt:3,children:["Warning: Resleeving Sickness detected.",C?(0,o.createFragment)([(0,o.createTextVNode)(" Motion Sickness also detected. Please allow the newly resleeved person a moment to get their bearings. This warning will disappear when Motion Sickness is no longer detected.")],4):""]}):""],0):(0,o.createComponentVNode)(2,a.Box,{bold:!0,m:1,children:"Unoccupied."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.can_hack,s=d.safety,m=d.show_detonate_all,p=d.cyborgs,h=void 0===p?[]:p;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[!!m&&(0,o.createComponentVNode)(2,i.Section,{title:"Emergency Self Destruct",children:[(0,o.createComponentVNode)(2,i.Button,{icon:s?"lock":"unlock",content:s?"Disable Safety":"Enable Safety",selected:s,onClick:function(){return l("arm",{})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"bomb",disabled:s,content:"Destroy ALL Cyborgs",color:"bad",onClick:function(){return l("nuke",{})}})]}),(0,o.createComponentVNode)(2,c,{cyborgs:h,can_hack:u})]})})};var c=function(e,t){var n=e.cyborgs,a=(e.can_hack,(0,r.useBackend)(t)),c=a.act,l=a.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([!!e.hackable&&!e.emagged&&(0,o.createComponentVNode)(2,i.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return c("hackbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",disabled:!l.auth,onClick:function(){return c("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"bomb",content:"Detonate",disabled:!l.auth,color:"bad",onClick:function(){return c("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Location",children:(0,o.createComponentVNode)(2,i.Box,{children:e.locstring})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.health>50?"good":"bad",value:e.health/100})}),"number"==typeof e.charge&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Charge",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.charge>30?"good":"bad",value:e.charge/100})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Capacity",children:(0,o.createComponentVNode)(2,i.Box,{color:e.cell_capacity<3e4?"average":"good",children:e.cell_capacity})})],4)||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell",children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No Power Cell"})}),!!e.is_hacked&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Safeties",children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"DISABLED"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,i.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No cyborg units detected within access parameters."})}},function(e,t,n){"use strict";t.__esModule=!0,t.RogueZones=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.RogueZones=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.timeout_percent,u=l.diffstep,s=l.difficulty,m=l.occupied,p=l.scanning,h=l.updated,C=l.debug,f=l.shuttle_location,N=l.shuttle_at_station,b=l.scan_ready,V=l.can_recall_shuttle;return(0,o.createComponentVNode)(2,a.Window,{width:360,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Current Area",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mineral Content",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle Location",buttons:V&&(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"rocket",onClick:function(){return c("recall_shuttle")},children:"Recall Shuttle"})||null,children:f}),m&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"bad",labelColor:"bad",label:"Personnel",children:["WARNING: Area occupied by ",m," personnel!"]})||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Personnel",color:"good",children:"No personnel detected."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!b,fluid:!0,icon:"search",onClick:function(){return c("scan_for_new")},children:"Scan For Asteroids"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scn Ramestat Core",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d,maxValue:100,ranges:{good:[100,Infinity],average:[75,100],bad:[-Infinity,75]}})}),p&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scanning",children:"In progress."})||null,h&&!p&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Info",children:"Updated shuttle destination!"})||null,C&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Debug",labelColor:"bad",children:[(0,o.createComponentVNode)(2,i.Box,{children:["Timeout Percent: ",d]}),(0,o.createComponentVNode)(2,i.Box,{children:["Diffstep: ",u]}),(0,o.createComponentVNode)(2,i.Box,{children:["Difficulty: ",s]}),(0,o.createComponentVNode)(2,i.Box,{children:["Occupied: ",m]}),(0,o.createComponentVNode)(2,i.Box,{children:["Debug: ",C]}),(0,o.createComponentVNode)(2,i.Box,{children:["Shuttle Location: ",f]}),(0,o.createComponentVNode)(2,i.Box,{children:["Shuttle at station: ",N]}),(0,o.createComponentVNode)(2,i.Box,{children:["Scan Ready: ",b]})]})||null]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RustCoreMonitorContent=t.RustCoreMonitor=void 0;var o=n(0),r=n(1),i=n(3),a=n(2);t.RustCoreMonitor=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.cores;return(0,o.createComponentVNode)(2,a.Section,{title:"Cores",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set Tag",onClick:function(){return i("set_tag")}}),children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Position"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Reactant Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Instability"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Temperature"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Strength"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Plasma Content"})]}),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,{children:[e.x,", ",e.y,", ",e.z]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.has_field?"Online":"Offline",selected:e.has_field,disabled:!e.core_operational,onClick:function(){return i("toggle_active",{core:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.reactant_dump?"Dump":"Maintain",selected:e.has_field,disabled:!e.core_operational,onClick:function(){return i("toggle_reactantdump",{core:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.field_instability}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.field_temperature}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!e.has_field&&"yellow",value:e.target_field_strength,unit:"(W.m^-3)",minValue:1,maxValue:1e3,stepPixelSize:1,onDrag:function(t,n){return i("set_fieldstr",{core:e.ref,fieldstr:n})}})}),(0,o.createComponentVNode)(2,a.Table.Cell)]},e.name)}))]})})};t.RustCoreMonitorContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.RustFuelContent=t.RustFuelControl=void 0;var o=n(0),r=n(1),i=n(3),a=n(2);t.RustFuelControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.fuels;return(0,o.createComponentVNode)(2,a.Section,{title:"Fuel Injectors",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set Tag",onClick:function(){return i("set_tag")}}),children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Position"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Remaining Fuel"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Fuel Rod Composition"})]}),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,{children:[e.x,", ",e.y,", ",e.z]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.active?"Online":"Offline",selected:e.active,disabled:!e.deployed,onClick:function(){return i("toggle_active",{fuel:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.fuel_amt}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.fuel_type})]},e.name)}))]})})};t.RustFuelContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.Secbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Secbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.locked,m=l.idcheck,p=l.check_records,h=l.check_arrest,C=l.arrest_type,f=l.declare_arrests,N=l.will_patrol;return(0,o.createComponentVNode)(2,a.Window,{width:390,height:320,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Security Unit v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("power")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:s?"good":"bad",children:s?"Locked":"Unlocked"})]})}),!s&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Check for Weapon Authorization",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"toggle-on":"toggle-off",selected:m,onClick:function(){return c("idcheck")},children:m?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Check Security Records",children:(0,o.createComponentVNode)(2,i.Button,{icon:p?"toggle-on":"toggle-off",selected:p,onClick:function(){return c("ignorerec")},children:p?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Check Arrest Status",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"toggle-on":"toggle-off",selected:h,onClick:function(){return c("ignorearr")},children:h?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Operating Mode",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"toggle-on":"toggle-off",selected:C,onClick:function(){return c("switchmode")},children:C?"Detain":"Arrest"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Report Arrests",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"toggle-on":"toggle-off",selected:f,onClick:function(){return c("declarearrests")},children:f?"Yes":"No"})}),N&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Auto Patrol",children:(0,o.createComponentVNode)(2,i.Button,{icon:N?"toggle-on":"toggle-off",selected:N,onClick:function(){return c("patrol")},children:N?"Yes":"No"})})]})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SecurityRecords=void 0;var o=n(0),r=n(1),i=n(2),a=n(45),c=n(3),l=n(95),d=n(96),u=n(62),s=(n(6),function(e,t){(0,a.modalOpen)(e,"edit",{field:t.edit,value:t.value})});t.SecurityRecords=function(e,t){var n,s=(0,r.useBackend)(t).data,C=s.authenticated,f=s.screen;return C?(2===f?n=(0,o.createComponentVNode)(2,m):3===f?n=(0,o.createComponentVNode)(2,p):4===f&&(n=(0,o.createComponentVNode)(2,h)),(0,o.createComponentVNode)(2,c.Window,{width:700,height:680,resizable:!0,children:[(0,o.createComponentVNode)(2,a.ComplexModal,{maxHeight:"100%",maxWidth:"400px"}),(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,l.LoginInfo),(0,o.createComponentVNode)(2,u.TemporaryNotice),(0,o.createComponentVNode)(2,N),(0,o.createComponentVNode)(2,i.Section,{height:"89%",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,c.Window,{width:700,height:680,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d.LoginScreen)})})};var m=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.records;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search by Name, DNA, or ID",onChange:function(e,t){return a("search",{t1:t})}}),(0,o.createComponentVNode)(2,i.Box,{mt:"0.5rem",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{icon:"user",mb:"0.5rem",color:e.color,content:e.id+": "+e.name+" (Criminal Status: "+e.criminal+")",onClick:function(){return a("d_rec",{d_rec:e.ref})}},t)}))})],4)},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Backup to Disk",disabled:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"upload",content:"Upload from Disk",my:"0.5rem",disabled:!0}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",content:"Delete All Security Records",onClick:function(){return n("del_all")}})],4)},h=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.security,d=c.printing;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"General Data",level:2,mt:"-6px",children:(0,o.createComponentVNode)(2,C)}),(0,o.createComponentVNode)(2,i.Section,{title:"Security Data",level:2,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",level:2,children:[(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Security Record",color:"bad",onClick:function(){return a("del_r")}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Record (All)",color:"bad",onClick:function(){return a("del_r_2")}}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"spinner":"print",disabled:d,iconSpin:!!d,content:"Print Entry",ml:"0.5rem",onClick:function(){return a("print_p")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back",mt:"0.5rem",onClick:function(){return a("screen",{screen:2})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.general;return c&&c.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"left",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:c.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[(0,o.createComponentVNode)(2,i.Box,{height:"20px",display:"inline-block",children:e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)}))}),!!e.edit&&(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",onClick:function(){return s(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"right",textAlign:"right",children:[!!c.has_photos&&c.photos.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e.substr(1,e.length-1),style:{width:"96px","margin-bottom":"0.5rem","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createVNode)(1,"br"),"Photo #",t+1]},t)})),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return a("photo_front")},children:"Update Front Photo"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return a("photo_side")},children:"Update Side Photo"})]})]})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General records lost!"})},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.security;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)})),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return s(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Comments/Log",level:2,children:[0===l.comments.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",display:"inline",children:e.header}),(0,o.createVNode)(1,"br"),e.text,(0,o.createComponentVNode)(2,i.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return c("del_c",{del_c:t+1})}})]},t)})),(0,o.createComponentVNode)(2,i.Button,{icon:"comment",content:"Add Entry",color:"good",mt:"0.5rem",mb:"0",onClick:function(){return(0,a.modalOpen)(t,"add_c")}})]})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["Security records lost!",(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"New Record",ml:"0.5rem",onClick:function(){return c("new")}})]})},N=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.screen;return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===c,onClick:function(){return a("screen",{screen:2})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:3===c,onClick:function(){return a("screen",{screen:3})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"wrench"}),"Record Maintenance"]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SeedStorage=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6),l=n(8);t.SeedStorage=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(u.scanner,u.seeds),m=(0,l.sortBy)((function(e){return e.name.toLowerCase()}))(s);return(0,o.createComponentVNode)(2,a.Window,{width:600,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Seeds",children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Flex,{spacing:1,mt:-1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"60%",children:(0,o.createComponentVNode)(2,i.Collapsible,{title:(0,c.toTitleCase)(e.name)+" #"+e.uid,children:(0,o.createComponentVNode)(2,i.Section,{width:"165%",title:"Traits",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:Object.keys(e.traits).map((function(t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(0,c.toTitleCase)(t),children:e.traits[t]},t)}))})})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{mt:.4,children:[e.amount," Remaining"]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"download",onClick:function(){return d("vend",{id:e.id})},children:"Vend"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"trash",onClick:function(){return d("purge",{id:e.id})},children:"Purge"})})]},e.name+e.uid)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShieldCapacitor=void 0;var o=n(0),r=n(1),i=n(3),a=n(2),c=n(5),l=n(20);t.ShieldCapacitor=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.time_since_fail,p=u.stored_charge,h=u.max_charge,C=u.charge_rate,f=u.max_charge_rate;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:s,content:s?"Online":"Offline",onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Capacitor Status",children:m>2?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"OK."}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Discharging!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stored Energy",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:p,format:function(e){return(0,l.formatSiUnit)(e,0,"J")}})," (",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:100*(0,c.round)(p/h,1)}),"%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Rate",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,step:100,stepPixelSize:.2,minValue:1e4,maxValue:f,format:function(e){return(0,l.formatPower)(e)},onDrag:function(e,t){return d("charge_rate",{rate:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShieldGenerator=void 0;var o=n(0),r=n(1),i=n(3),a=n(2),c=n(5),l=n(20),d=n(61);t.ShieldGenerator=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.locked);return(0,o.createComponentVNode)(2,i.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:a?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,s)})})};var u=function(e,t){return(0,o.createComponentVNode)(2,d.FullscreenNotice,{title:"Locked",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.5rem",bold:!0,children:(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"})}),(0,o.createComponentVNode)(2,a.Box,{color:"label",my:"1rem",children:"Swipe your ID to begin."})]})},s=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data.lockedData,u=d.capacitors,s=d.active,m=d.failing,p=d.radius,h=d.max_radius,C=d.z_range,f=d.max_z_range,N=d.average_field_strength,b=d.target_field_strength,V=d.max_field_strength,g=d.shields,v=d.upkeep,_=d.strengthen_rate,k=d.max_strengthen_rate,y=d.gen_power,L=(u||[]).length;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Field Status",children:m?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Unstable"}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Stable"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overall Field Strength",children:[(0,c.round)(N,2)," Renwick (",b&&(0,c.round)(100*N/b,1)||"NA","%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upkeep Power",children:(0,l.formatPower)(v)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shield Generation Power",children:(0,l.formatPower)(y)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Currently Shielded",children:[g," m\xb2"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Capacitors",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:L?u.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Capacitor #"+t,children:[e.active?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Online"}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Offline"}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:[(0,l.formatSiUnit)(e.stored_charge,0,"J")," (",100*(0,c.round)(e.stored_charge/e.max_charge,2),"%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:e.failing?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Discharging"}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"OK."})})]})]},t)})):(0,o.createComponentVNode)(2,a.LabeledList.Item,{color:"bad",children:"No Capacitors Connected"})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:s?"Online":"Offline",selected:s,onClick:function(){return i("toggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Coverage Radius",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:6,minValue:0,maxValue:h,value:p,unit:"m",onDrag:function(e,t){return i("change_radius",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Vertical Shielding",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:12,minValue:0,maxValue:f,value:C,unit:"vertical range",onDrag:function(e,t){return i("z_range",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Rate",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:12,minValue:0,step:.1,maxValue:k,value:_,format:function(e){return(0,c.round)(e,1)},unit:"Renwick/s",onDrag:function(e,t){return i("strengthen_rate",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maximum Field Strength",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:12,minValue:1,maxValue:V,value:b,unit:"Renwick",onDrag:function(e,t){return i("target_field_strength",{val:t})}})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleControl=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=function(e,t){var n="ERROR",r="bad",i=!1;return"docked"===e?(n="DOCKED",r="good"):"docking"===e?(n="DOCKING",r="average",i=!0):"undocking"===e?(n="UNDOCKING",r="average",i=!0):"undocked"===e&&(n="UNDOCKED",r="#676767"),i&&t&&(n+="-MANUAL"),(0,o.createComponentVNode)(2,a.Box,{color:r,children:n})},d=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,d=e.engineName,u=void 0===d?"Bluespace Drive":d,s=c.shuttle_status,m=c.shuttle_state,p=c.has_docking,h=c.docking_status,C=c.docking_override,f=c.docking_codes;return(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Status",children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",mb:1,children:s}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:u,children:"idle"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#676767",bold:!0,children:"IDLE"})||"warmup"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"SPINNING UP"})||"in_transit"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"ENGAGED"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR"})}),p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Docking Status",children:l(h,C)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Docking Codes",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pen",onClick:function(){return r("set_codes")},children:f||"Not Set"})})],4)||null]})]})},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.can_launch,d=c.can_cancel,u=c.can_force;return(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("move")},disabled:!l,icon:"rocket",fluid:!0,children:"Launch Shuttle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("cancel")},disabled:!d,icon:"ban",fluid:!0,children:"Cancel Launch"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("force")},color:"bad",disabled:!u,icon:"exclamation-triangle",fluid:!0,children:"Force Launch"})})]})})},s={ShuttleControlConsoleDefault:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t);n.act,n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)})),ShuttleControlConsoleMulti:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.can_cloak,s=c.can_pick,m=c.legit,p=c.cloaked,h=c.destination_name;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,a.Section,{title:"Multishuttle Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:m?"ATC Inhibitor":"Cloaking",children:(0,o.createComponentVNode)(2,a.Button,{selected:p,icon:p?"eye":"eye-o",onClick:function(){return r("toggle_cloaked")},children:p?"Enabled":"Disabled"})})||null,(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Destination",children:(0,o.createComponentVNode)(2,a.Button,{icon:"taxi",disabled:!s,onClick:function(){return r("pick")},children:h})})]})}),(0,o.createComponentVNode)(2,u)],4)})),ShuttleControlConsoleExploration:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.can_pick,s=c.destination_name,m=c.fuel_usage,p=c.fuel_span,h=c.remaining_fuel;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{engineName:"Engines"}),(0,o.createComponentVNode)(2,a.Section,{title:"Jump Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Destination",children:(0,o.createComponentVNode)(2,a.Button,{icon:"taxi",disabled:!l,onClick:function(){return r("pick")},children:s})}),m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Est. Delta-V Budget",color:p,children:[h," m/s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Avg. Delta-V Per Maneuver",children:[m," m/s"]})],4)||null]})}),(0,o.createComponentVNode)(2,u)],4)})),ShuttleControlConsoleWeb:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=d.autopilot,s=d.can_rename,m=d.shuttle_state,p=d.is_moving,h=d.skip_docking,C=d.docking_status,f=d.docking_override,N=d.shuttle_location,b=d.can_cloak,V=d.cloaked,g=d.can_autopilot,v=d.routes,_=d.is_in_transit,k=d.travel_progress,y=d.time_left,L=d.doors,B=d.sensors;return(0,o.createFragment)([u&&(0,o.createComponentVNode)(2,a.Section,{title:"AI PILOT (CLASS D) ACTIVE",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,children:"This vessel will start and stop automatically. Ensure that all non-cycling capable hatches and doors are closed, as the automated system may not be able to control them. Docking and flight controls are locked. To unlock, disable the automated flight system."})})||null,(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Status",buttons:s&&(0,o.createComponentVNode)(2,a.Button,{icon:"pen",onClick:function(){return c("rename_command")},children:"Rename"})||null,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Engines",children:"idle"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#676767",bold:!0,children:"IDLE"})||"warmup"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"SPINNING UP"})||"in_transit"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"ENGAGED"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR"})}),!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Location",children:(0,r.toTitleCase)(N)}),!h&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Docking Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{selected:"docked"===C,disabled:"undocked"!==C&&"docked"!==C,onClick:function(){return c("dock_command")},children:"Dock"}),(0,o.createComponentVNode)(2,a.Button,{selected:"undocked"===C,disabled:"docked"!==C&&"undocked"!==C,onClick:function(){return c("undock_command")},children:"Undock"})],4),children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,inline:!0,children:l(C,f)})})||null,b&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloaking",children:(0,o.createComponentVNode)(2,a.Button,{selected:V,icon:V?"eye":"eye-o",onClick:function(){return c("toggle_cloaked")},children:V?"Enabled":"Disabled"})})||null,g&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Autopilot",children:(0,o.createComponentVNode)(2,a.Button,{selected:u,icon:u?"eye":"eye-o",onClick:function(){return c("toggle_autopilot")},children:u?"Enabled":"Disabled"})})||null],0)||null]}),!p&&(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Available Destinations",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:v.length&&v.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"rocket",onClick:function(){return c("traverse",{traverse:e.index})},children:e.travel_time})},e.name)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:"bad",children:"No routes found."})})})||null]}),_&&(0,o.createComponentVNode)(2,a.Section,{title:"Transit ETA",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Distance from target",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",minValue:0,maxValue:100,value:k,children:[y,"s"]})})})})||null,Object.keys(L).length&&(0,o.createComponentVNode)(2,a.Section,{title:"Hatch Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(L).map((function(e){var t=L[e];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:[t.open&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"Open"})||(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Closed"}),"\xa0-\xa0",t.bolted&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Bolted"})||(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"Unbolted"})]},e)}))})})||null,Object.keys(B).length&&(0,o.createComponentVNode)(2,a.Section,{title:"Sensors",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(B).map((function(e){var t=B[e];return-1===t.reading?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,color:"bad",children:"Unable to get sensor air reading."}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[t.pressure,"kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[t.temp,"\xb0C"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",children:[t.oxygen,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nitrogen",children:[t.nitrogen,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Carbon Dioxide",children:[t.carbon_dioxide,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Phoron",children:[t.phoron,"%"]}),t.other&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Other",children:[t.other,"%"]})||null]})},e)}))})})||null],0)}))};t.ShuttleControl=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.subtemplate);return(0,o.createComponentVNode)(2,c.Window,{width:470,height:"ShuttleControlConsoleWeb"===r?560:370,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:s[r]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=[["good","Alive"],["average","Unconscious"],["bad","DEAD"]],d=[["Resp","oxyLoss"],["Toxin","toxLoss"],["Brute","bruteLoss"],["Burn","fireLoss"]],u={average:[.25,.5],bad:[.5,Infinity]},s=["bad","average","average","good","average","average","bad"];t.Sleeper=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.hasOccupant?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,N));return(0,o.createComponentVNode)(2,c.Window,{width:550,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:r})})};var m=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),a=(r.occupant,r.dialysis),c=r.stomachpumping;return(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,C,{title:"Dialysis",active:a,actToDo:"togglefilter"}),(0,o.createComponentVNode)(2,C,{title:"Stomach Pump",active:c,actToDo:"togglepump"}),(0,o.createComponentVNode)(2,f)],4)},p=function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=d.occupant,m=d.auto_eject_dead,p=d.stasis;return(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"label",display:"inline",children:"Auto-eject if dead:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"toggle-on":"toggle-off",selected:m,content:m?"On":"Off",onClick:function(){return c("auto_eject_dead_"+(m?"off":"on"))}}),(0,o.createComponentVNode)(2,a.Button,{icon:"user-slash",content:"Eject",onClick:function(){return c("ejectify")}}),(0,o.createComponentVNode)(2,a.Button,{content:p,onClick:function(){return c("changestasis")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:0,max:u.maxHealth,value:u.health/u.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]},children:(0,r.round)(u.health,0)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l[u.stat][0],children:l[u.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u.maxTemp,value:u.bodyTemperature/u.maxTemp,color:s[u.temperatureSuitability+3],children:[(0,r.round)(u.btCelsius,0),"\xb0C,",(0,r.round)(u.btFaren,0),"\xb0F"]})}),!!u.hasBlood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u.bloodMax,value:u.bloodLevel/u.bloodMax,ranges:{bad:[-Infinity,.6],average:[.6,.9],good:[.6,Infinity]},children:[u.bloodPercent,"%, ",u.bloodLevel,"cl"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pulse",verticalAlign:"middle",children:[u.pulse," BPM"]})],4)]})})},h=function(e,t){var n=(0,i.useBackend)(t).data.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Damage",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e[0],children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:n[e[1]]/100,ranges:u,children:(0,r.round)(n[e[1]],0)},t)},t)}))})})},C=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.isBeakerLoaded,d=c.beakerMaxSpace,u=c.beakerFreeSpace,s=e.active,m=e.actToDo,p=e.title,h=s&&u>0;return(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{disabled:!l||u<=0,selected:h,icon:h?"toggle-on":"toggle-off",content:h?"Active":"Inactive",onClick:function(){return r(m)}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return r("removebeaker")}})],4),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remaining Space",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:d,value:u/d,ranges:{good:[.5,Infinity],average:[.25,.5],bad:[-Infinity,.25]},children:[u,"u"]})})}):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No beaker loaded."})})},f=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.occupant,d=c.chemicals,u=c.maxchem,s=c.amounts;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemicals",flexGrow:"1",children:d.map((function(e,t){var n,i="";return e.overdosing?(i="bad",n=(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-circle"}),"\xa0 Overdosing!"]})):e.od_warning&&(i="average",n=(0,o.createComponentVNode)(2,a.Box,{color:"average",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle"}),"\xa0 Close to overdosing"]})),(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Section,{title:e.title,level:"3",mx:"0",lineHeight:"18px",buttons:n,children:(0,o.createComponentVNode)(2,a.Flex,{align:"flex-start",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u,value:e.occ_amount/u,color:i,mr:"0.5rem",children:[e.pretty_amount,"/",u,"u"]}),s.map((function(t,n){return(0,o.createComponentVNode)(2,a.Button,{disabled:!e.injectable||e.occ_amount+t>u||2===l.stat,icon:"syringe",content:t,mb:"0",height:"19px",onClick:function(){return r("chemical",{chemid:e.id,amount:t})}},n)}))]})})},t)}))})},N=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.isBeakerLoaded;return(0,o.createComponentVNode)(2,a.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant detected.",c&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Remove Beaker",onClick:function(){return r("removebeaker")}})})||null]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.SmartVend=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.config,u=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Storage",children:[u.secure&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:-1===u.locked,info:-1!==u.locked,children:-1===u.locked?(0,o.createComponentVNode)(2,a.Box,{children:"Sec.re ACC_** //):securi_nt.diag=>##'or 1=1'%($..."}):(0,o.createComponentVNode)(2,a.Box,{children:"Secure Access: Please have your identification ready."})})||null,0===u.contents.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Unfortunately, this ",d.title," is empty."]})||(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Item"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:"Amount"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:[e.amount," in stock"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",disabled:e.amount<1,onClick:function(){return l("Release",{index:e.index,amount:1})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",disabled:e.amount<5,onClick:function(){return l("Release",{index:e.index,amount:5})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom",disabled:e.amount<1,onClick:function(){return l("Release",{index:e.index})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",disabled:e.amount<1,onClick:function(){return l("Release",{index:e.index,amount:e.amount})}})]})]},t)}))(u.contents)]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(1),i=n(2),a=n(20),c=n(3),l=n(5);t.Smes=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.capacityPercent,m=u.capacity,p=u.charge,h=u.inputAttempt,C=u.inputting,f=u.inputLevel,N=u.inputLevelMax,b=u.inputAvailable,V=u.outputAttempt,g=u.outputting,v=u.outputLevel,_=u.outputLevelMax,k=u.outputUsed,y=(s>=100?"good":C&&"average")||"bad",L=(g?"good":p>0&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:340,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:.01*s,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]},children:[(0,l.round)(p/6e4,1)," kWh / ",(0,l.round)(m/6e4)," kWh (",s,"%)"]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Input",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:h?"sync-alt":"times",selected:h,onClick:function(){return d("tryinput")},children:h?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.Box,{color:y,children:(s>=100?"Fully Charged":C&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,i.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:0===f,onClick:function(){return d("input",{target:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"backward",disabled:0===f,onClick:function(){return d("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,i.Slider,{value:f/1e3,fillValue:b/1e3,minValue:0,maxValue:N/1e3,step:5,stepPixelSize:4,format:function(e){return(0,a.formatPower)(1e3*e,1)},onDrag:function(e,t){return d("input",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"forward",disabled:f===N,onClick:function(){return d("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:f===N,onClick:function(){return d("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Available",children:(0,a.formatPower)(b)})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Output",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:V?"power-off":"times",selected:V,onClick:function(){return d("tryoutput")},children:V?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.Box,{color:L,children:g?"Sending":p>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,i.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:0===v,onClick:function(){return d("output",{target:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"backward",disabled:0===v,onClick:function(){return d("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,i.Slider,{value:v/1e3,minValue:0,maxValue:_/1e3,step:5,stepPixelSize:4,format:function(e){return(0,a.formatPower)(1e3*e,1)},onDrag:function(e,t){return d("output",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"forward",disabled:v===_,onClick:function(){return d("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:v===_,onClick:function(){return d("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Outputting",children:(0,a.formatPower)(k)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SolarControl=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(5);t.SolarControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.generated,s=d.generated_ratio,m=d.sun_angle,p=d.array_angle,h=d.rotation_rate,C=d.max_rotation_rate,f=d.tracking_state,N=d.connected_panels,b=d.connected_tracker;return(0,o.createComponentVNode)(2,a.Window,{width:380,height:230,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Scan for new hardware",onClick:function(){return l("refresh")}}),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:"Solar tracker",color:b?"good":"bad",children:b?"OK":"N/A"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Solar panels",color:N>0?"good":"bad",children:N})]})}),(0,o.createComponentVNode)(2,i.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:s,children:u+" W"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Star orientation",children:[m,"\xb0"]})]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Off",selected:0===f,onClick:function(){return l("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"clock-o",content:"Timed",selected:1===f,onClick:function(){return l("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Auto",selected:2===f,disabled:!b,onClick:function(){return l("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Azimuth",children:[(0===f||1===f)&&(0,o.createComponentVNode)(2,i.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:p,format:function(e){var t=Math.sign(e)>0?" (CW)":" (CCW)";return Math.abs((0,c.round)(e))+t},onDrag:function(e,t){return l("azimuth",{value:t})}}),1===f&&(0,o.createComponentVNode)(2,i.NumberInput,{width:"80px",unit:"deg/h",step:1,minValue:-C-.01,maxValue:C+.01,value:h,format:function(e){var t=Math.sign(e)>0?" (CW)":" (CCW)";return Math.abs((0,c.round)(e))+t},onDrag:function(e,t){return l("azimuth_rate",{value:t})}}),2===f&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mt:"3px",children:[p+"\xb0"," (auto)"]})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(0),r=n(28),i=n(1),a=n(2),c=n(3);t.SpaceHeater=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=d.temp,s=d.minTemp,m=d.maxTemp,p=d.cell,h=d.power;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:[u," K (",u-r.T0C,"\xb0 C)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Charge",children:[h,"% ",!p&&"(No Cell Inserted)"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledControls,{children:[(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Thermostat",children:(0,o.createComponentVNode)(2,a.Knob,{animated:!0,value:u-r.T0C,minValue:s-r.T0C,maxValue:m-r.T0C,unit:"C",onChange:function(e,t){return l("temp",{newtemp:t+r.T0C})}})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Cell",children:p?(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",onClick:function(){return l("cellremove")}}):(0,o.createComponentVNode)(2,a.Button,{icon:"car-battery",content:"Insert Cell",onClick:function(){return l("cellinstall")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Stack=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);n(24);t.Stack=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.amount,u=l.recipes;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Amount: "+d,children:(0,o.createComponentVNode)(2,c,{recipes:u})})})})};var c=function u(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data,e.recipes);return Object.keys(a).sort().map((function(e){var t=a[e];return t.ref===undefined?(0,o.createComponentVNode)(2,i.Collapsible,{ml:1,mb:-.7,color:"label",title:e,children:(0,o.createComponentVNode)(2,i.Box,{ml:1,children:(0,o.createComponentVNode)(2,u,{recipes:t})})}):(0,o.createComponentVNode)(2,d,{title:e,recipe:t})}))},l=function(e,t){for(var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.recipe),l=e.maxMultiplier,d=Math.min(l,Math.floor(c.max_res_amount/c.res_amount)),u=[5,10,25],s=[],m=function(){var e=h[p];d>=e&&s.push((0,o.createComponentVNode)(2,i.Button,{content:e*c.res_amount+"x",onClick:function(){return a("make",{ref:c.ref,multiplier:e})}}))},p=0,h=u;p1?"s":""),h+=")",s>1&&(h=s+"x "+h);var C=function(e,t){return e.req_amount>t?0:Math.floor(t/e.req_amount)}(d,c);return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,disabled:!C,icon:"wrench",content:h,onClick:function(){return a("make",{ref:d.ref,multiplier:1})}})}),m>1&&C>1&&(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l,{recipe:d,maxMultiplier:C})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.StarcasterCh=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(75);t.StarcasterCh=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.article),c=(0,o.createComponentVNode)(2,d);return i&&(c=(0,o.createComponentVNode)(2,l)),(0,o.createComponentVNode)(2,a.Window,{width:575,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:c})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.article;if(!l)return(0,o.createComponentVNode)(2,i.Section,{children:"Error: Article not found."});var d=l.title,u=l.cover,s=l.content;return(0,o.createComponentVNode)(2,i.Section,{title:"Viewing: "+d,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",onClick:function(){return a("PRG_reset")},children:"Close"}),children:[!!u&&(0,o.createVNode)(1,"img",null,null,1,{src:(0,c.resolveAsset)(u)}),(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:s}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.showing_archived,d=c.all_articles;return(0,o.createComponentVNode)(2,i.Section,{title:"Articles List",buttons:(0,o.createComponentVNode)(2,i.Button.Checkbox,{onClick:function(){return a("PRG_toggle_archived")},checked:l,children:"Show Archived"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",onClick:function(){return a("PRG_openarticle",{uid:e.uid})}})},e.uid)}))||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Error",children:"Unable to connect to Starfire database."})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationBlueprintsContent=t.StationBlueprints=void 0;var o=n(0),r=(n(8),n(41),n(10),n(6),n(1)),i=n(2),a=n(3);t.StationBlueprints=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:870,height:708,resizable:!0,children:(0,o.createComponentVNode)(2,c)})};var c=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=(n.config,c.mapRef);c.areas,c.turfs;return(0,o.createFragment)([(0,o.createVNode)(1,"div","CameraConsole__left",(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:"Honk!"}),2),(0,o.createVNode)(1,"div","CameraConsole__right",(0,o.createComponentVNode)(2,i.ByondUi,{className:"CameraConsole__map",params:{id:l,type:"map"}}),2)],4)};t.StationBlueprintsContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.SuitCycler=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.SuitCycler=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),s=i.active,m=i.locked,p=i.uv_active,h=(0,o.createComponentVNode)(2,c);return p?h=(0,o.createComponentVNode)(2,l):m?h=(0,o.createComponentVNode)(2,d):s&&(h=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.Window,{width:320,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:h})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.safeties,d=c.occupied,u=c.suit,s=c.helmet,m=c.departments,p=c.species,h=c.uv_level,C=c.max_uv_level,f=c.can_repair,N=c.damage;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lock",content:"Lock",onClick:function(){return a("lock")}}),children:[!(!d||!l)&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Biological entity detected in suit chamber. Please remove before continuing with operation.",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",color:"red",content:"Eject Entity",onClick:function(){return a("eject_guy")}})]}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,i.Button,{icon:s?"square":"square-o",content:s||"Empty",disabled:!s,onClick:function(){return a("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"square":"square-o",content:u||"Empty",disabled:!u,onClick:function(){return a("dispense",{item:"suit"})}})}),f&&N?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Suit Damage",children:[N,(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:"Repair",onClick:function(){return a("repair_suit")}})]}):null]})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Customization",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Paintjob",children:(0,o.createComponentVNode)(2,i.Dropdown,{noscroll:!0,width:"100%",options:m,selected:m[0],onSelected:function(e){return a("department",{department:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Species",children:(0,o.createComponentVNode)(2,i.Dropdown,{width:"100%",maxHeight:"160px",options:p,selected:p[0],onSelected:function(e){return a("species",{species:e})}})})]}),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,content:"Customize",onClick:function(){return a("apply_paintjob")}})]}),(0,o.createComponentVNode)(2,i.Section,{title:"UV Decontamination",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Radiation Level",children:(0,o.createComponentVNode)(2,i.NumberInput,{width:"50px",value:h,minValue:1,maxValue:C,stepPixelSize:30,onChange:function(e,t){return a("radlevel",{radlevel:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Decontaminate",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"recycle",disabled:d&&l,textAlign:"center",onClick:function(){return a("uv")}})})]})})],4)},l=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.model_text,d=c.userHasAccess;return(0,o.createComponentVNode)(2,i.Section,{title:"Locked",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Box,{color:"bad",bold:!0,children:["The ",l," suit cycler is currently locked. Please contact your system administrator."]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"unlock",content:"[Unlock]",disabled:!d,onClick:function(){return a("lock")}})})]})},u=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Contents are currently being painted. Please wait."})}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),s=i.panelopen,m=i.uv_active,p=i.broken,h=(0,o.createComponentVNode)(2,c);return s?h=(0,o.createComponentVNode)(2,l):m?h=(0,o.createComponentVNode)(2,d):p&&(h=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.Window,{width:400,height:365,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:h})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.locked,d=c.open,u=c.safeties,s=c.occupied,m=c.suit,p=c.helmet,h=c.mask;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!d&&(0,o.createComponentVNode)(2,i.Button,{icon:l?"unlock":"lock",content:l?"Unlock":"Lock",onClick:function(){return a("lock")}}),!l&&(0,o.createComponentVNode)(2,i.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return a("door")}})],0),children:[!(!s||!u)&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Biological entity detected in suit chamber. Please remove before continuing with operation.",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",color:"red",content:"Eject Entity",onClick:function(){return a("eject_guy")}})]}),l&&(0,o.createComponentVNode)(2,i.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,i.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,i.Icon,{name:"lock"})]})||d&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,i.Button,{icon:p?"square":"square-o",content:p||"Empty",disabled:!p,onClick:function(){return a("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"square":"square-o",content:m||"Empty",disabled:!m,onClick:function(){return a("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return a("dispense",{item:"mask"})}})})]})||(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:s&&u,textAlign:"center",onClick:function(){return a("uv")}})]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.safeties,d=c.uv_super;return(0,o.createComponentVNode)(2,i.Section,{title:"Maintenance Panel",children:[(0,o.createComponentVNode)(2,i.Box,{color:"grey",children:"The panel is ridden with controls, button and meters, labeled in strange signs and symbols that you cannot understand. Probably the manufactoring world's language. Among other things, a few controls catch your eye."}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Box,{children:["A small dial with a biohazard symbol next to it. It's pointing towards a gauge that reads ",d?"15nm":"185nm",".",(0,o.createComponentVNode)(2,i.Flex,{mt:1,align:"center",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Knob,{size:2,inline:!0,value:d,minValue:0,maxValue:1,step:1,stepPixelSize:40,color:d?"red":"green",format:function(e){return e?"15nm":"185nm"},onChange:function(e,t){return a("toggleUV")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Icon,{name:"biohazard",size:3,color:"orange"})})]})]}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Box,{children:["A thick old-style button, with 2 grimy LED lights next to it. The ",l?(0,o.createVNode)(1,"font",null,"GREEN",16,{color:"green"}):(0,o.createVNode)(1,"font",null,"RED",16,{color:"red"})," LED is on.",(0,o.createComponentVNode)(2,i.Flex,{mt:1,align:"center",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Button,{fontSize:"2rem",color:"grey",inline:!0,icon:"caret-square-right",style:{border:"4px solid #777","border-style":"outset"},onClick:function(){return a("togglesafeties")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",color:l?"black":"red",mr:2}),(0,o.createComponentVNode)(2,i.Icon,{name:"circle",color:l?"green":"black"})]})]})]})]})},d=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})},u=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{danger:!0,children:"Unit chamber is too contaminated to continue usage. Please call for a qualified individual to perform maintenance."})}},function(e,t,n){"use strict";t.__esModule=!0,t.SupplyConsole=void 0;var o=n(0),r=n(8),i=(n(5),n(20)),a=n(1),c=n(2),l=n(45),d=n(3),u=n(41),s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.supply_points,l=e.args,d=l.name,u=l.cost,s=l.manifest,m=l.ref,p=l.random;return(0,o.createComponentVNode)(2,c.Section,{width:"400px",level:2,m:"-1rem",pb:"1rem",title:d,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"shopping-cart",content:"Buy - "+u+" points",disabled:u>i,onClick:function(){return r("request_crate",{ref:m})}}),children:(0,o.createComponentVNode)(2,c.Section,{title:"Contains"+(p?" any "+p+" of:":""),scrollable:!0,height:"200px",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})};t.SupplyConsole=function(e,t){var n=(0,a.useBackend)(t);n.act,n.data;return(0,l.modalRegisterBodyOverride)("view_crate",s),(0,o.createComponentVNode)(2,d.Window,{width:700,height:620,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:[(0,o.createComponentVNode)(2,l.ComplexModal,{maxWidth:"100%"}),(0,o.createComponentVNode)(2,c.Section,{title:"Supply Records",children:[(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,p)]})]})})};var m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.supply_points,u=l.shuttle,s=null,m=!1;return l.shuttle_auth&&(1===u.launch&&0===u.mode?s=(0,o.createComponentVNode)(2,c.Button,{icon:"rocket",content:"Send Away",onClick:function(){return r("send_shuttle",{mode:"send_away"})}}):2!==u.launch||3!==u.mode&&1!==u.mode?1===u.launch&&5===u.mode&&(s=(0,o.createComponentVNode)(2,c.Button,{icon:"rocket",content:"Send Shuttle",onClick:function(){return r("send_shuttle",{mode:"send_to_station"})}})):s=(0,o.createComponentVNode)(2,c.Button,{icon:"ban",content:"Cancel Launch",onClick:function(){return r("send_shuttle",{mode:"cancel_shuttle"})}}),u.force&&(m=!0)),(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Supply Points",children:(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Supply Shuttle",mt:2,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",buttons:(0,o.createFragment)([s,m?(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",content:"Force Launch",onClick:function(){return r("send_shuttle",{mode:"force_shuttle"})}}):null],0),children:u.location}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Engine",children:u.engine}),4===u.mode?(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"ETA",children:u.time>1?(0,i.formatTime)(u.time):"LATE"}):null]})})]})},p=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data.order_auth,(0,a.useLocalState)(t,"tabIndex",0)),i=r[0],l=r[1];return(0,o.createComponentVNode)(2,c.Section,{title:"Menu",children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"box",selected:0===i,onClick:function(){return l(0)},children:"Request"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"check-circle-o",selected:1===i,onClick:function(){return l(1)},children:"Accepted"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"circle-o",selected:2===i,onClick:function(){return l(2)},children:"Requests"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"book",selected:3===i,onClick:function(){return l(3)},children:"Order history"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"book",selected:4===i,onClick:function(){return l(4)},children:"Export history"})]}),0===i?(0,o.createComponentVNode)(2,h):null,1===i?(0,o.createComponentVNode)(2,C,{mode:"Approved"}):null,2===i?(0,o.createComponentVNode)(2,C,{mode:"Requested"}):null,3===i?(0,o.createComponentVNode)(2,C,{mode:"All"}):null,4===i?(0,o.createComponentVNode)(2,f):null]})},h=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.categories,s=l.supply_packs,m=l.contraband,p=l.supply_points,h=(0,a.useLocalState)(t,"activeCategory",null),C=h[0],f=h[1],N=(0,u.flow)([(0,r.filter)((function(e){return e.group===C})),(0,r.filter)((function(e){return!e.contraband||m})),(0,r.sortBy)((function(e){return e.name})),(0,r.sortBy)((function(e){return e.cost>p}))])(s);return(0,o.createComponentVNode)(2,c.Section,{level:2,children:(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"25%",children:(0,o.createComponentVNode)(2,c.Section,{title:"Categories",scrollable:!0,fill:!0,height:"290px",children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:e,selected:e===C,onClick:function(){return f(e)}},e)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Contents",scrollable:!0,fill:!0,height:"290px",children:N.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Flex,{align:"center",justify:"flex-start",spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"70%",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"shopping-cart",ellipsis:!0,content:e.name,color:e.cost>p?"red":null,onClick:function(){return i("request_crate",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{content:"#",color:e.cost>p?"red":null,onClick:function(){return i("request_crate_multi",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{content:"C",color:e.cost>p?"red":null,onClick:function(){return i("view_crate",{crate:e.ref})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:[e.cost," points"]})]})},e.name)}))})})]})})},C=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=e.mode,d=i.orders,u=i.order_auth,s=i.supply_points,m=d.filter((function(e){return e.status===l||"All"===l}));return m.length?(0,o.createComponentVNode)(2,c.Section,{level:2,children:["Requested"===l&&u?(0,o.createComponentVNode)(2,c.Button,{mt:-1,mb:1,fluid:!0,color:"red",icon:"trash",content:"Clear all requests",onClick:function(){return r("clear_all_requests")}}):null,m.map((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{title:"Order "+(t+1),buttons:"All"===l&&u?(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"trash",content:"Delete Record",onClick:function(){return r("delete_order",{ref:e.ref})}}):null,children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[e.entries.map((function(t){return t.entry?(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t.field,buttons:u?(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Edit",onClick:function(){r("edit_order_value",{ref:e.ref,edit:t.field,"default":t.entry})}}):null,children:t.entry}):null})),"All"===l?(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:e.status}):null]}),u&&"Requested"===l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"check",content:"Approve",disabled:e.cost>s,onClick:function(){return r("approve_order",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Deny",onClick:function(){return r("deny_order",{ref:e.ref})}})],4):null]},t)}))]}):(0,o.createComponentVNode)(2,c.Section,{level:2,children:"No orders found."})},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.receipts,d=i.order_auth;return l.length?(0,o.createComponentVNode)(2,c.Section,{level:2,children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[e.title.map((function(t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t.field,buttons:d?(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Edit",onClick:function(){return r("export_edit",{ref:e.ref,edit:t.field,"default":t.entry})}}):null,children:t.entry},t.field)})),e.error?(0,o.createComponentVNode)(2,c.LabeledList.Item,{labelColor:"red",label:"Error",children:e.error}):e.contents.map((function(t,n){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t.object,buttons:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Edit",onClick:function(){return r("export_edit_field",{ref:e.ref,index:n+1,edit:"meow","default":t.object})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",color:"red",content:"Delete",onClick:function(){return r("export_delete_field",{ref:e.ref,index:n+1})}})],4):null,children:[t.quantity,"x -> ",t.value," points"]},n)}))]}),d?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{mt:1,icon:"plus",content:"Add Item To Record",onClick:function(){return r("export_add_field",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Delete Record",onClick:function(){return r("export_delete",{ref:e.ref})}})],4):null]},t)}))}):(0,o.createComponentVNode)(2,c.Section,{level:2,children:"No receipts found."})}},function(e,t,n){"use strict";t.__esModule=!0,t.TEGenerator=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.TEGenerator=function(e,t){var n=(0,i.useBackend)(t).data,r=n.totalOutput,u=n.maxTotalOutput,s=n.thermalOutput,m=n.primary,p=n.secondary;return(0,o.createComponentVNode)(2,c.Window,{width:550,height:310,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:r,maxValue:u,children:(0,l.formatPower)(r)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Thermal Output",children:(0,l.formatPower)(s)})]})}),m&&p?(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,grow:1,children:(0,o.createComponentVNode)(2,d,{name:"Primary Circulator",values:m})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,grow:1,children:(0,o.createComponentVNode)(2,d,{name:"Secondary Circulator",values:p})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Warning! Both circulators must be connected in order to operate this machine."})]})})};var d=function(e,t){var n=e.name,i=e.values,c=i.dir,d=i.output,u=i.flowCapacity,s=i.inletPressure,m=i.inletTemperature,p=i.outletPressure,h=i.outletTemperature;return(0,o.createComponentVNode)(2,a.Section,{title:n+" ("+c+")",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Output",children:(0,l.formatPower)(d)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Flow Capacity",children:[(0,r.round)(u,2),"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inlet Pressure",children:(0,l.formatSiUnit)(1e3*s,0,"Pa")}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inlet Temperature",children:[(0,r.round)(m,2)," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outlet Pressure",children:(0,l.formatSiUnit)(1e3*p,0,"Pa")}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outlet Temperature",children:[(0,r.round)(h,2)," K"]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Tank=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.connected,u=l.showToggle,s=void 0===u||u,m=l.maskConnected,p=l.tankPressure,h=l.releasePressure,C=l.defaultReleasePressure,f=l.minReleasePressure,N=l.maxReleasePressure;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:!!s&&(0,o.createComponentVNode)(2,i.Button,{icon:d?"air-freshener":"lock-open",selected:d,disabled:!m,content:"Mask Release Valve",onClick:function(){return c("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mask Connected",children:m?"Yes":"No"})})}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:p/1013,ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]},children:l.tankPressure+" kPa"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:h===f,onClick:function(){return c("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:parseFloat(h),width:"65px",unit:"kPa",minValue:f,maxValue:N,onChange:function(e,t){return c("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:h===N,onClick:function(){return c("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"",disabled:h===C,onClick:function(){return c("pressure",{pressure:"reset"})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.TankDispenser=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createComponentVNode)(2,a.Window,{width:275,height:103,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Phoron",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.plasma?"square":"square-o",content:"Dispense",disabled:!l.plasma,onClick:function(){return c("plasma")}}),children:l.plasma}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Oxygen",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.oxygen?"square":"square-o",content:"Dispense",disabled:!l.oxygen,onClick:function(){return c("oxygen")}}),children:l.oxygen})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelecommsLogBrowser=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3);t.TelecommsLogBrowser=function(e,t){var n=(0,i.useBackend)(t),r=n.act,u=n.data,s=u.universal_translate,m=u.network,p=u.temp,h=u.servers,C=u.selectedServer;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[p&&p.length?(0,o.createComponentVNode)(2,a.NoticeBox,{warning:!0,children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-box",verticalAlign:"middle",children:p}),(0,o.createComponentVNode)(2,a.Button,{icon:"times-circle",float:"right",onClick:function(){return r("cleartemp")}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]}):null,(0,o.createComponentVNode)(2,a.Section,{title:"Network Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Network",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Refresh",onClick:function(){return r("scan")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"exclamation-triangle",content:"Flush Buffer",disabled:0===h.length,onClick:function(){return r("release")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{content:m,icon:"pen",onClick:function(){return r("network")}})})})}),C?(0,o.createComponentVNode)(2,d,{network:m,server:C,universal_translate:s}):(0,o.createComponentVNode)(2,l,{network:m,servers:h})]})})};var l=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.network,e.servers);return c&&c.length?(0,o.createComponentVNode)(2,a.Section,{title:"Detected Telecommunication Servers",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name+" ("+e.id+")",children:(0,o.createComponentVNode)(2,a.Button,{content:"View",icon:"eye",onClick:function(){return r("view",{id:e.id})}})},e.id)}))})}):(0,o.createComponentVNode)(2,a.Section,{title:"Detected Telecommunications Servers",children:[(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No servers detected."}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Scan",icon:"search",onClick:function(){return r("scan")}})]})},d=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=(n.data,e.network,e.server),d=e.universal_translate;return(0,o.createComponentVNode)(2,a.Section,{title:"Server ("+l.id+")",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Return",icon:"undo",onClick:function(){return c("mainmenu")}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Recorded Traffic",children:l.totalTraffic>=1024?(0,r.round)(l.totalTraffic/1024)+" Terrabytes":l.totalTraffic+" Gigabytes"})}),(0,o.createComponentVNode)(2,a.Section,{title:"Stored Logs",mt:"4px",children:(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:l.logs&&l.logs.length?l.logs.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{m:"2px",basis:"49%",grow:e.id%2,children:(0,o.createComponentVNode)(2,a.Section,{title:d||e.parameters.uspeech||e.parameters.intelligible||"Execution Error"===e.input_type?e.input_type:"Audio File",buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{confirmContent:"Delete Log?",color:"bad",icon:"trash",confirmIcon:"trash",onClick:function(){return c("delete",{id:e.id})}}),children:"Execution Error"===e.input_type?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Data type",children:"Error"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:e.parameters.message}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Delete",children:(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return c("delete",{id:e.id})}})})]}):d||e.parameters.uspeech||e.parameters.intelligible?(0,o.createComponentVNode)(2,u,{log:e}):(0,o.createComponentVNode)(2,u,{error:!0})})},e.id)})):"No Logs Detected."})})]})},u=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data,e.log),c=e.error,l=r&&r.parameters||{none:"none"},d=l.timecode,u=l.name,s=l.race,m=l.job,p=l.message;return c?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Recieved",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Source",children:"Unidentifiable"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Class",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contents",children:"Unintelligible"})]}):(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Recieved",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Source",children:[u," (Job: ",m,")"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Class",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contents",className:"LabeledList__breakContents",children:p})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelecommsMachineBrowser=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.TelecommsMachineBrowser=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.network,s=d.temp,m=d.machinelist,p=d.selectedMachine;return(0,o.createComponentVNode)(2,a.Window,{width:575,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[s&&s.length?(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:[(0,o.createComponentVNode)(2,i.Box,{display:"inline-box",verticalAlign:"middle",children:s}),(0,o.createComponentVNode)(2,i.Button,{icon:"times-circle",float:"right",onClick:function(){return l("cleartemp")}}),(0,o.createComponentVNode)(2,i.Box,{clear:"both"})]}):null,(0,o.createComponentVNode)(2,i.Section,{title:"Network Control",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Network",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"search",content:"Probe Network",onClick:function(){return l("scan")}}),(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"exclamation-triangle",content:"Flush Buffer",disabled:0===m.length,onClick:function(){return l("release")}})],4),children:(0,o.createComponentVNode)(2,i.Button,{content:u,icon:"pen",onClick:function(){return l("network")}})})})}),m&&m.length?(0,o.createComponentVNode)(2,c,{title:p?p.name+" ("+p.id+")":"Detected Network Entities",list:p?p.links:m,showBack:p}):(0,o.createComponentVNode)(2,i.Section,{title:"No Devices Found",children:(0,o.createComponentVNode)(2,i.Button,{icon:"search",content:"Probe Network",onClick:function(){return l("scan")}})})]})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.list),l=e.title,d=e.showBack;return(0,o.createComponentVNode)(2,i.Section,{title:l,buttons:d&&(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Back to Main Menu",onClick:function(){return a("mainmenu")}}),children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:(0,o.createVNode)(1,"u",null,"Linked entities",16)}),(0,o.createComponentVNode)(2,i.LabeledList,{children:c.length?c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name+" ("+e.id+")",children:(0,o.createComponentVNode)(2,i.Button,{content:"View",icon:"eye",onClick:function(){return a("view",{id:e.id})}})},e.id)})):(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"bad",children:"No links detected."})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelecommsMultitoolMenu=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(62),c=n(3);t.TelecommsMultitoolMenu=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),u=(i.temp,i.on,i.id,i.network,i.autolinkers,i.shadowlink,i.options);i.linked,i.filter,i.multitool,i.multitool_buffer;return(0,o.createComponentVNode)(2,c.Window,{width:520,height:540,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.TemporaryNotice),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d,{options:u})]})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.temp,c.on),d=c.id,u=c.network,s=c.autolinkers,m=c.shadowlink,p=(c.options,c.linked),h=c.filter,C=c.multitool,f=c.multitool_buffer;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:l,content:l?"On":"Off",onClick:function(){return a("toggle")}}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Identification String",children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:d,onClick:function(){return a("id")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Network",children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:u,onClick:function(){return a("network")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Prefabrication",children:s?"TRUE":"FALSE"}),m?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shadow Link",children:"Active."}):null,C?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Multitool Buffer",children:[f?(0,o.createFragment)([f.name,(0,o.createTextVNode)(" ("),f.id,(0,o.createTextVNode)(")")],0):null,(0,o.createComponentVNode)(2,i.Button,{color:f?"green":null,content:f?"Link ("+f.id+")":"Add Machine",icon:f?"link":"plus",onClick:f?function(){return a("link")}:function(){return a("buffer")}}),f?(0,o.createComponentVNode)(2,i.Button,{color:"red",content:"Flush",icon:"trash",onClick:function(){return a("flush")}}):null]}):null]}),(0,o.createComponentVNode)(2,i.Section,{title:"Linked network Entities",mt:1,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.ref+" "+e.name+" ("+e.id+")",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"red",icon:"trash",onClick:function(){return a("unlink",{unlink:e.index})}})},e.ref)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Filtering Frequencies",mt:1,children:[h.map((function(e){return(0,o.createComponentVNode)(2,i.Button.Confirm,{content:e.name+" GHz",confirmContent:"Delete?",confirmColor:"red",confirmIcon:"trash",onClick:function(){return a("delete",{"delete":e.freq})}},e.index)})),h&&0!==h.length?null:(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No filters."})]})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.options),l=c.use_listening_level,d=c.use_broadcasting,u=c.use_receiving,s=c.listening_level,m=c.broadcasting,p=c.receiving,h=c.use_change_freq,C=c.change_freq,f=c.use_broadcast_range,N=c.use_receive_range,b=c.range,V=c.minRange,g=c.maxRange;return l||d||u||h||f||N?(0,o.createComponentVNode)(2,i.Section,{title:"Options",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[l?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Signal Locked to Station",children:(0,o.createComponentVNode)(2,i.Button,{icon:s?"lock-closed":"lock-open",content:s?"Yes":"No",onClick:function(){return a("change_listening")}})}):null,d?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Broadcasting",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:m,content:m?"Yes":"No",onClick:function(){return a("broadcast")}})}):null,u?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Receving",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:p,content:p?"Yes":"No",onClick:function(){return a("receive")}})}):null,h?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Change Signal Frequency",children:(0,o.createComponentVNode)(2,i.Button,{icon:"wave-square",selected:!!C,content:C?"Yes ("+C+")":"No",onClick:function(){return a("change_freq")}})}):null,f||N?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(f?"Broadcast":"Receive")+" Range",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:b,minValue:V,maxValue:g,unit:"gigameters",stepPixelSize:4,format:function(e){return e+1},onDrag:function(e,t){return a("range",{range:t})}})}):null]})}):(0,o.createComponentVNode)(2,i.Section,{title:"No Options Found"})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Teleporter=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.locked_name,u=l.station_connected,s=l.hub_connected,m=l.calibrated,p=l.teleporter_on;return(0,o.createComponentVNode)(2,a.Window,{width:300,height:200,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"bullseye",onClick:function(){return c("select_target")},content:d})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Calibrated",children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:m,color:m?"good":"bad",onClick:function(){return c("test_fire")},content:m?"Accurate":"Test Fire"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Teleporter",children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:p,color:p?"good":"bad",onClick:function(){return c("toggle_on")},content:p?"Online":"OFFLINE"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Station",children:u?"Connected":"Not Connected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Hub",children:s?"Connected":"Not Connected"})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelesciConsoleContent=t.TelesciConsole=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.TelesciConsole=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.noTelepad);return(0,o.createComponentVNode)(2,c.Window,{width:400,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:r&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,d)})})};var l=function(e,t){return(0,o.createComponentVNode)(2,a.Section,{title:"Error",color:"bad",children:["No telepad located.",(0,o.createVNode)(1,"br"),"Please add telepad data."]})},d=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.insertedGps,u=l.rotation,s=l.currentZ,m=l.cooldown,p=l.crystalCount,h=l.maxCrystals,C=(l.maxPossibleDistance,l.maxAllowedDistance),f=l.distance,N=l.tempMsg,b=l.sectorOptions,V=l.lastTeleData;return(0,o.createComponentVNode)(2,a.Section,{title:"Telepad Controls",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d,onClick:function(){return c("ejectGPS")},content:"Eject GPS"}),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:m&&(0,o.createComponentVNode)(2,a.Box,{children:["Telepad is recharging. Please wait ",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m})," seconds."]})||(0,o.createComponentVNode)(2,a.Box,{children:N})}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bearing",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,value:u,format:function(e){return e+"\xb0"},step:1,minValue:-900,maxValue:900,onDrag:function(e,t){return c("setrotation",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Distance",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,value:f,format:function(e){return e+"/"+C+" m"},minValue:0,maxValue:C,step:1,stepPixelSize:4,onDrag:function(e,t){return c("setdistance",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sector",children:(0,r.sortBy)((function(e){return Number(e)}))(b).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"check-circle",content:e,selected:s===e,onClick:function(){return c("setz",{setz:e})}},e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"share",iconRotation:-90,onClick:function(){return c("send")},content:"Send"}),(0,o.createComponentVNode)(2,a.Button,{icon:"share",iconRotation:90,onClick:function(){return c("receive")},content:"Receive"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",iconRotation:90,onClick:function(){return c("recal")},content:"Recalibrate"})]})]}),V&&(0,o.createComponentVNode)(2,a.Section,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Telepad Location",children:[V.src_x,", ",V.src_y]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Distance",children:[V.distance,"m"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transit Time",children:[V.time," secs"]})]})})||(0,o.createComponentVNode)(2,a.Section,{mt:1,children:"No teleport data found."}),(0,o.createComponentVNode)(2,a.Section,{children:["Crystals: ",p," / ",h]})]})};t.TelesciConsoleContent=d},function(e,t,n){"use strict";t.__esModule=!0,t.TimeClock=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(192);t.TimeClock=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.department_hours,m=u.user_name,p=u.card,h=u.assignment,C=u.job_datum,f=u.allow_change_job,N=u.job_choices;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"OOC",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"OOC Note: PTO acquired is account-wide and shared across all characters. Info listed below is not IC information."}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Time Off Balance for "+m,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(s).map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,color:s[e]>6?"good":s[e]>1?"average":"bad",children:[(0,r.toFixed)(s[e],1)," ",1===s[e]?"hour":"hours"]},e)}))})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Employee Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Employee ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"user",onClick:function(){return d("id")},children:p||"Insert ID"})}),!!C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rank",children:(0,o.createComponentVNode)(2,a.Box,{backgroundColor:C.selection_color,p:.8,children:(0,o.createComponentVNode)(2,a.Flex,{justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{ml:1,children:(0,o.createComponentVNode)(2,l.RankIcon,{color:"white",rank:C.title})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{fontSize:1.5,inline:!0,mr:1,children:C.title})})]})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Departments",children:C.departments}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pay Scale",children:C.economic_modifier}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"PTO Elegibility",children:C.timeoff_factor>0&&(0,o.createComponentVNode)(2,a.Box,{children:["Earns PTO - ",C.pto_department]})||C.timeoff_factor<0&&(0,o.createComponentVNode)(2,a.Box,{children:["Requires PTO - ",C.pto_department]})||(0,o.createComponentVNode)(2,a.Box,{children:"Neutral"})})],4)]})}),!(!f||!C||0===C.timeoff_factor||"Dismissed"===h)&&(0,o.createComponentVNode)(2,a.Section,{title:"Employment Actions",children:C.timeoff_factor>0&&(s[C.pto_department]>0&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",onClick:function(){return d("switch-to-offduty")},children:"Go Off-Duty"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Warning: You do not have enough accrued time off to go off-duty."}))||Object.keys(N).length&&Object.keys(N).map((function(e){return N[e].map((function(t){return(0,o.createComponentVNode)(2,a.Button,{icon:"suitcase",onClick:function(){return d("switch-to-onduty-rank",{"switch-to-onduty-rank":e,"switch-to-onduty-assignment":t})},children:t},t)}))}))||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Open Positions - See Head Of Personnel"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TransferValve=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.TransferValve=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.tank_one,u=l.tank_two,s=l.attached_device,m=l.valve;return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Valve Status",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"unlock":"lock",content:m?"Open":"Closed",disabled:!d||!u,onClick:function(){return c("toggle")}})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Assembly",buttons:(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"150px",icon:"cog",content:"Configure Assembly",disabled:!s,onClick:function(){return c("device")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:s?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:s,disabled:!s,onClick:function(){return c("remove_device")}})}):(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"Attach Assembly"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Attachment One",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:d,disabled:!d,onClick:function(){return c("tankone")}})}):(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"Attach Tank"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Attachment Two",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:u?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:u,disabled:!u,onClick:function(){return c("tanktwo")}})}):(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"Attach Tank"})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TurbineControl=void 0;var o=n(0),r=(n(5),n(20)),i=n(1),a=n(2),c=n(3);t.TurbineControl=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=(d.connected,d.compressor_broke),s=d.turbine_broke,m=d.broken,p=d.door_status,h=d.online,C=d.power,f=d.rpm,N=d.temp;return(0,o.createComponentVNode)(2,c.Window,{width:520,height:440,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Turbine Controller",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:m&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:["Setup is broken",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",onClick:function(){return l("reconnect")},content:"Reconnect"})]})||(0,o.createComponentVNode)(2,a.Box,{color:h?"good":"bad",children:!h||u||s?"Offline":"Online"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Compressor",children:u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Compressor is inoperable."})||s&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Turbine is inoperable."})||(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:h,content:"Compressor Power",onClick:function(){return l(h?"power-off":"power-on")}})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Vent Doors",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:p,onClick:function(){return l("doors")},content:p?"Closed":"Open"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Speed",children:[m?"--":(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:f})," RPM"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Temperature",children:[m?"--":(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:N})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Generated Power",children:m?"--":(0,o.createComponentVNode)(2,a.AnimatedNumber,{format:function(e){return(0,r.formatPower)(e)},value:Number(C)})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Turbolift=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.Turbolift=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.floors,u=l.doors_open,s=l.fire_mode;return(0,o.createComponentVNode)(2,a.Window,{width:480,height:260+25*s,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Floor Selection",className:s?"Section--elevator--fire":null,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:u?"door-open":"door-closed",content:u?s?"Close Doors (SAFETY OFF)":"Doors Open":"Doors Closed",selected:u&&!s,color:s?"red":null,onClick:function(){return c("toggle_doors")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",color:"bad",content:"Emergency Stop",onClick:function(){return c("emergency_stop")}})],4),children:[!s||(0,o.createComponentVNode)(2,i.Section,{className:"Section--elevator--fire",textAlign:"center",title:"FIREFIGHTER MODE ENGAGED"}),(0,o.createComponentVNode)(2,i.Flex,{wrap:"wrap",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"100%",children:(0,o.createComponentVNode)(2,i.Flex,{align:"center",justify:"space-around",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"22%",textAlign:"right",mr:"3px",children:e.label||"Floor #"+e.id}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"8%",textAlign:"left",children:(0,o.createComponentVNode)(2,i.Button,{icon:"circle",color:e.current?"red":e.target?"green":e.queued?"yellow":null,onClick:function(){return c("move_to_floor",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",grow:1,children:e.name})]})},e.id)}))})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GenericUplink=t.Uplink=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(20),l=n(3);t.Uplink=function(e,t){var n=(0,i.useBackend)(t).data,r=(0,i.useLocalState)(t,"screen",0),c=r[0],m=r[1],p=n.telecrystals;return(0,o.createComponentVNode)(2,l.Window,{width:620,height:580,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d,{screen:c,setScreen:m}),0===c&&(0,o.createComponentVNode)(2,s,{currencyAmount:p,currencySymbol:"TC"})||1===c&&(0,o.createComponentVNode)(2,u)||(0,o.createComponentVNode)(2,a.Section,{color:"bad",children:"Error"})]})})};var d=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=e.screen,l=e.setScreen,d=r.discount_name,u=r.discount_amount,s=r.offer_expiry;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Tabs,{style:{"border-bottom":"none","margin-bottom":"0"},children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===c,onClick:function(){return l(0)},children:"Request Items"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return l(1)},children:"Exploitable Information"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Item Discount",level:2,children:u<100&&(0,o.createComponentVNode)(2,a.Box,{children:[d," - ",u,"% off. Offer expires at: ",s]})||(0,o.createComponentVNode)(2,a.Box,{children:"No items currently discounted."})})]})},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.exploit,d=c.locked_records;return(0,o.createComponentVNode)(2,a.Section,{title:"Exploitable Information",buttons:l&&(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Back",onClick:function(){return r("view_exploits",{id:0})}}),children:l&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sex",children:l.sex}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:l.species}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Age",children:l.age}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rank",children:l.rank}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home System",children:l.home_system}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Citizenship",children:l.citizenship}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Faction",children:l.faction}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Religion",children:l.religion}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fingerprint",children:l.fingerprint}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Other Affiliations",children:l.antagfaction}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:"Acquired Information"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notes",children:l.nanoui_exploit_record.split("
    ").map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})]})})||d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"eye",fluid:!0,content:e.name,onClick:function(){return r("view_exploits",{id:e.id})}},e.id)}))})},s=function(e,t){var n,l,d=e.currencyAmount,u=void 0===d?0:d,s=e.currencySymbol,p=void 0===s?"\u20ae":s,h=(0,i.useBackend)(t),C=h.act,f=h.data,N=f.compactMode,b=f.lockable,V=f.categories,g=void 0===V?[]:V,v=(0,i.useLocalState)(t,"searchText",""),_=v[0],k=v[1],y=(0,i.useLocalState)(t,"category",null==(n=g[0])?void 0:n.name),L=y[0],B=y[1],w=(0,r.createSearch)(_,(function(e){return e.name+e.desc})),x=_.length>0&&g.flatMap((function(e){return e.items||[]})).filter(w).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===L})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u>0?"good":"bad",children:[(0,c.formatMoney)(u)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,a.Input,{autoFocus:!0,value:_,onInput:function(e,t){return k(t)},mx:1}),(0,o.createComponentVNode)(2,a.Button,{icon:N?"list":"info",content:N?"Compact":"Detailed",onClick:function(){return C("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock",onClick:function(){return C("lock")}})],0),children:(0,o.createComponentVNode)(2,a.Flex,{children:[0===_.length&&(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e.name===L,onClick:function(){return B(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:[0===x.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:0===_.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,m,{compactMode:_.length>0||N,currencyAmount:u,currencySymbol:p,items:x})]})]})})};t.GenericUplink=s;var m=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,i.useBackend)(t).act,s=(0,i.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],h=m&&m.cost||0,C=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-h0&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",mb:1,children:"Please wait. Harvesting in progress."}),(0,o.createComponentVNode)(2,c),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,icon:"stop",onClick:function(){return l("stopharvest")},children:"Stop Early"})]})||s<0&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",mb:1,children:"Please wait. Energy dump in progress."}),(0,o.createComponentVNode)(2,c),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,icon:"stop",onClick:function(){return l("stopharvest")},children:"Stop Early"})]})||Object.keys(m).length&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:m.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy Signature ID",children:m.artifact_id})]}),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,icon:"eject",onClick:function(){return l("ejectbattery")},children:"Eject Battery"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"bolt",onClick:function(){return l("drainbattery")},children:"Drain Battery"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"star",onClick:function(){return l("harvest")},children:"Begin Harvest"})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No battery inserted."})})})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.info.inserted_battery);return Object.keys(a).length?(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:a.stored_charge,maxValue:a.capacity}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No battery inserted."})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchDepthScanner=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.XenoarchDepthScanner=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.current,u=l.positive_locations;return(0,o.createComponentVNode)(2,a.Window,{width:300,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[Object.keys(d).length&&(0,o.createComponentVNode)(2,i.Section,{title:"Selected",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"bad",icon:"trash",confirmIcon:"trash",content:"Delete Entry",onClick:function(){return c("clear",{index:d.index})}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Time",children:d.time}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coords",children:d.coords}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomaly Depth",children:[d.depth," cm"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomaly Size",children:[d.clearance," cm"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Dissonance Spread",children:d.dissonance_spread}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomaly Material",children:d.material})]})})||null,(0,o.createComponentVNode)(2,i.Section,{title:"Entries",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"red",icon:"trash",confirmIcon:"trash",content:"Delete All",onClick:function(){return c("clear")}}),children:u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return c("select",{select:e.index})},children:[e.time,", ",e.coords]},e.index)}))||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No traces found."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchHandheldPowerUtilizer=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.XenoarchHandheldPowerUtilizer=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.inserted_battery,u=l.anomaly,s=l.charge,m=l.capacity,p=l.timeleft,h=l.activated,C=l.duration,f=l.interval;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:500,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Anomaly Power Utilizer",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!d,icon:"eject",onClick:function(){return c("ejectbattery")},children:"Eject Battery"}),children:d&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Inserted Battery",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomalies Detected",children:u||"N/A"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:s,maxValue:m,children:[s," / ",m]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Time Left Activated",children:p}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"power-off",onClick:function(){return c("startup")},children:h?"Activated":"Deactivated"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Activation Duration",children:(0,o.createComponentVNode)(2,i.NumberInput,{unit:"s",fluid:!0,minValue:0,value:C,stepPixelSize:4,maxValue:30,onDrag:function(e,t){return c("changeduration",{duration:10*t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Activation Interval",children:(0,o.createComponentVNode)(2,i.NumberInput,{unit:"s",fluid:!0,minValue:0,value:f,stepPixelSize:10,maxValue:10,onDrag:function(e,t){return c("changeinterval",{interval:10*t})}})})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No battery inserted. Please insert a cell."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchReplicator=void 0;var o=n(0),r=(n(5),n(6),n(1)),i=n(2),a=n(3);t.XenoarchReplicator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.tgui_construction;return(0,o.createComponentVNode)(2,a.Window,{theme:"abductor",width:400,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{color:e.background,icon:e.icon,iconColor:e.foreground,fontSize:4,onClick:function(){return c("construct",{key:e.key})}},e.key)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchSpectrometer=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6);t.XenoarchSpectrometer=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.scanned_item,s=d.scanned_item_desc,m=d.last_scan_data,p=d.scan_progress,h=d.scanning,C=d.scanner_seal_integrity,f=d.scanner_rpm,N=d.scanner_temperature,b=d.coolant_usage_rate,V=d.coolant_usage_max,g=(d.unused_coolant_abs,d.unused_coolant_per),v=d.coolant_purity,_=d.optimal_wavelength,k=d.maser_wavelength,y=d.maser_wavelength_max,L=d.maser_efficiency,B=d.radiation,w=(d.t_left_radspike,d.rad_shield_on);return(0,o.createComponentVNode)(2,a.Window,{width:900,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"signal",selected:h,onClick:function(){return l("scanItem")},children:h?"HALT SCAN":"Begin Scan"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",disabled:!u,onClick:function(){return l("ejectItem")},children:"Eject Item"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Item",children:u||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No item inserted."})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Heuristic Analysis",children:s||"None found."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Scanner",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scan Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:p,minValue:0,maxValue:100,color:"good"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Vacuum Seal Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[66,100],average:[33,66],bad:[0,33]}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"MASER",buttons:(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Match wavelengths to progress the scan."}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"MASER Efficiency",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:L,minValue:0,maxValue:100,ranges:{good:[66,100],average:[33,66],bad:[0,33]}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Wavelength",children:(0,o.createComponentVNode)(2,i.Slider,{animated:!0,value:k,fillValue:_,minValue:1,maxValue:y,format:function(e){return e+" MHz"},step:10,onDrag:function(e,t){return l("maserWavelength",{wavelength:t})}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Environment / Internal",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Centrifuge Speed",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:f,minValue:0,maxValue:1e3,color:"good",children:[f," RPM"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Internal Temperature",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:N,maxValue:1273,ranges:{bad:[1e3,Infinity],average:[250,1e3],good:[0,250]},children:[N," K"]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Radiation",buttons:(0,o.createComponentVNode)(2,i.Button,{selected:w,icon:"radiation",onClick:function(){return l("toggle_rad_shield")},children:w?"Disable Radiation Shielding":"Enable Radiation Shielding"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Ambient Radiation",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:B,maxValue:100,ranges:{bad:[65,Infinity],average:[15,65],good:[0,15]},children:[B," mSv"]})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Cooling",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coolant Remaining",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:10*g,maxValue:1e3,ranges:{good:[65,Infinity],average:[15,65],bad:[0,15]},children:[10*g," u"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coolant Flow Rate",children:(0,o.createComponentVNode)(2,i.Slider,{minValue:0,value:b,maxValue:V,stepPixelSize:50,format:function(e){return e+" u/s"},onDrag:function(e,t){return l("coolantRate",{coolant:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coolant Purity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:v,maxValue:100,ranges:{good:[66,Infinity],average:[33,66],bad:[0,33]}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Latest Results",children:(0,c.decodeHtmlEntities)(m).split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchSuspension=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.XenoarchSuspension=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.cell,u=l.cellCharge,s=l.cellMaxCharge,m=l.locked,p=l.suspension_field;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:150,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:'Triple-phase S.F.G. MK III "Reliant"',buttons:(0,o.createComponentVNode)(2,i.Button,{icon:m?"lock":"lock-open",selected:!m,onClick:function(){return c("lock")},children:m?"Locked":"Unlocked"}),children:m&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"This interface is locked. Swipe an ID card to unlock it."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Charge",children:d&&(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.75*s,Infinity],average:[.5*s,.75*s],bad:[-Infinity,.5*s]},value:u,maxValue:s})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No cell inserted."})})}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mt:1,icon:"meteor",selected:p,onClick:function(){return c("toggle_field")},children:p?"Disengage Suspension Field":"Engage Suspension Field"})],4)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIAtmos=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2),l=n(3);t.pAIAtmos=function(e,t){var n=(0,a.useBackend)(t),d=(n.act,n.data.aircontents);return(0,o.createComponentVNode)(2,l.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,r.filter)((function(e){return"0"!==e.val||"Pressure"===e.entry||"Temperature"===e.entry}))(d).map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.entry,color:(t=e.val,n=e.bad_low,r=e.poor_low,a=e.poor_high,l=e.bad_high,ta?"average":t>l?"bad":"good"),children:[e.val,(0,i.decodeHtmlEntities)(e.units)]},e.entry);var t,n,r,a,l}))})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIDirectives=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.pAIDirectives=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.master,u=l.dna,s=l.prime,m=l.supplemental;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Master",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Master",children:d&&(0,o.createComponentVNode)(2,i.Box,{children:[d," (",u,")",(0,o.createComponentVNode)(2,i.Button,{icon:"syringe",content:"Request Sample",onClick:function(){return c("getdna")}})]})||(0,o.createComponentVNode)(2,i.Box,{children:"None"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Directives",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Prime Directive",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Supplemental Directive(s)",children:m||"None"})]}),(0,o.createComponentVNode)(2,i.Box,{mt:1,italic:!0,children:'Recall, personality, that you are a complex piece of software with tremendous social skills. Unlike station AI models, you are focused entirely on sapient-software interfacing. You may parse the "spirit" of a directive and follow its intent, rather than tripping over pedantics and getting snared by technicalities. Above all, you should strive to be seen as the ideal, unwavering digital companion that you are.'}),(0,o.createComponentVNode)(2,i.Box,{mt:1,bold:!0,children:"Your prime directive comes before all others. Should a supplemental directive conflict with it, you are capable of simply discarding this inconsistency, ignoring the conflicting supplemental directive and continuing to fulfill your prime directive to the best of your ability."})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIDoorjack=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAIDoorjack=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.cable,u=l.machine,s=l.inprogress,m=l.progress_a,p=l.progress_b,h=l.aborted;return(0,o.createComponentVNode)(2,a.Window,{width:300,height:150,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cable",children:u&&(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Connected"})||d&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Extended"})||(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"ethernet",content:"Retracted",onClick:function(){return c("cable")}})})}),!!u&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Hack",children:s&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,maxValue:100,ranges:{good:[67,Infinity],average:[33,67],bad:[-Infinity,33]},children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m}),".",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p}),"%"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"bad",onClick:function(){return c("cancel")}})]})||(0,o.createComponentVNode)(2,i.Button,{icon:"virus",content:"Start",onClick:function(){return c("jack")}})})||!!h&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"bad",mt:1,children:"Hack aborted."})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIInterface=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAIInterface=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.bought,u=l.not_bought,s=l.available_ram,m=l.emotions,p=l.current_emotion;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Emotion",children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,selected:e.id===p,onClick:function(){return c("image",{image:e.id})}},e.id)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Software (Available RAM: "+s+")",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Installed",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,selected:e.on,onClick:function(){return c("software",{software:e.id})}},e.id)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Downloadable",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name+" ("+e.ram+")",disabled:e.ram>s,onClick:function(){return c("purchase",{purchase:e.id})}},e.id)}))})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIMedrecords=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAIMedrecords=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.records,u=l.general,s=l.medical,m=l.could_not_find;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,onClick:function(){return c("select",{select:e.ref})}},e.ref)}))}),(u||s)&&(0,o.createComponentVNode)(2,i.Section,{title:"Selected Record",children:[!!m&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Warning: Failed to find some records. The information below may not be complete."}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Record ID",children:u.id}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Entity Classification",children:u.brain_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:s.b_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Disabilities",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.mi_dis}),(0,o.createComponentVNode)(2,i.Box,{children:s.mi_dis_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Disabilities",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.ma_dis}),(0,o.createComponentVNode)(2,i.Box,{children:s.ma_dis_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Allergies",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.alg}),(0,o.createComponentVNode)(2,i.Box,{children:s.alg_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Diseases",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.cdi}),(0,o.createComponentVNode)(2,i.Box,{children:s.cdi_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes",children:s.notes})]})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAISecrecords=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAISecrecords=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.records,u=l.general,s=l.security,m=l.could_not_find;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,onClick:function(){return c("select",{select:e.ref})}},e.ref)}))}),(u||s)&&(0,o.createComponentVNode)(2,i.Section,{title:"Selected Record",children:[!!m&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Warning: Failed to find some records. The information below may not be complete."}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Record ID",children:u.id}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Entity Classification",children:u.brain_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Criminal Status",children:(0,o.createComponentVNode)(2,i.Box,{children:s.criminal})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Crimes",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.mi_crim}),(0,o.createComponentVNode)(2,i.Box,{children:s.mi_crim_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Crimes",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.ma_crim}),(0,o.createComponentVNode)(2,i.Box,{children:s.ma_crim_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes",children:s.notes})]})]})]})})}}]); \ No newline at end of file +var n;n=void 0!==e?e:void 0,t.loadCSS=function(e,t,o,r){var i,a=n.document,c=a.createElement("link");if(t)i=t;else{var l=(a.body||a.getElementsByTagName("head")[0]).childNodes;i=l[l.length-1]}var d=a.styleSheets;if(r)for(var u in r)r.hasOwnProperty(u)&&c.setAttribute(u,r[u]);c.rel="stylesheet",c.href=e,c.media="only x",function p(e){if(a.body)return e();setTimeout((function(){p(e)}))}((function(){i.parentNode.insertBefore(c,t?i:i.nextSibling)}));var s=function h(e){for(var t=c.href,n=d.length;n--;)if(d[n].href===t)return e();setTimeout((function(){h(e)}))};function m(){c.addEventListener&&c.removeEventListener("load",m),c.media=o||"all"}return c.addEventListener&&c.addEventListener("load",m),c.onloadcssdefined=s,s(m),c}}).call(this,n(76))},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.NtosWindow=void 0;var o=n(0),r=n(75),i=n(1),a=n(2),c=n(126),l=n(184),d=function(e,t){var n=e.title,d=e.width,u=void 0===d?575:d,s=e.height,m=void 0===s?700:s,p=e.resizable,h=e.theme,C=void 0===h?"ntos":h,f=e.children,N=(0,i.useBackend)(t),b=N.act,V=N.data,g=V.PC_device_theme,v=V.PC_batteryicon,_=V.PC_showbatteryicon,k=V.PC_batterypercent,y=V.PC_ntneticon,L=V.PC_apclinkicon,B=V.PC_stationtime,w=V.PC_programheaders,x=void 0===w?[]:w,S=V.PC_showexitprogram;return(0,o.createComponentVNode)(2,l.Window,{title:n,width:u,height:m,theme:C,resizable:p,children:(0,o.createVNode)(1,"div","NtosWindow",[(0,o.createVNode)(1,"div","NtosWindow__header NtosHeader",[(0,o.createVNode)(1,"div","NtosHeader__left",[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:B}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:["ntos"===g&&"NtOS","syndicate"===g&&"Syndix"]})],4),(0,o.createVNode)(1,"div","NtosHeader__right",[x.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:(0,r.resolveAsset)(e.icon)})},e.icon)})),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:y&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,r.resolveAsset)(y)})}),!!_&&v&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[v&&(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,r.resolveAsset)(v)}),k&&k]}),L&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,o.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,r.resolveAsset)(L)})}),!!S&&(0,o.createComponentVNode)(2,a.Button,{width:"26px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return b("PC_minimize")}}),!!S&&(0,o.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return b("PC_exit")}}),!S&&(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 b("PC_shutdown")}})],0)],4,{onMouseDown:function(){(0,c.refocusLayout)()}}),f],0)})};t.NtosWindow=d;d.Content=function(e){return(0,o.createVNode)(1,"div","NtosWindow__content",(0,o.normalizeProps)((0,o.createComponentVNode)(2,l.Window.Content,Object.assign({},e))),2)}},function(e,t,n){"use strict";t.__esModule=!0,t.BlockQuote=void 0;var o=n(0),r=n(10),i=n(19);t.BlockQuote=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var o=n(0),r=n(10),i=n(448),a=n(24),c=n(19);function l(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var d=(0,a.createLogger)("ByondUi"),u=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),f=this.state.viewBox,N=function(e,t,n,o){if(0===e.length)return[];var i=(0,r.zipWith)(Math.min).apply(void 0,e),a=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),o!==undefined&&(i[1]=o[0],a[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,i,a,t)}))(e)}(i,f,c,l);if(N.length>0){var b=N[0],V=N[N.length-1];N.push([f[0]+h,V[1]]),N.push([f[0]+h,-h]),N.push([-h,-h]),N.push([-h,b[1]])}var g=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,i.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:a})]})},a}(o.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(0),r=n(10),i=n(19);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,c=e.backgroundColor,l=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["content","children","className","color","backgroundColor"]);return l.color=t?null:"transparent",l.backgroundColor=a||c,(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["ColorBox",n,(0,i.computeBoxClassName)(l)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(l))))};t.ColorBox=a,a.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(0),r=n(10),i=n(19),a=n(129);function c(e,t){if(null==e)return{};var n,o,r={},i=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,n=t.options,r=void 0===n?[]:n,i=t.placeholder,a=r.map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(){e.setSelected(t)}},t)}));return i&&a.unshift((0,o.createVNode)(1,"div","Dropdown__menuentry",[(0,o.createTextVNode)("-- "),i,(0,o.createTextVNode)(" --")],0,{onClick:function(){e.setSelected(null)}},i)),a},d.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,d=t.over,u=t.noscroll,s=t.nochevron,m=t.width,p=t.maxHeight,h=(t.onClick,t.selected,t.disabled),C=t.placeholder,f=c(t,["color","over","noscroll","nochevron","width","maxHeight","onClick","selected","disabled","placeholder"]),N=f.className,b=c(f,["className"]),V=d?!this.state.open:this.state.open,g=this.state.open?(0,o.createVNode)(1,"div",(0,r.classes)([u?"Dropdown__menu-noscroll":"Dropdown__menu",d&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:m,"max-height":p}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Box,Object.assign({width:m,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,h&&"Button--disabled",N])},b,{onClick:function(){h&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",this.state.selected||C,0),!!s||(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,a.Icon,{name:V?"chevron-up":"chevron-down"}),2)]}))),g],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var o=n(0),r=n(182),i=n(10);function a(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=a(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=i.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,c=a(e,["size","style"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},c)))};t.GridColumn=l,c.defaultHooks=i.pureComponentHooks,c.Column=l},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(0),r=n(10),i=n(19);function a(e,t){if(null==e)return{};var n,o,r={},i=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,i=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),i&&i(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),this.props.autofocus&&(t.focus(),t.selectionStart=0,t.selectionEnd=t.value.length))},d.componentDidUpdate=function(e,t){var n=this.state.editing,o=e.value,r=this.props.value,i=this.inputRef.current;i&&!n&&o!==r&&(i.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=(e.autofocus,a(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder","autofocus"])),l=c.className,d=c.fluid,u=a(c,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.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.Knob=void 0;var o=n(0),r=n(5),i=n(10),a=n(19),c=n(130),l=n(131);t.Knob=function(e){if(Byond.IS_LTE_IE8)return(0,o.normalizeProps)((0,o.createComponentVNode)(2,l.NumberInput,Object.assign({},e)));var t=e.animated,n=e.forcedInputWidth,d=e.format,u=e.maxValue,s=e.minValue,m=e.onChange,p=e.onDrag,h=e.step,C=e.stepPixelSize,f=e.suppressFlicker,N=e.unit,b=e.value,V=e.className,g=e.style,v=e.fillValue,_=e.color,k=e.ranges,y=void 0===k?{}:k,L=e.size,B=e.bipolar,w=(e.children,e.popUpPosition),x=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["animated","forcedInputWidth","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children","popUpPosition"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,forcedInputWidth:n,format:d,maxValue:u,minValue:s,onChange:m,onDrag:p,step:h,stepPixelSize:C,suppressFlicker:f,unit:N,value:b},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,l=e.displayElement,d=e.inputElement,m=e.handleDragStart,p=(0,r.scale)(null!=v?v:c,s,u),h=(0,r.scale)(c,s,u),C=_||(0,r.keyOfMatchingRange)(null!=v?v:n,y)||"default",f=270*(h-.5);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+C,B&&"Knob--bipolar",V,(0,a.computeBoxClassName)(x)]),[(0,o.createVNode)(1,"div","Knob__circle",(0,o.createVNode)(1,"div","Knob__cursorBox",(0,o.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+f+"deg)"}}),2),t&&(0,o.createVNode)(1,"div",(0,i.classes)(["Knob__popupValue",w&&"Knob__popupValue--"+w]),l,0),(0,o.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,o.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,o.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,o.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((B?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),d],0,Object.assign({},(0,a.computeBoxProps)(Object.assign({style:Object.assign({"font-size":L+"rem"},g)},x)),{onMouseDown:m})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var o=n(0),r=n(181);function i(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,o.createComponentVNode)(2,r.Flex.Item,{mx:1,children:(0,o.normalizeProps)((0,o.createComponentVNode)(2,r.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,o.createComponentVNode)(2,r.Flex.Item),(0,o.createComponentVNode)(2,r.Flex.Item,{children:n}),(0,o.createComponentVNode)(2,r.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NanoMap=void 0;var o=n(0),r=n(2),i=n(1);var a=function(e){return e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.returnValue=!1,!1},c=function(e){var t,n;function c(t){var n;n=e.call(this,t)||this;var o=window.innerWidth/2-256,r=window.innerHeight/2-256;return n.state={offsetX:o,offsetY:r,transform:"none",dragging:!1,originX:null,originY:null,zoom:1},n.handleDragStart=function(e){n.ref=e.target,n.setState({dragging:!1,originX:e.screenX,originY:e.screenY}),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd),a(e)},n.handleDragMove=function(e){n.setState((function(t){var n=Object.assign({},t),o=e.screenX-n.originX,r=e.screenY-n.originY;return t.dragging?(n.offsetX+=o,n.offsetY+=r,n.originX=e.screenX,n.originY=e.screenY):n.dragging=!0,n})),a(e)},n.handleDragEnd=function(e){n.setState({dragging:!1,originX:null,originY:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a(e)},n.handleZoom=function(e,o){n.setState((function(e){var n=Math.min(Math.max(o,1),8),r=1.5*(n-e.zoom);e.zoom=n;var i=e.offsetX-262*r;i<-500&&(i=-500),i>500&&(i=500);var a=e.offsetY-256*r;return a<-200&&(a=-200),a>200&&(a=200),e.offsetX=i,e.offsetY=a,t.onZoom&&t.onZoom(e.zoom),e}))},n}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,c.prototype.render=function(){var e=(0,i.useBackend)(this.context).config,t=this.state,n=t.dragging,a=t.offsetX,c=t.offsetY,d=t.zoom,u=void 0===d?1:d,s=this.props.children,m=280*u+"px",p={width:m,height:m,"margin-top":c+"px","margin-left":a+"px",overflow:"hidden",position:"relative","background-image":"url("+e.map+"_nanomap_z"+e.mapZLevel+".png)","background-size":"cover","background-repeat":"no-repeat","text-align":"center",cursor:n?"move":"auto"};return(0,o.createComponentVNode)(2,r.Box,{className:"NanoMap__container",children:[(0,o.createComponentVNode)(2,r.Box,{style:p,textAlign:"center",onMouseDown:this.handleDragStart,children:(0,o.createComponentVNode)(2,r.Box,{children:s})}),(0,o.createComponentVNode)(2,l,{zoom:u,onZoom:this.handleZoom})]})},c}(o.Component);t.NanoMap=c;c.Marker=function(e,t){var n=e.x,i=e.y,c=e.zoom,l=void 0===c?1:c,d=e.icon,u=e.tooltip,s=e.color,m=e.onClick,p=2*n*l-l-3,h=2*i*l-l-3;return(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,r.Box,{position:"absolute",className:"NanoMap__marker",lineHeight:"0",bottom:h+"px",left:p+"px",onMouseDown:function(e){a(e),m(e)},children:[(0,o.createComponentVNode)(2,r.Icon,{name:d,color:s,fontSize:"6px"}),(0,o.createComponentVNode)(2,r.Tooltip,{content:u})]}),2)};var l=function(e,t){var n=(0,i.useBackend)(t),a=n.act,c=n.config,l=n.data;return(0,o.createComponentVNode)(2,r.Box,{className:"NanoMap__zoomer",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Zoom",children:(0,o.createComponentVNode)(2,r.Slider,{minValue:"1",maxValue:"8",stepPixelSize:"10",format:function(e){return e+"x"},value:e.zoom,onDrag:function(t,n){return e.onZoom(t,n)}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Z-Level",children:l.map_levels.sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return(0,o.createComponentVNode)(2,r.Button,{selected:~~e==~~c.mapZLevel,content:e,onClick:function(){a("setZLevel",{mapZLevel:e})}},e)}))})]})})};c.Zoomer=l},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var o=n(0),r=n(10),i=n(19),a=n(179);t.Modal=function(e){var t,n=e.className,c=e.children,l=e.onEnter,d=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","children","onEnter"]);return l&&(t=function(e){13===(e.which||e.keyCode)&&l(e)}),(0,o.createComponentVNode)(2,a.Dimmer,{onKeyDown:t,children:(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Modal",n,(0,i.computeBoxClassName)(d)]),c,0,Object.assign({},(0,i.computeBoxProps)(d))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(0),r=n(10),i=n(19);var a=function(e){var t=e.className,n=e.color,a=e.info,c=(e.warning,e.success),l=e.danger,d=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","color","info","warning","success","danger"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Box,Object.assign({className:(0,r.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",c&&"NoticeBox--type--success",l&&"NoticeBox--type--danger",t])},d)))};t.NoticeBox=a,a.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var o=n(0),r=n(5),i=n(10),a=n(19);var c=function(e){var t=e.className,n=e.value,c=e.minValue,l=void 0===c?0:c,d=e.maxValue,u=void 0===d?1:d,s=e.color,m=e.ranges,p=void 0===m?{}:m,h=e.children,C=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","value","minValue","maxValue","color","ranges","children"]),f=(0,r.scale)(n,l,u),N=h!==undefined,b=s||(0,r.keyOfMatchingRange)(n,p)||"default";return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+b,t,(0,a.computeBoxClassName)(C)]),[(0,o.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,r.clamp01)(f)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",N?h:(0,r.toFixed)(100*f)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(C))))};t.ProgressBar=c,c.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(0),r=n(10),i=n(19);var a=function(e){var t=e.className,n=e.title,a=e.level,c=void 0===a?1:a,l=e.buttons,d=e.fill,u=e.stretchContents,s=e.noTopPadding,m=e.children,p=e.scrollable,h=e.flexGrow,C=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","fill","stretchContents","noTopPadding","children","scrollable","flexGrow"]),f=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),N=!(0,r.isFalsy)(m);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Section","Section--level--"+c,d&&"Section--fill",p&&"Section--scrollable",h&&"Section--flex",t].concat((0,i.computeBoxClassName)(C))),[f&&(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),N&&(0,o.createVNode)(1,"div",(0,r.classes)(["Section__content",!!u&&"Section__content--stretchContents",!!s&&"Section__content--noTopPadding"]),m,0)],0,Object.assign({},(0,i.computeBoxProps)(C))))};t.Section=a,a.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var o=n(0),r=n(5),i=n(10),a=n(19),c=n(130),l=n(131);t.Slider=function(e){if(Byond.IS_LTE_IE8)return(0,o.normalizeProps)((0,o.createComponentVNode)(2,l.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,d=e.maxValue,u=e.minValue,s=e.onChange,m=e.onDrag,p=e.step,h=e.stepPixelSize,C=e.suppressFlicker,f=e.unit,N=e.value,b=e.className,V=e.fillValue,g=e.color,v=e.ranges,_=void 0===v?{}:v,k=e.children,y=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),L=k!==undefined;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:d,minValue:u,onChange:s,onDrag:m,step:p,stepPixelSize:h,suppressFlicker:C,unit:f,value:N},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,l=e.displayElement,s=e.inputElement,m=e.handleDragStart,p=V!==undefined&&null!==V,h=((0,r.scale)(n,u,d),(0,r.scale)(null!=V?V:c,u,d)),C=(0,r.scale)(c,u,d),f=g||(0,r.keyOfMatchingRange)(null!=V?V:n,_)||"default";return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+f,b,(0,a.computeBoxClassName)(y)]),[(0,o.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,r.clamp01)(h)+"%",opacity:.4}}),(0,o.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,r.clamp01)(Math.min(h,C))+"%"}}),(0,o.createVNode)(1,"div","Slider__cursorOffset",[(0,o.createVNode)(1,"div","Slider__cursor"),(0,o.createVNode)(1,"div","Slider__pointer"),t&&(0,o.createVNode)(1,"div","Slider__popupValue",l,0)],0,{style:{width:100*(0,r.clamp01)(C)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",L?k:l,0),s],0,Object.assign({},(0,a.computeBoxProps)(y),{onMouseDown:m})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var o=n(0),r=n(10),i=n(19),a=n(128);function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e.className,n=e.vertical,a=e.children,l=c(e,["className","vertical","children"]);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",t,(0,i.computeBoxClassName)(l)]),(0,o.createVNode)(1,"div","Tabs__tabBox",a,0),2,Object.assign({},(0,i.computeBoxProps)(l))))};t.Tabs=l;l.Tab=function(e){var t=e.className,n=e.selected,i=e.altSelection,l=c(e,["className","selected","altSelection"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",n&&"Tabs__tab--selected",i&&n&&"Tabs__tab--altSelection",t]),selected:!i&&n,color:"transparent"},l)))}},function(e,t,n){var o={"./AICard.js":465,"./APC.js":466,"./AccountsTerminal.js":467,"./AdminShuttleController.js":468,"./AgentCard.js":469,"./AiAirlock.js":470,"./AiRestorer.js":471,"./AiSupermatter.js":472,"./AirAlarm.js":473,"./AlgaeFarm.js":475,"./AppearanceChanger.js":476,"./ArcadeBattle.js":477,"./AreaScrubberControl.js":478,"./AssemblyInfrared.js":479,"./AssemblyProx.js":480,"./AssemblyTimer.js":481,"./AtmosAlertConsole.js":482,"./AtmosControl.js":186,"./AtmosFilter.js":483,"./AtmosMixer.js":484,"./Autolathe.js":485,"./Batteryrack.js":486,"./BeaconLocator.js":487,"./Biogenerator.js":488,"./BodyDesigner.js":489,"./BodyScanner.js":490,"./BombTester.js":491,"./BotanyEditor.js":492,"./BotanyIsolator.js":493,"./BrigTimer.js":494,"./CameraConsole.js":187,"./Canister.js":495,"./CasinoPrizeDispenserCh.js":496,"./CharacterDirectory.js":497,"./ChemDispenser.js":498,"./ChemMaster.js":502,"./ClawMachine.js":503,"./Cleanbot.js":504,"./CloningConsole.js":505,"./ColorMate.js":506,"./CommunicationsConsole.js":189,"./Communicator.js":507,"./ComputerFabricator.js":508,"./CookingAppliance.js":509,"./CrewManifest.js":94,"./CrewMonitor.js":190,"./Cryo.js":510,"./CryoStorage.js":191,"./CryoStorageVr.js":511,"./DNAForensics.js":512,"./DNAModifier.js":513,"./DestinationTagger.js":514,"./DiseaseSplicer.js":515,"./DishIncubator.js":516,"./DisposalBin.js":517,"./DroneConsole.js":518,"./EmbeddedController.js":519,"./ExonetNode.js":520,"./ExosuitFabricator.js":132,"./Farmbot.js":521,"./Fax.js":522,"./FileCabinet.js":523,"./Floorbot.js":524,"./GasPump.js":525,"./GasTemperatureSystem.js":526,"./GeneralAtmoControl.js":527,"./GeneralRecords.js":528,"./Gps.js":529,"./GravityGenerator.js":530,"./GuestPass.js":531,"./GyrotronControl.js":532,"./Holodeck.js":533,"./ICAssembly.js":534,"./ICCircuit.js":535,"./ICDetailer.js":536,"./ICPrinter.js":537,"./IDCard.js":538,"./IdentificationComputer.js":133,"./InventoryPanel.js":539,"./InventoryPanelHuman.js":540,"./IsolationCentrifuge.js":541,"./JanitorCart.js":542,"./Jukebox.js":543,"./LawManager.js":544,"./LookingGlass.js":545,"./MechaControlConsole.js":546,"./Medbot.js":547,"./MedicalRecords.js":548,"./MessageMonitor.js":549,"./Microwave.js":550,"./MiningOreProcessingConsole.js":551,"./MiningStackingConsole.js":552,"./MiningVendor.js":553,"./MuleBot.js":554,"./NIF.js":555,"./NTNetRelay.js":556,"./Newscaster.js":557,"./NoticeBoard.js":558,"./NtosAccessDecrypter.js":559,"./NtosArcade.js":560,"./NtosAtmosControl.js":561,"./NtosCameraConsole.js":562,"./NtosCommunicationsConsole.js":563,"./NtosConfiguration.js":564,"./NtosCrewMonitor.js":565,"./NtosDigitalWarrant.js":566,"./NtosEmailAdministration.js":567,"./NtosEmailClient.js":194,"./NtosFileManager.js":568,"./NtosIdentificationComputer.js":569,"./NtosMain.js":570,"./NtosNetChat.js":571,"./NtosNetDos.js":572,"./NtosNetDownloader.js":573,"./NtosNetMonitor.js":574,"./NtosNetTransfer.js":575,"./NtosNewsBrowser.js":576,"./NtosOvermapNavigation.js":577,"./NtosPowerMonitor.js":578,"./NtosRCON.js":579,"./NtosRevelation.js":580,"./NtosShutoffMonitor.js":581,"./NtosStationAlertConsole.js":582,"./NtosSupermatterMonitor.js":583,"./NtosUAV.js":584,"./NtosWordProcessor.js":585,"./OmniFilter.js":586,"./OmniMixer.js":587,"./OperatingComputer.js":588,"./OvermapDisperser.js":589,"./OvermapEngines.js":200,"./OvermapFull.js":590,"./OvermapHelm.js":201,"./OvermapNavigation.js":195,"./OvermapShieldGenerator.js":591,"./OvermapShipSensors.js":202,"./ParticleAccelerator.js":592,"./PartsLathe.js":593,"./PathogenicIsolator.js":594,"./Pda.js":595,"./Photocopier.js":610,"./PipeDispenser.js":611,"./PlantAnalyzer.js":612,"./PointDefenseControl.js":613,"./PortableGenerator.js":614,"./PortablePump.js":615,"./PortableScrubber.js":616,"./PortableTurret.js":617,"./PowerMonitor.js":135,"./PrecisionEditor.js":618,"./PressureRegulator.js":619,"./PrisonerManagement.js":620,"./RCON.js":196,"./RIGSuit.js":621,"./Radio.js":622,"./RapidPipeDispenser.js":204,"./RequestConsole.js":623,"./ResearchConsole.js":624,"./ResearchServerController.js":625,"./ResleevingConsole.js":626,"./ResleevingPod.js":627,"./RoboticsControlConsole.js":628,"./RogueZones.js":629,"./RustCoreMonitor.js":630,"./RustFuelControl.js":631,"./Secbot.js":632,"./SecurityRecords.js":633,"./SeedStorage.js":634,"./ShieldCapacitor.js":635,"./ShieldGenerator.js":636,"./ShutoffMonitor.js":197,"./ShuttleControl.js":637,"./Signaler.js":203,"./Sleeper.js":638,"./SmartVend.js":639,"./Smes.js":640,"./SolarControl.js":641,"./SpaceHeater.js":642,"./Stack.js":643,"./StarcasterCh.js":644,"./StationAlertConsole.js":198,"./StationBlueprints.js":645,"./SuitCycler.js":646,"./SuitStorageUnit.js":647,"./SupermatterMonitor.js":199,"./SupplyConsole.js":648,"./TEGenerator.js":649,"./Tank.js":650,"./TankDispenser.js":651,"./TelecommsLogBrowser.js":652,"./TelecommsMachineBrowser.js":653,"./TelecommsMultitoolMenu.js":654,"./Teleporter.js":655,"./TelesciConsole.js":656,"./TimeClock.js":657,"./TransferValve.js":658,"./TurbineControl.js":659,"./Turbolift.js":660,"./Uplink.js":661,"./Vending.js":662,"./VolumePanel.js":663,"./VorePanel.js":664,"./Wires.js":665,"./XenoarchArtifactAnalyzer.js":666,"./XenoarchArtifactHarvester.js":667,"./XenoarchDepthScanner.js":668,"./XenoarchHandheldPowerUtilizer.js":669,"./XenoarchReplicator.js":670,"./XenoarchSpectrometer.js":671,"./XenoarchSuspension.js":672,"./pAIAtmos.js":673,"./pAIDirectives.js":674,"./pAIDoorjack.js":675,"./pAIInterface.js":676,"./pAIMedrecords.js":677,"./pAISecrecords.js":678};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=i,e.exports=r,r.id=464},function(e,t,n){"use strict";t.__esModule=!0,t.AICard=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AICard=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.has_ai,u=l.integrity,s=l.backup_capacitor,m=l.flushing,p=l.has_laws,h=l.laws,C=l.wireless,f=l.radio;if(0===d)return(0,o.createComponentVNode)(2,a.Window,{width:600,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createVNode)(1,"h3",null,"No AI detected.",16)})})})});var N=null;N=u>=75?"green":u>=25?"yellow":"red";var b=null;return s>=75&&(b="green"),b=s>=25?"yellow":"red",(0,o.createComponentVNode)(2,a.Window,{width:600,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Stored AI",children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,display:"inline-block",children:(0,o.createVNode)(1,"h3",null,name,0)}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:N,value:u/100})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:b,value:s/100})})]})}),(0,o.createComponentVNode)(2,i.Box,{color:"red",children:(0,o.createVNode)(1,"h2",null,1===m?"Wipe of AI in progress...":"",0)})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Laws",children:!!p&&(0,o.createComponentVNode)(2,i.Box,{children:h.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",children:e},t)}))})||(0,o.createComponentVNode)(2,i.Box,{color:"red",children:(0,o.createVNode)(1,"h3",null,"No laws detected.",16)})}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Wireless Activity",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"check":"times",content:C?"Enabled":"Disabled",color:C?"green":"red",onClick:function(){return c("wireless")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Subspace Transceiver",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"check":"times",content:f?"Enabled":"Disabled",color:f?"green":"red",onClick:function(){return c("radio")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"AI Power",children:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"radiation",confirmIcon:"radiation",disabled:m||0===u,confirmColor:"red",content:"Shutdown",onClick:function(){return c("wipe")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.APC=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(185),l=n(61);t.APC=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=(0,o.createComponentVNode)(2,u);return i.gridCheck?c=(0,o.createComponentVNode)(2,s):i.failTime&&(c=(0,o.createComponentVNode)(2,m)),(0,o.createComponentVNode)(2,a.Window,{width:450,height:475,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:c})})};var 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=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,u=l.locked&&!l.siliconUser,s=(l.normallyLocked,d[l.externalPower]||d[0]),m=d[l.chargingStatus]||d[0],p=l.powerChannels||[],h=l.powerCellStatus/100;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{deny:l.emagged,denialMessage:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{color:"bad",fontSize:"1.5rem",children:"Fault in ID authenticator."}),(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Please contact maintenance for service."})],4)}),(0,o.createComponentVNode)(2,i.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Main Breaker",color:s.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.isOperating?"power-off":"times",content:l.isOperating?"On":"Off",selected:l.isOperating&&!u,color:l.isOperating?"":"bad",disabled:u,onClick:function(){return a("breaker")}}),children:["[ ",s.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:"good",value:h})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Mode",color:m.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.chargeMode?"sync":"times",content:l.chargeMode?"Auto":"Off",selected:l.chargeMode,disabled:u,onClick:function(){return a("charge")}}),children:["[ ",m.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[p.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Auto",selected:!u&&(1===e.status||3===e.status),disabled:u,onClick:function(){return a("channel",t.auto)}}),(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:"On",selected:!u&&2===e.status,disabled:u,onClick:function(){return a("channel",t.on)}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Off",selected:!u&&0===e.status,disabled:u,onClick:function(){return a("channel",t.off)}})],4),children:[e.powerLoad," W"]},e.title)})),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Load",children:l.totalCharging?(0,o.createVNode)(1,"b",null,[l.totalLoad,(0,o.createTextVNode)(" W (+ "),l.totalCharging,(0,o.createTextVNode)(" W charging)")],0):(0,o.createVNode)(1,"b",null,[l.totalLoad,(0,o.createTextVNode)(" W")],0)})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Misc",buttons:!!l.siliconUser&&(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return a("overload")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.coverLocked?"lock":"unlock",content:l.coverLocked?"Engaged":"Disengaged",selected:l.coverLocked,disabled:u,onClick:function(){return a("cover")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Disabled",selected:2===l.nightshiftSetting,onClick:function(){return a("nightshift",{nightshift:2})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Automatic",selected:1===l.nightshiftSetting,onClick:function(){return a("nightshift",{nightshift:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:"Enabled",selected:3===l.nightshiftSetting,onClick:function(){return a("nightshift",{nightshift:3})}})],4)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",content:l.emergencyLights?"Enabled":"Disabled",selected:l.emergencyLights,onClick:function(){return a("emergency_lighting")}})})]})})],4)},s=function(e,t){return(0,o.createComponentVNode)(2,l.FullscreenNotice,{title:"System Failure",children:[(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,children:(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"})}),(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,children:"Power surge detected, grid check in effect..."})]})},m=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=n.act,l=(0,o.createComponentVNode)(2,i.Button,{icon:"repeat",content:"Restart Now",color:"good",onClick:function(){return c("reboot")}});return a.locked&&!a.siliconUser&&(l=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Swipe an ID card for manual reboot."})),(0,o.createComponentVNode)(2,i.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:(0,o.createVNode)(1,"h1",null,"SYSTEM FAILURE",16)}),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:(0,o.createVNode)(1,"h2",null,"I/O regulators malfunction detected! Waiting for system reboot...",16)}),(0,o.createComponentVNode)(2,i.Box,{color:"good",children:["Automatic reboot in ",a.failTime," seconds..."]}),(0,o.createComponentVNode)(2,i.Box,{mt:4,children:l})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AccountsTerminal=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.AccountsTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.id_inserted,s=d.id_card,m=d.access_level,p=d.machine_id;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:640,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Machine",color:"average",children:p}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"eject":"sign-in-alt",fluid:!0,content:s,onClick:function(){return l("insert_card")}})})]})}),m>0&&(0,o.createComponentVNode)(2,c)]})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,s=c.creating_new_account,m=c.detailed_account_view;return(0,o.createComponentVNode)(2,i.Section,{title:"Menu",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:!s&&!m,icon:"home",onClick:function(){return a("view_accounts_list")},children:"Home"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:s,icon:"cog",onClick:function(){return a("create_account")},children:"New Account"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{disabled:s,icon:"print",onClick:function(){return a("print")},children:"Print"})]}),s&&(0,o.createComponentVNode)(2,l)||m&&(0,o.createComponentVNode)(2,d)||(0,o.createComponentVNode)(2,u)]})},l=function(e,t){var n=(0,r.useBackend)(t).act,a=(0,r.useSharedState)(t,"holder",""),c=a[0],l=a[1],d=(0,r.useSharedState)(t,"money",""),u=d[0],s=d[1];return(0,o.createComponentVNode)(2,i.Section,{title:"Create Account",level:2,children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Account Holder",children:(0,o.createComponentVNode)(2,i.Input,{value:c,fluid:!0,onInput:function(e,t){return l(t)}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Initial Deposit",children:(0,o.createComponentVNode)(2,i.Input,{value:u,fluid:!0,onInput:function(e,t){return s(t)}})})]}),(0,o.createComponentVNode)(2,i.Button,{disabled:!c||!u,mt:1,fluid:!0,icon:"plus",onClick:function(){return n("finalise_create_account",{holder_name:c,starting_funds:u})},content:"Create"})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.access_level,d=c.station_account_number,u=c.account_number,s=c.owner_name,m=c.money,p=c.suspended,h=c.transactions;return(0,o.createComponentVNode)(2,i.Section,{title:"Account Details",level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"ban",selected:p,content:"Suspend",onClick:function(){return a("toggle_suspension")}}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Account Number",children:["#",u]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Holder",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Balance",children:[m,"\u20ae"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:p?"bad":"good",children:p?"SUSPENDED":"Active"})]}),(0,o.createComponentVNode)(2,i.Section,{title:"CentCom Administrator",level:2,mt:1,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Payroll",children:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"bad",fluid:!0,icon:"ban",confirmIcon:"ban",content:"Revoke",confirmContent:"This cannot be undone.",disabled:u===d,onClick:function(){return a("revoke_payroll")}})})})}),l>=2&&(0,o.createComponentVNode)(2,i.Section,{title:"Silent Funds Transfer",level:2,children:[(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_funds")},content:"Add Funds"}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("remove_funds")},content:"Remove Funds"})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Transactions",level:2,mt:1,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:"Timestamp"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Target"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Reason"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Value"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Terminal"})]}),h.map((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.date," ",e.time]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.target_name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.purpose}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[e.amount,"\u20ae"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.source_terminal})]},t)}))]})})]})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.accounts;return(0,o.createComponentVNode)(2,i.Section,{title:"NanoTrasen Accounts",level:2,children:c.length&&(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.owner_name+e.suspended,color:e.suspended?"bad":null,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"#"+e.account_number,onClick:function(){return a("view_account_detail",{account_index:e.account_index})}})},e.account_index)}))})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"There are no accounts available."})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleList=t.AdminShuttleController=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.AdminShuttleController=function(e,t){var n=(0,i.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,u=l.shuttles,s=l.overmap_ships;return(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Classic Shuttles",level:2,children:(0,o.createComponentVNode)(2,a.Table,{children:(0,r.sortBy)((function(e){return e.name}))(u).map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{m:0,content:"JMP",onClick:function(){return c("adminobserve",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{m:0,content:"Fly",onClick:function(){return c("classicmove",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.current_location}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d(e.status)})]},e.ref)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Overmap Ships",level:2,children:(0,o.createComponentVNode)(2,a.Table,{children:(0,r.sortBy)((function(e){var t;return(null==(t=e.name)?void 0:t.toLowerCase())||e.name||e.ref}))(s).map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"JMP",onClick:function(){return c("adminobserve",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Control",onClick:function(){return c("overmap_control",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name})]},e.ref)}))})})]})};t.ShuttleList=l;var d=function(e){switch(e){case 0:return"Idle";case 1:return"Warmup";case 2:return"Transit";default:return"UNK"}}},function(e,t,n){"use strict";t.__esModule=!0,t.AgentCard=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.AgentCard=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.entries,u=l.electronic_warfare;return(0,o.createComponentVNode)(2,a.Window,{width:550,height:400,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Info",children:(0,o.createComponentVNode)(2,i.Table,{children:d.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,{onClick:function(){return c(e.name.toLowerCase().replace(/ /g,""))},icon:"cog"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.value})]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Electronic Warfare",children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u,content:u?"Electronic warfare is enabled. This will prevent you from being tracked by the AI.":"Electronic warfare disabled.",onClick:function(){return c("electronic_warfare")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c={2:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Offline"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=c[d.power.main]||c[0],s=c[d.power.backup]||c[0],m=c[d.shock]||c[0];return(0,o.createComponentVNode)(2,a.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,a.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.AI_present,d=c.error,u=c.name,s=c.laws,m=c.isDead,p=c.restoring,h=c.health,C=c.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:d}),!!C&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return a("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,i.Section,{title:C?"System Status":u,buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:h,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return a("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,i.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.AiSupermatter=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=(n(20),n(61));t.AiSupermatter=function(e,t){var n=(0,r.useBackend)(t).data,i=(n.integrity_percentage,n.ambient_temp,n.ambient_pressure,n.detonating),c=(0,o.createComponentVNode)(2,d);return i&&(c=(0,o.createComponentVNode)(2,l)),(0,o.createComponentVNode)(2,a.Window,{width:500,height:300,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:c})})};var l=function(e,t){return(0,o.createComponentVNode)(2,c.FullscreenNotice,{title:"DETONATION IMMINENT",children:(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{color:"bad",name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"}),(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"CRYSTAL DELAMINATING"}),(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Evacuate area immediately"})]})})},d=function(e,t){var n=(0,r.useBackend)(t).data,a=n.integrity_percentage,c=n.ambient_temp,l=n.ambient_pressure;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Crystal Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:a,maxValue:100,ranges:{good:[90,Infinity],average:[25,90],bad:[-Infinity,25]}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Environment Temperature",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:c,maxValue:1e4,ranges:{bad:[5e3,Infinity],average:[4e3,5e3],good:[-Infinity,4e3]},children:[c," K"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Environment Pressure",children:[l," kPa"]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(0),r=n(5),i=(n(6),n(1)),a=n(2),c=n(28),l=n(3),d=n(185),u=n(474);t.AirAlarm=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),a=r.locked&&!r.siliconUser&&!r.remoteUser;return(0,o.createComponentVNode)(2,l.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m),!a&&(0,o.createComponentVNode)(2,h)]})})};var s=function(e,t){var n=(0,i.useBackend)(t).data,l=(n.environment_data||[]).filter((function(e){return e.value>=.01})),d={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},u=d[n.danger_level]||d[0];return(0,o.createComponentVNode)(2,a.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[l.length>0&&(0,o.createFragment)([l.map((function(e){var t=d[e.danger_level]||d[0];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,c.getGasLabel)(e.name),color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Local status",color:u.color,children:u.localStatusText}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.target_temperature,d=c.rcon;return(0,o.createComponentVNode)(2,a.Section,{title:"Comfort Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Control",children:[(0,o.createComponentVNode)(2,a.Button,{selected:1===d,content:"Off",onClick:function(){return r("rcon",{rcon:1})}}),(0,o.createComponentVNode)(2,a.Button,{selected:2===d,content:"Auto",onClick:function(){return r("rcon",{rcon:2})}}),(0,o.createComponentVNode)(2,a.Button,{selected:3===d,content:"On",onClick:function(){return r("rcon",{rcon:3})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Thermostat",children:(0,o.createComponentVNode)(2,a.Button,{content:l,onClick:function(){return r("temperature")}})})]})})},p={home:{title:"Air Controls",component:function(){return C}},vents:{title:"Vent Controls",component:function(){return f}},scrubbers:{title:"Scrubber Controls",component:function(){return N}},modes:{title:"Operating Mode",component:function(){return b}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},h=function(e,t){var n=(0,i.useLocalState)(t,"screen"),r=n[0],c=n[1],l=p[r]||p.home,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c()}}),children:(0,o.createComponentVNode)(2,d)})},C=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=(0,i.useLocalState)(t,"screen"),d=(l[0],l[1]),u=c.mode,s=c.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,a.Box,{mt:2}),(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},f=function(e,t){var n=(0,i.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,u.Vent,{vent:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,i.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,u.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},b=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.modes;return c&&0!==c.length?c.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,a.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.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,d.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",(0,o.createVNode)(1,"span","color-"+(0,c.getGasColor)(e.name),(0,c.getGasLabel)(e.name),0),2),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,a.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return l("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.Scrubber=t.Vent=void 0;var o=n(0),r=n(6),i=n(1),a=n(2);n(28);t.Vent=function(e,t){var n=e.vent,c=(0,i.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,h=n.direction,C=n.external,f=n.internal,N=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,a.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return c("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-in-alt",content:"siphon"!==h?"Pressurizing":"Siphoning",color:"siphon"===h&&"danger",onClick:function(){return c("direction",{id_tag:l,val:Number("siphon"===h)})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return c("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return c("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(f),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return c("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return c("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(C),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return c("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",disabled:N,content:"Reset",onClick:function(){return c("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,c=(0,i.useBackend)(t).act,l=n.long_name,d=n.power,u=n.scrubbing,s=n.id_tag,m=(n.widenet,n.filters);return(0,o.createComponentVNode)(2,a.Section,{level:2,title:(0,r.decodeHtmlEntities)(l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return c("power",{id_tag:s,val:Number(!d)})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"filter":"sign-in-alt",color:u||"danger",content:u?"Scrubbing":"Siphoning",onClick:function(){return c("scrubbing",{id_tag:s,val:Number(!u)})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filters",children:u&&m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.val?"check-square-o":"square-o",content:e.name,title:e.name,selected:e.val,onClick:function(){return c(e.command,{id_tag:s,val:!e.val})}},e.name)}))||"N/A"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AlgaeFarm=void 0;var o=n(0),r=n(1),i=n(2),a=(n(20),n(3)),c=(n(5),n(6));t.AlgaeFarm=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.usePower,s=d.materials,m=d.last_flow_rate,p=d.last_power_draw,h=d.inputDir,C=d.outputDir,f=d.input,N=d.output,b=d.errorText;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[b&&(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",verticalAlign:"middle",children:b})}),(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:"Processing",selected:2===u,onClick:function(){return l("toggle")}}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate",children:[m," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Draw",children:[p," W"]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:1}),s.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(0,c.capitalize)(e.display),children:[(0,o.createComponentVNode)(2,i.ProgressBar,{width:"80%",value:e.qty,maxValue:e.max,children:[e.qty,"/",e.max]}),(0,o.createComponentVNode)(2,i.Button,{ml:1,content:"Eject",onClick:function(){return l("ejectMaterial",{mat:e.name})}})]},e.name)}))]}),(0,o.createComponentVNode)(2,i.Table,{mt:1,children:(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Gas Input ("+h+")",children:f?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Pressure",children:[f.pressure," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:f.name,children:[f.percent,"% (",f.moles," moles)"]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No connection detected."})})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Gas Output ("+C+")",children:N?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Pressure",children:[N.pressure," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:N.name,children:[N.percent,"% (",N.moles," moles)"]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No connection detected."})})})]})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AppearanceChanger=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2),l=n(3);t.AppearanceChanger=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.config),N=n.data,b=N.name,V=N.specimen,g=N.gender,v=N.gender_id,_=N.hair_style,k=N.facial_hair_style,y=N.ear_style,L=N.tail_style,B=N.wing_style,w=N.change_race,x=N.change_gender,S=N.change_eye_color,I=N.change_skin_tone,T=N.change_skin_color,A=N.change_hair_color,E=N.change_facial_hair_color,M=N.change_hair,P=N.change_facial_hair,O=N.mapRef,F=r.title,R=S||I||T||A||E,D=-1;w?D=0:x?D=1:R?D=2:M?D=4:P&&(D=5);var j=(0,a.useLocalState)(t,"tabIndex",D),W=j[0],z=j[1];return(0,o.createComponentVNode)(2,l.Window,{width:700,height:650,title:(0,i.decodeHtmlEntities)(F),children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{title:"Reflection",children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:b}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Species",color:w?null:"grey",children:V}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Biological Sex",color:x?null:"grey",children:g?(0,i.capitalize)(g):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Gender Identity",color:R?null:"grey",children:v?(0,i.capitalize)(v):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Hair Style",color:M?null:"grey",children:_?(0,i.capitalize)(_):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Facial Hair Style",color:P?null:"grey",children:k?(0,i.capitalize)(k):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Ear Style",color:M?null:"grey",children:y?(0,i.capitalize)(y):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Tail Style",color:M?null:"grey",children:L?(0,i.capitalize)(L):"Not Set"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Wing Style",color:M?null:"grey",children:B?(0,i.capitalize)(B):"Not Set"})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.ByondUi,{style:{width:"256px",height:"256px"},params:{id:O,type:"map"}})})]})}),(0,o.createComponentVNode)(2,c.Tabs,{children:[w?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:0===W,onClick:function(){return z(0)},children:"Race"}):null,x?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===W,onClick:function(){return z(1)},children:"Gender & Sex"}):null,R?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===W,onClick:function(){return z(2)},children:"Colors"}):null,M?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===W,onClick:function(){return z(3)},children:"Hair"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:5===W,onClick:function(){return z(5)},children:"Ear"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:6===W,onClick:function(){return z(6)},children:"Tail"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:7===W,onClick:function(){return z(7)},children:"Wing"})],4):null,P?(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:4===W,onClick:function(){return z(4)},children:"Facial Hair"}):null]}),(0,o.createComponentVNode)(2,c.Box,{height:"43%",children:[w&&0===W?(0,o.createComponentVNode)(2,d):null,x&&1===W?(0,o.createComponentVNode)(2,u):null,R&&2===W?(0,o.createComponentVNode)(2,s):null,M&&3===W?(0,o.createComponentVNode)(2,m):null,P&&4===W?(0,o.createComponentVNode)(2,p):null,M&&5===W?(0,o.createComponentVNode)(2,h):null,M&&6===W?(0,o.createComponentVNode)(2,C):null,M&&7===W?(0,o.createComponentVNode)(2,f):null]})]})})};var d=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.species,u=l.specimen,s=(0,r.sortBy)((function(e){return e.specimen}))(d||[]);return(0,o.createComponentVNode)(2,c.Section,{title:"Species",fill:!0,scrollable:!0,children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{content:e.specimen,selected:u===e.specimen,onClick:function(){return i("race",{race:e.specimen})}},e.specimen)}))})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.gender,d=i.gender_id,u=i.genders,s=i.id_genders;return(0,o.createComponentVNode)(2,c.Section,{title:"Gender & Sex",fill:!0,scrollable:!0,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Biological Sex",children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{selected:e.gender_key===l,content:e.gender_name,onClick:function(){return r("gender",{gender:e.gender_key})}},e.gender_key)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Gender Identity",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{selected:e.gender_key===d,content:e.gender_name,onClick:function(){return r("gender_id",{gender_id:e.gender_key})}},e.gender_key)}))})]})})},s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.change_eye_color,d=i.change_skin_tone,u=i.change_skin_color,s=i.change_hair_color,m=i.change_facial_hair_color,p=i.eye_color,h=i.skin_color,C=i.hair_color,f=i.facial_hair_color,N=i.ears_color,b=i.ears2_color,V=i.tail_color,g=i.tail2_color,v=i.wing_color,_=i.wing2_color;return(0,o.createComponentVNode)(2,c.Section,{title:"Colors",fill:!0,scrollable:!0,children:[l?(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:p,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Eye Color",onClick:function(){return r("eye_color")}})]}):null,d?(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Change Skin Tone",onClick:function(){return r("skin_tone")}})}):null,u?(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:h,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Skin Color",onClick:function(){return r("skin_color")}})]}):null,s?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:C,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Hair Color",onClick:function(){return r("hair_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:N,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Ears Color",onClick:function(){return r("ears_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:b,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Secondary Ears Color",onClick:function(){return r("ears2_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:V,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Tail Color",onClick:function(){return r("tail_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:g,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Secondary Tail Color",onClick:function(){return r("tail2_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:v,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Wing Color",onClick:function(){return r("wing_color")}})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:_,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Secondary Wing Color",onClick:function(){return r("wing2_color")}})]})],4):null,m?(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.ColorBox,{color:f,mr:1}),(0,o.createComponentVNode)(2,c.Button,{content:"Change Facial Hair Color",onClick:function(){return r("facial_hair_color")}})]}):null]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.hair_style,d=i.hair_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Hair",fill:!0,scrollable:!0,children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return r("hair",{hair:e.hairstyle})},selected:e.hairstyle===l,content:e.hairstyle},e.hairstyle)}))})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.facial_hair_style,d=i.facial_hair_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Facial Hair",fill:!0,scrollable:!0,children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return r("facial_hair",{facial_hair:e.facialhairstyle})},selected:e.facialhairstyle===l,content:e.facialhairstyle},e.facialhairstyle)}))})},h=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ear_style,u=l.ear_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Ears",fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("ear",{clear:!0})},selected:null===d,content:"-- Not Set --"}),(0,r.sortBy)((function(e){return e.name.toLowerCase()}))(u).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("ear",{ref:e.instance})},selected:e.name===d,content:e.name},e.instance)}))]})},C=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.tail_style,u=l.tail_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Tails",fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("tail",{clear:!0})},selected:null===d,content:"-- Not Set --"}),(0,r.sortBy)((function(e){return e.name.toLowerCase()}))(u).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("tail",{ref:e.instance})},selected:e.name===d,content:e.name},e.instance)}))]})},f=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.wing_style,u=l.wing_styles;return(0,o.createComponentVNode)(2,c.Section,{title:"Wings",fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("wing",{clear:!0})},selected:null===d,content:"-- Not Set --"}),(0,r.sortBy)((function(e){return e.name.toLowerCase()}))(u).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("wing",{ref:e.instance})},selected:e.name===d,content:e.name},e.instance)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ArcadeBattle=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ArcadeBattle=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(l.name,l.temp),u=l.enemyAction,s=l.enemyName,m=l.playerHP,p=l.playerMP,h=l.enemyHP,C=(l.enemyMP,l.gameOver);return(0,o.createComponentVNode)(2,a.Window,{width:400,height:240,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:s,textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Section,{color:"label",children:[(0,o.createComponentVNode)(2,i.Box,{children:d}),(0,o.createComponentVNode)(2,i.Box,{children:!C&&u})]}),(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[m,"HP"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:p,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[p,"MP"]})})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Enemy HP",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:h,minValue:0,maxValue:45,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[h,"HP"]})})})})]}),C&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mt:1,color:"green",content:"New Game",onClick:function(){return c("newgame")}})||(0,o.createComponentVNode)(2,i.Flex,{mt:2,justify:"space-between",spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",onClick:function(){return c("attack")},content:"Attack!"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",onClick:function(){return c("heal")},content:"Heal!"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",onClick:function(){return c("charge")},content:"Recharge!"})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AreaScrubberControl=void 0;var o=n(0),r=n(2),i=n(1),a=n(3),c=n(6);t.AreaScrubberControl=function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=(0,i.useLocalState)(t,"showArea",!1),s=u[0],m=u[1],p=d.scrubbers;return p?(0,o.createComponentVNode)(2,a.Window,{width:600,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Flex,{wrap:"wrap",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"search",content:"Scan",onClick:function(){return c("scan")}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",grow:1,children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"layer-group",content:"Show Areas",selected:s,onClick:function(){return m(!s)}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"toggle-on",content:"All On",onClick:function(){return c("allon")}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"49%",grow:1,children:(0,o.createComponentVNode)(2,r.Button,{textAlign:"center",fluid:!0,icon:"toggle-off",content:"All Off",onClick:function(){return c("alloff")}})})]}),(0,o.createComponentVNode)(2,r.Flex,{wrap:"wrap",children:p.map((function(e){return(0,o.createComponentVNode)(2,r.Flex.Item,{m:"2px",basis:"32%",children:(0,o.createComponentVNode)(2,l,{scrubber:e,showArea:s})},e.id)}))})]})})}):(0,o.createComponentVNode)(2,r.Section,{title:"Error",children:[(0,o.createComponentVNode)(2,r.Box,{color:"bad",children:"No Scrubbers Detected."}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"search",content:"Scan",onClick:function(){return c("scan")}})]})};var l=function(e,t){var n=(0,i.useBackend)(t).act,a=e.scrubber,l=e.showArea;return(0,o.createComponentVNode)(2,r.Section,{title:a.name,children:[(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"power-off",content:a.on?"Enabled":"Disabled",selected:a.on,onClick:function(){return n("toggle",{id:a.id})}}),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Pressure",children:[a.pressure," kPa"]}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Flow Rate",children:[a.flow_rate," L/s"]}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Load",children:[a.load," W"]}),l&&(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Area",children:(0,c.toTitleCase)(a.area)})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AssemblyInfrared=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.AssemblyInfrared=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Infrared Unit",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Laser",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",fluid:!0,selected:d,onClick:function(){return c("state")},children:d?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye",fluid:!0,selected:u,onClick:function(){return c("visible")},children:u?"Able to be seen":"Invisible"})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AssemblyProx=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.AssemblyProx=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.timing,m=u.time,p=u.range,h=u.maxRange,C=u.scanning;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Timing Unit",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"stopwatch",selected:s,onClick:function(){return d("timing")},children:s?"Counting Down":"Disabled"}),children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,fluid:!0,value:m/10,minValue:0,maxValue:600,format:function(e){return(0,l.formatTime)((0,r.round)(e))},onDrag:function(e,t){return d("set_time",{time:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prox Unit",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,a.NumberInput,{minValue:1,value:p,maxValue:h,onDrag:function(e,t){return d("range",{range:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Armed",children:[(0,o.createComponentVNode)(2,a.Button,{mr:1,icon:C?"lock":"lock-open",selected:C,onClick:function(){return d("scanning")},children:C?"ARMED":"Unarmed"}),"Movement sensor is active when armed!"]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AssemblyTimer=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.AssemblyTimer=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.timing,m=u.time;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Timing Unit",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"stopwatch",selected:s,onClick:function(){return d("timing")},children:s?"Counting Down":"Disabled"}),children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,fluid:!0,value:m/10,minValue:0,maxValue:600,format:function(e){return(0,l.formatTime)((0,r.round)(e))},onDrag:function(e,t){return d("set_time",{time:t})}})})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.priority_alarms||[],u=l.minor_alarms||[];return(0,o.createComponentVNode)(2,a.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:e.name,color:"bad",onClick:function(){return c("clear",{ref:e.ref})}}),2,null,e.name)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:e.name,color:"average",onClick:function(){return c("clear",{ref:e.ref})}}),2,null,e.name)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(1),i=n(2),a=(n(28),n(3));t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.filter_types||[];return(0,o.createComponentVNode)(2,a.Window,{width:390,height:187,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return c("power")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1,children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:l.last_flow_rate,format:function(e){return e+" L/s"}})}),(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return c("rate",{rate:t})}}),(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return c("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Filter",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{selected:e.selected,content:e.name,onClick:function(){return c("filter",{filterset:e.f_type})}},e.name)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createComponentVNode)(2,a.Window,{width:370,height:195,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return c("power")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure,step:10,onChange:function(e,t){return c("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return c("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:1}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"label",children:(0,o.createVNode)(1,"u",null,"Concentrations",16)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Node 1 ("+l.node1_dir+")",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return c("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Node 2 ("+l.node2_dir+")",children:(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return c("node2",{concentration:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Autolathe=void 0;var o=n(0),r=(n(5),n(41)),i=n(8),a=n(1),c=n(2),l=n(3),d=n(132),u=n(6),s=function(e,t){if(null===e.requirements)return!0;for(var n=Object.keys(e.requirements),o=function(){var n=i[r],o=t.find((function(e){return e.name===n}));return o?o.amount=e[1].price/d.build_eff,e[1]})).sort(l[f]);if(0!==n.length)return b&&(n=n.reverse()),g=!0,(0,o.createComponentVNode)(2,m,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,a.Section,{onClick:function(e){return(0,c.refocusLayout)()},children:g?v:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No items matching your criteria was found!"})})})},u=function(e,t){var n=(0,i.useLocalState)(t,"search",""),r=(n[0],n[1]),c=(0,i.useLocalState)(t,"sort",""),d=(c[0],c[1]),u=(0,i.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:"Alphabetical",options:Object.keys(l),width:"100%",lineHeight:"19px",onSelected:function(e){return d(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"arrow-down":"arrow-up",height:"19px",tooltip:s?"Descending order":"Ascending order",tooltipPosition:"bottom-left",ml:"0.5rem",onClick:function(){return m(!s)}})})]})})},s=function(e,t){return!!e.affordable&&!(e.reagent&&!t.beaker)},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=e.title,d=e.items,u=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Collapsible,Object.assign({open:!0,title:l},u,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s(e,c),content:(e.price/c.build_eff).toLocaleString("en-US"),width:"15%",textAlign:"center",style:{float:"right"},onClick:function(){return r("purchase",{cat:l,name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{style:{clear:"both"}})]},e.name)}))})))}},function(e,t,n){"use strict";t.__esModule=!0,t.BodyDesigner=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3);t.BodyDesigner=function(e,t){var n=(0,i.useBackend)(t),r=n.act,d=n.data,u=d.menu,s=d.disk,m=d.diskStored,p=d.activeBodyRecord,h=l[u];return(0,o.createComponentVNode)(2,c.Window,{width:400,height:650,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[s?(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save To Disk",onClick:function(){return r("savetodisk")},disabled:!p}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Load From Disk",onClick:function(){return r("loadfromdisk")},disabled:!m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return r("ejectdisk")}})]}):null,h]})})};var l={Main:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Database Functions",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:"View Individual Body Records",onClick:function(){return r("menu",{menu:"Body Records"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:"View Stock Body Records",onClick:function(){return r("menu",{menu:"Stock Records"})}})]})})),"Body Records":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.bodyrecords;return(0,o.createComponentVNode)(2,a.Section,{title:"Body Records",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("menu",{menu:"Main"})}}),children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:e.name,onClick:function(){return r("view_brec",{view_brec:e.recref})}},e.name)}))})})),"Stock Records":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.stock_bodyrecords;return(0,o.createComponentVNode)(2,a.Section,{title:"Stock Records",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("menu",{menu:"Main"})}}),children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:e,onClick:function(){return r("view_stock_brec",{view_stock_brec:e})}},e)}))})})),"Specific Record":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.activeBodyRecord,u=l.mapRef;return d?(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"165px",children:(0,o.createComponentVNode)(2,a.Section,{title:"Specific Record",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("menu",{menu:"Main"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.real_name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:d.speciesname}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bio. Sex",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:(0,r.capitalize)(d.gender),onClick:function(){return c("href_conversion",{target_href:"bio_gender",target_value:1})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Synthetic",children:d.synthetic}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Compat",children:[d.locked,(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eye",content:"View OOC Notes",disabled:!d.booc,onClick:function(){return c("boocnotes")}})]})]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"130px",children:(0,o.createComponentVNode)(2,a.ByondUi,{style:{width:"100%",height:"128px"},params:{id:u,type:"map"}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"300px",children:(0,o.createComponentVNode)(2,a.Section,{title:"Customize",height:"300px",style:{overflow:"auto"},children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scale",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:d.scale,onClick:function(){return c("href_conversion",{target_href:"size_multiplier",target_value:1})}})}),Object.keys(d.styles).map((function(e){var t=d.styles[e];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:[t.styleHref?(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:t.style,onClick:function(){return c("href_conversion",{target_href:t.styleHref,target_value:1})}}):null,t.colorHref?(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:t.color,onClick:function(){return c("href_conversion",{target_href:t.colorHref,target_value:1})}}),(0,o.createComponentVNode)(2,a.ColorBox,{verticalAlign:"top",width:"32px",height:"20px",color:t.color,style:{border:"1px solid #fff"}})]}):null,t.colorHref2?(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:t.color2,onClick:function(){return c("href_conversion",{target_href:t.colorHref2,target_value:1})}}),(0,o.createComponentVNode)(2,a.ColorBox,{verticalAlign:"top",width:"32px",height:"20px",color:t.color2,style:{border:"1px solid #fff"}})]}):null]},e)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Body Markings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Marking",onClick:function(){return c("href_conversion",{target_href:"marking_style",target_value:1})}}),(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",justify:"center",align:"center",children:Object.keys(d.markings).map((function(e){var t=d.markings[e];return(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"100%",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{mr:.2,fluid:!0,icon:"times",color:"red",onClick:function(){return c("href_conversion",{target_href:"marking_remove",target_value:e})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,backgroundColor:t,content:e,onClick:function(){return c("href_conversion",{target_href:"marking_color",target_value:e})}})})]})},e)}))})]})]})})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR: Record Not Found!"})})),"OOC Notes":(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.activeBodyRecord;return(0,o.createComponentVNode)(2,a.Section,{title:"Body OOC Notes (This is OOC!)",height:"100%",scrollable:!0,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("menu",{menu:"Specific Record"})}}),style:{"word-break":"break-all"},children:c&&c.booc||"ERROR: Body record not found!"})}))}},function(e,t,n){"use strict";t.__esModule=!0,t.BodyScanner=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=[["good","Alive"],["average","Unconscious"],["bad","DEAD"]],d=[["hasBorer","bad",function(e){return"Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended."}],["hasVirus","bad",function(e){return"Viral pathogen detected in blood stream."}],["blind","average",function(e){return"Cataracts detected."}],["colourblind","average",function(e){return"Photoreceptor abnormalities detected."}],["nearsighted","average",function(e){return"Retinal misalignment detected."}],["humanPrey","average",function(e){return"Foreign Humanoid(s) detected: "+e.humanPrey}],["livingPrey","average",function(e){return"Foreign Creature(s) detected: "+e.livingPrey}],["objectPrey","average",function(e){return"Foreign Object(s) detected: "+e.objectPrey}]],u=[["Respiratory","oxyLoss"],["Brain","brainLoss"],["Toxin","toxLoss"],["Radiation","radLoss"],["Brute","bruteLoss"],["Genetic","cloneLoss"],["Burn","fireLoss"],["Paralysis","paralysis"]],s={average:[.25,.5],bad:[.5,Infinity]},m=function(e,t){for(var n=[],o=0;o0?e.reduce((function(e,t){return null===e?t:(0,o.createFragment)([e,!!t&&(0,o.createComponentVNode)(2,a.Box,{children:t})],0)})):null},h=function(e){if(e>100){if(e<300)return"mild infection";if(e<400)return"mild infection+";if(e<500)return"mild infection++";if(e<700)return"acute infection";if(e<800)return"acute infection+";if(e<900)return"acute infection++";if(e>=900)return"septic"}return""};t.BodyScanner=function(e,t){var n=(0,i.useBackend)(t).data,r=n.occupied,a=n.occupant,l=void 0===a?{}:a,d=r?(0,o.createComponentVNode)(2,C,{occupant:l}):(0,o.createComponentVNode)(2,k);return(0,o.createComponentVNode)(2,c.Window,{width:690,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:d})})};var C=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,f,{occupant:t}),(0,o.createComponentVNode)(2,N,{occupant:t}),(0,o.createComponentVNode)(2,b,{occupant:t}),(0,o.createComponentVNode)(2,V,{occupant:t}),(0,o.createComponentVNode)(2,v,{organs:t.extOrgan}),(0,o.createComponentVNode)(2,_,{organs:t.intOrgan})]})},f=function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=d.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"user-slash",onClick:function(){return c("ejectify")},children:"Eject"}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return c("print_p")},children:"Print Report"})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u.maxHealth,value:u.health/u.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l[u.stat][0],children:l[u.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.bodyTempC,0)}),"\xb0C,\xa0",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.bodyTempF,0)}),"\xb0F"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Volume",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.blood.volume,0)})," units\xa0(",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:(0,r.round)(u.blood.percent,0)}),"%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Weight",children:(0,r.round)(d.occupant.weight)+"lbs, "+(0,r.round)(d.occupant.weight/2.20463)+"kgs"})]})})},N=function(e){var t=e.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Blood Reagents",children:t.reagents?(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:"Reagent"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:"Amount"})]}),t.reagents.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:[e.amount," Units ",e.overdose?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"OVERDOSING"}):null]})]},e.name)}))]}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"No Blood Reagents Detected"})}),(0,o.createComponentVNode)(2,a.Section,{title:"Stomach Reagents",children:t.ingested?(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:"Reagent"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:"Amount"})]}),t.ingested.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:[e.amount," Units ",e.overdose?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"OVERDOSING"}):null]})]},e.name)}))]}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"No Stomach Reagents Detected"})})],4)},b=function(e){var t=e.occupant,n=t.hasBorer||t.blind||t.colourblind||t.nearsighted||t.hasVirus;return(n=n||t.humanPrey||t.livingPrey||t.objectPrey)?(0,o.createComponentVNode)(2,a.Section,{title:"Abnormalities",children:d.map((function(e,n){if(t[e[0]])return(0,o.createComponentVNode)(2,a.Box,{color:e[1],bold:"bad"===e[1],children:e[2](t)})}))}):(0,o.createComponentVNode)(2,a.Section,{title:"Abnormalities",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No abnormalities found."})})},V=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Damage",children:(0,o.createComponentVNode)(2,a.Table,{children:m(u,(function(e,n,r){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{color:"label",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[e[0],":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:!!n&&n[0]+":"})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,g,{value:t[e[1]],marginBottom:r0&&"0.5rem",value:e.totalLoss/100,ranges:s,children:[(0,o.createComponentVNode)(2,a.Box,{float:"left",display:"inline",children:[!!e.bruteLoss&&(0,o.createComponentVNode)(2,a.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"bone"}),(0,r.round)(e.bruteLoss,0),"\xa0",(0,o.createComponentVNode)(2,a.Tooltip,{position:"top",content:"Brute damage"})]}),!!e.fireLoss&&(0,o.createComponentVNode)(2,a.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"fire"}),(0,r.round)(e.fireLoss,0),(0,o.createComponentVNode)(2,a.Tooltip,{position:"top",content:"Burn damage"})]})]}),(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:(0,r.round)(e.totalLoss,0)})]})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:"33%",children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",display:"inline",children:p([e.internalBleeding&&"Internal bleeding",!!e.status.bleeding&&"External bleeding",e.lungRuptured&&"Ruptured lung",e.destroyed&&"Destroyed",!!e.status.broken&&e.status.broken,h(e.germ_level),!!e.open&&"Open incision"])}),(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:[p([!!e.status.splinted&&"Splinted",!!e.status.robotic&&"Robotic",!!e.status.dead&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DEAD"})]),p(e.implants.map((function(e){return e.known?e.name:"Unknown object"})))]})]})]},t)}))]})})},_=function(e){return 0===e.organs.length?(0,o.createComponentVNode)(2,a.Section,{title:"Internal Organs",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"N/A"})}):(0,o.createComponentVNode)(2,a.Section,{title:"Internal Organs",children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Damage"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:"Injuries"})]}),e.organs.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{textTransform:"capitalize",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"33%",children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:e.maxHealth,value:e.damage/100,mt:t>0&&"0.5rem",ranges:s,children:(0,r.round)(e.damage,0)})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:"33%",children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",display:"inline",children:p([h(e.germ_level),!!e.inflamed&&"Appendicitis detected."])}),(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:p([1===e.robotic&&"Robotic",2===e.robotic&&"Assisted",!!e.dead&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DEAD"})])})]})]},t)}))]})})},k=function(){return(0,o.createComponentVNode)(2,a.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant detected."]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BombTester=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);n(24);t.BombTester=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.simulating,s=d.mode,m=d.tank1,p=d.tank1ref,h=d.tank2,C=d.tank2ref,f=d.canister,N=d.sim_canister_output;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:400,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:u&&(0,o.createComponentVNode)(2,c)||(0,o.createComponentVNode)(2,i.Section,{title:"Virtual Explosive Simulator v2.01",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("set_mode",{mode:1})},selected:1===s,children:"Single Tank"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("set_mode",{mode:2})},selected:2===s,children:"Transfer Valve"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("set_mode",{mode:3})},selected:3===s,children:"Canister"})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Primary Slot",children:m&&(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("remove_tank",{ref:p})},icon:"eject",children:m})||(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("add_tank",{slot:1})},icon:"upload",children:"Insert Tank"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Secondary Slot",children:h&&(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("remove_tank",{ref:C})},icon:"eject",children:h})||(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("add_tank",{slot:2})},icon:"upload",children:"Insert Tank"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Connected Canister",buttons:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return l("canister_scan")},icon:"search",children:"Scan"}),children:f&&(0,o.createComponentVNode)(2,i.Box,{color:"label",children:f})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No tank connected."})}),f&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Canister Release Pressure",children:(0,o.createComponentVNode)(2,i.Slider,{minValue:0,value:N,maxValue:1013.25,onDrag:function(e,t){return l("set_can_pressure",{pressure:t})}})})]}),(0,o.createComponentVNode)(2,i.Button,{mt:2,color:"red",icon:"bomb",fontSize:2,onClick:function(){return l("start_sim")},fluid:!0,children:"Begin Simulation"})]})})})};var c=function(e){var t,n;function r(t){var n;n=e.call(this,t)||this;var o=Math.random()>.5,r=Math.random()>.5;return n.state={x:o?340:0,y:r?205:0,reverseX:!1,reverseY:!1},n.process=setInterval((function(){n.setState((function(e){var t=Object.assign({},e);return t.reverseX?t.x-2<-5?(t.reverseX=!1,t.x+=2):t.x-=2:t.x+2>340?(t.reverseX=!0,t.x-=2):t.x+=2,t.reverseY?t.y-2<-20?(t.reverseY=!1,t.y+=2):t.y-=2:t.y+2>205?(t.reverseY=!0,t.y-=2):t.y+=2,t}))}),1),n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=r.prototype;return a.componentWillUnmount=function(){clearInterval(this.process)},a.render=function(){var e=this.state,t={position:"relative",left:e.x+"px",top:e.y+"px"};return(0,o.createComponentVNode)(2,i.Section,{title:"Simulation in progress!",fill:!0,children:(0,o.createComponentVNode)(2,i.Box,{position:"absolute",style:{overflow:"hidden",width:"100%",height:"100%"},children:(0,o.createComponentVNode)(2,i.Icon,{style:t,name:"bomb",size:10,color:"red"})})})},r}(o.Component)},function(e,t,n){"use strict";t.__esModule=!0,t.BotanyEditor=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.BotanyEditor=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.activity,u=l.degradation,s=l.disk,m=l.sourceName,p=l.locus,h=l.loaded;return d?(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Scanning..."})})}):(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Buffered Genetic Data",children:s&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Source",children:m}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gene Decay",children:[u,"%"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Locus",children:p})]}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"eject",onClick:function(){return c("eject_disk")},children:"Eject Loaded Disk"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No disk loaded."})}),(0,o.createComponentVNode)(2,i.Section,{title:"Loaded Material",children:h&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:h})}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"cog",onClick:function(){return c("apply_gene")},children:"Apply Gene Mods"}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"eject",onClick:function(){return c("eject_packet")},children:"Eject Target"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No target seed packet loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BotanyIsolator=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.BotanyIsolator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.geneMasks,u=l.activity,s=l.degradation,m=l.disk,p=l.loaded,h=l.hasGenetics,C=l.sourceName;return u?(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Scanning..."})})}):(0,o.createComponentVNode)(2,a.Window,{width:470,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Buffered Genetic Data",children:h&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Source",children:C}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gene decay",children:[s,"%"]}),m&&d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.mask,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:"download",onClick:function(){return c("get_gene",{get_gene:e.tag})},children:"Extract"})},e.mask)}))||null]}),m&&(0,o.createComponentVNode)(2,i.Box,{mt:1,children:[(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("eject_disk")},children:"Eject Loaded Disk"}),(0,o.createComponentVNode)(2,i.Button,{icon:"trash",onClick:function(){return c("clear_buffer")},children:"Clear Genetic Buffer"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{mt:1,warning:!0,children:"No disk inserted."})]})||(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No Data Buffered."}),m&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("eject_disk")},children:"Eject Loaded Disk"})||(0,o.createComponentVNode)(2,i.NoticeBox,{mt:1,warning:!0,children:"No disk inserted."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Loaded Material",children:p&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Packet Loaded",children:p})}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"cog",onClick:function(){return c("scan_genome")},children:"Process Genome"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("eject_packet")},children:"Eject Packet"})]})||(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:"No packet loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.BrigTimer=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:138,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Cell Timer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:u.timing?"Stop":"Start",selected:u.timing,onClick:function(){return d(u.timing?"stop":"start")}}),u.flash_found&&(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.flash_charging?"Recharging":"Flash",disabled:u.flash_charging,onClick:function(){return d("flash")}})||null],0),children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,fluid:!0,value:u.time_left/10,minValue:0,maxValue:u.max_time_left/10,format:function(e){return(0,l.formatTime)((0,r.round)(e))},onDrag:function(e,t){return d("time",{time:t})}}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"hourglass-start",content:"Add "+(0,l.formatTime)(u.preset_short/10),onClick:function(){return d("preset",{preset:"short"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"hourglass-start",content:"Add "+(0,l.formatTime)(u.preset_medium/10),onClick:function(){return d("preset",{preset:"medium"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"hourglass-start",content:"Add "+(0,l.formatTime)(u.preset_long/10),onClick:function(){return d("preset",{preset:"long"})}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Canister=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(20),l=n(3);t.Canister=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.connected,m=u.can_relabel,p=u.pressure,h=u.releasePressure,C=u.defaultReleasePressure,f=u.minReleasePressure,N=u.maxReleasePressure,b=u.valveOpen,V=u.holding;return(0,o.createComponentVNode)(2,l.Window,{width:360,height:242,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Canister",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",disabled:!m,content:"Relabel",onClick:function(){return d("relabel")}}),children:(0,o.createComponentVNode)(2,a.LabeledControls,{children:[(0,o.createComponentVNode)(2,a.LabeledControls.Item,{minWidth:"66px",label:"Tank Pressure",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:p,format:function(e){return e<1e4?(0,r.toFixed)(e)+" kPa":(0,c.formatSiUnit)(1e3*e,1,"Pa")}})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Regulator",children:(0,o.createComponentVNode)(2,a.Box,{position:"relative",left:"-8px",children:[(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!b&&"yellow",value:h,unit:"kPa",minValue:f,maxValue:N,stepPixelSize:1,onDrag:function(e,t){return d("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-20px",color:"transparent",icon:"fast-forward",onClick:function(){return d("pressure",{pressure:N})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,position:"absolute",top:"16px",right:"-20px",color:"transparent",icon:"undo",onClick:function(){return d("pressure",{pressure:C})}})]})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Valve",children:(0,o.createComponentVNode)(2,a.Button,{my:.5,width:"50px",lineHeight:2,fontSize:"11px",color:b?V?"caution":"danger":null,content:b?"Open":"Closed",onClick:function(){return d("valve")}})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{mr:1,label:"Port",children:(0,o.createComponentVNode)(2,a.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{size:1.25,name:s?"plug":"times",color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Tooltip,{content:s?"Connected":"Disconnected",position:"top"})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",buttons:!!V&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",color:b&&"danger",content:"Eject",onClick:function(){return d("eject")}}),children:[!!V&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:V.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V.pressure})," kPa"]})]}),!V&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Holding Tank"})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CasinoPrizeDispenserCh=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3);n(24);var l={Alphabetical:function(e,t){return e-t},"By availability":function(e,t){return-(e.affordable-t.affordable)},"By price":function(e,t){return e.price-t.price}};t.CasinoPrizeDispenserCh=function(e,t){var n=(0,i.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",scrollable:!0,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,d)],4)})})};var d=function(e,t){var n=(0,i.useBackend)(t),d=(n.act,n.data),u=d.points,m=d.items,p=(0,i.useLocalState)(t,"search",""),h=p[0],C=(p[1],(0,i.useLocalState)(t,"sort","Alphabetical")),f=C[0],N=(C[1],(0,i.useLocalState)(t,"descending",!1)),b=N[0],V=(N[1],(0,r.createSearch)(h,(function(e){return e[0]}))),g=!1,v=Object.entries(m).map((function(e,t){var n=Object.entries(e[1]).filter(V).map((function(e){return e[1].affordable=u>=e[1].price,e[1]})).sort(l[f]);if(0!==n.length)return b&&(n=n.reverse()),g=!0,(0,o.createComponentVNode)(2,s,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,a.Section,{onClick:function(e){return(0,c.refocusLayout)()},children:g?v:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No items matching your criteria was found!"})})})},u=function(e,t){var n=(0,i.useLocalState)(t,"search",""),r=(n[0],n[1]),c=(0,i.useLocalState)(t,"sort",""),d=(c[0],c[1]),u=(0,i.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:"Alphabetical",options:Object.keys(l),width:"100%",lineHeight:"19px",onSelected:function(e){return d(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"arrow-down":"arrow-up",height:"19px",tooltip:s?"Descending order":"Ascending order",tooltipPosition:"bottom-left",ml:"0.5rem",onClick:function(){return m(!s)}})})]})})},s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.title),l=e.items,d=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Collapsible,Object.assign({open:!0,title:c},d,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,a.Button,{content:e.price.toLocaleString("en-US"),width:"15%",textAlign:"center",style:{float:"right"},onClick:function(){return r("purchase",{cat:c,name:e.name,price:e.price,restriction:e.restriction})}}),(0,o.createComponentVNode)(2,a.Box,{style:{clear:"both"}})]},e.name)}))})))}},function(e,t,n){"use strict";t.__esModule=!0,t.CharacterDirectory=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=function(e){switch(e){case"Unset":return"label";case"Pred":return"red";case"Prey":return"blue";case"Switch":return"purple";case"Non-Vore":return"green"}};t.CharacterDirectory=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.personalVisibility,m=u.personalTag,p=u.personalErpTag,h=u.personalEventTag,C=(0,r.useLocalState)(t,"overlay",null),f=C[0];C[1];return(0,o.createComponentVNode)(2,a.Window,{width:640,height:480,resizeable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:f&&(0,o.createComponentVNode)(2,l)||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:s?"Shown":"Not Shown",onClick:function(){return c("setVisible")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Vore Tag",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:m,onClick:function(){return c("setTag")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ERP Tag",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:p,onClick:function(){return c("setErpTag")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Event Pref",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:h,onClick:function(){return c("setEventTag")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Advertisement",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Edit Ad",onClick:function(){return c("editAd")}})})]})}),(0,o.createComponentVNode)(2,d)],4)})})};var l=function(e,t){var n=(0,r.useLocalState)(t,"overlay",null),a=n[0],l=n[1];return(0,o.createComponentVNode)(2,i.Section,{title:a.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back",onClick:function(){return l(null)}}),children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Vore Tag",children:(0,o.createComponentVNode)(2,i.Box,{p:1,backgroundColor:c(a.tag),children:a.tag})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"ERP Tag",children:(0,o.createComponentVNode)(2,i.Box,{children:a.erptag})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Event Pref",children:(0,o.createComponentVNode)(2,i.Box,{children:a.eventtag})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Character Ad",children:(0,o.createComponentVNode)(2,i.Box,{style:{"word-break":"break-all"},children:a.character_ad?a.character_ad.split("\n").map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:e},t)})):"Unset."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"OOC Notes",children:(0,o.createComponentVNode)(2,i.Box,{style:{"word-break":"break-all"},children:a.ooc_notes?a.ooc_notes.split("\n").map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:e},t)})):"Unset."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Flavor Text",children:(0,o.createComponentVNode)(2,i.Box,{style:{"word-break":"break-all"},children:a.flavor_text?a.flavor_text.split("\n").map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:e},t)})):"Unset."})})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.directory,d=(0,r.useLocalState)(t,"sortId","name"),s=d[0],m=(d[1],(0,r.useLocalState)(t,"sortOrder","name")),p=m[0],h=(m[1],(0,r.useLocalState)(t,"overlay",null)),C=(h[0],h[1]);return(0,o.createComponentVNode)(2,i.Section,{title:"Directory",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Refresh",onClick:function(){return a("refresh")}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,u,{id:"name",children:"Name"}),(0,o.createComponentVNode)(2,u,{id:"tag",children:"Vore Tag"}),(0,o.createComponentVNode)(2,u,{id:"erptag",children:"ERP Tag"}),(0,o.createComponentVNode)(2,u,{id:"eventtag",children:"Event Pref"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:"View"})]}),l.sort((function(e,t){var n=p?1:-1;return e[s].localeCompare(t[s])*n})).map((function(e,t){return(0,o.createComponentVNode)(2,i.Table.Row,{backgroundColor:c(e.tag),children:[(0,o.createComponentVNode)(2,i.Table.Cell,{p:1,children:e.name}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.tag}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.erptag}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.eventtag}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return C(e)},color:"transparent",icon:"sticky-note",mr:1,content:"View"})})]},t)}))]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data,e.id),c=e.children,l=(0,r.useLocalState)(t,"sortId","name"),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"sortOrder","name"),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{width:"100%",color:d!==a&&"transparent",onClick:function(){d===a?p(!m):(u(a),p(!0))},children:[c,d===a&&(0,o.createComponentVNode)(2,i.Icon,{name:m?"sort-up":"sort-down",ml:"0.25rem;"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(1),i=n(2),a=n(188),c=n(3),l=[5,10,20,30,40,60],d=[1,5,10];t.ChemDispenser=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:390,height:655,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.amount;return(0,o.createComponentVNode)(2,i.Section,{title:"Settings",flex:"content",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Dispense",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"row",wrap:"wrap",spacing:"1",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",children:(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",selected:c===e,content:e+"u",m:"0",fluid:!0,onClick:function(){return a("amount",{amount:e})}})},t)}))})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Custom Amount",children:(0,o.createComponentVNode)(2,i.Slider,{step:1,stepPixelSize:5,value:c,minValue:1,maxValue:120,onDrag:function(e,t){return a("amount",{amount:t})}})})]})})},s=function(e,t){for(var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.chemicals,d=void 0===l?[]:l,u=[],s=0;s<(d.length+1)%3;s++)u.push(!0);return(0,o.createComponentVNode)(2,i.Section,{title:c.glass?"Drink Dispenser":"Chemical Dispenser",flexGrow:"1",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"row",wrap:"wrap",height:"100%",spacingPrecise:"2",align:"flex-start",alignContent:"flex-start",children:[d.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"40%",height:"20px",children:(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",width:"100%",height:"100%",align:"flex-start",content:e.title+" ("+e.amount+")",onClick:function(){return a("dispense",{reagent:e.id})}})},t)})),u.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"25%",height:"20px"},t)}))]})})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,u=l.isBeakerLoaded,s=l.beakerCurrentVolume,m=l.beakerMaxVolume,p=l.beakerContents,h=void 0===p?[]:p;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",flex:"content",minHeight:"25%",buttons:(0,o.createComponentVNode)(2,i.Box,{children:[!!u&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mr:2,children:[s," / ",m," units"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u,onClick:function(){return c("ejectBeaker")}})]}),children:(0,o.createComponentVNode)(2,a.BeakerContents,{beakerLoaded:u,beakerContents:h,buttons:function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{content:"Isolate",icon:"compress-arrows-alt",onClick:function(){return c("remove",{reagent:e.id,amount:-1})}}),d.map((function(t,n){return(0,o.createComponentVNode)(2,i.Button,{content:t,onClick:function(){return c("remove",{reagent:e.id,amount:t})}},n)})),(0,o.createComponentVNode)(2,i.Button,{content:"ALL",onClick:function(){return c("remove",{reagent:e.id,amount:e.volume})}})],0)}})})}},function(e,t,n){"use strict";e.exports=n(500)()},function(e,t,n){"use strict";var o=n(501);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,a){if(a!==o){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(188),l=n(45),d=[1,5,10,30,60];t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data,i=n.condi,c=n.beaker,d=n.beaker_reagents,p=void 0===d?[]:d,h=n.buffer_reagents,C=void 0===h?[]:h,f=n.mode;return(0,o.createComponentVNode)(2,a.Window,{width:575,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,l.ComplexModal),(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,u,{beaker:c,beakerReagents:p,bufferNonEmpty:C.length>0}),(0,o.createComponentVNode)(2,s,{mode:f,bufferReagents:C}),(0,o.createComponentVNode)(2,m,{isCondiment:i,bufferNonEmpty:C.length>0})]})]})};var u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,u=(n.data,e.beaker),s=e.beakerReagents,m=e.bufferNonEmpty;return(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:m?(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"eject",disabled:!u,content:"Eject and Clear Buffer",onClick:function(){return a("eject")}}):(0,o.createComponentVNode)(2,i.Button,{icon:"eject",disabled:!u,content:"Eject and Clear Buffer",onClick:function(){return a("eject")}}),children:u?(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:!0,beakerContents:s,buttons:function(e,n){return(0,o.createComponentVNode)(2,i.Box,{mb:n0?(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:!0,beakerContents:s,buttons:function(e,r){return(0,o.createComponentVNode)(2,i.Box,{mb:r0?l.desc:"N/A"}),l.blood_type&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood type",children:l.blood_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood DNA",className:"LabeledList__breakContents",children:l.blood_dna})],4),!c.condi&&(0,o.createComponentVNode)(2,i.Button,{icon:c.printing?"spinner":"print",disabled:c.printing,iconSpin:!!c.printing,ml:"0.5rem",content:"Print",onClick:function(){return a("print",{idx:l.idx,beaker:e.args.beaker})}})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.ClawMachine=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ClawMachine=function(e,t){var n,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=(d.wintick,d.instructions),s=d.gameStatus,m=d.winscreen;return"CLAWMACHINE_NEW"===s?n=(0,o.createComponentVNode)(2,i.Box,{align:"center",children:[(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),(0,o.createVNode)(1,"b",null,"Pay to Play!",16)," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),u,(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Start",onClick:function(){return l("newgame")}})]}):"CLAWMACHINE_END"===s?n=(0,o.createComponentVNode)(2,i.Box,{align:"center",children:[(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),(0,o.createVNode)(1,"b",null,"Thank you for playing!",16)," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr"),m,(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Close",onClick:function(){return l("return")}})]}):"CLAWMACHINE_ON"===s&&(n=(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[-Infinity,0],average:[1,7],good:[8,Infinity]},value:d.wintick,minValue:0,maxValue:10})})}),(0,o.createComponentVNode)(2,i.Box,{align:"center",children:[(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br"),u,(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"hr")," ",(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Up",onClick:function(){return l("pointless")}}),(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Left",onClick:function(){return l("pointless")}}),(0,o.createComponentVNode)(2,i.Button,{content:"Right",onClick:function(){return l("pointless")}}),(0,o.createVNode)(1,"br")," ",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{content:"Down",onClick:function(){return l("pointless")}})]})]})),(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createVNode)(1,"center",null,n,0)})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cleanbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Cleanbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.locked,m=l.version,p=l.blood,h=(l.patrol,l.vocal),C=l.wet_floors,f=l.spray_blood,N=l.rgbpanel,b=l.red_switch,V=l.green_switch,g=l.blue_switch;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Station Cleaner "+m,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("start")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:s?"good":"bad",children:s?"Locked":"Unlocked"})]})}),!s&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:p?"toggle-on":"toggle-off",selected:p,onClick:function(){return c("blood")},children:p?"Clean":"Ignore"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Speaker",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:h?"toggle-on":"toggle-off",selected:h,onClick:function(){return c("vocal")},children:h?"On":"Off"})})]})})||null,!s&&u&&(0,o.createComponentVNode)(2,i.Section,{title:"Maintenance Panel",children:N&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{fontSize:5.39,icon:b?"toggle-on":"toggle-off",backgroundColor:b?"red":"maroon",onClick:function(){return c("red_switch")}}),(0,o.createComponentVNode)(2,i.Button,{fontSize:5.39,icon:V?"toggle-on":"toggle-off",backgroundColor:V?"green":"darkgreen",onClick:function(){return c("green_switch")}}),(0,o.createComponentVNode)(2,i.Button,{fontSize:5.39,icon:g?"toggle-on":"toggle-off",backgroundColor:g?"blue":"darkblue",onClick:function(){return c("blue_switch")}})]})||(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Odd Looking Screw Twiddled",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,selected:C,onClick:function(){return c("wet_floors")},icon:"screwdriver",children:C?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Weird Button Pressed",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"brown",selected:f,onClick:function(){return c("spray_blood")},icon:"screwdriver",children:f?"Yes":"No"})})]})})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CloningConsole=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(28),l=n(45),d=n(3),u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,l=n.data,d=e.args,u=d.activerecord,s=d.realname,m=d.health,p=d.unidentity,h=d.strucenzymes,C=m.split(" - ");return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:"Records of "+s,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:C.length>1?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.oxy,display:"inline",children:C[0]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.toxin,display:"inline",children:C[2]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.brute,display:"inline",children:C[3]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,a.Box,{color:c.COLORS.damageType.burn,display:"inline",children:C[1]})],4):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Unknown"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"UI",className:"LabeledList__breakContents",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"SE",className:"LabeledList__breakContents",children:h}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk",children:[(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!l.disk,icon:"arrow-circle-down",content:"Import",onClick:function(){return r("disk",{option:"load"})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export UI",onClick:function(){return r("disk",{option:"save",savetype:"ui"})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export UI and UE",onClick:function(){return r("disk",{option:"save",savetype:"ue"})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export SE",onClick:function(){return r("disk",{option:"save",savetype:"se"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:!l.podready,icon:"user-plus",content:"Clone",onClick:function(){return r("clone",{ref:u})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Delete",onClick:function(){return r("del_rec")}})]})]})})};t.CloningConsole=function(e,t){var n=(0,i.useBackend)(t);n.act,n.data.menu;return(0,l.modalRegisterBodyOverride)("view_rec",u),(0,o.createComponentVNode)(2,d.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,l.ComplexModal,{maxWidth:"75%",maxHeight:"75%"}),(0,o.createComponentVNode)(2,d.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,C),(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,flexGrow:"1",children:(0,o.createComponentVNode)(2,m)})]})]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.menu;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,icon:"home",onClick:function(){return r("menu",{num:1})},children:"Main"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,icon:"folder",onClick:function(){return r("menu",{num:2})},children:"Records"})]})},m=function(e,t){var n,r=(0,i.useBackend)(t).data.menu;return 1===r?n=(0,o.createComponentVNode)(2,p):2===r&&(n=(0,o.createComponentVNode)(2,h)),n},p=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.loading,u=l.scantemp,s=l.occupant,m=l.locked,p=l.can_brainscan,h=l.scan_mode,C=l.numberofpods,f=l.pods,N=l.selected_pod,b=m&&!!s;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{display:"inline",color:"label",children:"Scanner Lock:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s,selected:b,icon:b?"toggle-on":"toggle-off",content:b?"Engaged":"Disengaged",onClick:function(){return c("lock")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:b||!s,icon:"user-slash",content:"Eject Occupant",onClick:function(){return c("eject")}})],4),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:d?(0,o.createComponentVNode)(2,a.Box,{color:"average",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"spinner",spin:!0}),"\xa0 Scanning..."]}):(0,o.createComponentVNode)(2,a.Box,{color:u.color,children:u.text})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"brain":"male",content:h?"Brain":"Body",onClick:function(){return c("toggle_mode")}})})]}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s||d,icon:"user",content:"Scan Occupant",mt:"0.5rem",mb:"0",onClick:function(){return c("scan")}})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Pods",level:"2",children:C?f.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:e.progress/100,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[-Infinity,.25]},mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,a.Button,{selected:N===e.pod,icon:N===e.pod&&"check",content:"Select",mt:"0.5rem",onClick:function(){return c("selectpod",{ref:e.pod})}}),(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"pod_"+e.status+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:["Pod #",t+1]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.biomass>=150?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.biomass>=150?"circle":"circle-o"}),"\xa0",e.biomass]}),n]},t)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No pods detected. Unable to clone."})})],4)},h=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.records;return c.length?(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{icon:"user",mb:"0.5rem",content:e.realname,onClick:function(){return r("view_rec",{ref:e.record})}},t)}))}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No records found."]})})},C=function(e,t){var n,r=(0,i.useBackend)(t),c=r.act,l=r.data.temp;if(l&&l.text&&!(l.text.length<=0)){var d=((n={})[l.style]=!0,n);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.NoticeBox,Object.assign({},d,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",children:l.text}),(0,o.createComponentVNode)(2,a.Button,{icon:"times-circle",float:"right",onClick:function(){return c("cleartemp")}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]})))}},f=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.scanner,d=c.numberofpods,u=c.autoallowed,s=c.autoprocess,m=c.disk;return(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{display:"inline",color:"label",children:"Auto-processing:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{selected:s,icon:s?"toggle-on":"toggle-off",content:s?"Enabled":"Disabled",onClick:function(){return r("autoprocess",{on:s?0:1})}})],4),(0,o.createComponentVNode)(2,a.Button,{disabled:!m,icon:"eject",content:"Eject Disk",onClick:function(){return r("disk",{option:"eject"})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanner",children:l?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Connected"}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not connected!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pods",children:d?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[d," connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ColorMate=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ColorMate=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.items,u=l.activecolor,s=Math.min(270+15*d.length,600);return(0,o.createComponentVNode)(2,a.Window,{width:300,height:s,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:d.length&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Paint",children:(0,o.createComponentVNode)(2,i.Flex,{justify:"center",align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",children:(0,o.createComponentVNode)(2,i.Box,{backgroundColor:u,width:"120px",height:"120px"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50% ",children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eye-dropper",onClick:function(){return c("select")},children:"Select Color"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"fill-drip",onClick:function(){return c("paint")},children:"Paint Items"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"tint-slash",onClick:function(){return c("clear")},children:"Remove Paintjob"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",onClick:function(){return c("eject")},children:"Eject Items"})]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Items",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:["#",t+1,": ",e]},t)}))})],4)||(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No items inserted."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Communicator=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2),l=n(3),d=n(94),u={};t.Communicator=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=r.currentTab,d=r.video_comm,C=(r.mapRef,(0,a.useLocalState)(t,"videoSetting",0)),f=C[0],N=C[1];return(0,o.createComponentVNode)(2,l.Window,{width:475,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[d&&(0,o.createComponentVNode)(2,s,{videoSetting:f,setVideoSetting:N}),(!d||0!==f)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,c.Box,{height:"88%",mb:1,style:{"overflow-y":"auto"},children:u[i]||(0,o.createComponentVNode)(2,m)}),(0,o.createComponentVNode)(2,h,{videoSetting:f,setVideoSetting:N})],4)]})})};var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(i.video_comm,i.mapRef),d=e.videoSetting,u=e.setVideoSetting;return 0===d?(0,o.createComponentVNode)(2,c.Box,{width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,c.ByondUi,{width:"100%",height:"95%",params:{id:l,type:"map"}}),(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",spacing:1,mt:.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,icon:"window-minimize",onClick:function(){return u(1)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"video-slash",onClick:function(){return r("endvideo")}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"phone-slash",onClick:function(){return r("hang_up")}})})]})]}):1===d?(0,o.createComponentVNode)(2,c.Box,{style:{position:"absolute",right:"5px",bottom:"50px","z-index":1},children:[(0,o.createComponentVNode)(2,c.Section,{p:0,m:0,children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,icon:"window-minimize",onClick:function(){return u(2)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,icon:"window-maximize",onClick:function(){return u(0)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"video-slash",onClick:function(){return r("endvideo")}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Button,{textAlign:"center",fluid:!0,fontSize:1.5,color:"bad",icon:"phone-slash",onClick:function(){return r("hang_up")}})})]})}),(0,o.createComponentVNode)(2,c.ByondUi,{width:"200px",height:"200px",params:{id:l,type:"map"}})]}):null},m=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data.currentTab);return(0,o.createComponentVNode)(2,c.Section,{title:"Error!",children:["You tried to access tab #",r,", but there was no template defined!"]})},p=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),l=r.time,d=r.connectionStatus,u=r.owner,s=r.occupation;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{color:"average",children:l}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Icon,{color:1===d?"good":"bad",name:1===d?"signal":"exclamation-triangle"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{color:"average",children:(0,i.decodeHtmlEntities)(u)}),(0,o.createComponentVNode)(2,c.Flex.Item,{color:"average",children:(0,i.decodeHtmlEntities)(s)})]})})},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.flashlight,l=e.videoSetting,d=e.setVideoSetting;return(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2===l?"60%":"80%",children:(0,o.createComponentVNode)(2,c.Button,{p:1,fluid:!0,icon:"home",iconSize:2,textAlign:"center",onClick:function(){return r("switch_tab",{switch_tab:1})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"20%",children:(0,o.createComponentVNode)(2,c.Button,{icon:"lightbulb",iconSize:2,p:1,fluid:!0,textAlign:"center",selected:i,tooltip:"Flashlight",tooltipPosition:"top",onClick:function(){return r("Light")}})}),2===l&&(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"20%",children:(0,o.createComponentVNode)(2,c.Button,{icon:"video",iconSize:2,p:1,fluid:!0,textAlign:"center",tooltip:"Open Video",tooltipPosition:"top",onClick:function(){return d(1)}})})]})},C=function(e,t){var n=(0,a.useBackend)(t).data,o=n.voice_mobs,r=n.communicating,i=n.requestsReceived,c=n.invitesSent,l=n.video_comm;return!("Phone"!==e||!(o.length||r.length||i.length||c.length||l))};u[1]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.homeScreen;return(0,o.createComponentVNode)(2,c.Flex,{mt:2,wrap:"wrap",align:"center",justify:"center",children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"25%",textAlign:"center",mb:2,children:[(0,o.createComponentVNode)(2,c.Button,{style:{"border-radius":"10%",border:"1px solid #000"},width:"64px",height:"64px",position:"relative",onClick:function(){return r("switch_tab",{switch_tab:e.number})},children:(0,o.createComponentVNode)(2,c.Icon,{spin:C(e.module,t),color:C(e.module,t)?"bad":null,name:e.icon,position:"absolute",size:3,top:"25%",left:"25%"})}),(0,o.createComponentVNode)(2,c.Box,{children:e.module})]},e.number)}))})}));var f=function(e,t){for(var n=(0,a.useBackend)(t),r=n.act,i=n.data.targetAddress,l=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"].map((function(e){return(0,o.createComponentVNode)(2,c.Button,{content:e,fontSize:2,fluid:!0,onClick:function(){return r("add_hex",{add_hex:e})}},e)})),d=[],u=0;un?t.length>n?t.slice(0,n)+"...":t:e+t},V=function(e,t,n,o){if(n<0||n>o.length)return N(e,t)?"TinderMessage_First_Sent":"TinderMessage_First_Received";var r=N(e,t),i=N(o[n],t);return r&&i?"TinderMessage_Subsequent_Sent":r||i?r?"TinderMessage_First_Sent":"TinderMessage_First_Received":"TinderMessage_Subsequent_Received"};u[40]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.targetAddressName,u=l.targetAddress,s=l.imList,m=(0,a.useLocalState)(t,"clipboardMode",!1),p=m[0],h=m[1];return p?(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,style:{"white-space":"nowrap","overflow-x":"hidden"},width:"90%",children:b("Conversation with ",(0,i.decodeHtmlEntities)(d),30)}),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:p,tooltip:"Exit Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return h(!p)}}),height:"100%",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"95%","overflow-y":"auto"},children:s.map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{className:N(e,u)?"ClassicMessage_Sent":"ClassicMessage_Received",children:[N(e,u)?"You":"Them",": ",e.im]},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return r("message",{message:u})},content:"Message"})]}):(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,style:{"white-space":"nowrap","overflow-x":"hidden"},width:"100%",children:b("Conversation with ",(0,i.decodeHtmlEntities)(d),30)}),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:p,tooltip:"Enter Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return h(!p)}}),height:"100%",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"95%","overflow-y":"auto"},children:s.map((function(e,t,n){return(0,o.createComponentVNode)(2,c.Box,{textAlign:N(e,u)?"right":"left",mb:1,children:(0,o.createComponentVNode)(2,c.Box,{maxWidth:"75%",className:V(e,u,t-1,n),inline:!0,children:(0,i.decodeHtmlEntities)(e.im)})},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return r("message",{message:u})},content:"Message"})]})}));var g=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data.target_feed;return(0,o.createComponentVNode)(2,c.Section,{title:(0,i.decodeHtmlEntities)(l.name)+" by "+(0,i.decodeHtmlEntities)(l.author),level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Back",icon:"chevron-up",onClick:function(){return r("newsfeed",{newsfeed:null})}}),children:l.messages.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{children:["- ",(0,i.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/png;base64,"+e.img}),(0,i.decodeHtmlEntities)(e.caption)||null]}),(0,o.createComponentVNode)(2,c.Box,{color:"grey",children:["[",e.message_type," by ",(0,i.decodeHtmlEntities)(e.author)," - ",e.time_stamp,"]"]})]},e.ref)}))})},v=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.feeds,u=l.latest_news;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Recent News",level:2,children:(0,o.createComponentVNode)(2,c.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{mb:2,children:[(0,o.createVNode)(1,"h5",null,[(0,i.decodeHtmlEntities)(e.channel),(0,o.createComponentVNode)(2,c.Button,{ml:1,icon:"chevron-up",onClick:function(){return r("newsfeed",{newsfeed:e.index})},content:"Go to"})],0),"- ",(0,i.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,c.Box,{children:["[image omitted, view story for more details]",e.caption||null]}),(0,o.createComponentVNode)(2,c.Box,{fontSize:.9,children:["[",e.message_type," by ",(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"average",children:e.author})," - ",e.time_stamp,"]"]})]},e.index)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"News Feeds",level:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"chevron-up",onClick:function(){return r("newsfeed",{newsfeed:e.index})},content:e.name},e.index)}))})],4)};u[5]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=r.feeds,l=r.target_feed;return(0,o.createComponentVNode)(2,c.Section,{title:"News",stretchContents:!0,height:"100%",children:!i.length&&(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Error: No newsfeeds available. Please try again later."})||l&&(0,o.createComponentVNode)(2,g)||(0,o.createComponentVNode)(2,v)})}));u[6]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.note;return(0,o.createComponentVNode)(2,c.Section,{title:"Note Keeper",height:"100%",stretchContents:!0,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"pen",onClick:function(){return r("edit")},content:"Edit Notes"}),children:(0,o.createComponentVNode)(2,c.Section,{color:"average",width:"100%",height:"100%",style:{"word-break":"break-all","overflow-y":"auto"},children:i})})}));u[7]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),l=(n.act,n.data),d=l.aircontents,u=l.weather;return(0,o.createComponentVNode)(2,c.Section,{title:"Weather",children:[(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Current Conditions",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,r.filter)((function(e){return"0"!==e.val||"Pressure"===e.entry||"Temperature"===e.entry}))(d).map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.entry,color:(t=e.val,n=e.bad_low,r=e.poor_low,a=e.poor_high,l=e.bad_high,ta?"average":t>l?"bad":"good"),children:[e.val,(0,i.decodeHtmlEntities)(e.units)]},e.entry);var t,n,r,a,l}))})}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Weather Reports",children:!!u.length&&(0,o.createComponentVNode)(2,c.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.Planet,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Time",children:e.Time}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Weather",children:(0,i.toTitleCase)(e.Weather)}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:["Current: ",e.Temperature.toFixed(),"\xb0C | High: ",e.High.toFixed(),"\xb0C | Low: ",e.Low.toFixed(),"\xb0C"]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Wind Direction",children:e.WindDir}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Wind Speed",children:e.WindSpeed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Forecast",children:(0,i.decodeHtmlEntities)(e.Forecast)})]})},e.Planet)}))})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No weather reports available. Please check back later."})})]})})),u[8]=(0,o.createComponentVNode)(2,d.CrewManifestContent);u[9]=(0,o.createComponentVNode)(2,(function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.owner,u=l.occupation,s=l.connectionStatus,m=l.address,p=l.visible,h=l.ring,C=l.selfie_mode;return(0,o.createComponentVNode)(2,c.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Owner",children:(0,o.createComponentVNode)(2,c.Button,{icon:"pen",fluid:!0,content:(0,i.decodeHtmlEntities)(d),onClick:function(){return r("rename")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Camera Mode",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:C?"Front-facing Camera":"Rear-facing Camera",onClick:function(){return r("selfie_mode")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Occupation",children:(0,i.decodeHtmlEntities)(u)}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Connection",children:1===s?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Connected"}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Disconnected"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Device EPv2 Address",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:p,selected:p,fluid:!0,content:p?"This device can be seen by other devices.":"This device is invisible to other devices.",onClick:function(){return r("toggle_visibility")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Ringer",children:(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:h,selected:h,fluid:!0,content:h?"Ringer on.":"Ringer off.",onClick:function(){return r("toggle_ringer")}})})]})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(0),r=(n(6),n(1)),i=n(2),a=n(3);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,a.Window,{title:"Personal Computer Vendor",width:500,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,c),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act;n.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,i.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,i.Box,{mt:3,children:(0,o.createComponentVNode)(2,i.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return a("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,i.Grid.Column,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return a("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data;return(0,o.createComponentVNode)(2,i.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,i.Box,{bold:!0,color:"good",children:[c.totalprice,"\u20ae"]}),children:[(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,i.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_battery,onClick:function(){return a("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Upgraded",selected:2===c.hw_battery,onClick:function(){return a("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:3===c.hw_battery,onClick:function(){return a("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_disk,onClick:function(){return a("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Upgraded",selected:2===c.hw_disk,onClick:function(){return a("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:3===c.hw_disk,onClick:function(){return a("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_netcard,onClick:function(){return a("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_netcard,onClick:function(){return a("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:2===c.hw_netcard,onClick:function(){return a("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_nanoprint,onClick:function(){return a("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_nanoprint,onClick:function(){return a("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,i.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_card,onClick:function(){return a("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_card,onClick:function(){return a("hw_card",{card:"1"})}})})]}),2!==c.devtype&&(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_cpu,onClick:function(){return a("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Advanced",selected:2===c.hw_cpu,onClick:function(){return a("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,i.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,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"None",selected:0===c.hw_tesla,onClick:function(){return a("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{content:"Standard",selected:1===c.hw_tesla,onClick:function(){return a("hw_tesla",{tesla:"1"})}})})]})]}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return a("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,i.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,i.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:"Please swipe your ID now to authorize payment of:"}),"\xa0",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"good",children:[a.totalprice,"\u20ae"]})]})]})},u=function(e,t){return(0,o.createComponentVNode)(2,i.Section,{minHeight:"282px",children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,textAlign:"center",fontSize:"28px",mt:10,children:"Thank you for your purchase!"}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,mt:1,textAlign:"center",children:"If you experience any difficulties with your new device, please contact your local network administrator."})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CookingAppliance=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.CookingAppliance=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.temperature,u=l.optimalTemp,s=l.temperatureEnough,m=l.efficiency,p=l.containersRemovable,h=l.our_contents;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(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.ProgressBar,{color:s?"good":"blue",value:d,maxValue:u,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:d}),"\xb0C / ",u,"\xb0C"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Efficiency",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m}),"%"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Containers",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:h.map((function(e,t){return e.empty?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Slot #"+(t+1),children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("slot",{slot:t+1})},children:"Empty"})}):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Slot #"+(t+1),verticalAlign:"middle",children:(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!p,onClick:function(){return c("slot",{slot:t+1})},children:e.container||"No Container"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.progressText[0],value:e.progress,maxValue:1,children:e.progressText[1]})})]})},t)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=[{label:"Resp.",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"}],l=[["good","Conscious"],["average","Unconscious"],["bad","DEAD"]];t.Cryo=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:520,height:470,resizeable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{className:"Layout__content--flexColumn",children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,d=n.data,s=d.isOperating,m=d.hasOccupant,p=d.occupant,h=void 0===p?[]:p,C=d.cellTemperature,f=d.cellTemperatureStatus,N=d.isBeakerLoaded;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Occupant",flexGrow:"1",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"user-slash",onClick:function(){return a("ejectOccupant")},disabled:!m,children:"Eject"}),children:m?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Occupant",children:h.name||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{min:h.health,max:h.maxHealth,value:h.health/h.maxHealth,color:h.health>0?"good":"average",children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(h.health)})})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:l[h.stat][0],children:l[h.stat][1]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(h.bodyTemperature)})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:h[e.type]/100,ranges:{bad:[.01,Infinity]},children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:Math.round(h[e.type])})})},e.id)}))]}):(0,o.createComponentVNode)(2,i.Flex,{height:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant detected."]})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Cell",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return a("ejectBeaker")},disabled:!N,children:"Eject Beaker"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a(s?"switchOff":"switchOn")},selected:s,children:s?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",color:f,children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:C})," K"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",children:(0,o.createComponentVNode)(2,u)})]})})],4)},u=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data),c=a.isBeakerLoaded,l=a.beakerLabel,d=a.beakerVolume;return c?(0,o.createFragment)([l||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No label"}),(0,o.createComponentVNode)(2,i.Box,{color:!d&&"bad",children:d?(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:d,format:function(e){return Math.round(e)+" units remaining"}}):"Beaker is empty"})],0):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No beaker loaded"})}},function(e,t,n){"use strict";t.__esModule=!0,t.CryoStorageItemsVr=t.CryoStorageVr=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(191);t.CryoStorageVr=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=d.real_name,s=d.allow_items,m=(0,r.useLocalState)(t,"tab",0),p=m[0],h=m[1];return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===p,onClick:function(){return h(0)},children:"Crew"}),!!s&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===p,onClick:function(){return h(1)},children:"Items"})]}),(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:["Welcome, ",u,"."]}),0===p&&(0,o.createComponentVNode)(2,c.CryoStorageCrew),!!s&&1===p&&(0,o.createComponentVNode)(2,l)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.items);return(0,o.createComponentVNode)(2,i.Section,{title:"Stored Items",children:a.length&&a.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:e},e)}))||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No items stored."})})};t.CryoStorageItemsVr=l},function(e,t,n){"use strict";t.__esModule=!0,t.DNAForensics=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.DNAForensics=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.scan_progress,u=l.scanning,s=l.bloodsamp,m=l.bloodsamp_desc;return(0,o.createComponentVNode)(2,a.Window,{width:540,height:326,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{selected:u,disabled:!s,icon:"power-off",onClick:function(){return c("scanItem")},children:u?"Halt Scan":"Begin Scan"}),(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:"eject",onClick:function(){return c("ejectItem")},children:"Eject Bloodsample"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scan Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[99,Infinity],violet:[-Infinity,99]},value:d,maxValue:100})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Blood Sample",children:s&&(0,o.createComponentVNode)(2,i.Box,{children:[s,(0,o.createComponentVNode)(2,i.Box,{color:"label",children:m})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No blood sample inserted."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DNAModifier=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(45),l=[["good","Alive"],["average","Unconscious"],["bad","DEAD"]],d=[["ui","Modify U.I.","dna"],["se","Modify S.E.","dna"],["buffer","Transfer Buffers","syringe"],["rejuvenators","Rejuvenators","flask"]],u=[5,10,20,30,50];t.DNAModifier=function(e,t){var n,i=(0,r.useBackend)(t),l=(i.act,i.data),d=l.irradiating,u=l.dnaBlockSize,p=l.occupant;return t.dnaBlockSize=u,t.isDNAInvalid=!p.isViableSubject||!p.uniqueIdentity||!p.structuralEnzymes,d&&(n=(0,o.createComponentVNode)(2,g,{duration:d})),(0,o.createComponentVNode)(2,a.Window,{width:660,height:700,resizable:!0,children:[(0,o.createComponentVNode)(2,c.ComplexModal),n,(0,o.createComponentVNode)(2,a.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m)]})]})};var s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,d=c.locked,u=c.hasOccupant,s=c.occupant;return(0,o.createComponentVNode)(2,i.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{color:"label",display:"inline",mr:"0.5rem",children:"Door Lock:"}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u,selected:d,icon:d?"toggle-on":"toggle-off",content:d?"Engaged":"Disengaged",onClick:function(){return a("toggleLock")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u||d,icon:"user-slash",content:"Eject",onClick:function(){return a("ejectOccupant")}})],4),children:u?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:s.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{min:s.minHealth,max:s.maxHealth,value:s.health/s.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:l[s.stat][0],children:l[s.stat][1]}),(0,o.createComponentVNode)(2,i.LabeledList.Divider)]})}),t.isDNAInvalid?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-circle"}),"\xa0 The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure."]}):(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,i.ProgressBar,{min:"0",max:"100",value:s.radiationLevel/100,color:"average"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Unique Enzymes",children:c.occupant.uniqueEnzymes?c.occupant.uniqueEnzymes:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-circle"}),"\xa0 Unknown"]})})]})],0):(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"Cell unoccupied."})})},m=function(e,t){var n,a=(0,r.useBackend)(t),c=a.act,l=a.data,u=l.selectedMenuKey,s=l.hasOccupant;l.occupant;return s?t.isDNAInvalid?(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:(0,o.createComponentVNode)(2,i.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No operation possible on this subject."]})})}):("ui"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,C)],4):"se"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,C)],4):"buffer"===u?n=(0,o.createComponentVNode)(2,f):"rejuvenators"===u&&(n=(0,o.createComponentVNode)(2,V)),(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:u===e[0],onClick:function(){return c("selectMenuKey",{key:e[0]})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:e[2]}),e[1]]},t)}))}),n]})):(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:(0,o.createComponentVNode)(2,i.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant in DNA modifier."]})})})},p=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.selectedUIBlock,d=c.selectedUISubBlock,u=c.selectedUITarget,s=c.occupant;return(0,o.createComponentVNode)(2,i.Section,{title:"Modify Unique Identifier",level:"2",children:[(0,o.createComponentVNode)(2,v,{dnaString:s.uniqueIdentity,selectedBlock:l,selectedSubblock:d,blockSize:t.dnaBlockSize,action:"selectUIBlock"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.Knob,{minValue:"1",maxValue:"15",stepPixelSize:"20",value:u,format:function(e){return e.toString(16).toUpperCase()},ml:"0",onChange:function(e,t){return a("changeUITarget",{value:t})}})})}),(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",content:"Irradiate Block",mt:"0.5rem",onClick:function(){return a("pulseUIRadiation")}})]})},h=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.selectedSEBlock,d=c.selectedSESubBlock,u=c.occupant;return(0,o.createComponentVNode)(2,i.Section,{title:"Modify Structural Enzymes",level:"2",children:[(0,o.createComponentVNode)(2,v,{dnaString:u.structuralEnzymes,selectedBlock:l,selectedSubblock:d,blockSize:t.dnaBlockSize,action:"selectSEBlock"}),(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",content:"Irradiate Block",onClick:function(){return a("pulseSERadiation")}})]})},C=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.radiationIntensity,d=c.radiationDuration;return(0,o.createComponentVNode)(2,i.Section,{title:"Radiation Emitter",level:"2",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Intensity",children:(0,o.createComponentVNode)(2,i.Knob,{minValue:"1",maxValue:"10",stepPixelSize:"20",value:l,popUpPosition:"right",ml:"0",onChange:function(e,t){return a("radiationIntensity",{value:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Duration",children:(0,o.createComponentVNode)(2,i.Knob,{minValue:"1",maxValue:"20",stepPixelSize:"10",unit:"s",value:d,popUpPosition:"right",ml:"0",onChange:function(e,t){return a("radiationDuration",{value:t})}})})]}),(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",content:"Pulse Radiation",tooltip:"Mutates a random block of either the occupant's UI or SE.",tooltipPosition:"top-right",mt:"0.5rem",onClick:function(){return a("pulseRadiation")}})]})},f=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.buffers.map((function(e,t){return(0,o.createComponentVNode)(2,N,{id:t+1,name:"Buffer "+(t+1),buffer:e},t)})));return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Buffers",level:"2",children:a}),(0,o.createComponentVNode)(2,b)],4)},N=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.id,d=e.name,u=e.buffer,s=c.isInjectorReady,m=d+(u.data?" - "+u.label:"");return(0,o.createComponentVNode)(2,i.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,i.Section,{title:m,level:"3",mx:"0",lineHeight:"18px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:!u.data,icon:"trash",content:"Clear",onClick:function(){return a("bufferOption",{option:"clear",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u.data,icon:"pen",content:"Rename",onClick:function(){return a("bufferOption",{option:"changeLabel",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!u.data||!c.hasDisk,icon:"save",content:"Export",tooltip:"Exports this buffer to the currently loaded data disk.",tooltipPosition:"bottom-left",onClick:function(){return a("bufferOption",{option:"saveDisk",id:l})}})],4),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Write",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",content:"Subject U.I",mb:"0",onClick:function(){return a("bufferOption",{option:"saveUI",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",content:"Subject U.I and U.E.",mb:"0",onClick:function(){return a("bufferOption",{option:"saveUIAndUE",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-circle-down",content:"Subject S.E.",mb:"0",onClick:function(){return a("bufferOption",{option:"saveSE",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!c.hasDisk||!c.disk.data,icon:"arrow-circle-down",content:"From Disk",mb:"0",onClick:function(){return a("bufferOption",{option:"loadDisk",id:l})}})]}),!!u.data&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Subject",children:u.owner||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Data Type",children:["ui"===u.type?"Unique Identifiers":"Structural Enzymes",!!u.ue&&" and Unique Enzymes"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transfer to",children:[(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Injector",mb:"0",onClick:function(){return a("bufferOption",{option:"createInjector",id:l})}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Block Injector",mb:"0",onClick:function(){return a("bufferOption",{option:"createInjector",id:l,block:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"user",content:"Subject",mb:"0",onClick:function(){return a("bufferOption",{option:"transfer",id:l})}})]})],4)]}),!u.data&&(0,o.createComponentVNode)(2,i.Box,{color:"label",mt:"0.5rem",children:"This buffer is empty."})]})})},b=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.hasDisk,d=c.disk;return(0,o.createComponentVNode)(2,i.Section,{title:"Data Disk",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:!l||!d.data,icon:"trash",content:"Wipe",onClick:function(){return a("wipeDisk")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return a("ejectDisk")}})],4),children:l?d.data?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Label",children:d.label?d.label:"No label"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Subject",children:d.owner?d.owner:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Data Type",children:["ui"===d.type?"Unique Identifiers":"Structural Enzymes",!!d.ue&&" and Unique Enzymes"]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"Disk is blank."}):(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",my:"1rem",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"save-o",size:"4"}),(0,o.createVNode)(1,"br"),"No disk inserted."]})})},V=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.isBeakerLoaded,d=c.beakerVolume,s=c.beakerLabel;return(0,o.createComponentVNode)(2,i.Section,{title:"Rejuvenators and Beaker",level:"2",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return a("ejectBeaker")}}),children:l?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Inject",children:[u.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{disabled:e>d,icon:"syringe",content:e,onClick:function(){return a("injectRejuvenators",{amount:e})}},t)})),(0,o.createComponentVNode)(2,i.Button,{disabled:d<=0,icon:"syringe",content:"All",onClick:function(){return a("injectRejuvenators",{amount:d})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",children:[(0,o.createComponentVNode)(2,i.Box,{mb:"0.5rem",children:s||"No label"}),d?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:[d," unit",1===d?"":"s"," remaining"]}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Empty"})]})]}):(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",my:"25%",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",size:"4"}),(0,o.createVNode)(1,"br"),"No beaker loaded."]})})},g=function(e,t){return(0,o.createComponentVNode)(2,i.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"spinner",size:"5",spin:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:(0,o.createVNode)(1,"h1",null,[(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"}),(0,o.createTextVNode)("\xa0Irradiating occupant\xa0"),(0,o.createComponentVNode)(2,i.Icon,{name:"radiation"})],4)}),(0,o.createComponentVNode)(2,i.Box,{color:"label",children:(0,o.createVNode)(1,"h3",null,[(0,o.createTextVNode)("For "),e.duration,(0,o.createTextVNode)(" second"),1===e.duration?"":"s"],0)})]})},v=function(e,t){for(var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.dnaString),l=e.selectedBlock,d=e.selectedSubblock,u=e.blockSize,s=e.action,m=c.split(""),p=[],h=function(e){for(var t=e/u+1,n=[],r=function(r){var c=r+1;n.push((0,o.createComponentVNode)(2,i.Button,{selected:l===t&&d===c,content:m[e+r],mb:"0",onClick:function(){return a(s,{block:t,subblock:c})}}))},c=0;c1?"Dangerous!":null]},e.stage)}))||(0,o.createComponentVNode)(2,i.Box,{children:"No virus sample loaded."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Affected Species",color:"label",children:[m&&m.length?null:"None",m.sort().join(", ")]}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Reverse Engineering",children:[(0,o.createComponentVNode)(2,i.Box,{color:"bad",mb:1,children:(0,o.createVNode)(1,"i",null,"CAUTION: Reverse engineering will destroy the viral sample.",16)}),d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.stage,icon:"exchange-alt",onClick:function(){return a("grab",{grab:e.reference})}},e.stage)})),(0,o.createComponentVNode)(2,i.Button,{content:"Species",icon:"exchange-alt",onClick:function(){return a("affected_species")}})]})],4)]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.dish_inserted,c.buffer),d=c.species_buffer,u=(c.effects,c.info);c.growth,c.affected_species,c.busy;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Memory Buffer",children:l?(0,o.createComponentVNode)(2,i.Box,{children:[l.name," (",l.stage,")"]}):d?(0,o.createComponentVNode)(2,i.Box,{children:d}):"Empty"})}),(0,o.createComponentVNode)(2,i.Button,{mt:1,icon:"save",content:"Save To Disk",disabled:!l&&!d,onClick:function(){return a("disk")}}),l?(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #1",disabled:l.stage>1,onClick:function(){return a("splice",{splice:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #2",disabled:l.stage>2,onClick:function(){return a("splice",{splice:2})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #3",disabled:l.stage>3,onClick:function(){return a("splice",{splice:3})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice #4",disabled:l.stage>4,onClick:function(){return a("splice",{splice:4})}})]}):d?(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Splice Species",disabled:!d||u,onClick:function(){return a("splice",{splice:5})}})}):null]})}},function(e,t,n){"use strict";t.__esModule=!0,t.DishIncubator=void 0;var o=n(0),r=(n(5),n(20)),i=n(1),a=n(2),c=n(3);t.DishIncubator=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.system_in_use,m=d.food_supply,p=d.radiation,h=d.growth,C=d.toxins,f=d.chemicals_inserted,N=d.can_breed_virus,b=d.chemical_volume,V=d.max_chemical_volume,g=d.dish_inserted,v=d.blood_already_infected,_=d.virus,k=d.analysed,y=d.infection_rate;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Environmental Conditions",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:u,content:u?"On":"Off",onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"radiation",content:"Add Radiation",onClick:function(){return l("rad")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,color:"red",icon:"trash",confirmIcon:"trash",content:"Flush System",disabled:!s,onClick:function(){return l("flush")}})})]}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Food",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,ranges:{good:[40,Infinity],average:[20,40],bad:[-Infinity,20]},value:m})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,color:p>=50?"bad":h>=25?"average":"good",value:p,children:[(0,r.formatCommaNumber)(1e4*p)," \xb5Sv"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxicity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,ranges:{bad:[50,Infinity],average:[25,50],good:[-Infinity,25]},value:C})})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:N?"Vial":"Chemicals",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject "+(N?"Vial":"Chemicals"),disabled:!f,onClick:function(){return l("ejectchem")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"virus",content:"Breed Virus",disabled:!N,onClick:function(){return l("virus")}})],4),children:f&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:V,value:b,children:[b,"/",V]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Breeding Environment",color:N?"good":"average",children:[g?N?"Suitable":"No hemolytic samples detected":"N/A",v?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"CAUTION: Viral infection detected in blood sample."}):null]})]})})||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No chemicals inserted."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virus Dish",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Dish",disabled:!g,onClick:function(){return l("ejectdish")}}),children:g?_?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Density",children:(0,o.createComponentVNode)(2,a.ProgressBar,{minValue:0,maxValue:100,ranges:{good:[50,Infinity],average:[25,50],bad:[-Infinity,25]},value:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Infection Rate",children:k?y:"Unknown."})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No virus detected."}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No dish loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalBin=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.DisposalBin=function(e,t){var n,c,l=(0,r.useBackend)(t),d=l.act,u=l.data;return 2===u.mode?(n="good",c="Ready"):u.mode<=0?(n="bad",c="N/A"):1===u.mode?(n="average",c="Pressurizing"):(n="average",c="Idle"),(0,o.createComponentVNode)(2,a.Window,{width:300,height:250,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Status"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"State",color:n,children:c}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[-Infinity,0],average:[0,99],good:[99,Infinity]},value:u.pressure,minValue:0,maxValue:100})})]}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Controls"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Handle",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:u.isAI||u.panel_open,content:"Disengaged",selected:u.flushing?null:"selected",onClick:function(){return d("disengageHandle")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:u.isAI||u.panel_open,content:"Engaged",selected:u.flushing?"selected":null,onClick:function(){return d("engageHandle")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:-1===u.mode,content:"Off",selected:u.mode?null:"selected",onClick:function(){return d("pumpOff")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:-1===u.mode,content:"On",selected:u.mode?"selected":null,onClick:function(){return d("pumpOn")}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,i.Button,{icon:"sign-out-alt",disabled:u.isAI,content:"Eject Contents",onClick:function(){return d("eject")}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DroneConsole=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.DroneConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.drones,u=l.areas,s=l.selected_area,m=l.fabricator,p=l.fabPower;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Drone Fabricator",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!m,selected:p,icon:"power-off",content:p?"Enabled":"Disabled",onClick:function(){return c("toggle_fab")}}),children:m?(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Linked."}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["Fabricator not detected.",(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Search for Fabricator",onClick:function(){return c("search_fab")}})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Request Drone",children:[(0,o.createComponentVNode)(2,i.Dropdown,{options:u?u.sort():null,selected:s,width:"100%",onSelected:function(e){return c("set_dcall_area",{area:e})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"share-square",content:"Send Ping",onClick:function(){return c("ping")}})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Maintenance Units",children:d&&d.length?(0,o.createComponentVNode)(2,i.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Resync",onClick:function(){return c("resync",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"exclamation-triangle",color:"red",content:"Shutdown",onClick:function(){return c("shutdown",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:e.loc}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:[e.charge," / ",e.maxCharge]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Active",children:e.active?"Yes":"No"})]})},e.name)}))}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No drones detected."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmbeddedController=void 0;var o=n(0),r=(n(6),n(5),n(1)),i=n(2),a=n(3),c=((0,n(24).createLogger)("fuck"),{});t.EmbeddedController=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.internalTemplateName),l=c[i];if(!l)throw Error("Unable to find Component for template name: "+i);return(0,o.createComponentVNode)(2,a.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=e.bars;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.color(e.value),minValue:e.minValue,maxValue:e.maxValue,value:e.value,children:e.textValue})},e.label)}))})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=n.act,l=!0;a.interior_status&&"open"===a.interior_status.state?l=!1:a.external_pressure&&a.chamber_pressure&&(l=!(Math.abs(a.external_pressure-a.chamber_pressure)>5));var d=!0;return a.exterior_status&&"open"===a.exterior_status.state?d=!1:a.internal_pressure&&a.chamber_pressure&&(d=!(Math.abs(a.internal_pressure-a.chamber_pressure)>5)),(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{disabled:a.airlock_disabled,icon:"arrow-left",content:"Cycle to Exterior",onClick:function(){return c("cycle_ext")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:a.airlock_disabled,icon:"arrow-right",content:"Cycle to Interior",onClick:function(){return c("cycle_int")}})]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:a.airlock_disabled,color:l?"":"bad",icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",content:"Force Exterior Door",onClick:function(){return c("force_ext")}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{disabled:a.airlock_disabled,color:d?"":"bad",icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",content:"Force Interior Door",onClick:function(){return c("force_int")}})]})],4)},u=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=(n.act,{docked:(0,o.createComponentVNode)(2,s),undocking:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"EJECTING-STAND CLEAR!"}),undocked:(0,o.createComponentVNode)(2,i.Box,{color:"grey",children:"POD EJECTED"}),docking:(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"INITIALIZING..."})}),l=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"ERROR"});return"open"===a.exterior_status.state?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"OPEN"}):"unlocked"===a.exterior_status.lock?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"UNSECURED"}):"locked"===a.exterior_status.lock&&(l=(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"SECURED"})),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Escape Pod Status",children:c[a.docking_status]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Docking Hatch",children:l})]})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.data;n.act;return a.armed?(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"ARMED"}):(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"SYSTEMS OK"})},m=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=n.act;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{disabled:!a.override_enabled,icon:"exclamation-triangle",content:"Force Exterior Door",color:"docked"!==a.docking_status?"bad":"",onClick:function(){return c("force_door")}}),(0,o.createComponentVNode)(2,i.Button,{selected:a.override_enabled,color:"docked"!==a.docking_status?"bad":"average",icon:"exclamation-triangle",content:"Override",onClick:function(){return c("toggle_override")}})]})},p=function(e,t){var n=(0,r.useBackend)(t),a=n.data,c=(n.act,{docked:(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"DOCKED"}),docking:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"DOCKING"}),undocking:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"UNDOCKING"}),undocked:(0,o.createComponentVNode)(2,i.Box,{color:"grey",children:"NOT IN USE"})}[a.docking_status]);return a.override_enabled&&(c=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[a.docking_status.toUpperCase(),"-OVERRIDE ENABLED"]})),c};c.AirlockConsoleAdvanced=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"},s=[{minValue:0,maxValue:202,value:c.external_pressure,label:"External Pressure",textValue:c.external_pressure+" kPa",color:u},{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:u},{minValue:0,maxValue:202,value:c.internal_pressure,label:"Internal Pressure",textValue:c.internal_pressure+" kPa",color:u}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{bars:s}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Purge",onClick:function(){return a("purge")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"lock-open",content:"Secure",onClick:function(){return a("secure")}})]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.AirlockConsoleSimple=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=[{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"}}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{bars:u}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.AirlockConsolePhoron=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=[{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"}},{minValue:0,maxValue:100,value:c.chamber_phoron,label:"Chamber Phoron",textValue:c.chamber_phoron+" mol",color:function(e){return e>5?"bad":e>.5?"average":"good"}}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l,{bars:u}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.AirlockConsoleDocking=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=[{minValue:0,maxValue:202,value:c.chamber_pressure,label:"Chamber Pressure",textValue:c.chamber_pressure+" kPa",color:function(e){return e<80||e>120?"bad":e<95||e>110?"average":"good"}}];return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Dock",buttons:c.airlock_disabled||c.override_enabled?(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",color:c.override_enabled?"red":"",content:"Override",onClick:function(){return a("toggle_override")}}):null,children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,l,{bars:u}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{disabled:!c.processing,icon:"ban",color:"bad",content:"Abort",onClick:function(){return a("abort")}})})]})],4)};c.DockingConsoleSimple=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"ERROR"});return"open"===c.exterior_status.state?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"OPEN"}):"unlocked"===c.exterior_status.lock?l=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"UNSECURED"}):"locked"===c.exterior_status.lock&&(l=(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"SECURED"})),(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",disabled:!c.override_enabled,content:"Force exterior door",onClick:function(){return a("force_door")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",color:c.override_enabled?"red":"",content:"Override",onClick:function(){return a("toggle_override")}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Dock Status",children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Docking Hatch",children:l})]})})};c.DockingConsoleMulti=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Docking Status",children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,i.Section,{title:"Airlocks",children:n.airlocks.length?(0,o.createComponentVNode)(2,i.LabeledList,{children:n.airlocks.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:e.override_enabled?"bad":"good",label:e.name,children:e.override_enabled?"OVERRIDE ENABLED":"STATUS OK"},e.name)}))}):(0,o.createComponentVNode)(2,i.Flex,{height:"100%",mt:"0.5em",children:(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"door-closed",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No airlocks found."]})})})],4)};c.DoorAccessConsole=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l="open"===c.interior_status.state||"closed"===c.exterior_status.state,d="open"===c.exterior_status.state||"closed"===c.interior_status.state;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:l?"arrow-left":"exclamation-triangle",content:l?"Cycle To Exterior":"Lock Exterior Door",onClick:function(){a(l?"cycle_ext_door":"force_ext")}}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"arrow-right":"exclamation-triangle",content:d?"Cycle To Interior":"Lock Interior Door",onClick:function(){a(d?"cycle_int_door":"force_int")}})],0),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Exterior Door Status",children:"closed"===c.exterior_status.state?"Locked":"Open"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Interior Door Status",children:"closed"===c.interior_status.state?"Locked":"Open"})]})})};c.EscapePodConsole=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:[(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",disabled:c.armed,color:c.armed?"bad":"average",content:"ARM",onClick:function(){return a("manual_arm")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",disabled:!c.can_force,color:"bad",content:"MANUAL EJECT",onClick:function(){return a("force_launch")}})]})]})],4)};c.EscapePodBerthConsole=function(e,t){(0,r.useBackend)(t).data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,m)})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ExonetNode=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ExonetNode=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.allowPDAs,s=l.allowCommunicators,m=l.allowNewscasters,p=l.logs;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,content:"Power "+(d?"On":"Off"),onClick:function(){return c("toggle_power")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Incoming PDA Messages",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:u,content:u?"Open":"Closed",onClick:function(){return c("toggle_PDA_port")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Incoming Communicators",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:s,content:s?"Open":"Closed",onClick:function(){return c("toggle_communicator_port")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Incoming Newscaster Content",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:m,content:m?"Open":"Closed",onClick:function(){return c("toggle_newscaster_port")}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Logging",children:(0,o.createComponentVNode)(2,i.Flex,{wrap:"wrap",children:[p.map((function(e,t){return(0,o.createComponentVNode)(2,i.Flex.Item,{m:"2px",basis:"49%",grow:t%2,children:e},t)})),p&&0!==p.length?null:(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No logs found."})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Farmbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Farmbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.locked,s=l.tank,m=l.tankVolume,p=l.tankMaxVolume,h=l.waters_trays,C=l.refills_water,f=l.uproots_weeds,N=l.replaces_nutriment;l.collects_produce,l.removes_dead;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:540,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Hyrdoponic Assisting Unit v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("power")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Water Tank",children:s&&(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,maxValue:p,children:[m," / ",p]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No water tank detected."})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:u?"good":"bad",children:u?"Locked":"Unlocked"})]})}),!u&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Watering Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Water plants",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"toggle-on":"toggle-off",selected:h,onClick:function(){return c("water")},children:h?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Refill watertank",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"toggle-on":"toggle-off",selected:C,onClick:function(){return c("refill")},children:C?"Yes":"No"})})]})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Weeding controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Weed plants",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"toggle-on":"toggle-off",selected:f,onClick:function(){return c("weed")},children:f?"Yes":"No"})})})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Nutriment controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Replace fertilizer",children:(0,o.createComponentVNode)(2,i.Button,{icon:N?"toggle-on":"toggle-off",selected:N,onClick:function(){return c("replacenutri")},children:N?"Yes":"No"})})})})]})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.FaxContent=t.Fax=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(95),l=n(96);t.Fax=function(e,t){return(0,r.useBackend)(t).data.authenticated?(0,o.createComponentVNode)(2,a.Window,{width:600,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,c.LoginInfo),(0,o.createComponentVNode)(2,d)]})}):(0,o.createComponentVNode)(2,a.Window,{width:600,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,l.LoginScreen)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.bossName,d=c.copyItem,u=c.cooldown,s=c.destination;return(0,o.createComponentVNode)(2,i.Section,{children:[!!u&&(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Transmitter arrays realigning. Please stand by."}),(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Network",children:[l," Quantum Entanglement Network"]})}),d&&(0,o.createComponentVNode)(2,i.Box,{mt:1,children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Currently Sending",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sending To",children:(0,o.createComponentVNode)(2,i.Button,{icon:"map-marker-alt",content:s,onClick:function(){return a("dept")}})})]}),(0,o.createComponentVNode)(2,i.Button,{icon:"share-square",onClick:function(){return a("send")},content:"Send",fluid:!0})]})||(0,o.createComponentVNode)(2,i.Box,{mt:1,children:"Please insert item to transmit."})]})};t.FaxContent=d;var u=function(e,t){var n=(0,r.useBackend)(t),a=n.act;return n.data.copyItem?(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",onClick:function(){return a("remove")},content:"Remove Item"})}):null}},function(e,t,n){"use strict";t.__esModule=!0,t.FileCabinet=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.FileCabinet=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data.contents,u=(0,r.sortBy)((function(e){return e.name}))(d||[]);return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"file",content:e.name,onClick:function(){return l("retrieve",{ref:e.ref})}},e.ref)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Floorbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Floorbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.locked,m=l.vocal,p=l.amount,h=l.possible_bmode,C=l.improvefloors,f=l.eattiles,N=l.maketiles,b=l.bmode;return(0,o.createComponentVNode)(2,a.Window,{width:390,height:310,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Station Floor Repairer v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("start")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tiles Left",children:(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:s?"good":"bad",children:s?"Locked":"Unlocked"})]})}),!s&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Speaker",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"toggle-on":"toggle-off",selected:m,onClick:function(){return c("vocal")},children:m?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Improves Floors",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"toggle-on":"toggle-off",selected:C,onClick:function(){return c("improve")},children:C?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Finds Tiles",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"toggle-on":"toggle-off",selected:f,onClick:function(){return c("tiles")},children:f?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Makes Metal Sheets into Tiles",children:(0,o.createComponentVNode)(2,i.Button,{icon:N?"toggle-on":"toggle-off",selected:N,onClick:function(){return c("make")},children:N?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Bridge Mode",children:(0,o.createComponentVNode)(2,i.Dropdown,{over:!0,width:"100%",placeholder:"Disabled",selected:b,options:h,onSelected:function(e){return c("bridgemode",{dir:e})}})})]})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GasPump=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.GasPump=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.pressure_set,s=l.last_flow_rate,m=l.last_power_draw,p=l.max_power_draw;return(0,o.createComponentVNode)(2,a.Window,{width:470,height:290,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:s/10})," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Load",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,minValue:0,maxValue:p,color:m=100?s="Running":!d&&u>0&&(s="DISCHARGING"),(0,o.createComponentVNode)(2,a.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",color:"red",content:"Toggle Breaker",confirmContent:d?"This will disable gravity!":"This will enable gravity!",onClick:function(){return c("gentoggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Breaker Setting",children:d?"Generator Enabled":"Generator Disabled"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Mode",children:["Generator ",s]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Status",children:[u,"%"]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GuestPass=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.GuestPass=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=(d.access,d.area),s=d.giver,m=d.giveName,p=d.reason,h=d.duration,C=d.mode,f=d.log,N=d.uid;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:1===C&&(0,o.createComponentVNode)(2,a.Section,{title:"Activity Log",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"scroll",content:"Activity Log",selected:!0,onClick:function(){return l("mode",{mode:0})}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",onClick:function(){return l("print")},fluid:!0,mb:1}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Logs",children:f.length&&f.map((function(e){return(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:e}},e)}))||(0,o.createComponentVNode)(2,a.Box,{children:"No logs."})})]})||(0,o.createComponentVNode)(2,a.Section,{title:"Guest pass terminal #"+N,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"scroll",content:"Activity Log",onClick:function(){return l("mode",{mode:1})}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Issuing ID",children:(0,o.createComponentVNode)(2,a.Button,{content:s||"Insert ID",onClick:function(){return l("id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Issued To",children:(0,o.createComponentVNode)(2,a.Button,{content:m,onClick:function(){return l("giv_name")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reason",children:(0,o.createComponentVNode)(2,a.Button,{content:p,onClick:function(){return l("reason")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Duration (minutes)",children:(0,o.createComponentVNode)(2,a.Button,{content:h,onClick:function(){return l("duration")}})})]}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"check",fluid:!0,content:"Issue Pass",onClick:function(){return l("issue")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Access",level:2,children:(0,r.sortBy)((function(e){return e.area_name}))(u).map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.on,content:e.area_name,onClick:function(){return l("access",{access:e.area})}},e.area)}))})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GyrotronControlContent=t.GyrotronControl=void 0;var o=n(0),r=n(1),i=n(3),a=n(2);t.GyrotronControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.gyros;return(0,o.createComponentVNode)(2,a.Section,{title:"Gyrotrons",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set Tag",onClick:function(){return i("set_tag")}}),children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Position"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Fire Delay"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Strength"})]}),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,{children:[e.x,", ",e.y,", ",e.z]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.active?"Online":"Offline",selected:e.active,disabled:!e.deployed,onClick:function(){return i("toggle_active",{gyro:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!e.active&&"yellow",value:e.fire_delay,unit:"decisecond(s)",minValue:1,maxValue:60,stepPixelSize:1,onDrag:function(t,n){return i("set_rate",{gyro:e.ref,rate:n})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!e.active&&"yellow",value:e.strength,unit:"penta-dakw",minValue:1,maxValue:50,stepPixelSize:1,onDrag:function(t,n){return i("set_str",{gyro:e.ref,str:n})}})})]},e.name)}))]})})};t.GyrotronControlContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.supportedPrograms,u=l.restrictedPrograms,s=l.currentProgram,m=l.isSilicon,p=l.safetyDisabled,h=l.emagged,C=l.gravity,f=d;return p&&(f=f.concat(u)),(0,o.createComponentVNode)(2,a.Window,{width:400,height:610,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Programs",children:f.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{color:-1!==u.indexOf(e)?"bad":null,icon:"eye",content:e,selected:s===e,fluid:!0,onClick:function(){return c("program",{program:e})}},e)}))}),!!m&&(0,o.createComponentVNode)(2,i.Section,{title:"Override",children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",fluid:!0,disabled:h,color:p?"good":"bad",onClick:function(){return c("AIoverride")},children:[!!h&&"Error, unable to control. ",p?"Enable Safeties":"Disable Safeties"]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Safeties",children:p?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"DISABLED"}):(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"ENABLED"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gravity",children:(0,o.createComponentVNode)(2,i.Button,{icon:"user-astronaut",selected:C,onClick:function(){return c("gravity")},children:C?"Enabled":"Disabled"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ICAssembly=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=(n(6),n(20));t.ICAssembly=function(e,t){var n=(0,i.useBackend)(t),u=(n.act,n.data),s=u.total_parts,m=u.max_components,p=u.total_complexity,h=u.max_complexity,C=u.battery_charge,f=u.battery_max,N=u.net_power,b=u.unremovable_circuits,V=u.removable_circuits;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:380,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Space in Assembly",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[0,.25],average:[.5,.75],bad:[.75,1]},value:s/m,maxValue:1,children:[s," / ",m," (",(0,r.round)(s/m*100,1),"%)"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[0,.25],average:[.5,.75],bad:[.75,1]},value:p/h,maxValue:1,children:[p," / ",h," (",(0,r.round)(p/h*100,1),"%)"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell Charge",children:C&&(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{bad:[0,.25],average:[.5,.75],good:[.75,1]},value:C/f,maxValue:1,children:[C," / ",f," (",(0,r.round)(C/f*100,1),"%)"]})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No cell detected."})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Net Energy",children:0===N?"0 W/s":(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:N,format:function(e){return"-"+(0,l.formatPower)(Math.abs(e))+"/s"}})})]})}),b.length&&(0,o.createComponentVNode)(2,d,{title:"Built-in Components",circuits:b})||null,V.length&&(0,o.createComponentVNode)(2,d,{title:"Removable Components",circuits:V})||null]})})};var d=function(e,t){var n=(0,i.useBackend)(t).act,r=e.title,c=e.circuits;return(0,o.createComponentVNode)(2,a.Section,{title:r,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("open_circuit",{ref:e.ref})},children:"View"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("rename_circuit",{ref:e.ref})},children:"Rename"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("scan_circuit",{ref:e.ref})},children:"Debugger Scan"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("remove_circuit",{ref:e.ref})},children:"Remove"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return n("bottom_circuit",{ref:e.ref})},children:"Move to Bottom"})]},e.ref)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ICCircuit=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6),l=n(20);t.ICCircuit=function(e,t){var n=(0,r.useBackend)(t),c=n.act,s=n.data,m=(s.name,s.desc),p=s.displayed_name,h=(s.removable,s.complexity),C=s.power_draw_idle,f=s.power_draw_per_use,N=s.extended_desc,b=s.inputs,V=s.outputs,g=s.activators;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:400,resizable:!0,title:p,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Stats",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("rename")},children:"Rename"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("scan")},children:"Scan with Device"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("remove")},children:"Remove"})],4),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Complexity",children:h}),C&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Draw (Idle)",children:(0,l.formatPower)(C)})||null,f&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Draw (Active)",children:(0,l.formatPower)(f)})||null]}),N]}),(0,o.createComponentVNode)(2,i.Section,{title:"Circuit",children:[(0,o.createComponentVNode)(2,i.Flex,{textAlign:"center",spacing:1,children:[b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Inputs",children:(0,o.createComponentVNode)(2,d,{list:b})})})||null,(0,o.createComponentVNode)(2,i.Flex.Item,{basis:b.length&&V.length?"33%":b.length||V.length?"45%":"100%",children:(0,o.createComponentVNode)(2,i.Section,{title:p,mb:1,children:(0,o.createComponentVNode)(2,i.Box,{children:m})})}),V.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Outputs",children:(0,o.createComponentVNode)(2,d,{list:V})})})||null]}),(0,o.createComponentVNode)(2,i.Section,{title:"Triggers",children:g.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("pin_name",{pin:e.ref})},children:e.pulse_out?"":""}),(0,o.createComponentVNode)(2,u,{pin:e})]},e.name)}))})]})]})})};var d=function(e,t){var n=(0,r.useBackend)(t).act;return e.list.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("pin_name",{pin:e.ref})},children:[(0,c.decodeHtmlEntities)(e.type),": ",e.name]}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("pin_data",{pin:e.ref})},children:e.data}),(0,o.createComponentVNode)(2,u,{pin:e})]},e.ref)}))},u=function(e,t){var n=(0,r.useBackend)(t).act,a=e.pin;return a.linked.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("pin_unwire",{pin:a.ref,link:e.ref})},children:e.name}),"@\xa0",(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return n("examine",{ref:e.holder_ref})},children:e.holder_name})]},e.ref)}))}},function(e,t,n){"use strict";t.__esModule=!0,t.ICDetailer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(6);t.ICDetailer=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.detail_color,s=d.color_list;return(0,o.createComponentVNode)(2,a.Window,{width:420,height:254,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:Object.keys(s).map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{ml:0,mr:0,mb:-.4,mt:0,tooltip:(0,c.toTitleCase)(e),tooltipPosition:t%6==5?"left":"right",height:"64px",width:"64px",onClick:function(){return l("change_color",{color:e})},style:s[e]===u?{border:"4px solid black","border-radius":0}:{"border-radius":0},backgroundColor:s[e]},e)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ICPrinter=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(8);n(24);t.ICPrinter=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.metal,u=c.max_metal,s=c.metal_per_sheet,m=(c.debug,c.upgraded),p=c.can_clone;c.assembly_to_clone,c.categories;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:630,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Metal",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:l,maxValue:u,children:[l/s," / ",u/s," sheets"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Circuits Available",children:m?"Advanced":"Regular"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Assembly Cloning",children:p?"Available":"Unavailable"})]}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:"Note: A red component name means that the printer must be upgraded to create that component."})]}),(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){return!!e.can_build&&!(e.cost>t.metal)},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,d=n.data,u=d.categories,s=(d.debug,(0,r.useSharedState)(t,"categoryTarget",null)),m=s[0],p=s[1],h=(0,c.filter)((function(e){return e.name===m}))(u)[0];return(0,o.createComponentVNode)(2,i.Section,{title:"Circuits",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:(0,c.sortBy)((function(e){return e.name}))(u).map((function(e){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:m===e.name,onClick:function(){return p(e.name)},children:e.name},e.name)}))}),h&&(0,o.createComponentVNode)(2,i.Section,{title:h.name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,c.sortBy)((function(e){return e.name}))(h.items).map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,labelColor:e.can_build?"good":"bad",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!l(e,d),icon:"print",onClick:function(){return a("build",{build:e.path})},children:"Print"}),children:e.desc},e.name)}))})})||"No category selected."]})}},function(e,t,n){"use strict";t.__esModule=!0,t.IDCard=void 0;var o=n(0),r=n(2),i=n(1),a=n(3),c=n(192);t.IDCard=function(e,t){var n=(0,i.useBackend)(t).data,l=n.registered_name,d=n.sex,u=n.age,s=n.assignment,m=n.fingerprint_hash,p=n.blood_type,h=n.dna_hash,C=n.photo_front,f=[{name:"Sex",val:d},{name:"Age",val:u},{name:"Blood Type",val:p},{name:"Fingerprint",val:m},{name:"DNA Hash",val:h}];return(0,o.createComponentVNode)(2,a.Window,{width:470,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Flex,{children:[(0,o.createComponentVNode)(2,r.Flex.Item,{basis:"25%",textAlign:"left",children:(0,o.createComponentVNode)(2,r.Box,{inline:!0,style:{width:"101px",height:"120px",overflow:"hidden",outline:"2px solid #4972a1"},children:C&&(0,o.createVNode)(1,"img",null,null,1,{src:C.substr(1,C.length-1),style:{width:"300px","margin-left":"-94px","-ms-interpolation-mode":"nearest-neighbor"}})||(0,o.createComponentVNode)(2,r.Icon,{name:"user",size:8,ml:1.5,mt:2.5})})}),(0,o.createComponentVNode)(2,r.Flex.Item,{basis:0,grow:1,children:(0,o.createComponentVNode)(2,r.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:e.name,children:e.val},e.name)}))})})]}),(0,o.createComponentVNode)(2,r.Flex,{className:"IDCard__NamePlate",align:"center",justify:"space-around",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",children:l})}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.RankIcon,{rank:s})})}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Box,{textAlign:"center",children:s})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.InventoryPanel=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.InventoryPanel=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.slots,u=l.internalsValid;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:200,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d&&d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:e.item?"hand-paper":"gift",onClick:function(){return c(e.act)},children:e.item||"Nothing"})},e.name)}))})}),u&&(0,o.createComponentVNode)(2,i.Section,{title:"Actions",children:u&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"lungs",onClick:function(){return c("internals")},children:"Set Internals"})||null})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.InventoryPanelHuman=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.InventoryPanelHuman=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.slots,u=l.specialSlots,s=(l.internals,l.internalsValid),m=l.sensors,p=l.handcuffed,h=l.handcuffedParams,C=l.legcuffed,f=l.legcuffedParams,N=l.accessory;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[d&&d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:e.item?"hand-paper":"gift",onClick:function(){return c(e.act,e.params)},children:e.item||"Nothing"})},e.name)})),(0,o.createComponentVNode)(2,i.LabeledList.Divider),u&&u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,i.Button,{mb:-1,icon:e.item?"hand-paper":"gift",onClick:function(){return c(e.act,e.params)},children:e.item||"Nothing"})},e.name)}))]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"running",onClick:function(){return c("targetSlot",{slot:"splints"})},children:"Remove Splints"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"hand-paper",onClick:function(){return c("targetSlot",{slot:"pockets"})},children:"Empty Pockets"}),s&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"lungs",onClick:function(){return c("targetSlot",{slot:"internals"})},children:"Set Internals"})||null,m&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"book-medical",onClick:function(){return c("targetSlot",{slot:"sensors"})},children:"Set Sensors"})||null,p&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"bad",icon:"unlink",onClick:function(){return c("targetSlot",h)},children:"Handcuffed"})||null,C&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"bad",icon:"unlink",onClick:function(){return c("targetSlot",f)},children:"Legcuffed"})||null,N&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"bad",icon:"unlink",onClick:function(){return c("targetSlot",{slot:"tie"})},children:"Remove Accessory"})||null]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.IsolationCentrifuge=void 0;var o=n(0),r=(n(5),n(20),n(1)),i=n(2),a=n(3);t.IsolationCentrifuge=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.busy,u=l.antibodies,s=l.pathogens,m=l.is_antibody_sample,p=l.sample_inserted,h=(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No vial detected."});return p&&(h=u||s?(0,o.createFragment)([u?(0,o.createComponentVNode)(2,i.Section,{title:"Antibodies",children:u}):null,s.length?(0,o.createComponentVNode)(2,i.Section,{title:"Pathogens",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:s.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:e.spread_type},e.name)}))})}):null],0):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No antibodies or viral strains detected."})),(0,o.createComponentVNode)(2,a.Window,{width:400,height:500,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:d?(0,o.createComponentVNode)(2,i.Section,{title:"The Centrifuge is currently busy.",color:"bad",children:(0,o.createVNode)(1,"center",null,(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:d}),2)}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:m?"Antibody Sample":"Blood Sample",children:[(0,o.createComponentVNode)(2,i.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"print",content:"Print",disabled:!u&&!s.length,onClick:function(){return c("print")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",content:"Eject Vial",disabled:!p,onClick:function(){return c("sample")}})})]}),h]}),u&&!m||s.length?(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[u&&!m?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Isolate Antibodies",children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:u,onClick:function(){return c("antibody")}})}):null,s.length?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Isolate Strain",children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:e.name,onClick:function(){return c("isolate",{isolate:e.reference})}},e.name)}))}):null]})}):null],0)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.JanitorCart=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.JanitorCart=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.mybag,s=d.mybucket,m=d.mymop,p=d.myspray,h=d.myreplacer,C=d.signs;d.icons;return(0,o.createComponentVNode)(2,a.Window,{width:210,height:180,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:u||"Garbage Bag Slot",tooltipPosition:"bottom-right",color:u?"grey":"transparent",style:{border:u?null:"2px solid grey"},onClick:function(){return c("bag")},children:(0,o.createComponentVNode)(2,l,{iconkey:"mybag"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:s||"Bucket Slot",tooltipPosition:"bottom",color:s?"grey":"transparent",style:{border:s?null:"2px solid grey"},onClick:function(){return c("bucket")},children:(0,o.createComponentVNode)(2,l,{iconkey:"mybucket"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:m||"Mop Slot",tooltipPosition:"bottom-left",color:m?"grey":"transparent",style:{border:m?null:"2px solid grey"},onClick:function(){return c("mop")},children:(0,o.createComponentVNode)(2,l,{iconkey:"mymop"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:p||"Spray Slot",tooltipPosition:"top-right",color:p?"grey":"transparent",style:{border:p?null:"2px solid grey"},onClick:function(){return c("spray")},children:(0,o.createComponentVNode)(2,l,{iconkey:"myspray"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:h||"Light Replacer Slot",tooltipPosition:"top",color:h?"grey":"transparent",style:{border:h?null:"2px solid grey"},onClick:function(){return c("replacer")},children:(0,o.createComponentVNode)(2,l,{iconkey:"myreplacer"})}),(0,o.createComponentVNode)(2,i.Button,{width:"64px",height:"64px",position:"relative",tooltip:C||"Signs Slot",tooltipPosition:"top-left",color:C?"grey":"transparent",style:{border:C?null:"2px solid grey"},onClick:function(){return c("sign")},children:(0,o.createComponentVNode)(2,l,{iconkey:"signs"})})]})})};var c={mybag:"trash",mybucket:"fill",mymop:"broom",myspray:"spray-can",myreplacer:"lightbulb",signs:"sign"},l=function(e,t){var n=(0,r.useBackend)(t).data,a=e.iconkey,l=n.icons;return a in l?(0,o.createVNode)(1,"img",null,null,1,{src:l[a].substr(1,l[a].length-1),style:{position:"absolute",left:0,right:0,top:0,bottom:0,width:"64px",height:"64px","-ms-interpolation-mode":"nearest-neighbor"}}):(0,o.createComponentVNode)(2,i.Icon,{style:{position:"absolute",left:"4px",right:0,top:"20px",bottom:0,width:"64px",height:"64px"},fontSize:2,name:c[a]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(0),r=n(5),i=n(8),a=n(1),c=n(2),l=n(3);t.Jukebox=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.playing,m=u.loop_mode,p=u.volume,h=u.current_track_ref,C=u.current_track,f=u.percent,N=u.tracks;return(0,o.createComponentVNode)(2,l.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Currently Playing",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Title",children:s&&C&&(0,o.createComponentVNode)(2,c.Box,{children:[C.title," by ",C.artist||"Unkown"]})||(0,o.createComponentVNode)(2,c.Box,{children:"Stopped"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"play",disabled:s,onClick:function(){return d("play")},children:"Play"}),(0,o.createComponentVNode)(2,c.Button,{icon:"stop",disabled:!s,onClick:function(){return d("stop")},children:"Stop"})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loop Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"play",onClick:function(){return d("loopmode",{loopmode:1})},selected:1===m,children:"Next"}),(0,o.createComponentVNode)(2,c.Button,{icon:"random",onClick:function(){return d("loopmode",{loopmode:2})},selected:2===m,children:"Shuffle"}),(0,o.createComponentVNode)(2,c.Button,{icon:"redo",onClick:function(){return d("loopmode",{loopmode:3})},selected:3===m,children:"Repeat"}),(0,o.createComponentVNode)(2,c.Button,{icon:"step-forward",onClick:function(){return d("loopmode",{loopmode:4})},selected:4===m,children:"Once"})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:f,maxValue:1,color:"good"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,c.Slider,{minValue:0,step:.01,value:p,maxValue:1,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[0,.25]},format:function(e){return(0,r.round)(100*e,1)+"%"},onChange:function(e,t){return d("volume",{val:(0,r.round)(t,2)})}})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Available Tracks",children:N.length&&(0,i.sortBy)((function(e){return e.title}))(N).map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"play",selected:h===e.ref,onClick:function(){return d("change_track",{change_track:e.ref})},children:e.title},e.ref)}))||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Error: No songs loaded."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LawManager=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.LawManager=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data.isSlaved);return(0,o.createComponentVNode)(2,a.Window,{width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[l&&(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:["Law-synced to ",l]})||null,(0,o.createComponentVNode)(2,c)]})})};var c=function(e,t){var n=(0,r.useSharedState)(t,"lawsTabIndex",0),a=n[0],c=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===a,onClick:function(){return c(0)},children:"Law Management"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===a,onClick:function(){return c(1)},children:"Law Sets"})]}),0===a&&(0,o.createComponentVNode)(2,l)||null,1===a&&(0,o.createComponentVNode)(2,u)||null],0)},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.ion_law_nr,u=c.ion_law,s=c.zeroth_law,m=c.inherent_law,p=c.supplied_law,h=c.supplied_law_position,C=c.zeroth_laws,f=c.has_zeroth_laws,N=c.ion_laws,b=c.has_ion_laws,V=c.inherent_laws,g=c.has_inherent_laws,v=c.supplied_laws,_=c.has_supplied_laws,k=c.isAI,y=c.isMalf,L=c.isAdmin,B=c.channel,w=c.channels,x=C.map((function(e){return e.zero=!0,e})).concat(V);return(0,o.createComponentVNode)(2,i.Section,{children:[b&&(0,o.createComponentVNode)(2,d,{laws:N,title:l+" Laws:",mt:-2})||null,(f||g)&&(0,o.createComponentVNode)(2,d,{laws:x,title:"Inherent Laws",mt:-2})||null,_&&(0,o.createComponentVNode)(2,d,{laws:v,title:"Supplied Laws",mt:-2})||null,(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Controls",mt:-2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Statement Channel",children:w.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.channel,selected:B===e.channel,onClick:function(){return a("law_channel",{law_channel:e.channel})}},e.channel)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"State Laws",children:(0,o.createComponentVNode)(2,i.Button,{icon:"volume-up",onClick:function(){return a("state_laws")},children:"State Laws"})}),k&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Law Notification",children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation",onClick:function(){return a("notify_laws")},children:"Notify"})})||null]})}),y&&(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Add Laws",mt:-2,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,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Law"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Index"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Add"})]}),L&&!f&&(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Zero"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:s,fluid:!0,onChange:function(e,t){return a("change_zeroth_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_zeroth_law")},children:"Add"})})]})||null,(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Ion"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:u,fluid:!0,onChange:function(e,t){return a("change_ion_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_ion_law")},children:"Add"})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Inherent"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:m,fluid:!0,onChange:function(e,t){return a("change_inherent_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_inherent_law")},children:"Add"})})]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Supplied"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Input,{value:p,fluid:!0,onChange:function(e,t){return a("change_supplied_law",{val:t})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("change_supplied_law_position")},children:h})}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return a("add_supplied_law")},children:"Add"})})]})]})})||null]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.isMalf,d=c.isAdmin,u=e.laws,s=e.title,m=e.noButtons,p=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["laws","title","noButtons"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Section,Object.assign({level:2,title:s},p,{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,{collapsing:!0,children:"Index"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Law"}),!m&&(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"State"})||null,l&&!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Edit"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Delete"})],4)||null]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:[e.index,"."]}),(0,o.createComponentVNode)(2,i.Table.Cell,{color:e.zero?"bad":null,children:e.law}),!m&&(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"volume-up",selected:e.state,onClick:function(){return a("state_law",{ref:e.ref,state_law:!e.state})},children:e.state?"Yes":"No"})})||null,l&&!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:e.zero&&!d,icon:"pen",onClick:function(){return a("edit_law",{edit_law:e.ref})},children:"Edit"})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{disabled:e.zero&&!d,color:"bad",icon:"trash",onClick:function(){return a("delete_law",{delete_law:e.ref})},children:"Delete"})})],4)||null]},e.index)}))]})})))},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.isMalf,u=c.law_sets;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Remember: Stating laws other than those currently loaded may be grounds for decommissioning! - NanoTrasen"}),u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{disabled:!l,icon:"sync",onClick:function(){return a("transfer_laws",{transfer_laws:e.ref})},children:"Load Laws"}),(0,o.createComponentVNode)(2,i.Button,{icon:"volume-up",onClick:function(){return a("state_law_set",{state_law_set:e.ref})},children:"State Laws"})],4),children:[e.laws.has_ion_laws&&(0,o.createComponentVNode)(2,d,{noButtons:!0,laws:e.laws.ion_laws,title:e.laws.ion_law_nr+" Laws:"})||null,(e.laws.has_zeroth_laws||e.laws.has_inherent_laws)&&(0,o.createComponentVNode)(2,d,{noButtons:!0,laws:e.laws.zeroth_laws.concat(e.laws.inherent_laws),title:e.header})||null,e.laws.has_supplied_laws&&(0,o.createComponentVNode)(2,d,{noButtons:!0,laws:e.laws.supplied_laws,title:"Supplied Laws"})||null]},e.name)}))||null],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.LookingGlass=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.LookingGlass=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.supportedPrograms,u=l.currentProgram,s=l.immersion,m=l.gravity,p=Math.min(180+23*d.length,600);return(0,o.createComponentVNode)(2,a.Window,{width:300,height:p,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Programs",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eye",selected:e===u,onClick:function(){return c("program",{program:e})},children:e},e)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gravity",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"user-astronaut",selected:m,onClick:function(){return c("gravity")},children:m?"Enabled":"Disabled"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Full Immersion",children:(0,o.createComponentVNode)(2,i.Button,{mt:-1,fluid:!0,icon:"eye",selected:s,onClick:function(){return c("immersion")},children:s?"Enabled":"Disabled"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechaControlConsole=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6);t.MechaControlConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.beacons,s=d.stored_data;return(0,o.createComponentVNode)(2,a.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[s.length&&(0,o.createComponentVNode)(2,i.Modal,{children:(0,o.createComponentVNode)(2,i.Section,{height:"400px",style:{"overflow-y":"auto"},title:"Log",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"window-close",onClick:function(){return l("clear_log")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:["(",e.time,") (",e.year,")"]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,c.decodeHtmlEntities)(e.message)})]},e.time)}))})})||null,u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"comment",onClick:function(){return l("send_message",{mt:e.ref})},children:"Message"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return l("get_log",{mt:e.ref})},children:"View Log"}),(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"red",content:"EMP",icon:"bomb",onClick:function(){return l("shock",{mt:e.ref})}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.75*e.maxHealth,Infinity],average:[.5*e.maxHealth,.75*e.maxHealth],bad:[-Infinity,.5*e.maxHealth]},value:e.health,maxValue:e.maxHealth})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Charge",children:e.cell&&(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.75*e.cellMaxCharge,Infinity],average:[.5*e.cellMaxCharge,.75*e.cellMaxCharge],bad:[-Infinity,.5*e.cellMaxCharge]},value:e.cellCharge,maxValue:e.cellMaxCharge})||(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Cell Installed"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Air Tank",children:[e.airtank,"kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pilot",children:e.pilot||"Unoccupied"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:(0,c.toTitleCase)(e.location)||"Unknown"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Active Equipment",children:e.active||"None"}),e.cargoMax&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cargo Space",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[.75*e.cargoMax,Infinity],average:[.5*e.cargoMax,.75*e.cargoMax],good:[-Infinity,.5*e.cargoMax]},value:e.cargoUsed,maxValue:e.cargoMax})})||null]})},e.name)}))||(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No mecha beacons found."})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Medbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Medbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.beaker,m=l.beaker_total,p=l.beaker_max,h=l.locked,C=l.heal_threshold,f=l.heal_threshold_max,N=l.injection_amount_min,b=l.injection_amount,V=l.injection_amount_max,g=l.use_beaker,v=l.declare_treatment,_=l.vocal;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Medical Unit v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("power")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!s,icon:"eject",onClick:function(){return c("eject")},children:"Eject"}),children:s&&(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,maxValue:p,children:[m," / ",p]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No beaker loaded."})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:h?"good":"bad",children:h?"Locked":"Unlocked"})]})}),!h&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavioral Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Healing Threshold",children:(0,o.createComponentVNode)(2,i.NumberInput,{fluid:!0,minValue:0,maxValue:f,value:C,onDrag:function(e,t){return c("adj_threshold",{val:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Injection Amount",children:(0,o.createComponentVNode)(2,i.NumberInput,{fluid:!0,minValue:N,maxValue:V,value:b,onDrag:function(e,t){return c("adj_inject",{val:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Reagent Source",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:g?"toggle-on":"toggle-off",selected:g,onClick:function(){return c("use_beaker")},children:g?"Loaded Beaker (When available)":"Internal Synthesizer"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Treatment Report",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:v?"toggle-on":"toggle-off",selected:v,onClick:function(){return c("declaretreatment")},children:v?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Speaker",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:_?"toggle-on":"toggle-off",selected:_,onClick:function(){return c("togglevoice")},children:_?"On":"Off"})})]})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalRecords=void 0;var o=n(0),r=n(1),i=n(2),a=n(45),c=n(3),l=n(95),d=n(96),u=n(62),s=(n(6),function(e,t){(0,a.modalOpen)(e,"edit",{field:t.edit,value:t.value})});t.MedicalRecords=function(e,t){var n,s=(0,r.useBackend)(t).data,C=s.authenticated,f=s.screen;return C?(2===f?n=(0,o.createComponentVNode)(2,m):3===f?n=(0,o.createComponentVNode)(2,p):4===f?n=(0,o.createComponentVNode)(2,h):5===f?n=(0,o.createComponentVNode)(2,N):6===f&&(n=(0,o.createComponentVNode)(2,b)),(0,o.createComponentVNode)(2,c.Window,{width:800,height:380,resizable:!0,children:[(0,o.createComponentVNode)(2,a.ComplexModal,{maxHeight:"100%",maxWidth:"80%"}),(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,l.LoginInfo),(0,o.createComponentVNode)(2,u.TemporaryNotice),(0,o.createComponentVNode)(2,V),(0,o.createComponentVNode)(2,i.Section,{height:"calc(100% - 5rem)",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,c.Window,{width:800,height:380,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d.LoginScreen)})})};var m=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.records;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search by Name, DNA, or ID",onChange:function(e,t){return a("search",{t1:t})}}),(0,o.createComponentVNode)(2,i.Box,{mt:"0.5rem",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{icon:"user",mb:"0.5rem",content:e.id+": "+e.name,onClick:function(){return a("d_rec",{d_rec:e.ref})}},t)}))})],4)},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Backup to Disk",disabled:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"upload",content:"Upload from Disk",my:"0.5rem",disabled:!0}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",content:"Delete All Medical Records",onClick:function(){return n("del_all")}})],4)},h=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.medical,d=c.printing;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"General Data",level:2,mt:"-6px",children:(0,o.createComponentVNode)(2,C)}),(0,o.createComponentVNode)(2,i.Section,{title:"Medical Data",level:2,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",level:2,children:[(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Medical Record",color:"bad",onClick:function(){return a("del_r")}}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"spinner":"print",disabled:d,iconSpin:!!d,content:"Print Entry",ml:"0.5rem",onClick:function(){return a("print_p")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back",mt:"0.5rem",onClick:function(){return a("screen",{screen:2})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.general;return n&&n.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"left",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:n.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[(0,o.createComponentVNode)(2,i.Box,{height:"20px",display:"inline-block",children:e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)}))}),!!e.edit&&(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",onClick:function(){return s(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"right",textAlign:"right",children:!!n.has_photos&&n.photos.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e.substr(1,e.length-1),style:{width:"96px","margin-bottom":"0.5rem","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createVNode)(1,"br"),"Photo #",t+1]},t)}))})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General records lost!"})},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.medical;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)})),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return s(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Comments/Log",level:2,children:[0===l.comments.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",display:"inline",children:e.header}),(0,o.createVNode)(1,"br"),e.text,(0,o.createComponentVNode)(2,i.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return c("del_c",{del_c:t+1})}})]},t)})),(0,o.createComponentVNode)(2,i.Button,{icon:"comment-medical",content:"Add Entry",color:"good",mt:"0.5rem",mb:"0",onClick:function(){return(0,a.modalOpen)(t,"add_c")}})]})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["Medical records lost!",(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"New Record",ml:"0.5rem",onClick:function(){return c("new")}})]})},N=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.virus;return c.sort((function(e,t){return e.name>t.name?1:-1})),c.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"flask",content:e.name,mb:"0.5rem",onClick:function(){return a("vir",{vir:e.D})}}),(0,o.createVNode)(1,"br")],4,t)}))},b=function(e,t){var n=(0,r.useBackend)(t).data.medbots;return 0===n.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"There are no Medbots."}):n.map((function(e,t){return(0,o.createComponentVNode)(2,i.Collapsible,{open:!0,title:e.name,children:(0,o.createComponentVNode)(2,i.Box,{px:"0.5rem",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:[e.area||"Unknown"," (",e.x,", ",e.y,")"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:e.on?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Online"}),(0,o.createComponentVNode)(2,i.Box,{mt:"0.5rem",children:e.use_beaker?"Reservoir: "+e.total_volume+"/"+e.maximum_volume:"Using internal synthesizer."})],4):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Offline"})})]})})},t)}))},V=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.screen;return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===c,onClick:function(){return a("screen",{screen:2})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:5===c,onClick:function(){return a("screen",{screen:5})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"database"}),"Virus Database"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:6===c,onClick:function(){return a("screen",{screen:6})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"plus-square"}),"Medbot Tracking"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:3===c,onClick:function(){return a("screen",{screen:3})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"wrench"}),"Record Maintenance"]})]})};(0,a.modalRegisterBodyOverride)("virus",(function(e,t){var n=(0,r.useBackend)(t).act,a=e.args;return(0,o.createComponentVNode)(2,i.Section,{level:2,m:"-1rem",title:a.name||"Virus",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return n("modal_close")}}),children:(0,o.createComponentVNode)(2,i.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Spread",children:[a.spread_text," Transmission"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Possible cure",children:a.antigen}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rate of Progression",children:a.rate}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Antibiotic Resistance",children:[a.resistance,"%"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species Affected",children:a.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Symptoms",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:a.symptoms.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.stage+". "+e.name,children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",children:"Strength:"})," ",e.strength,"\xa0",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",children:"Aggressiveness:"})," ",e.aggressiveness]},e.stage)}))})})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.MessageMonitor=void 0;var o=n(0),r=(n(5),n(6)),i=n(1),a=n(2),c=n(3),l=n(62),d=n(61);t.MessageMonitor=function(e,t){var n,r=(0,i.useBackend)(t),d=(r.act,r.data),p=d.auth,h=d.linkedServer,C=(d.message,d.hacking),f=d.emag;return n=C||f?(0,o.createComponentVNode)(2,u):p?h?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR"}):(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,c.Window,{width:670,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.TemporaryNotice),n]})})};var u=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.isMalfAI);return(0,o.createComponentVNode)(2,d.FullscreenNotice,{title:"ERROR",children:r?(0,o.createComponentVNode)(2,a.Box,{children:"Brute-forcing for server key. It will take 20 seconds for every character that the password has."}):(0,o.createComponentVNode)(2,a.Box,{children:["01000010011100100111010101110100011001010010110",(0,o.createVNode)(1,"br"),"10110011001101111011100100110001101101001011011100110011",(0,o.createVNode)(1,"br"),"10010000001100110011011110111001000100000011100110110010",(0,o.createVNode)(1,"br"),"10111001001110110011001010111001000100000011010110110010",(0,o.createVNode)(1,"br"),"10111100100101110001000000100100101110100001000000111011",(0,o.createVNode)(1,"br"),"10110100101101100011011000010000001110100011000010110101",(0,o.createVNode)(1,"br"),"10110010100100000001100100011000000100000011100110110010",(0,o.createVNode)(1,"br"),"10110001101101111011011100110010001110011001000000110011",(0,o.createVNode)(1,"br"),"00110111101110010001000000110010101110110011001010111001",(0,o.createVNode)(1,"br"),"00111100100100000011000110110100001100001011100100110000",(0,o.createVNode)(1,"br"),"10110001101110100011001010111001000100000011101000110100",(0,o.createVNode)(1,"br"),"00110000101110100001000000111010001101000011001010010000",(0,o.createVNode)(1,"br"),"00111000001100001011100110111001101110111011011110111001",(0,o.createVNode)(1,"br"),"00110010000100000011010000110000101110011001011100010000",(0,o.createVNode)(1,"br"),"00100100101101110001000000111010001101000011001010010000",(0,o.createVNode)(1,"br"),"00110110101100101011000010110111001110100011010010110110",(0,o.createVNode)(1,"br"),"10110010100101100001000000111010001101000011010010111001",(0,o.createVNode)(1,"br"),"10010000001100011011011110110111001110011011011110110110",(0,o.createVNode)(1,"br"),"00110010100100000011000110110000101101110001000000111001",(0,o.createVNode)(1,"br"),"00110010101110110011001010110000101101100001000000111100",(0,o.createVNode)(1,"br"),"10110111101110101011100100010000001110100011100100111010",(0,o.createVNode)(1,"br"),"10110010100100000011010010110111001110100011001010110111",(0,o.createVNode)(1,"br"),"00111010001101001011011110110111001110011001000000110100",(0,o.createVNode)(1,"br"),"10110011000100000011110010110111101110101001000000110110",(0,o.createVNode)(1,"br"),"00110010101110100001000000111001101101111011011010110010",(0,o.createVNode)(1,"br"),"10110111101101110011001010010000001100001011000110110001",(0,o.createVNode)(1,"br"),"10110010101110011011100110010000001101001011101000010111",(0,o.createVNode)(1,"br"),"00010000001001101011000010110101101100101001000000111001",(0,o.createVNode)(1,"br"),"10111010101110010011001010010000001101110011011110010000",(0,o.createVNode)(1,"br"),"00110100001110101011011010110000101101110011100110010000",(0,o.createVNode)(1,"br"),"00110010101101110011101000110010101110010001000000111010",(0,o.createVNode)(1,"br"),"00110100001100101001000000111001001101111011011110110110",(0,o.createVNode)(1,"br"),"10010000001100100011101010111001001101001011011100110011",(0,o.createVNode)(1,"br"),"10010000001110100011010000110000101110100001000000111010",(0,o.createVNode)(1,"br"),"001101001011011010110010100101110"]})})},s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.isMalfAI;return(0,o.createComponentVNode)(2,d.FullscreenNotice,{title:"Welcome",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.5rem",bold:!0,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"}),"Unauthorized"]}),(0,o.createComponentVNode)(2,a.Box,{color:"label",my:"1rem",children:["Decryption Key:",(0,o.createComponentVNode)(2,a.Input,{placeholder:"Decryption Key",ml:"0.5rem",onChange:function(e,t){return r("auth",{key:t})}})]}),!!c&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",onClick:function(){return r("hack")}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"Please authenticate with the server in order to show additional options."})]})},m=function(e,t){var n,r=(0,i.useBackend)(t),c=r.act,l=r.data.linkedServer,d=(0,i.useLocalState)(t,"tabIndex",0),u=d[0],s=d[1];return 0===u?n=(0,o.createComponentVNode)(2,p):1===u?n=(0,o.createComponentVNode)(2,h,{logs:l.pda_msgs,pda:!0}):2===u?n=(0,o.createComponentVNode)(2,h,{logs:l.rc_msgs,rc:!0}):3===u?n=(0,o.createComponentVNode)(2,C):4===u&&(n=(0,o.createComponentVNode)(2,f)),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===u,onClick:function(){return s(0)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"bars"})," Main Menu"]},"Main"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"font"})," Message Logs"]},"MessageLogs"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"bold"})," Request Logs"]},"RequestLogs"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===u,onClick:function(){return s(3)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"comment-alt"})," Admin Messaging"]},"AdminMessage"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:4===u,onClick:function(){return s(4)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"comment-slash"})," Spam Filter"]},"SpamFilter"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{color:"red",onClick:function(){return c("deauth")},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"sign-out-alt"})," Log Out"]},"Logout")]}),(0,o.createComponentVNode)(2,a.Box,{m:2,children:n})],4)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.linkedServer;return(0,o.createComponentVNode)(2,a.Section,{title:"Main Menu",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"link",content:"Server Link",onClick:function(){return r("find")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Server "+(c.active?"Enabled":"Disabled"),selected:c.active,onClick:function(){return r("active")}})],4),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Server Status",children:(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Good"})})}),(0,o.createComponentVNode)(2,a.Button,{mt:1,icon:"key",content:"Set Custom Key",onClick:function(){return r("pass")}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",confirmIcon:"exclamation-triangle",icon:"exclamation-triangle",content:"Clear Message Logs"}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",confirmIcon:"exclamation-triangle",icon:"exclamation-triangle",content:"Clear Request Logs"})]})},h=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=(n.data,e.logs),d=e.pda,u=e.rc;return(0,o.createComponentVNode)(2,a.Section,{title:d?"PDA Logs":u?"Request Logs":"Logs",buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",icon:"trash",confirmIcon:"trash",content:"Delete All",onClick:function(){return c(d?"del_pda":"del_rc")}}),children:(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{m:"2px",basis:"49%",grow:t%2,children:(0,o.createComponentVNode)(2,a.Section,{title:e.sender+" -> "+e.recipient,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{confirmContent:"Delete Log?",color:"bad",icon:"trash",confirmIcon:"trash",onClick:function(){return c("delete",{id:e.ref,type:u?"rc":"pda"})}}),children:u?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:e.message}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Verification",color:"Unauthenticated"===e.id_auth?"bad":"good",children:(0,r.decodeHtmlEntities)(e.id_auth)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stamp",children:e.stamp})]}):e.message})},e.ref)}))})})},C=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.possibleRecipients,d=c.customsender,u=c.customrecepient,s=c.customjob,m=c.custommessage,p=Object.keys(l);return(0,o.createComponentVNode)(2,a.Section,{title:"Admin Messaging",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sender",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:d,onChange:function(e,t){return r("set_sender",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sender's Job",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return r("set_sender_job",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recipient",children:(0,o.createComponentVNode)(2,a.Dropdown,{value:u,options:p,width:"100%",mb:-.7,onSelected:function(e){return r("set_recipient",{val:l[e]})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",verticalAlign:"top",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,mb:.5,value:m,onChange:function(e,t){return r("set_message",{val:t})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"comment",content:"Send Message",onClick:function(){return r("send_message")}})]})},f=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.linkedServer;return(0,o.createComponentVNode)(2,a.Section,{title:"Spam Filtering",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:c.spamFilter.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"trash",color:"bad",content:"Delete",onClick:function(){return r("deltoken",{deltoken:e.index})}}),children:e.token},e.index)}))}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add New Entry",onClick:function(){return r("addtoken")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Microwave=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.Microwave=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.config,d=n.data,u=d.broken,s=d.operating,m=d.dirty,p=d.items;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:u&&(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Bzzzzttttt!!"})})||s&&(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"good",children:["Microwaving in progress!",(0,o.createVNode)(1,"br"),"Please wait...!"]})})||m&&(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["This microwave is dirty!",(0,o.createVNode)(1,"br"),"Please clean it before use!"]})})||p.length&&(0,o.createComponentVNode)(2,i.Section,{level:1,title:"Ingredients",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"radiation",onClick:function(){return c("cook")},children:"Microwave"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return c("dispose")},children:"Eject"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[e.amt," ",e.extra]},e.name)}))})})||(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[l.title," is empty."]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningOreProcessingConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=(n(8),n(193));t.MiningOreProcessingConsole=function(e,t){var n=(0,i.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=(d.ores,d.showAllOres,d.power),p=d.speed;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,l.MiningUser,{insertIdText:(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",mr:1,onClick:function(){return r("insert")},children:"Insert ID"}),"in order to claim points."]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",selected:p,onClick:function(){return r("speed_toggle")},children:p?"High-Speed Active":"High-Speed Inactive"}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:s,onClick:function(){return r("power")},children:s?"Smelting":"Not Smelting"})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current unclaimed points",buttons:(0,o.createComponentVNode)(2,a.Button,{disabled:u<1,icon:"download",onClick:function(){return r("claim")},children:"Claim"}),children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})}),(0,o.createComponentVNode)(2,m)]})})};var d=["Not Processing","Smelting","Compressing","Alloying"],u=["verdantium","mhydrogen","diamond","platinum","uranium","gold","silver","rutile","phoron","marble","lead","sand","carbon","hematite"],s=function(e,t){return-1===u.indexOf(e.ore)||-1===u.indexOf(t.ore)?e.ore-t.ore:u.indexOf(t.ore)-u.indexOf(e.ore)},m=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,u=l.ores,m=l.showAllOres;l.power;return(0,o.createComponentVNode)(2,a.Section,{title:"Ore Processing Controls",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"toggle-on":"toggle-off",selected:m,onClick:function(){return c("showAllOres")},children:m?"All Ores":"Ores in Machine"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u.length&&u.sort(s).map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.toTitleCase)(e.name),buttons:(0,o.createComponentVNode)(2,a.Dropdown,{width:"120px",color:(0===e.processing?"red":1===e.processing&&"green")||2===e.processing&&"blue"||3===e.processing&&"yellow",options:d,selected:d[e.processing],onSelected:function(t){return c("toggleSmelting",{ore:e.ore,set:d.indexOf(t)})}}),children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:e.amount})})},e.ore)}))||(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No ores in machine."})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningStackingConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3);n(8);t.MiningStackingConsole=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=d.stacktypes,s=d.stackingAmt;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Stacker Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stacking",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,value:s,minValue:1,maxValue:50,stepPixelSize:5,onChange:function(e,t){return l("change_stack",{amt:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),u.length&&u.sort().map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.toTitleCase)(e.type),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return l("release_stack",{stack:e.type})},children:"Eject"}),children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:e.amt})},e.type)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Empty",color:"average",children:"No stacks in machine."})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=n(193);var d={Alphabetical:function(e,t){return e-t},"By availability":function(e,t){return-(e.affordable-t.affordable)},"By price":function(e,t){return e.price-t.price}};t.MiningVendor=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:400,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",scrollable:!0,children:[(0,o.createComponentVNode)(2,l.MiningUser,{insertIdText:"Please insert an ID in order to make purchases."}),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,u)]})})};var u=function(e,t){var n=(0,i.useBackend)(t),l=(n.act,n.data),u=l.has_id,s=l.id,p=l.items,h=(0,i.useLocalState)(t,"search",""),C=h[0],f=(h[1],(0,i.useLocalState)(t,"sort","Alphabetical")),N=f[0],b=(f[1],(0,i.useLocalState)(t,"descending",!1)),V=b[0],g=(b[1],(0,r.createSearch)(C,(function(e){return e[0]}))),v=!1,_=Object.entries(p).map((function(e,t){var n=Object.entries(e[1]).filter(g).map((function(e){return e[1].affordable=u&&s.points>=e[1].price,e[1]})).sort(d[N]);if(0!==n.length)return V&&(n=n.reverse()),v=!0,(0,o.createComponentVNode)(2,m,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,a.Section,{onClick:function(e){return(0,c.refocusLayout)()},children:v?_:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No items matching your criteria was found!"})})})},s=function(e,t){var n=(0,i.useLocalState)(t,"search",""),r=(n[0],n[1]),c=(0,i.useLocalState)(t,"sort",""),l=(c[0],c[1]),u=(0,i.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:"Alphabetical",options:Object.keys(d),width:"100%",lineHeight:"19px",onSelected:function(e){return l(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"arrow-down":"arrow-up",height:"19px",tooltip:s?"Descending order":"Ascending order",tooltipPosition:"bottom-left",ml:"0.5rem",onClick:function(){return m(!s)}})})]})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=e.title,d=e.items,u=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Collapsible,Object.assign({open:!0,title:l},u,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,a.Button,{disabled:!c.has_id||c.id.points=450?"Overcharged":e>=250?"Good Charge":"Low Charge":e>=250?"NIF Power Requirement met.":e>=150?"Fluctuations in available power.":"Power failure imminent."},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=(n.config,n.data),u=c.nif_percent,s=c.nif_stat,m=(c.last_notification,c.nutrition),p=c.isSynthetic,h=c.modules,C=e.setViewing;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"NIF Condition",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u,minValue:0,maxValue:100,ranges:{good:[50,Infinity],average:[25,50],bad:[-Infinity,0]},children:[l(s,u)," (",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:u}),"%)"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"NIF Power",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,minValue:0,maxValue:700,ranges:{good:[250,Infinity],average:[150,250],bad:[0,150]},children:d(m,p)})})]}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"NIFSoft Modules",mt:1,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",color:"bad",confirmContent:"UNINSTALL?",confirmIcon:"trash",tooltip:"Uninstall Module",tooltipPosition:"left",onClick:function(){return a("uninstall",{module:e.ref})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"search",onClick:function(){return C(e)},tooltip:"View Information",tooltipPosition:"left"})],4),children:e.activates&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,selected:e.active,content:e.stat_text,onClick:function(){return a("toggle_module",{module:e.ref})}})||(0,o.createComponentVNode)(2,i.Box,{children:e.stat_text})},e.ref)}))})})]})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.theme;return(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"NIF Theme",verticalAlign:"top",children:(0,o.createComponentVNode)(2,i.Dropdown,{width:"100%",placeholder:"Default",selected:l,options:c,onSelected:function(e){return a("setTheme",{theme:e})}})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NTNetRelay=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(61);t.NTNetRelay=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=i.dos_crashed,u=(i.enabled,i.dos_overload,i.dos_capacity,(0,o.createComponentVNode)(2,l));return c&&(u=(0,o.createComponentVNode)(2,d)),(0,o.createComponentVNode)(2,a.Window,{width:c?700:500,height:c?600:300,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:u})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.dos_crashed,c.enabled),d=c.dos_overload,u=c.dos_capacity;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:l,content:"Relay "+(l?"On":"Off"),onClick:function(){return a("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Network Buffer Status",children:[d," / ",u," GQ"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Options",children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",content:"Purge network blacklist",onClick:function(){return a("purge")}})})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act;n.data;return(0,o.createComponentVNode)(2,c.FullscreenNotice,{title:"ERROR",children:[(0,o.createComponentVNode)(2,i.Box,{fontSize:"1.5rem",bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"}),(0,o.createVNode)(1,"h2",null,"NETWORK BUFFERS OVERLOADED",16),(0,o.createVNode)(1,"h3",null,"Overload Recovery Mode",16),(0,o.createVNode)(1,"i",null,"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.",16),(0,o.createVNode)(1,"h3",null,"ADMINISTRATIVE OVERRIDE",16),(0,o.createVNode)(1,"b",null," CAUTION - Data loss may occur ",16)]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",content:"Purge buffered traffic",onClick:function(){return a("restart")}})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Newscaster=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=n(62);t.Newscaster=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data);r.screen,r.user;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.TemporaryNotice,{decode:!0}),(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.user,(0,i.useSharedState)(t,"screen","Main Menu")),c=r[0],l=r[1],d=u[c];return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,d,{setScreen:l})})},u={"Main Menu":function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.securityCaster,l=r.wanted_issue,d=e.setScreen;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Main Menu",children:[l&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eye",onClick:function(){return d("View Wanted")},color:"bad",children:"Read WANTED Issue"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eye",onClick:function(){return d("View List")},children:"View Feed Channels"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",onClick:function(){return d("New Channel")},children:"Create Feed Channel"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",onClick:function(){return d("New Story")},children:"Create Feed Message"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"print",onClick:function(){return d("Print")},children:"Print Newspaper"})]}),!!c&&(0,o.createComponentVNode)(2,a.Section,{title:"Feed Security Functions",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",onClick:function(){return d("New Wanted")},children:'Manage "Wanted" Issue'})})],0)},"New Channel":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.channel_name,u=l.c_locked,s=l.user,m=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Creating new Feed Channel",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Channel Name",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:(0,r.decodeHtmlEntities)(d),onInput:function(e,t){return c("set_channel_name",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Channel Author",color:"good",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Accept Public Feeds",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"lock-open",selected:!u,onClick:function(){return c("set_channel_lock")},children:u?"No":"Yes"})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"good",icon:"plus",onClick:function(){return c("submit_new_channel")},children:"Submit Channel"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return m("Main Menu")},children:"Cancel"})]})},"View List":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data.channels,d=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Station Feed Channels",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return d("Main Menu")},children:"Back"}),children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eye",color:e.admin?"good":e.censored?"bad":"",onClick:function(){c("show_channel",{show_channel:e.ref}),d("View Selected Channel")},children:(0,r.decodeHtmlEntities)(e.name)},e.name)}))})},"New Story":function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.channel_name,d=c.user,u=c.msg,s=c.photo_data,m=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Creating new Feed Message...",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiving Channel",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return r("set_channel_receiving")},children:l||"Unset"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Author",color:"good",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Body",verticalAlign:"top",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Section,{width:"99%",inline:!0,children:u||"(no message yet)"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{verticalAlign:"top",onClick:function(){return r("set_new_message")},icon:"pen",tooltip:"Edit Message",tooltipPosition:"left"})})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attach Photo",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"image",onClick:function(){return r("set_attachment")},children:s?"Photo Attached":"No Photo"})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"good",icon:"plus",onClick:function(){return r("submit_new_message")},children:"Submit Message"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return m("Main Menu")},children:"Cancel"})]})},Print:function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.total_num,d=c.active_num,u=c.message_num,s=c.paper_remaining,m=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Printing",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",mb:1,children:["Newscaster currently serves a total of ",l," Feed channels, ",d," of which are active, and a total of ",u," Feed stories."]}),(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Liquid Paper remaining",children:[100*s," cm\xb3"]})}),(0,o.createComponentVNode)(2,a.Button,{mt:1,fluid:!0,color:"good",icon:"plus",onClick:function(){return r("print_paper")},children:"Print Paper"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return m("Main Menu")},children:"Cancel"})]})},"New Wanted":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.channel_name,u=l.msg,s=l.photo_data,m=l.user,p=l.wanted_issue,h=e.setScreen;return(0,o.createComponentVNode)(2,a.Section,{title:"Wanted Issue Handler",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return h("Main Menu")},children:"Back"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Already In Circulation",children:"A wanted issue is already in circulation. You can edit or cancel it below."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Name",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:(0,r.decodeHtmlEntities)(d),onInput:function(e,t){return c("set_channel_name",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:(0,r.decodeHtmlEntities)(u),onInput:function(e,t){return c("set_wanted_desc",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attach Photo",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"image",onClick:function(){return c("set_attachment")},children:s?"Photo Attached":"No Photo"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prosecutor",color:"good",children:m})]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,fluid:!0,color:"good",icon:"plus",onClick:function(){return c("submit_wanted")},children:"Submit Wanted Issue"}),!!p&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"average",icon:"minus",onClick:function(){return c("cancel_wanted")},children:"Take Down Issue"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"bad",icon:"undo",onClick:function(){return h("Main Menu")},children:"Cancel"})]})},"View Wanted":function(e,t){var n=(0,i.useBackend)(t),c=(n.act,n.data.wanted_issue),l=e.setScreen;return c?(0,o.createComponentVNode)(2,a.Section,{title:"--STATIONWIDE WANTED ISSUE--",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return l("Main Menu")},children:"Back"}),children:(0,o.createComponentVNode)(2,a.Box,{color:"white",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submitted by",color:"good",children:(0,r.decodeHtmlEntities)(c.author)}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal",children:(0,r.decodeHtmlEntities)(c.criminal)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,r.decodeHtmlEntities)(c.desc)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Photo",children:c.img&&(0,o.createVNode)(1,"img",null,null,1,{src:c.img})||"None"})]})})}):(0,o.createComponentVNode)(2,a.Section,{title:"No Outstanding Wanted Issues",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return l("Main Menu")},children:"Back"}),children:"There are no wanted issues currently outstanding."})},"View Selected Channel":function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.viewing_channel,u=l.securityCaster,s=l.company,m=e.setScreen;return d?(0,o.createComponentVNode)(2,a.Section,{title:(0,r.decodeHtmlEntities)(d.name),buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"bad",icon:"ban",confirmIcon:"ban",content:"Issue D-Notice",onClick:function(){return c("toggle_d_notice",{ref:d.ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("View List")},children:"Back"})],0),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Channel Created By",children:u&&(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"bad",icon:"strikethrough",confirmIcon:"strikethrough",content:(0,r.decodeHtmlEntities)(d.author),tooltip:"Censor?",confirmContent:"Censor Author",onClick:function(){return c("censor_channel_author",{ref:d.ref})}})||(0,o.createComponentVNode)(2,a.Box,{children:(0,r.decodeHtmlEntities)(d.author)})})}),!!d.censored&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:["ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a ",s," D-Notice. No further feed story additions are allowed while the D-Notice is in effect."]}),!!d.messages.length&&d.messages.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{children:["- ",(0,r.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/png;base64,"+e.img}),(0,r.decodeHtmlEntities)(e.caption)||null]}),(0,o.createComponentVNode)(2,a.Box,{color:"grey",children:["[Story by ",(0,r.decodeHtmlEntities)(e.author)," - ",e.timestamp,"]"]}),!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{mt:1,color:"bad",icon:"strikethrough",confirmIcon:"strikethrough",content:"Censor Story",onClick:function(){return c("censor_channel_story_body",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"bad",icon:"strikethrough",confirmIcon:"strikethrough",content:"Censor Author",onClick:function(){return c("censor_channel_story_author",{ref:e.ref})}})],4)]},e.ref)}))||!d.censored&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No feed messages found in channel."})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Channel Not Found",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return m("View List")},children:"Back"}),children:"The channel you were looking for no longer exists."})}}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBoard=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.NoticeBoard=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.notices;return(0,o.createComponentVNode)(2,a.Window,{width:330,height:300,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:l.length?(0,o.createComponentVNode)(2,i.LabeledList,{children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[e.isphoto&&(0,o.createComponentVNode)(2,i.Button,{icon:"image",content:"Look",onClick:function(){return c("look",{ref:e.ref})}})||e.ispaper&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"sticky-note",content:"Read",onClick:function(){return c("read",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Write",onClick:function(){return c("write",{ref:e.ref})}})],4)||"Unknown Entity",(0,o.createComponentVNode)(2,i.Button,{icon:"minus-circle",content:"Remove",onClick:function(){return c("remove",{ref:e.ref})}})]},t)}))}):(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No notices posted here."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAccessDecrypter=void 0;var o=n(0),r=n(1),i=n(3),a=n(133),c=n(2);t.NtosAccessDecrypter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.message,s=d.running,m=d.rate,p=d.factor,h=d.regions,C=function(e){for(var t="";t.lengthp?t+="0":t+="1";return t};return(0,o.createComponentVNode)(2,i.NtosWindow,{width:600,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:u&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:u})||s&&(0,o.createComponentVNode)(2,c.Section,{children:["Attempting to decrypt network access codes. Please wait. Rate: ",m," PHash/s",(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Box,{children:C(45)}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"ban",onClick:function(){return l("PRG_reset")},children:"Abort"})]})||(0,o.createComponentVNode)(2,c.Section,{title:"Pick access code to decrypt",children:h.length&&(0,o.createComponentVNode)(2,a.IdentificationComputerRegions,{actName:"PRG_execute"})||(0,o.createComponentVNode)(2,c.Box,{children:"Please insert ID card."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(0),r=n(75),i=n(1),a=n(2),c=n(3);t.NtosArcade=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(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:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,a.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,a.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.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===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,a.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("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===d.GameActive,onClick:function(){return l("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===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,a.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmosControl=void 0;var o=n(0),r=n(3),i=n(186);t.NtosAtmosControl=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:870,height:708,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.AtmosControlContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCameraConsole=void 0;var o=n(0),r=n(3),i=n(187);t.NtosCameraConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:870,height:708,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.CameraConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCommunicationsConsole=void 0;var o=n(0),r=n(1),i=n(3),a=n(189);t.NtosCommunicationsConsole=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.CommunicationsConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,h=l.disk_size,C=l.disk_used,f=l.hardware,N=void 0===f?[]:f;return(0,o.createComponentVNode)(2,a.NtosWindow,{theme:d,width:520,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,i.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"File System",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:C,minValue:0,maxValue:h,color:"good",children:[C," GQ / ",h," GQ"]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Hardware Components",children:N.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,i.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return c("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewMonitor=void 0;var o=n(0),r=n(3),i=n(190);t.NtosCrewMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.CrewMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosDigitalWarrant=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(8);t.NtosDigitalWarrant=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=(i.warrantname,i.warrantcharges,i.warrantauth),d=(i.type,i.allwarrants,(0,o.createComponentVNode)(2,l));return c&&(d=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:500,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:d})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act;n.data.allwarrants;return(0,o.createComponentVNode)(2,i.Section,{title:"Warrants",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"plus",fluid:!0,onClick:function(){return a("addwarrant")},children:"Create New Warrant"}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Arrest Warrants",children:(0,o.createComponentVNode)(2,d,{type:"arrest"})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Search Warrants",children:(0,o.createComponentVNode)(2,d,{type:"search"})})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=e.type,u=l.allwarrants,s=(0,c.filter)((function(e){return e.arrestsearch===d}))(u);return(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:"arrest"===d?"Name":"Location"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"arrest"===d?"Charges":"Reason"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Authorized By"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Edit"})]}),s.length&&s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.warrantname}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.charges}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.auth}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrant",{id:e.id})}})})]},e.id)}))||(0,o.createComponentVNode)(2,i.Table.Row,{children:(0,o.createComponentVNode)(2,i.Table.Cell,{colspan:"3",color:"bad",children:["No ",d," warrants found."]})})]})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.warrantname,d=c.warrantcharges,u=c.warrantauth,s=c.type,m="arrest"===s,p="arrest"===s?"Name":"Location",h="arrest"===s?"Charges":"Reason";return(0,o.createComponentVNode)(2,i.Section,{title:m?"Editing Arrest Warrant":"Editing Search Warrant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"save",onClick:function(){return a("savewarrant")},children:"Save"}),(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"trash",onClick:function(){return a("deletewarrant")},children:"Delete"}),(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("back")},children:"Back"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:p,buttons:m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"search",onClick:function(){return a("editwarrantname")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrantnamecustom")}})],4)||(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrantnamecustom")}}),children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:h,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("editwarrantcharges")}}),children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Authorized By",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"balance-scale",onClick:function(){return a("editwarrantauth")}}),children:u})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosEmailAdministration=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(194);t.NtosEmailAdministration=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),c=i.error,m=i.cur_title,p=i.current_account,h=(0,o.createComponentVNode)(2,l);return c?h=(0,o.createComponentVNode)(2,d):m?h=(0,o.createComponentVNode)(2,u):p&&(h=(0,o.createComponentVNode)(2,s)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:600,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:h})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.accounts;return(0,o.createComponentVNode)(2,i.Section,{title:"Welcome to the NTNet Email Administration System",children:[(0,o.createComponentVNode)(2,i.Box,{italic:!0,mb:1,children:"SECURE SYSTEM - Have your identification ready"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"plus",onClick:function(){return a("newaccount")},children:"Create New Account"}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,mt:1,mb:1,children:"Select account to administrate"}),c.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eye",onClick:function(){return a("viewaccount",{viewaccount:e.uid})},children:e.login},e.uid)}))]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.error;return(0,o.createComponentVNode)(2,i.Section,{title:"Message",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("back")},children:"Back"}),children:c})},u=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,c.NtosEmailClientViewMessage,{administrator:!0})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.error,c.msg_title,c.msg_body,c.msg_timestamp,c.msg_source,c.current_account),d=c.cur_suspended,u=c.messages;c.accounts;return(0,o.createComponentVNode)(2,i.Section,{title:"Viewing "+l+" in admin mode",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("back")},children:"Back"}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Account Status",children:(0,o.createComponentVNode)(2,i.Button,{color:d?"bad":"",icon:"ban",tooltip:(d?"Uns":"S")+"uspend Account?",onClick:function(){return a("ban")},children:d?"Suspended":"Normal"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,i.Button,{icon:"key",onClick:function(){return a("changepass")},children:"Change Password"})})]}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Messages",children:u.length&&(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:"Source"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Title"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Received at"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Actions"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.source}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.title}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.timestamp}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return a("viewmail",{viewmail:e.uid})},children:"View"})})]},e.uid)}))]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No messages found in selected account."})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);n(6);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.filename,p=d.filedata,h=d.error,C=d.files,f=void 0===C?[]:C,N=d.usbfiles,b=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(m||h)&&(0,o.createComponentVNode)(2,i.Section,{title:"Viewing File "+m,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"Edit",onClick:function(){return l("PRG_edit")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"print",content:"Print",onClick:function(){return l("PRG_printfile")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Close",onClick:function(){return l("PRG_closefile")}})],4),children:[h||null,p&&(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:p}})]})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,c,{files:f,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onOpen:function(e){return l("PRG_openfile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,i.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,c,{usbmode:!0,files:b,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})||null,(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return l("PRG_newtextfile")},children:"New Text File"})})],0)})})};var c=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,a=e.usbmode,c=e.onUpload,l=e.onDelete,d=e.onRename,u=e.onOpen;return(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:"File"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.undeletable?e.name:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Input,{width:"80%",content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}}),(0,o.createComponentVNode)(2,i.Button,{content:"Open",onClick:function(){return u(e.name)}})],4)}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(a?(0,o.createComponentVNode)(2,i.Button,{icon:"download",tooltip:"Download",onClick:function(){return c(e.name)}}):(0,o.createComponentVNode)(2,i.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return c(e.name)}}))],0)})]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosIdentificationComputer=void 0;var o=n(0),r=(n(8),n(1)),i=(n(2),n(3)),a=(n(6),n(28),n(133));t.NtosIdentificationComputer=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.IdentificationComputerContent,{ntos:!0})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c={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",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,h=d.light_on,C=d.comp_light_color,f=d.removable_media,N=void 0===f?[]:f,b=d.login,V=void 0===b?[]:b;return(0,o.createComponentVNode)(2,a.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{width:"144px",icon:"lightbulb",selected:h,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",h?"ON":"OFF"]}),(0,o.createComponentVNode)(2,i.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,i.ColorBox,{ml:1,color:C})]})]}),(0,o.createComponentVNode)(2,i.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject ID",disabled:!V.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{children:["ID Name: ",V.IDName]}),(0,o.createComponentVNode)(2,i.Table.Row,{children:["Assignment: ",V.IDJob]})]})}),!!N.length&&(0,o.createComponentVNode)(2,i.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,i.Table,{children:N.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,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,i.Table,{children:m.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,{fluid:!0,color:"transparent",icon:c[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,width:"18px",children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",tooltip:"Set Autorun",tooltipPosition:"left",selected:e.autorun,onClick:function(){return l("PC_setautorun",{name:e.name})},children:"AR"})})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,h=l.is_operator,C=l.all_channels,f=void 0===C?[]:C,N=l.clients,b=void 0===N?[]:N,V=l.messages,g=void 0===V?[]:V,v=null!==p,_=s||u;return(0,o.createComponentVNode)(2,a.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.Section,{height:"600px",children:(0,o.createComponentVNode)(2,i.Table,{height:"580px",children:(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,i.Box,{height:"560px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return c("PRG_newchannel",{new_channel_name:t})}}),f.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return c("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return c("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return c("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:[(0,o.createComponentVNode)(2,i.Box,{height:"560px",overflowY:"scroll",children:v&&(_?g.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,i.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,i.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,i.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return c("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,i.Box,{height:"465px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e.name},e.name)}))}),v&&_&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return c("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return c("PRG_leavechannel")}})],4),!!h&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return c("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return c("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,i.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return c("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.relays,d=void 0===l?[]:l,u=c.focus,s=c.target,m=c.speed,p=c.overload,h=c.capacity,C=c.error;if(C)return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.NoticeBox,{children:C}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return a("PRG_reset")}})],4);var f=function(e){for(var t="",n=p/h;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,i.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)}),(0,o.createComponentVNode)(2,i.Box,{children:f(45)})]}):(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.id,selected:u===e.id,onClick:function(){return a("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return a("PRG_execute")}})]})};t.NtosNetDosContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3);t.NtosNetDownloader=function(e,t){var n=(0,i.useBackend)(t),r=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,h=void 0===p?[]:p,C=d.error,f=d.hacked_programs,N=void 0===f?[]:f,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!C&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:C}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return r("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:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:h.map((function(e){return(0,o.createComponentVNode)(2,l,{program:e},e.filename)}))}),!!b&&(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."}),N.map((function(e){return(0,o.createComponentVNode)(2,l,{program:e},e.filename)}))]})]})})};var l=function(e,t){var n=e.program,c=(0,i.useBackend)(t),l=c.act,d=c.data,u=d.disk_size,s=d.disk_used,m=d.downloadcompletion,p=(d.downloading,d.downloadname),h=d.downloadsize,C=d.downloadspeed,f=d.downloads_queue,N=u-s;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:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:h,value:m,children:[(0,r.round)(m/h*100,1),"% (",C,"GQ/s)"]})||-1!==f.indexOf(n.filename)&&(0,o.createComponentVNode)(2,a.Button,{icon:"ban",color:"bad",onClick:function(){return l("PRG_removequeued",{filename:n.filename})},children:"Queued..."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:n.size>N,onClick:function(){return l("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.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!"]}),n.size>N&&(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:n.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(0),r=n(2),i=n(1),a=n(3);t.NtosNetMonitor=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,h=l.config_systemcontrol,C=l.idsalarm,f=l.idsstatus,N=l.ntnetmaxlogs,b=l.maxlogs,V=l.minlogs,g=l.banned_nids,v=l.ntnetlogs,_=void 0===v?[]:v;return(0,o.createComponentVNode)(2,a.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[(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:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return c("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"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:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return c("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return c("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return c("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:h?"power-off":"times",content:h?"ENABLED":"DISABLED",selected:h,onClick:function(){return c("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!C&&(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:"Banned NIDs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:"ban",onClick:function(){return c("ban_nid")},children:"Ban NID"}),(0,o.createComponentVNode)(2,r.Button,{icon:"balance-scale",onClick:function(){return c("unban_nid")},children:"Unban NID"})],4),children:g.join(", ")||"None"}),(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 c("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return c("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:N,minValue:V,maxValue:b,width:"39px",onChange:function(e,t){return c("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 c("purgelogs")}}),children:_.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetTransfer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosNetTransfer=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),m=i.error,p=i.downloading,h=i.uploading,C=i.upload_filelist,f=(0,o.createComponentVNode)(2,s);return m?f=(0,o.createComponentVNode)(2,c):p?f=(0,o.createComponentVNode)(2,l):h?f=(0,o.createComponentVNode)(2,d):C.length&&(f=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:575,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:f})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.error;return(0,o.createComponentVNode)(2,i.Section,{title:"An error has occured during operation.",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("PRG_reset")},children:"Reset"}),children:["Additional Information: ",c]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.download_name,d=c.download_progress,u=c.download_size,s=c.download_netspeed;return(0,o.createComponentVNode)(2,i.Section,{title:"Download in progress",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Downloaded File",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d,maxValue:u,children:[d," / ",u," GQ"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Transfer Speed",children:[s," GQ/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Controls",children:(0,o.createComponentVNode)(2,i.Button,{icon:"ban",onClick:function(){return a("PRG_reset")},children:"Cancel Download"})})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.upload_clients,d=c.upload_filename,u=c.upload_haspassword;return(0,o.createComponentVNode)(2,i.Section,{title:"Server enabled",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Clients Connected",children:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Provided file",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Server Password",children:u?"Enabled":"Disabled"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Commands",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"lock",onClick:function(){return a("PRG_setpassword")},children:"Set Password"}),(0,o.createComponentVNode)(2,i.Button,{icon:"ban",onClick:function(){return a("PRG_reset")},children:"Cancel Upload"})]})]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.upload_filelist;return(0,o.createComponentVNode)(2,i.Section,{title:"File transfer server ready.",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return a("PRG_reset")},children:"Cancel"}),children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"lock",onClick:function(){return a("PRG_setpassword")},children:"Set Password"}),(0,o.createComponentVNode)(2,i.Section,{title:"Pick file to serve.",level:2,children:c.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"upload",onClick:function(){return a("PRG_uploadfile",{uid:e.uid})},children:[e.filename," (",e.size,"GQ)"]},e.uid)}))})]})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.servers;return(0,o.createComponentVNode)(2,i.Section,{title:"Available Files",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"upload",onClick:function(){return a("PRG_uploadmenu")},children:"Send File"}),children:c.length&&(0,o.createComponentVNode)(2,i.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.uid,children:[!!e.haspassword&&(0,o.createComponentVNode)(2,i.Icon,{name:"lock",mr:1}),e.filename,"\xa0 (",e.size,"GQ)\xa0",(0,o.createComponentVNode)(2,i.Button,{icon:"download",onClick:function(){return a("PRG_downloadfile",{uid:e.uid})},children:"Download"})]},e.uid)}))})||(0,o.createComponentVNode)(2,i.Box,{children:"No upload servers found."})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNewsBrowser=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(75);t.NtosNewsBrowser=function(e,t){var n=(0,r.useBackend)(t),c=n.act,s=n.data,m=s.article,p=s.download,h=s.message,C=(0,o.createComponentVNode)(2,d);return m?C=(0,o.createComponentVNode)(2,l):p&&(C=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.NtosWindow,{width:575,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:[h," ",(0,o.createComponentVNode)(2,i.Button,{icon:"times",onClick:function(){return c("PRG_clearmessage")}})]}),C]})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.article;if(!l)return(0,o.createComponentVNode)(2,i.Section,{children:"Error: Article not found."});var d=l.title,u=l.cover,s=l.content;return(0,o.createComponentVNode)(2,i.Section,{title:"Viewing: "+d,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"save",onClick:function(){return a("PRG_savearticle")},children:"Save"}),(0,o.createComponentVNode)(2,i.Button,{icon:"times",onClick:function(){return a("PRG_reset")},children:"Close"})],4),children:[!!u&&(0,o.createVNode)(1,"img",null,null,1,{src:(0,c.resolveAsset)(u)}),(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:s}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.showing_archived,d=c.all_articles;return(0,o.createComponentVNode)(2,i.Section,{title:"Articles List",buttons:(0,o.createComponentVNode)(2,i.Button.Checkbox,{onClick:function(){return a("PRG_toggle_archived")},checked:l,children:"Show Archived"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",onClick:function(){return a("PRG_openarticle",{uid:e.uid})}}),children:[e.size," GQ"]},e.uid)}))||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Error",children:"There appear to be no outstanding news articles on NTNet today."})})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.download,l=c.download_progress,d=c.download_maxprogress,u=c.download_rate;return(0,o.createComponentVNode)(2,i.Section,{title:"Downloading...",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:"good",minValue:0,value:l,maxValue:d,children:[l," / ",d," GQ"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Download Speed",children:[u," GQ/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Controls",children:(0,o.createComponentVNode)(2,i.Button,{icon:"ban",fluid:!0,onClick:function(){return a("PRG_reset")},children:"Abort Download"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosOvermapNavigation=void 0;var o=n(0),r=n(3),i=n(195);t.NtosOvermapNavigation=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:380,height:530,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.OvermapNavigationContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(0),r=n(3),i=n(135);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.PowerMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRCON=void 0;var o=n(0),r=n(3),i=n(196);t.NtosRCON=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:630,height:440,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.RCONContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(0),r=n(2),i=n(1),a=n(3);t.NtosRevelation=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data;return(0,o.createComponentVNode)(2,a.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return c("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:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return c("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosShutoffMonitor=void 0;var o=n(0),r=n(3),i=n(197);t.NtosShutoffMonitor=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i.ShutoffMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(0),r=n(3),i=n(198);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.StationAlertConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitor=void 0;var o=n(0),r=n(3),i=n(199);t.NtosSupermatterMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.SupermatterMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosUAV=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosUAV=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.current_uav,u=l.signal_strength,s=l.in_use,m=l.paired_uavs;return(0,o.createComponentVNode)(2,a.NtosWindow,{width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Selected UAV",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"UAV",children:d&&d.status||"[Not Connected]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Signal",children:d&&u||"[Not Connected]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:d&&(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d.power,onClick:function(){return c("power_uav")},children:d.power?"Online":"Offline"})||"[Not Connected]"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Camera",children:d&&(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:s,disabled:!d.power,onClick:function(){return c("view_uav")},children:d.power?"Available":"Unavailable"})||"[Not Connected]"})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Paired UAVs",children:m.length&&m.map((function(e){return(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"quidditch",onClick:function(){return c("switch_uav",{switch_uav:e.uavref})},children:e.name})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"times",onClick:function(){return c("del_uav",{del_uav:e.uavref})}})})]},e.uavref)}))||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No UAVs Paired."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWordProcessor=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.NtosWordProcessor=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.PC_device_theme,u=l.error,s=l.browsing,m=l.files,p=(l.usbconnected,l.usbfiles,l.filename),h=l.filedata;return(0,o.createComponentVNode)(2,a.NtosWindow,{resizable:!0,theme:d,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:u&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:[(0,o.createVNode)(1,"h2",null,"An Error has occured:",16),"Additional Information: ",u,"Please try again. If the problem persists, contact your system administrator for assistance.",(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back to menu",onClick:function(){return c("PRG_backtomenu")}})]})||s&&(0,o.createComponentVNode)(2,i.Section,{title:"File Browser",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back to editor",onClick:function(){return c("PRG_closebrowser")}}),children:(0,o.createComponentVNode)(2,i.Section,{title:"Available documents (local)",level:2,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:"Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Size (GQ)"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0})]}),m.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,{children:e.size}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,i.Button,{icon:"file-word",onClick:function(){return c("PRG_openfile",{PRG_openfile:e.name})},children:"Open"})})]},t)}))]})})})||(0,o.createComponentVNode)(2,i.Section,{title:"Document: "+p,children:[(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_newfile")},children:"New"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_loadmenu")},children:"Load"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_savefile")},children:"Save"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_saveasfile")},children:"Save As"})]}),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_editfile")},children:"Edit"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_txtrpeview")},children:"Preview"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("PRG_taghelp")},children:"Formatting Help"}),(0,o.createComponentVNode)(2,i.Button,{disabled:!h,onClick:function(){return c("PRG_printfile")},children:"Print"})]}),(0,o.createComponentVNode)(2,i.Section,{mt:1,children:(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:h}})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OmniFilter=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=function(e){return e.input?"Input":e.output?"Output":e.f_type?e.f_type:"Disabled"};t.OmniFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.config,m=d.ports,p=d.set_flow_rate,h=d.last_flow_rate;return(0,o.createComponentVNode)(2,a.Window,{width:360,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:s?"Configuration":"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:u?"On":"Off",selected:u,disabled:s,onClick:function(){return l("power")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",selected:s,onClick:function(){return l("configure")}})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:m?m.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.dir+" Port",children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{content:"IN",selected:e.input,icon:"compress-arrows-alt",onClick:function(){return l("switch_mode",{mode:"in",dir:e.dir})}}),(0,o.createComponentVNode)(2,i.Button,{content:"OUT",selected:e.output,icon:"expand-arrows-alt",onClick:function(){return l("switch_mode",{mode:"out",dir:e.dir})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",disabled:e.input||e.output,content:e.f_type||"None",onClick:function(){return l("switch_filter",{mode:e.f_type,dir:e.dir})}})],4):c(e)},e.dir)})):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No Ports Detected"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Flow Rate",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Flow Rate",children:[h," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate Limit",children:s?(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:p/10+" L/s",onClick:function(){return l("set_flow_rate")}}):p/10+" L/s"})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OmniMixer=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=function(e){return e.input?"Input":e.output?"Output":e.f_type?e.f_type:"Disabled"};t.OmniMixer=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.power,s=d.config,m=d.ports,p=d.set_flow_rate,h=d.last_flow_rate;return(0,o.createComponentVNode)(2,a.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:s?"Configuration":"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:u?"On":"Off",selected:u,disabled:s,onClick:function(){return c("power")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",selected:s,onClick:function(){return c("configure")}})],4),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,{textAlign:"center",children:"Port"}),s?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Input"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Output"})],4):(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Mode"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Concentration"}),s?(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Lock"}):null]}),m?m.map((function(e){return(0,o.createComponentVNode)(2,l,{port:e,config:s},e.dir)})):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No Ports Detected"})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Flow Rate",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Flow Rate",children:[h," L/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate Limit",children:s?(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:p/10+" L/s",onClick:function(){return c("set_flow_rate")}}):p/10+" L/s"})]})})]})})};var l=function(e,t){var n=(0,r.useBackend)(t).act,a=e.port,l=e.config;return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:a.dir+" Port"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:l?(0,o.createComponentVNode)(2,i.Button,{content:"IN",selected:a.input,disabled:a.output,icon:"compress-arrows-alt",onClick:function(){return n("switch_mode",{mode:a.input?"none":"in",dir:a.dir})}}):c(a)}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:l?(0,o.createComponentVNode)(2,i.Button,{content:"OUT",selected:a.output,icon:"expand-arrows-alt",onClick:function(){return n("switch_mode",{mode:"out",dir:a.dir})}}):100*a.concentration+"%"}),l?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",width:"20%",children:(0,o.createComponentVNode)(2,i.Button,{width:"100%",icon:"wrench",disabled:!a.input,content:a.input?100*a.concentration+" %":"-",onClick:function(){return n("switch_con",{dir:a.dir})}})}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,i.Button,{icon:a.con_lock?"lock":"lock-open",disabled:!a.input,selected:a.con_lock,content:a.f_type||"None",onClick:function(){return n("switch_conlock",{dir:a.dir})}})})],4):null]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(5),i=n(1),a=n(3),c=n(2),l=[["good","Conscious"],["average","Unconscious"],["bad","DEAD"]],d=[["Resp.","oxyLoss"],["Toxin","toxLoss"],["Brute","bruteLoss"],["Burn","fireLoss"]],u={average:[.25,.5],bad:[.5,Infinity]},s=["bad","average","average","good","average","average","bad"];t.OperatingComputer=function(e,t){var n,r=(0,i.useBackend)(t),l=r.act,d=r.data,u=d.hasOccupant,s=d.choice;return n=s?(0,o.createComponentVNode)(2,h):u?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,a.Window,{width:650,height:455,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:!s,icon:"user",onClick:function(){return l("choiceOff")},children:"Patient"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:!!s,icon:"cog",onClick:function(){return l("choiceOn")},children:"Options"})]}),(0,o.createComponentVNode)(2,c.Section,{flexGrow:"1",children:n})]})})};var m=function(e,t){var n=(0,i.useBackend)(t).data.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Patient",level:"2",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:n.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",color:l[n.stat][0],children:l[n.stat][1]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:n.maxHealth,value:n.health/n.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),d.map((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e[0]+" Damage",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:"100",value:n[e[1]]/100,ranges:u,children:(0,r.round)(n[e[1]])},t)},t)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:n.maxTemp,value:n.bodyTemperature/n.maxTemp,color:s[n.temperatureSuitability+3],children:[(0,r.round)(n.btCelsius),"\xb0C, ",(0,r.round)(n.btFaren),"\xb0F"]})}),!!n.hasBlood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:n.bloodMax,value:n.bloodLevel/n.bloodMax,ranges:{bad:[-Infinity,.6],average:[.6,.9],good:[.6,Infinity]},children:[n.bloodPercent,"%, ",n.bloodLevel,"cl"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pulse",children:[n.pulse," BPM"]})],4)]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Current Procedure",level:"2",children:n.surgery&&n.surgery.length?(0,o.createComponentVNode)(2,c.LabeledList,{children:n.surgery.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Current State",children:e.currentStage}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Next Steps",children:e.nextSteps.map((function(e){return(0,o.createVNode)(1,"div",null,e,0,null,e)}))})]})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No procedure ongoing."})})],4)},p=function(){return(0,o.createComponentVNode)(2,c.Flex,{textAlign:"center",height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No patient detected."]})})},h=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,l=a.verbose,d=a.health,u=a.healthAlarm,s=a.oxy,m=a.oxyAlarm,p=a.crit;return(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loudspeaker",children:(0,o.createComponentVNode)(2,c.Button,{selected:l,icon:l?"toggle-on":"toggle-off",content:l?"On":"Off",onClick:function(){return r(l?"verboseOff":"verboseOn")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health Announcer",children:(0,o.createComponentVNode)(2,c.Button,{selected:d,icon:d?"toggle-on":"toggle-off",content:d?"On":"Off",onClick:function(){return r(d?"healthOff":"healthOn")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health Announcer Threshold",children:(0,o.createComponentVNode)(2,c.Knob,{bipolar:!0,minValue:"-100",maxValue:"100",value:u,stepPixelSize:"5",ml:"0",format:function(e){return e+"%"},onChange:function(e,t){return r("health_adj",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Oxygen Alarm",children:(0,o.createComponentVNode)(2,c.Button,{selected:s,icon:s?"toggle-on":"toggle-off",content:s?"On":"Off",onClick:function(){return r(s?"oxyOff":"oxyOn")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Oxygen Alarm Threshold",children:(0,o.createComponentVNode)(2,c.Knob,{bipolar:!0,minValue:"-100",maxValue:"100",value:m,stepPixelSize:"5",ml:"0",onChange:function(e,t){return r("oxy_adj",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Critical Alert",children:(0,o.createComponentVNode)(2,c.Button,{selected:p,icon:p?"toggle-on":"toggle-off",content:p?"On":"Off",onClick:function(){return r(p?"critOff":"critOn")}})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OvermapDisperser=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(134);t.OvermapDisperser=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=l.faillink,u=l.calibration,s=l.overmapdir,m=l.cal_accuracy,p=l.strength,h=l.range,C=l.next_shot,f=l.nopower,N=(l.skill,l.chargeload);return d?(0,o.createComponentVNode)(2,i.Section,{title:"Error",children:"Machine is incomplete, out of range, or misaligned!"}):(0,o.createComponentVNode)(2,i.Flex,{wrap:"wrap",spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"22%",children:(0,o.createComponentVNode)(2,i.Section,{title:"Targeting",textAlign:"center",children:(0,o.createComponentVNode)(2,c.OvermapPanControls,{actToDo:"choose",selected:function(e){return e===s}})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"74%",grow:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Charge",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[f&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Error",children:"At least one part of the machine is unpowered."})||null,(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Load Type",children:N}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cooldown",children:0===C&&(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Ready"})||C>1&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:C})," Seconds",(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Warning: Do not fire during cooldown."})]})||null})]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",mt:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Calibration",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m}),"%",(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"exchange-alt",onClick:function(){return a("skill_calibration")},children:"Pre-Calibration"}),(0,o.createComponentVNode)(2,i.Box,{mt:1,children:u.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:["Cal #",t,":",(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"random",onClick:function(){return a("calibration",{calibration:t})},children:e.toString()})]},t)}))})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"45%",grow:1,mt:1,children:(0,o.createComponentVNode)(2,i.Section,{title:"Setup",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Strength",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"fist-raised",onClick:function(){return a("strength")},children:p})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Radius",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"expand-arrows-alt",onClick:function(){return a("range")},children:h})})]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,mt:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"red",icon:"bomb",onClick:function(){return a("fire")},children:"Fire ORB"})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.OvermapFull=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(200),l=n(201),d=n(202);t.OvermapFull=function(e,t){var n=(0,r.useLocalState)(t,"overmapFullState",0),u=n[0],s=n[1];return(0,o.createComponentVNode)(2,a.Window,{width:800,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===u,onClick:function(){return s(0)},children:"Engines"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Helm"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Sensors"})]}),0===u&&(0,o.createComponentVNode)(2,c.OvermapEnginesContent),1===u&&(0,o.createComponentVNode)(2,l.OvermapHelmContent),2===u&&(0,o.createComponentVNode)(2,d.OvermapShipSensorsContent)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OvermapShieldGenerator=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.OvermapShieldGenerator=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:500,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,u=c.modes,s=c.offline_for;return s?(0,o.createComponentVNode)(2,i.Section,{title:"EMERGENCY SHUTDOWN",color:"bad",children:["An emergency shutdown has been initiated - generator cooling down. Please wait until the generator cools down before resuming operation. Estimated time left: ",s," seconds."]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.Section,{title:"Field Calibration",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:e.status,onClick:function(){return a("toggle_mode",{toggle_mode:e.flag})},children:e.status?"Enabled":"Disabled"}),children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:e.desc}),(0,o.createComponentVNode)(2,i.Box,{mt:.5,children:["Multiplier: ",e.multiplier]})]},e.name)}))})],4)},l=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data),c=a.running,l=a.overloaded,d=a.mitigation_max,u=a.mitigation_physical,s=a.mitigation_em,m=a.mitigation_heat,p=a.field_integrity,h=a.max_energy,C=a.current_energy,f=a.percentage_energy,N=a.total_segments,b=a.functional_segments,V=a.field_radius,g=a.target_radius,v=a.input_cap_kw,_=a.upkeep_power_usage,k=a.power_usage,y=a.spinup_counter;return(0,o.createComponentVNode)(2,i.Section,{title:"System Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Generator is",children:1===c&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Shutting Down"})||2===c&&(l&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Overloaded"})||(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Running"}))||3===c&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Inactive"})||4===c&&(0,o.createComponentVNode)(2,i.Box,{color:"blue",children:["Spinning Up\xa0",g!==V&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:"(Adjusting Radius)"})||(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:[2*y,"s"]})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Offline"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy Storage",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:C,maxValue:h,children:[C," / ",h," MJ (",f,"%)"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shield Integrity",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p}),"%"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mitigation",children:[s,"% EM / ",u,"% PH / ",m,"% HE / ",d,"% MAX"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Upkeep Energy Use",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:_})," kW"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total Energy Use",children:v&&(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:k,maxValue:v,children:[k," / ",v," kW"]})})||(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:k})," kW (No Limit)"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Field Size",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:b}),"\xa0/\xa0",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:N})," m\xb2 (radius ",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:V}),", target ",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:g}),")"]})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.running,d=c.hacked,u=c.idle_multiplier,s=c.idle_valid_values;return(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createFragment)([l>=2&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("begin_shutdown")},selected:!0,children:"Turn off"}),3===l&&(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("toggle_idle",{toggle_idle:0})},children:"Activate"})||(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("toggle_idle",{toggle_idle:1})},selected:!0,children:"Deactivate"})]})||(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",onClick:function(){return a("start_generator")},children:"Turn on"}),l&&d&&(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",onClick:function(){return a("emergency_shutdown")},color:"bad",children:"EMERGENCY SHUTDOWN"})||null],0),children:[(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",onClick:function(){return a("set_range")},children:"Set Field Range"}),(0,o.createComponentVNode)(2,i.Button,{icon:"bolt",onClick:function(){return a("set_input_cap")},children:"Set Input Cap"}),(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Set inactive power use intensity",children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{selected:e===u,disabled:4===l,onClick:function(){return a("switch_idle",{switch_idle:e})},children:e},e)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.ParticleAccelerator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.assembled,u=l.power,s=l.strength;return(0,o.createComponentVNode)(2,a.Window,{width:350,height:185,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Run Scan",onClick:function(){return c("scan")}}),children:(0,o.createComponentVNode)(2,i.Box,{color:d?"good":"bad",children:d?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:!d,onClick:function(){return c("power")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"backward",disabled:!d,onClick:function(){return c("remove_strength")}})," ",String(s).padStart(1,"0")," ",(0,o.createComponentVNode)(2,i.Button,{icon:"forward",disabled:!d,onClick:function(){return c("add_strength")}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PartsLathe=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6),l=n(132);t.PartsLathe=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(u.panelOpen,u.copyBoard),m=u.copyBoardReqComponents,p=u.queue,h=u.building,C=u.buildPercent,f=u.error,N=u.recipies;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[f&&(0,o.createComponentVNode)(2,i.NoticeBox,{danger:!0,children:["Missing Materials: ",f]})||null,(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,l.Materials,{displayAllMat:!0})}),h&&(0,o.createComponentVNode)(2,i.Section,{title:"Currently Building",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:(0,c.toTitleCase)(h)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:"good",value:C,maxValue:100})})]})})||null,s&&(0,o.createComponentVNode)(2,i.Section,{title:"Circuit Reader",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loaded Circuit",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return d("ejectBoard")},children:"Eject"}),children:(0,c.toTitleCase)(s)})}),m&&m.length&&(0,o.createFragment)([m.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:[e.qty," x ",(0,c.toTitleCase)(e.name)]},e.name)})),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",onClick:function(){return d("queueBoard")},children:"Build All"})],0)||(0,o.createComponentVNode)(2,i.Box,{children:"Board has no required components."})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Queue",children:p.length&&p.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:["#",t+1,": ",(0,c.toTitleCase)(e),(t>0||!h)&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"times",onClick:function(){return d("cancel",{cancel:t+1})},children:"Cancel"})||null]},e)}))||(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Queue Empty"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",children:N.length&&N.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",onClick:function(){return d("queue",{queue:e.type})},children:(0,c.toTitleCase)(e.name)})},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PathogenicIsolator=void 0;var o=n(0),r=(n(5),n(20),n(1)),i=n(45),a=n(2),c=n(3),l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.can_print,l=e.args;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",title:l.name||"Virus",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{disabled:!c,icon:"print",content:"Print",onClick:function(){return i("print",{type:"virus_record",vir:l.record})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",color:"red",onClick:function(){return i("modal_close")}})],4),children:(0,o.createComponentVNode)(2,a.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Spread",children:[l.spread_text," Transmission"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Possible cure",children:l.antigen}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate of Progression",children:l.rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Antibiotic Resistance",children:[l.resistance,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species Affected",children:l.species}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Symptoms",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:l.symptoms.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.stage+". "+e.name,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",children:"Strength:"})," ",e.strength,"\xa0"]}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",children:"Aggressiveness:"})," ",e.aggressiveness]})]},e.stage)}))})})]})})})};t.PathogenicIsolator=function(e,t){var n=(0,r.useBackend)(t),s=(n.act,n.data.isolating),m=(0,r.useLocalState)(t,"tabIndex",0),p=m[0],h=m[1],C=null;return 0===p?C=(0,o.createComponentVNode)(2,d):1===p&&(C=(0,o.createComponentVNode)(2,u)),(0,i.modalRegisterBodyOverride)("virus",l),(0,o.createComponentVNode)(2,c.Window,{height:500,width:520,resizable:!0,children:[(0,o.createComponentVNode)(2,i.ComplexModal,{maxHeight:"100%",maxWidth:"95%"}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[s&&(0,o.createComponentVNode)(2,a.NoticeBox,{warning:!0,children:"The Isolator is currently isolating..."})||null,(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===p,onClick:function(){return h(0)},children:"Home"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===p,onClick:function(){return h(1)},children:"Database"})]}),C]})]})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data,l=c.syringe_inserted,d=c.pathogen_pool,u=c.can_print;return(0,o.createComponentVNode)(2,a.Section,{title:"Pathogens",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return i("print",{type:"patient_diagnosis"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Syringe",disabled:!l,onClick:function(){return i("eject")}})],4),children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:[(0,o.createVNode)(1,"u",null,[(0,o.createTextVNode)("Stamm #"),e.unique_id],0),e.is_in_database?" (Analyzed)":" (Not Analyzed)"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"virus",content:"Isolate",onClick:function(){return i("isolate",{isolate:e.reference})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Database",disabled:!e.is_in_database,onClick:function(){return i("view_entry",{vir:e.record})}})]})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",mb:1,children:e.name}),e.dna]})]},e.unique_id)}))||(l?(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No samples detected."}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No syringe inserted."}))})},u=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data,l=c.database,d=c.can_print;return(0,o.createComponentVNode)(2,a.Section,{title:"Database",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!d,onClick:function(){return i("print",{type:"virus_list"})}}),children:l.length&&l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"search",onClick:function(){return i("view_entry",{vir:e.record})},children:e.name},e.name)}))||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"The viral database is empty."})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Pda=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(177),l=n(596);t.Pda=function(e,t){var n=(0,r.useBackend)(t),m=(n.act,n.data),p=m.app,h=m.owner,C=m.useRetro;if(!h)return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{stretchContents:!0,children:"Warning: No ID information found! Please swipe ID!"})})});var f=function(e){var t;try{t=l("./"+e+".js")}catch(o){if("MODULE_NOT_FOUND"===o.code)return(0,c.routingError)("notFound",e);throw o}var n=t[e];return n||(0,c.routingError)("missingExport",e)}(p.template),N=(0,r.useLocalState)(t,"settingsMode",!1),b=N[0],V=N[1];return(0,o.createComponentVNode)(2,a.Window,{width:580,height:670,theme:C?"pda-retro":null,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d,{settingsMode:b,setSettingsMode:V}),b&&(0,o.createComponentVNode)(2,u)||(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Icon,{name:p.icon,mr:1}),p.name]}),p:1,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,i.Box,{mb:8}),(0,o.createComponentVNode)(2,s,{setSettingsMode:V})]})})};var d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.settingsMode,d=e.setSettingsMode,u=c.idInserted,s=c.idLink,m=(c.cartridge_name,c.stationTime);return(0,o.createComponentVNode)(2,i.Box,{mb:1,children:(0,o.createComponentVNode)(2,i.Flex,{align:"center",justify:"space-between",children:[!!u&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",color:"transparent",onClick:function(){return a("Authenticate")},content:s})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,textAlign:"center",bold:!0,children:m}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{selected:l,onClick:function(){return d(!l)},icon:"cog"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return a("Retro")},icon:"adjust"})]})]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.idInserted,d=c.idLink,u=c.cartridge_name,s=c.touch_silent;return(0,o.createComponentVNode)(2,i.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"R.E.T.R.O Mode",children:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Retro Theme",onClick:function(){return a("Retro")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Touch Sounds",children:(0,o.createComponentVNode)(2,i.Button,{icon:"cog",selected:!s,content:s?"Disabled":"Enabled",onClick:function(){return a("TouchSounds")}})}),!!u&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cartridge",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return a("Eject")},content:u})}),!!l&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID Card",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",onClick:function(){return a("Authenticate")},content:d})})]})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.setSettingsMode,d=c.app,u=c.useRetro;return(0,o.createComponentVNode)(2,i.Box,{position:"fixed",bottom:"0%",left:"0%",right:"0%",backgroundColor:u?"#6f7961":"#1b1b1b",children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"transparent",iconColor:d.has_back?"white":"disabled",textAlign:"center",icon:"undo",mb:0,fontSize:1.7,onClick:function(){return a("Back")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,color:"transparent",iconColor:d.is_home?"disabled":"white",textAlign:"center",icon:"home",mb:0,fontSize:1.7,onClick:function(){l(!1),a("Home")}})})]})})}},function(e,t,n){var o={"./pda_atmos_scan.js":597,"./pda_janitor.js":598,"./pda_main_menu.js":599,"./pda_manifest.js":600,"./pda_medical.js":601,"./pda_messenger.js":602,"./pda_news.js":603,"./pda_notekeeper.js":604,"./pda_power.js":605,"./pda_security.js":606,"./pda_signaller.js":607,"./pda_status_display.js":608,"./pda_supply.js":609};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=i,e.exports=r,r.id=596},function(e,t,n){"use strict";t.__esModule=!0,t.pda_atmos_scan=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2);t.pda_atmos_scan=function(e,t){var n=(0,a.useBackend)(t),l=(n.act,n.data.aircontents);return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,r.filter)((function(e){return"0"!==e.val||"Pressure"===e.entry||"Temperature"===e.entry}))(l).map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.entry,color:(t=e.val,n=e.bad_low,r=e.poor_low,a=e.poor_high,l=e.bad_high,ta?"average":t>l?"bad":"good"),children:[e.val,(0,i.decodeHtmlEntities)(e.units)]},e.entry);var t,n,r,a,l}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_janitor=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_janitor=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.janitor);return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Location",children:0===a.user_loc.x&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Unknown"})||(0,o.createComponentVNode)(2,i.Box,{children:[a.user_loc.x," / ",a.user_loc.y]})})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Mop Locations",children:a.mops&&(0,o.createVNode)(1,"ul",null,a.mops.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Status: "),e.status],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No mops detected nearby."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Mop Bucket Locations",children:a.buckets&&(0,o.createVNode)(1,"ul",null,a.buckets.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Capacity: "),e.volume,(0,o.createTextVNode)("/"),e.max_volume],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No buckets detected nearby."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Cleanbot Locations",children:a.cleanbots&&(0,o.createVNode)(1,"ul",null,a.cleanbots.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Status: "),e.status],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No cleanbots detected nearby."})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Janitorial Cart Locations",children:a.carts&&(0,o.createVNode)(1,"ul",null,a.carts.map((function(e,t){return(0,o.createVNode)(1,"li",null,[e.x,(0,o.createTextVNode)(" / "),e.y,(0,o.createTextVNode)(" - "),e.dir,(0,o.createTextVNode)(" - Water Level: "),e.volume,(0,o.createTextVNode)("/"),e.max_volume],0,null,t)})),0)||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No janitorial carts detected nearby."})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_main_menu=void 0;var o=n(0),r=(n(5),n(1)),i=n(2);t.pda_main_menu=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.owner,d=c.ownjob,u=c.idInserted,s=c.categories,m=c.pai,p=c.notifying;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Owner",color:"average",children:[l,", ",d]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Update PDA Info",disabled:!u,onClick:function(){return a("UpdateInfo")}})})]})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Functions",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:s.map((function(e){var t=c.apps[e];return t&&t.length?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e,children:t.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:e.ref in p?e.notify_icon:e.icon,iconSpin:e.ref in p,color:e.ref in p?"red":"transparent",content:e.name,onClick:function(){return a("StartProgram",{program:e.ref})}},e.ref)}))},e):null}))})}),!!m&&(0,o.createComponentVNode)(2,i.Section,{level:2,title:"pAI",children:[(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"cog",content:"Configuration",onClick:function(){return a("pai",{option:1})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",content:"Eject pAI",onClick:function(){return a("pai",{option:2})}})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_manifest=void 0;var o=n(0),r=(n(8),n(1)),i=n(2),a=n(94);t.pda_manifest=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.Box,{color:"white",children:(0,o.createComponentVNode)(2,a.CrewManifestContent)})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_medical=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_medical=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.recordsList,d=c.records;if(d){var u=d.general,s=d.medical;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"General Data",children:u&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General record lost!"})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Medical Data",children:s&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:s.b_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Disabilities",children:s.mi_dis}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.mi_dis_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Disabilities",children:s.ma_dis}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.ma_dis_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Allergies",children:s.alg}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.alg_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Disease",children:s.cdi}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.cdi_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes",children:s.notes})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Medical record lost!"})})]})}return(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Select a record",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"eye",fluid:!0,content:e.Name,onClick:function(){return a("Records",{target:e.ref})}},e.ref)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_messenger=void 0;var o=n(0),r=n(6),i=n(8),a=n(1),c=n(2);t.pda_messenger=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data);r.auto_scroll,r.convo_name,r.convo_job,r.messages;return r.active_conversation?(0,o.createComponentVNode)(2,d):(0,o.createComponentVNode)(2,u)};var l=function(e,t,n){if(t<0||t>n.length)return e.sent?"TinderMessage_First_Sent":"TinderMessage_First_Received";var o=n[t].sent;return e.sent&&o?"TinderMessage_Subsequent_Sent":e.sent||o?e.sent?"TinderMessage_First_Sent":"TinderMessage_First_Received":"TinderMessage_Subsequent_Received"},d=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=(u.auto_scroll,u.convo_name),m=u.convo_job,p=u.messages,h=u.active_conversation,C=(u.useRetro,(0,a.useLocalState)(t,"clipboardMode",!1)),f=C[0],N=C[1],b=(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Conversation with "+s+" ("+m+")",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:f,tooltip:"Enter Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return N(!f)}}),height:"450px",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"97%","overflow-y":"auto"},children:(0,i.filter)((function(e){return e.target===h}))(p).map((function(e,t,n){return(0,o.createComponentVNode)(2,c.Box,{textAlign:e.sent?"right":"left",mb:1,children:(0,o.createComponentVNode)(2,c.Box,{maxWidth:"75%",className:l(e,t-1,n),inline:!0,children:(0,r.decodeHtmlEntities)(e.message)})},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return d("Message",{target:h})},content:"Reply"})]});return f&&(b=(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Conversation with "+s+" ("+m+")",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"eye",selected:f,tooltip:"Exit Clipboard Mode",tooltipPosition:"bottom-left",onClick:function(){return N(!f)}}),height:"450px",stretchContents:!0,children:[(0,o.createComponentVNode)(2,c.Section,{style:{height:"97%","overflow-y":"auto"},children:(0,i.filter)((function(e){return e.target===h}))(p).map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{className:e.sent?"ClassicMessage_Sent":"ClassicMessage_Received",children:[e.sent?"You:":"Them:"," ",(0,r.decodeHtmlEntities)(e.message)]},t)}))}),(0,o.createComponentVNode)(2,c.Button,{icon:"comment",onClick:function(){return d("Message",{target:h})},content:"Reply"})]})),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Messenger Functions",children:(0,o.createComponentVNode)(2,c.Button,{icon:"trash",color:"bad",onClick:function(){return d("Clear",{option:"Convo"})},children:"Delete Conversations"})})}),b]})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(i.auto_scroll,i.convopdas),d=i.pdas,u=i.charges,m=(i.plugins,i.silent),p=i.toff;return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Messenger Functions",children:[(0,o.createComponentVNode)(2,c.Button,{selected:!m,icon:m?"volume-mute":"volume-up",onClick:function(){return r("Toggle Ringer")},children:["Ringer: ",m?"Off":"On"]}),(0,o.createComponentVNode)(2,c.Button,{color:p?"bad":"green",icon:"power-off",onClick:function(){return r("Toggle Messenger")},children:["Messenger: ",p?"Off":"On"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"bell",onClick:function(){return r("Ringtone")},children:"Set Ringtone"}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",color:"bad",onClick:function(){return r("Clear",{option:"All"})},children:"Delete All Conversations"})]})}),!p&&(0,o.createComponentVNode)(2,c.Box,{children:[!!u&&(0,o.createComponentVNode)(2,c.Box,{children:[u," charges left."]}),!l.length&&!d.length&&(0,o.createComponentVNode)(2,c.Box,{children:"No other PDAs located."})||(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,s,{title:"Current Conversations",pdas:l,msgAct:"Select Conversation"}),(0,o.createComponentVNode)(2,s,{title:"Other PDAs",pdas:d,msgAct:"Message"})]})]})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",mt:2,children:"Messenger Offline."})]})},s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=e.pdas,d=e.title,u=e.msgAct,s=i.charges,m=i.plugins;return l&&l.length?(0,o.createComponentVNode)(2,c.Section,{level:2,title:d,children:l.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-circle-down",content:e.Name,onClick:function(){return r(u,{target:e.Reference})}}),!!s&&m.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{icon:t.icon,content:t.name,onClick:function(){return r("Messenger Plugin",{plugin:t.ref,target:e.Reference})}},t.ref)}))]},e.Reference)}))}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:d,children:"No PDAs found."})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_news=void 0;var o=n(0),r=(n(8),n(6)),i=n(1),a=n(2);t.pda_news=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),d=r.feeds,u=r.target_feed;return(0,o.createComponentVNode)(2,a.Box,{children:!d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Error: No newsfeeds available. Please try again later."})||u&&(0,o.createComponentVNode)(2,c)||(0,o.createComponentVNode)(2,l)})};var c=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data.target_feed;return(0,o.createComponentVNode)(2,a.Section,{title:(0,r.decodeHtmlEntities)(l.name)+" by "+(0,r.decodeHtmlEntities)(l.author),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"chevron-up",onClick:function(){return c("newsfeed",{newsfeed:null})}}),children:l.messages.length&&l.messages.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{children:["- ",(0,r.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/png;base64,"+e.img}),(0,r.decodeHtmlEntities)(e.caption)||null]}),(0,o.createComponentVNode)(2,a.Box,{color:"grey",children:["[",e.message_type," by ",(0,r.decodeHtmlEntities)(e.author)," - ",e.time_stamp,"]"]})]},e.ref)}))||(0,o.createComponentVNode)(2,a.Box,{children:["No stories found in ",l.name,"."]})})},l=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.feeds,u=l.latest_news;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Recent News",level:2,children:u.length&&(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{mb:2,children:[(0,o.createVNode)(1,"h5",null,[(0,r.decodeHtmlEntities)(e.channel),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"chevron-up",onClick:function(){return c("newsfeed",{newsfeed:e.index})},content:"Go to"})],0),"- ",(0,r.decodeHtmlEntities)(e.body),!!e.img&&(0,o.createComponentVNode)(2,a.Box,{children:["[image omitted, view story for more details]",e.caption||null]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:.9,children:["[",e.message_type," by ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:e.author})," - ",e.time_stamp,"]"]})]},e.index)}))})||(0,o.createComponentVNode)(2,a.Box,{children:"No recent stories found."})}),(0,o.createComponentVNode)(2,a.Section,{title:"News Feeds",level:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"chevron-up",onClick:function(){return c("newsfeed",{newsfeed:e.index})},content:e.name},e.index)}))})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_notekeeper=void 0;var o=n(0),r=n(1),i=n(2);t.pda_notekeeper=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.note;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:c}})}),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",onClick:function(){return a("Edit")},content:"Edit Notes"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_power=void 0;var o=n(0),r=n(1),i=n(135);t.pda_power=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.PowerMonitorContent)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_security=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_security=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.recordsList,d=c.records;if(d){var u=d.general,s=d.security;return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Section,{level:2,title:"General Data",children:u&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General record lost!"})}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Security Data",children:s&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Criminal Status",children:s.criminal}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Crimes",children:s.mi_crim}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.mi_crim_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Crimes",children:s.ma_crim}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Details",children:s.ma_crim_d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes:",children:s.notes})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Security record lost!"})})]})}return(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Select a record",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"eye",fluid:!0,content:e.Name,onClick:function(){return a("Records",{target:e.ref})}},e.ref)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_signaller=void 0;var o=n(0),r=(n(8),n(6),n(1),n(2),n(203));t.pda_signaller=function(e,t){return(0,o.createComponentVNode)(2,r.SignalerContent)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_status_display=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_status_display=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.records;return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Code",children:[(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"trash",content:"Clear",onClick:function(){return a("Status",{statdisp:"blank"})}}),(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"cog",content:"Evac ETA",onClick:function(){return a("Status",{statdisp:"shuttle"})}}),(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"cog",content:"Message",onClick:function(){return a("Status",{statdisp:"message"})}}),(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"exclamation-triangle",content:"ALERT",onClick:function(){return a("Status",{statdisp:"alert"})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Message line 1",children:(0,o.createComponentVNode)(2,i.Button,{content:c.message1+" (set)",icon:"pen",onClick:function(){return a("Status",{statdisp:"setmsg1"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Message line 2",children:(0,o.createComponentVNode)(2,i.Button,{content:c.message2+" (set)",icon:"pen",onClick:function(){return a("Status",{statdisp:"setmsg2"})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_supply=void 0;var o=n(0),r=(n(8),n(6),n(1)),i=n(2);t.pda_supply=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.supply);return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Location",children:a.shuttle_moving?"Moving to station "+a.shuttle_eta:"Shuttle at "+a.shuttle_loc})}),(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"good",bold:!0,children:"Current Approved Orders"}),a.approved.length&&a.approved.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["#",e.Number," - ",e.Name," approved by ",e.OrderedBy,(0,o.createVNode)(1,"br"),e.Comment]},e.Number)}))||(0,o.createComponentVNode)(2,i.Box,{children:"None!"}),(0,o.createComponentVNode)(2,i.Box,{color:"good",bold:!0,children:"Current Requested Orders"}),a.requests.length&&a.requests.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["#",e.Number," - ",e.Name," requested by ",e.OrderedBy,(0,o.createVNode)(1,"br"),e.Comment]},e.Number)}))||(0,o.createComponentVNode)(2,i.Box,{children:"None!"})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Photocopier=void 0;var o=n(0),r=n(2),i=n(1),a=n(3);t.Photocopier=function(e,t){var n=(0,i.useBackend)(t).data,u=n.isAI,s=n.has_toner,m=n.has_item;return(0,o.createComponentVNode)(2,a.Window,{title:"Photocopier",width:240,height:u?309:234,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[s?(0,o.createComponentVNode)(2,c):(0,o.createComponentVNode)(2,r.Section,{title:"Toner",children:(0,o.createComponentVNode)(2,r.Box,{color:"average",children:"No inserted toner cartridge."})}),m?(0,o.createComponentVNode)(2,l):(0,o.createComponentVNode)(2,r.Section,{title:"Options",children:(0,o.createComponentVNode)(2,r.Box,{color:"average",children:"No inserted item."})}),!!u&&(0,o.createComponentVNode)(2,d)]})})};var c=function(e,t){var n=(0,i.useBackend)(t),a=(n.act,n.data),c=a.max_toner,l=a.current_toner,d=.66*c,u=.33*c;return(0,o.createComponentVNode)(2,r.Section,{title:"Toner",children:(0,o.createComponentVNode)(2,r.ProgressBar,{ranges:{good:[d,c],average:[u,d],bad:[0,u]},value:l,minValue:0,maxValue:c})})},l=function(e,t){var n=(0,i.useBackend)(t),a=n.act,c=n.data,l=c.num_copies;c.has_enough_toner;return(0,o.createComponentVNode)(2,r.Section,{title:"Options",children:[(0,o.createComponentVNode)(2,r.Flex,{children:[(0,o.createComponentVNode)(2,r.Flex.Item,{mt:.4,width:11,color:"label",children:"Make copies:"}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.NumberInput,{animate:!0,width:2.6,height:1.65,step:1,stepPixelSize:8,minValue:1,maxValue:10,value:l,onDrag:function(e,t){return a("set_copies",{num_copies:t})}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Button,{ml:.2,icon:"copy",textAlign:"center",onClick:function(){return a("make_copy")},children:"Copy"})})]}),(0,o.createComponentVNode)(2,r.Button,{mt:.5,textAlign:"center",icon:"reply",fluid:!0,onClick:function(){return a("remove")},children:"Remove item"})]})},d=function(e,t){var n=(0,i.useBackend)(t),a=n.act,c=n.data.can_AI_print;return(0,o.createComponentVNode)(2,r.Section,{title:"AI Options",children:(0,o.createComponentVNode)(2,r.Box,{children:(0,o.createComponentVNode)(2,r.Button,{fluid:!0,icon:"images",textAlign:"center",disabled:!c,onClick:function(){return a("ai_photo")},children:"Print photo from database"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PipeDispenser=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(204);t.PipeDispenser=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.disposals,s=d.p_layer,m=d.pipe_layers,p=d.categories,h=void 0===p?[]:p,C=(0,r.useLocalState)(t,"categoryName"),f=C[0],N=C[1],b=h.find((function(e){return e.cat_name===f}))||h[0];return(0,o.createComponentVNode)(2,a.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[!u&&(0,o.createComponentVNode)(2,i.Section,{title:"Layer",children:(0,o.createComponentVNode)(2,i.Box,{children:Object.keys(m).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:m[e]===s,content:e,onClick:function(){return l("p_layer",{p_layer:m[e]})}},e)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Pipes",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:h.map((function(e,t){return(0,o.createComponentVNode)(2,i.Tabs.Tab,{fluid:!0,icon:c.ICON_BY_CATEGORY_NAME[e.cat_name],selected:e.cat_name===b.cat_name,onClick:function(){return N(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==b?void 0:b.recipes.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,ellipsis:!0,content:e.pipe_name,title:e.pipe_name,onClick:function(){return l("dispense_pipe",{ref:e.ref,bent:e.bent,category:b.cat_name})}},e.pipe_name)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PlantAnalyzer=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.PlantAnalyzer=function(e,t){var n=(0,r.useBackend)(t).data,i=250;return n.seed&&(i+=18*n.seed.trait_info.length),n.reagents&&n.reagents.length&&(i+=55,i+=20*n.reagents.length),(0,o.createComponentVNode)(2,a.Window,{width:400,height:i,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.no_seed,d=c.seed,u=c.reagents;return l?(0,o.createComponentVNode)(2,i.Section,{title:"Analyzer Unused",children:"You should go scan a plant! There is no data currently loaded."}):(0,o.createComponentVNode)(2,i.Section,{title:"Plant Information",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"print",onClick:function(){return a("print")},children:"Print Report"}),(0,o.createComponentVNode)(2,i.Button,{icon:"window-close",color:"red",onClick:function(){return a("close")}})],4),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Plant Name",children:[d.name,"#",d.uid]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Endurance",children:d.endurance}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Yield",children:d.yield}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maturation Time",children:d.maturation_time}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Production Time",children:d.production_time}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Potency",children:d.potency})]}),u.length&&(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Plant Reagents",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,children:[e.volume," unit(s)."]},e.name)}))})})||null,(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Other Data",children:d.trait_info.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",mb:.4,children:e},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PointDefenseControl=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.PointDefenseControl=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.id,u=l.turrets;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Fire Assist Mainframe: "+(d||"[no tag]"),children:u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{level:2,title:e.id,buttons:(0,o.createComponentVNode)(2,i.Button,{selected:e.active,icon:"power-off",onClick:function(){return c("toggle_active",{target:e.ref})},children:e.active?"Online":"Offline"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Effective range",children:e.effective_range}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Reaction wheel delay",children:e.reaction_wheel_delay}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Recharge time",children:e.recharge_time})]})},e.id)}))||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Error: No weapon systems detected. Please check network connection."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableGenerator=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(5);t.PortableGenerator=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.fuel_stored/d.fuel_capacity,s=(u>=.5?"good":u>.15&&"average")||"bad";return(0,o.createComponentVNode)(2,a.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[!d.anchored&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,i.Button,{icon:d.active?"power-off":"times",onClick:function(){return l("toggle_power")},selected:d.active,disabled:!d.ready_to_boot,children:d.active?"On":"Off"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fuel Type",buttons:d.fuel_stored>=1&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"eject",disabled:d.active,onClick:function(){return l("eject")},children:"Eject"}),children:(0,o.createComponentVNode)(2,i.Box,{color:s,children:[d.fuel_stored,"cm\xb3 ",d.sheet_name]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current fuel level",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d.fuel_stored/d.fuel_capacity,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]},children:[d.fuel_stored,"cm\xb3 / ",d.fuel_capacity,"cm\xb3"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fuel Usage",children:[d.fuel_usage," cm\xb3/s"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d.temperature_current,maxValue:d.temperature_max+30,color:d.temperature_overheat?"bad":"good",children:[(0,c.round)(d.temperature_current),"\xb0C"]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Output",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current output",color:d.unsafe_output?"bad":null,children:d.power_output}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"minus",onClick:function(){return l("lower_power")},children:d.power_generated}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return l("higher_power")},children:d.power_generated})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:!d.connected&&"bad",children:d.connected?d.power_available:"Unconnected"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(205);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=d.target_pressure,m=d.default_pressure,p=d.min_pressure,h=d.max_pressure;return(0,o.createComponentVNode)(2,a.Window,{width:330,height:375,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.PortableBasicInfo),(0,o.createComponentVNode)(2,i.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,i.Slider,{mt:"0.4em",animated:!0,minValue:p,maxValue:h,value:s,unit:"kPa",stepPixelSize:.3,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",disabled:s===h,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(0),r=n(1),i=n(2),a=(n(28),n(3)),c=n(205);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.rate,s=d.minrate,m=d.maxrate;return(0,o.createComponentVNode)(2,a.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,c.PortableBasicInfo),(0,o.createComponentVNode)(2,i.Section,{title:"Power Regulator",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Volume Rate",children:(0,o.createComponentVNode)(2,i.Slider,{mt:"0.4em",animated:!0,minValue:s,maxValue:m,value:u,unit:"L/s",onChange:function(e,t){return l("volume_adj",{vol:t})}})})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.locked,u=l.on,s=l.lethal,m=l.lethal_is_configurable,p=l.targetting_is_configurable,h=l.check_weapons,C=l.neutralize_noaccess,f=l.neutralize_norecord,N=l.neutralize_criminals,b=l.neutralize_all,V=l.neutralize_nonsynth,g=l.neutralize_unidentified,v=l.neutralize_down;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Swipe an ID card to ",d?"unlock":"lock"," this interface."]}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:d,onClick:function(){return c("power")}})}),!!m&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Lethals",children:(0,o.createComponentVNode)(2,i.Button,{icon:s?"exclamation-triangle":"times",content:s?"On":"Off",color:s?"bad":"",disabled:d,onClick:function(){return c("lethal")}})})]})}),!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Humanoid Targets",children:[(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:N,content:"Wanted Criminals",disabled:d,onClick:function(){return c("autharrest")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:f,content:"No Sec Record",disabled:d,onClick:function(){return c("authnorecord")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:h,content:"Unauthorized Weapons",disabled:d,onClick:function(){return c("authweapon")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:C,content:"Unauthorized Access",disabled:d,onClick:function(){return c("authaccess")}})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Other Targets",children:[(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:g,content:"Unidentified Lifesigns (Xenos, Animals, Etc)",disabled:d,onClick:function(){return c("authxeno")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:V,content:"All Non-Synthetics",disabled:d,onClick:function(){return c("authsynth")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:v,content:"Downed Targets",disabled:d,onClick:function(){return c("authdown")}}),(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:b,content:"All Entities",disabled:d,onClick:function(){return c("authall")}})]})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PrecisionEditor=void 0;var o=n(0),r=(n(8),n(1)),i=n(2),a=n(3);n(183);t.PrecisionEditor=function(e,t){var n=(0,r.useBackend)(t),u=(n.act,n.data.screenstate);return(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Seed status",children:["main"===u&&(0,o.createComponentVNode)(2,c),"colors"===u&&(0,o.createComponentVNode)(2,l),"reagents"===u&&(0,o.createComponentVNode)(2,d)]})})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.health,d=c.plantcolor,u=c.fruitcolor,s=c.chems,m=c.seedname;return(0,o.createComponentVNode)(2,i.LabeledList,{children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:m}),l<100?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:100-l+"%"}):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:"UNVIABLE"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Plant Color",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fruit Color",children:u}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Chems produced in fruit (click to splice out)",children:s.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:e.displayname,onClick:function(){return a("prune",{gene_name:e.name})}},e.displayname)}))}),(0,o.createComponentVNode)(2,i.Button,{content:"Edit Colors",onClick:function(){return a("change_focus",{window:"colors"})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Add Reagents",onClick:function(){return a("change_focus",{window:"reagents"})}}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,i.Button,{content:"Eject Seed",onClick:function(){return a("eject")}})],0):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Waiting",children:"There is currently no seed loaded."})})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.plantcolor,d=c.fruitcolor;return(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Plant Color",children:l}),(0,o.createComponentVNode)(2,i.ColorBox,{color:l}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fruit Color",children:d}),(0,o.createComponentVNode)(2,i.ColorBox,{color:d}),(0,o.createComponentVNode)(2,i.Button,{content:"Change plant color",onClick:function(){return a("change_color",{option:0})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Change fruit color",onClick:function(){return a("change_color",{option:1})}}),(0,o.createComponentVNode)(2,i.LabeledList.Divider,{size:2}),(0,o.createComponentVNode)(2,i.Button,{content:"Return",onClick:function(){return a("change_focus",{window:"main"})}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.beakerchems,d=c.health;return(0,o.createComponentVNode)(2,i.LabeledList,{children:[d<100?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:100-d+"%"}):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Genetic Integrity",children:"UNVIABLE"}),(0,o.createComponentVNode)(2,i.NoticeBox,{info:1,width:19,height:9,ml:1,children:["Available chems to choose are based on the reagents stored in the beaker. "," A minimum of 100 units of reagent is required to generate a viable sequence. ","The chosen reagent will be consumed in the process.",(0,o.createComponentVNode)(2,i.Box,{bold:1,mt:1,children:"This process severely damages genetic integrity."})]}),(0,o.createComponentVNode)(2,i.Box,{width:20,opacity:.5,ml:1,mt:6,mb:2,children:["Plant will produce 1 additional unit for every 25 units beyond 100"," (modified by potency)"]}),l?(0,o.createFragment)([d<100?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Available reagents",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{fluid:!0,content:e.displayname,onClick:function(){return a("add_chem",{target_chem:e.name})}},e.displayname)}))}):(0,o.createComponentVNode)(2,i.NoticeBox,{warning:1,children:"WARNING: Genetic integrity of seed is too poor to proceed."}),(0,o.createComponentVNode)(2,i.Button,{content:"Eject Beaker",onClick:function(){return a("eject_beaker")}})],0):(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Waiting",children:"There is currently no beaker loaded."}),(0,o.createComponentVNode)(2,i.Button,{content:"Return",onClick:function(){return a("change_focus",{window:"main"})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PressureRegulator=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.PressureRegulator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.pressure_set,s=(l.max_pressure,l.input_pressure),m=l.output_pressure,p=l.regulate_mode,h=l.set_flow_rate,C=l.last_flow_rate;return(0,o.createComponentVNode)(2,a.Window,{width:470,height:370,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:s/100})," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m/100})," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:C/10})," L/s"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:d?"Unlocked":"Closed",selected:d,onClick:function(){return c("toggle_valve")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure Regulation",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",content:"Off",selected:0===p,onClick:function(){return c("regulate_mode",{mode:"off"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"compress-arrows-alt",content:"Input",selected:1===p,onClick:function(){return c("regulate_mode",{mode:"input"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",content:"Output",selected:2===p,onClick:function(){return c("regulate_mode",{mode:"output"})}})],4)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Desired Output Pressure",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"compress-arrows-alt",content:"MIN",onClick:function(){return c("set_press",{press:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",content:"MAX",onClick:function(){return c("set_press",{press:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:"SET",onClick:function(){return c("set_press",{press:"set"})}})],4),children:[u/100," kPa"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Flow Rate Limit",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"compress-arrows-alt",content:"MIN",onClick:function(){return c("set_flow_rate",{press:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"expand-arrows-alt",content:"MAX",onClick:function(){return c("set_flow_rate",{press:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:"SET",onClick:function(){return c("set_flow_rate",{press:"set"})}})],4),children:[h/10," L/s"]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PrisonerManagement=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);n(20);t.PrisonerManagement=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.locked,u=l.chemImplants,s=l.trackImplants;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:d&&(0,o.createComponentVNode)(2,i.Section,{title:"Locked",textAlign:"center",children:["This interface is currently locked.",(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"unlock",onClick:function(){return c("lock")},children:"Unlock"})})]})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Interface Lock",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lock",onClick:function(){return c("lock")},children:"Lock Interface"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Chemical Implants",children:u.length&&(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Host"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Units Remaining"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Inject"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:e.host}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:[e.units,"u remaining"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("inject",{imp:e.ref,val:1})},children:"(1)"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("inject",{imp:e.ref,val:5})},children:"(5)"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("inject",{imp:e.ref,val:10})},children:"(10)"})]})]},e.ref)}))]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No chemical implants found."})}),(0,o.createComponentVNode)(2,i.Section,{title:"Tracking Implants",children:s.length&&(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Host"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Location"}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:"Message"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:[e.host," (",e.id,")"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:e.loc}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return c("warn",{imp:e.ref})},children:"Message"})})]},e.ref)}))]})||(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"No chemical implants found."})})],4)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RIGSuit=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6);t.RIGSuit=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),s=c.interfacelock,m=c.malf,p=c.aicontrol,h=c.ai,C=null;return s||m?C=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"--HARDSUIT INTERFACE OFFLINE--"}):!h&&p&&(C=(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"-- HARDSUIT CONTROL OVERRIDDEN BY AI --"})),(0,o.createComponentVNode)(2,a.Window,{height:480,width:550,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:C||(0,o.createFragment)([(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.chargestatus,d=c.charge,u=c.maxcharge,s=c.aioverride,m=c.sealing,p=c.sealed,h=c.emagged,C=c.securitycheck,f=c.coverlock,N=(0,o.createComponentVNode)(2,i.Button,{content:"Suit "+(m?"seals working...":p?"is Active":"is Inactive"),icon:m?"redo":p?"power-off":"lock-open",iconSpin:m,disabled:m,selected:p,onClick:function(){return a("toggle_seals")}}),b=(0,o.createComponentVNode)(2,i.Button,{content:"AI Control "+(s?"Enabled":"Disabled"),selected:s,icon:"robot",onClick:function(){return a("toggle_ai_control")}});return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([N,b],0),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power Supply",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,maxValue:50,value:l,ranges:{good:[35,Infinity],average:[15,35],bad:[-Infinity,15]},children:[d," / ",u]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cover Status",children:h||!C?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Error - Maintenance Lock Control Offline"}):(0,o.createComponentVNode)(2,i.Button,{icon:f?"lock":"lock-open",content:f?"Locked":"Unlocked",onClick:function(){return a("toggle_suit_lock")}})})]})})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=l.sealing,u=l.helmet,s=l.helmetDeployed,m=l.gauntlets,p=l.gauntletsDeployed,h=l.boots,C=l.bootsDeployed,f=l.chest,N=l.chestDeployed;return(0,o.createComponentVNode)(2,i.Section,{title:"Hardware",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Helmet",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"sign-out-alt":"sign-in-alt",content:s?"Deployed":"Deploy",disabled:d,selected:s,onClick:function(){return a("toggle_piece",{piece:"helmet"})}}),children:u?(0,c.capitalize)(u):"ERROR"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Gauntlets",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:p?"sign-out-alt":"sign-in-alt",content:p?"Deployed":"Deploy",disabled:d,selected:p,onClick:function(){return a("toggle_piece",{piece:"gauntlets"})}}),children:m?(0,c.capitalize)(m):"ERROR"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Boots",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:C?"sign-out-alt":"sign-in-alt",content:C?"Deployed":"Deploy",disabled:d,selected:C,onClick:function(){return a("toggle_piece",{piece:"boots"})}}),children:h?(0,c.capitalize)(h):"ERROR"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Chestpiece",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:N?"sign-out-alt":"sign-in-alt",content:N?"Deployed":"Deploy",disabled:d,selected:N,onClick:function(){return a("toggle_piece",{piece:"chest"})}}),children:f?(0,c.capitalize)(f):"ERROR"})]})})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data,d=l.sealed,u=l.sealing,s=l.primarysystem,m=l.modules;return!d||u?(0,o.createComponentVNode)(2,i.Section,{title:"Modules",children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"HARDSUIT SYSTEMS OFFLINE"})}):(0,o.createComponentVNode)(2,i.Section,{title:"Modules",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",mb:"0.2rem",fontSize:1.5,children:["Selected Primary: ",(0,c.capitalize)(s||"None")]}),m&&m.map((function(e,t){return(0,o.createComponentVNode)(2,i.Section,{level:2,title:(0,c.toTitleCase)(e.name)+(e.damage?" (damaged)":""),buttons:(0,o.createFragment)([e.can_select?(0,o.createComponentVNode)(2,i.Button,{selected:e.name===s,content:e.name===s?"Selected":"Select",icon:"arrow-circle-right",onClick:function(){return a("interact_module",{module:e.index,module_mode:"select"})}}):null,e.can_use?(0,o.createComponentVNode)(2,i.Button,{content:e.engagestring,icon:"arrow-circle-down",onClick:function(){return a("interact_module",{module:e.index,module_mode:"engage"})}}):null,e.can_toggle?(0,o.createComponentVNode)(2,i.Button,{selected:e.is_active,content:e.is_active?e.deactivatestring:e.activatestring,icon:"arrow-circle-down",onClick:function(){return a("interact_module",{module:e.index,module_mode:"toggle"})}}):null],0),children:[e.damage>=2?(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"-- MODULE DESTROYED --"}):(0,o.createComponentVNode)(2,i.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:[(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["Engage: ",e.engagecost]}),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["Active: ",e.activecost]}),(0,o.createComponentVNode)(2,i.Box,{color:"average",children:["Passive: ",e.passivecost]})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:e.desc})]}),e.charges?(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Module Charges",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Selected",children:(0,c.capitalize)(e.chargetype)}),e.charges.map((function(t,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(0,c.capitalize)(t.caption),children:(0,o.createComponentVNode)(2,i.Button,{selected:e.realchargetype===t.index,icon:"arrow-right",onClick:function(){return a("interact_module",{module:e.index,module_mode:"select_charge_type",charge_type:t.index})}})},t.caption)}))]})})}):null]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(0),r=(n(8),n(5)),i=n(1),a=n(2),c=n(28),l=n(3);t.Radio=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.rawfreq,m=u.minFrequency,p=u.maxFrequency,h=u.listening,C=u.broadcasting,f=u.subspace,N=u.subspaceSwitchable,b=u.chan_list,V=u.loudspeaker,g=u.mic_cut,v=u.spk_cut,_=u.useSyndMode,k=c.RADIO_CHANNELS.find((function(e){return e.freq===Number(s)})),y=156;return b&&b.length>0?y+=28*b.length+6:y+=24,N&&(y+=38),(0,o.createComponentVNode)(2,l.Window,{width:310,height:y,resizable:!0,theme:_?"syndicate":"",children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Frequency",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},onDrag:function(e,t){return d("setFrequency",{freq:(0,r.round)(10*t)})}}),k&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"37px",icon:h?"volume-up":"volume-mute",selected:h,disabled:v,onClick:function(){return d("listen")}}),(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"37px",icon:C?"microphone":"microphone-slash",selected:C,disabled:g,onClick:function(){return d("broadcast")}}),!!N&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"bullhorn",selected:f,content:"Subspace Tx "+(f?"ON":"OFF"),onClick:function(){return d("subspace")}})}),!!N&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"volume-up":"volume-mute",selected:V,content:"Loudspeaker",onClick:function(){return d("toggleLoudspeaker")}})})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Channels",children:[(!b||0===b.length)&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"No channels detected."}),(0,o.createComponentVNode)(2,a.LabeledList,{children:b?b.map((function(e){var t=c.RADIO_CHANNELS.find((function(t){return t.freq===Number(e.freq)})),n="default";return t&&(n=t.color),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.display_name,labelColor:n,textAlign:"right",children:e.secure_channel&&f?(0,o.createComponentVNode)(2,a.Button,{icon:e.sec_channel_listen?"square-o":"check-square-o",selected:!e.sec_channel_listen,content:e.sec_channel_listen?"Off":"On",onClick:function(){return d("channel",{channel:e.chan})}}):(0,o.createComponentVNode)(2,a.Button,{content:"Switch",selected:e.chan===s,onClick:function(){return d("specFreq",{channel:e.chan})}})},e.chan)})):null})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RequestConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=function(e,t){var n=(0,i.useBackend)(t).act,r=e.dept_list,c=e.department;return(0,o.createComponentVNode)(2,a.LabeledList,{children:r.sort().map((function(e){return e!==c&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"envelope-open-text",onClick:function(){return n("write",{write:e,priority:1})},children:"Message"}),(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",onClick:function(){return n("write",{write:e,priority:2})},children:"High Priority"})],4)})||null}))})},d={0:function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.silent;return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,a.Button,{selected:!c,icon:c?"volume-mute":"volume-up",onClick:function(){return r("toggleSilent")},children:["Speaker ",c?"OFF":"ON"]})})},1:function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.department,d=r.assist_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Request assistance from another department",children:(0,o.createComponentVNode)(2,l,{dept_list:d,department:c})})},2:function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.department,d=r.supply_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Supplies",children:(0,o.createComponentVNode)(2,l,{dept_list:d,department:c})})},3:function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.department,d=r.info_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Report Anonymous Information",children:(0,o.createComponentVNode)(2,l,{dept_list:d,department:c})})},4:function(e,t){var n=(0,i.useBackend)(t),r=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:2,color:"good",children:"Message Sent Successfully"}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",onClick:function(){return r("setScreen",{setScreen:0})},children:"Continue"})})]})},5:function(e,t){var n=(0,i.useBackend)(t),r=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:1.5,bold:!0,color:"bad",children:"An error occured. Message Not Sent."}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",onClick:function(){return r("setScreen",{setScreen:0})},children:"Continue"})})]})},6:function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data.message_log;return(0,o.createComponentVNode)(2,a.Section,{title:"Messages",children:l.length&&l.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.decodeHtmlEntities)(e[0]),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return c("print",{print:t+1})},children:"Print"}),children:(0,r.decodeHtmlEntities)(e[1])},t)}))||(0,o.createComponentVNode)(2,a.Box,{children:"No messages."})})},7:function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.message,u=l.recipient,s=l.priority,m=l.msgStamped,p=l.msgVerified;return(0,o.createComponentVNode)(2,a.Section,{title:"Message Authentication",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message for "+u,children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Priority",children:2===s?"High Priority":1===s?"Normal Priority":"Unknown"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Validated By",color:p?"good":"bad",children:(0,r.decodeHtmlEntities)(p)||"No Validation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stamped By",color:m?"good":"bad",children:(0,r.decodeHtmlEntities)(m)||"No Stamp"})]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,icon:"share",onClick:function(){return c("department",{department:u})},children:"Send Message"}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return c("setScreen",{setScreen:0})},children:"Back"})]})},8:function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=(c.department,c.screen,c.message_log,c.newmessagepriority,c.silent,c.announcementConsole,c.assist_dept,c.supply_dept,c.info_dept,c.message),d=(c.recipient,c.priority,c.msgStamped,c.msgVerified,c.announceAuth);return(0,o.createComponentVNode)(2,a.Section,{title:"Send Station-Wide Announcement",children:[d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",mb:1,children:"ID Verified. Authentication Accepted."}),(0,o.createComponentVNode)(2,a.Section,{title:"Message",mt:1,maxHeight:"200px",scrollable:!0,buttons:(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"pen",onClick:function(){return r("writeAnnouncement")},children:"Edit"}),children:l||"No Message"})],4)||(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mb:1,children:"Swipe your ID card to authenticate yourself."}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l||!d,icon:"share",onClick:function(){return r("sendAnnouncement")},children:"Announce"}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return r("setScreen",{setScreen:0})},children:"Back"})]})}};t.RequestConsole=function(e,t){var n=(0,i.useBackend)(t),r=n.act,l=n.data,u=l.screen,s=l.newmessagepriority,m=l.announcementConsole,p=d[u];return(0,o.createComponentVNode)(2,c.Window,{width:520,height:410,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:6===u,onClick:function(){return r("setScreen",{setScreen:6})},icon:"envelope-open-text",children:"Messages"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return r("setScreen",{setScreen:1})},icon:"share-square",children:"Assistance"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return r("setScreen",{setScreen:2})},icon:"share-square",children:"Supplies"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===u,onClick:function(){return r("setScreen",{setScreen:3})},icon:"share-square-o",children:"Report"}),m&&(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:8===u,onClick:function(){return r("setScreen",{setScreen:8})},icon:"volume-up",children:"Announce"})||null,(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===u,onClick:function(){return r("setScreen",{setScreen:0})},icon:"cog"})]}),s&&(0,o.createComponentVNode)(2,a.Section,{title:s>1?"NEW PRIORITY MESSAGES":"There are new messages!",color:s>1?"bad":"average",bold:s>1})||null,(0,o.createComponentVNode)(2,p)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ResearchConsole=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=function(e,t){var n=(0,i.useBackend)(t).data,o=e.title,r=n[e.target];return"number"==typeof r?o+" - Page "+(r+1):o},d=function(e,t){var n=(0,i.useBackend)(t).act,r=e.target;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"undo",onClick:function(){return n(r,{reset:!0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-left",onClick:function(){return n(r,{reverse:-1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-right",onClick:function(){return n(r,{reverse:1})}})],4)},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.info.tech,l=e.disk;if(!l||!l.present)return null;var d=(0,i.useSharedState)(t,"saveDialogTech",!1),u=d[0],s=d[1];return u?(0,o.createComponentVNode)(2,a.Section,{title:"Load Technology to Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return s(!1)}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){s(!1),r("copy_tech",{copy_tech_ID:e.id})},children:"Copy To Disk"})},e.name)}))})}):(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Contents",children:"(Technology Data Disk)"})}),l.stored&&(0,o.createComponentVNode)(2,a.Box,{mt:2,children:[(0,o.createComponentVNode)(2,a.Box,{children:l.name}),(0,o.createComponentVNode)(2,a.Box,{children:["Level: ",l.level]}),(0,o.createComponentVNode)(2,a.Box,{children:["Description: ",l.desc]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return r("updt_tech")},children:"Upload to Database"}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return r("clear_tech")},children:"Clear Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_tech")},children:"Eject Disk"})]})]})||(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{children:"This disk has no data stored on it."}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return s(!0)},children:"Load Tech To Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_tech")},children:"Eject Disk"})]})]})},s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,u=c.info.designs,s=e.disk;if(!s||!s.present)return null;var m=(0,i.useSharedState)(t,"saveDialogData",!1),p=m[0],h=m[1];return p?(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l,{title:"Load Design to Disk",target:"design_page"}),buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return h(!1)}}),(0,o.createComponentVNode)(2,d,{target:"design_page"})||null],0),children:[(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search for...",value:c.search,onInput:function(e,t){return r("search",{search:t})},mb:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){h(!1),r("copy_design",{copy_design_ID:e.id})},children:"Copy To Disk"})},e.name)}))})]}):(0,o.createComponentVNode)(2,a.Box,{children:s.stored&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:s.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lathe Type",children:s.build_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Materials",children:Object.keys(s.materials).map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e," x ",s.materials[e]]},e)}))})]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return r("updt_design")},children:"Upload to Database"}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return r("clear_design")},children:"Clear Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_design")},children:"Eject Disk"})]})]})||(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:.5,children:"This disk has no data stored on it."}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return h(!0)},children:"Load Design To Disk"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_design")},children:"Eject Disk"})]})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,u=e.target,s=e.designs,m=e.buildName,p=e.buildFiveName;return u?(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l,{target:"builder_page",title:"Designs"}),buttons:(0,o.createComponentVNode)(2,d,{target:"builder_page"}),children:[(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search for...",value:c.search,onInput:function(e,t){return r("search",{search:t})},mb:1}),s&&s.length?s.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex,{width:"100%",justify:"space-between",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"40%",style:{"word-wrap":"break-all"},children:e.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"15%",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{mb:-1,icon:"wrench",onClick:function(){return r(m,{build:e.id,imprint:e.id})},children:"Build"}),p&&(0,o.createComponentVNode)(2,a.Button,{mb:-1,onClick:function(){return r(p,{build:e.id,imprint:e.id})},children:"x5"})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"45%",style:{"word-wrap":"break-all"},children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",children:e.mat_list.join(" ")}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",ml:1,children:e.chem_list.join(" ")})]})]}),(0,o.createComponentVNode)(2,a.Divider)],4,e.id)})):(0,o.createComponentVNode)(2,a.Box,{children:"No items could be found matching the parameters (page or search)."})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Error"})},p=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=e.name,u=null,s=null;if("Protolathe"===d?(u=l.info.linked_lathe,s=l.lathe_designs):(u=l.info.linked_imprinter,s=l.imprinter_designs),!u||!u.present)return(0,o.createComponentVNode)(2,a.Section,{title:d,children:["No ",d," found."]});var p=u,h=p.total_materials,C=p.max_materials,f=p.total_volume,N=p.max_volume,b=p.busy,V=p.mats,g=p.reagents,v=p.queue,_=(0,i.useSharedState)(t,"protoTab",0),k=_[0],y=_[1],L="transparent",B=!1,w="layer-group";b?(w="hammer",L="average",B=!0):v&&v.length&&(w="sync",L="green",B=!0);var x="Protolathe"===d?"removeP":"removeI",S="Protolathe"===d?"lathe_ejectsheet":"imprinter_ejectsheet",I="Protolathe"===d?"disposeP":"disposeI",T="Protolathe"===d?"disposeallP":"disposeallI";return(0,o.createComponentVNode)(2,a.Section,{title:d,buttons:b&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",spin:!0})||null,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Materials",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,maxValue:C,children:[h," cm\xb3 / ",C," cm\xb3"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemicals",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:f,maxValue:N,children:[f,"u / ",N,"u"]})})]}),(0,o.createComponentVNode)(2,a.Tabs,{mt:1,children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"wrench",selected:0===k,onClick:function(){return y(0)},children:"Build"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:w,iconSpin:B,color:L,selected:1===k,onClick:function(){return y(1)},children:"Queue"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"cookie-bite",selected:2===k,onClick:function(){return y(2)},children:"Mat Storage"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"flask",selected:3===k,onClick:function(){return y(3)},children:"Chem Storage"})]}),0===k&&(0,o.createComponentVNode)(2,m,{target:u,designs:s,buildName:"Protolathe"===d?"build":"imprint",buildFiveName:"Protolathe"===d?"buildfive":null})||1===k&&(0,o.createComponentVNode)(2,a.LabeledList,{children:v.length&&v.map((function(e){return 1===e.index?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,labelColor:"bad",children:b?(0,o.createComponentVNode)(2,a.Button,{disabled:!0,icon:"trash",children:"Remove"}):(0,o.createComponentVNode)(2,a.Box,{children:["(Awaiting Materials)",(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"trash",onClick:function(){var t;return c(x,((t={})[x]=e.index,t))},children:"Remove"})]})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){var t;return c(x,((t={})[x]=e.index,t))},children:"Remove"})},e.name)}))||(0,o.createComponentVNode)(2,a.Box,{m:1,children:"Queue Empty."})})||2===k&&(0,o.createComponentVNode)(2,a.LabeledList,{children:V.map((function(e){var n=(0,i.useLocalState)(t,"ejectAmt"+e.name,0),l=n[0],d=n[1];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,r.toTitleCase)(e.name),buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NumberInput,{minValue:0,width:"100px",value:l,maxValue:e.sheets,onDrag:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!e.removable,onClick:function(){var t;d(0),c(S,((t={})[S]=e.name,t.amount=l,t))},children:"Num"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!e.removable,onClick:function(){var t;return c(S,((t={})[S]=e.name,t.amount=50,t))},children:"All"})],4),children:[e.amount," cm\xb3"]},e.name)}))})||3===k&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:g.length&&g.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume,"u",(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",onClick:function(){return c(I,{dispose:e.id})},children:"Purge"})]},e.name)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Empty",children:"No chems detected"})}),(0,o.createComponentVNode)(2,a.Button,{mt:1,icon:"trash",onClick:function(){return c(T)},children:"Disposal All Chemicals In Storage"})]})||(0,o.createComponentVNode)(2,a.Box,{children:"Error"})]})},h=[{name:"Protolathe",icon:"wrench",template:(0,o.createComponentVNode)(2,p,{name:"Protolathe"})},{name:"Circuit Imprinter",icon:"digital-tachograph",template:(0,o.createComponentVNode)(2,p,{name:"Circuit Imprinter"})},{name:"Destructive Analyzer",icon:"eraser",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.info.linked_destroy;if(!c.present)return(0,o.createComponentVNode)(2,a.Section,{title:"Destructive Analyzer",children:"No destructive analyzer found."});var l=c.loaded_item,d=c.origin_tech;return(0,o.createComponentVNode)(2,a.Section,{title:"Destructive Analyzer",children:l&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Origin Tech",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.level,"\xa0\xa0",e.current&&"(Current: "+e.current+")"]},e.name)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",children:"No origin tech found."})})})]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,color:"red",icon:"eraser",onClick:function(){return r("deconstruct")},children:"Deconstruct Item"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return r("eject_item")},children:"Eject Item"})]})||(0,o.createComponentVNode)(2,a.Box,{children:"No Item Loaded. Standing-by..."})})}))},{name:"Settings",icon:"cog",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.info,l=c.sync,d=c.linked_destroy,u=c.linked_imprinter,s=c.linked_lathe,m=(0,i.useSharedState)(t,"settingsTab",0),p=m[0],h=m[1];return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"cogs",onClick:function(){return h(0)},selected:0===p,children:"General"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"link",onClick:function(){return h(1)},selected:1===p,children:"Device Linkages"})]}),0===p&&(0,o.createComponentVNode)(2,a.Box,{children:[l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",onClick:function(){return r("sync")},children:"Sync Database with Network"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"unlink",onClick:function(){return r("togglesync")},children:"Disconnect from Research Network"})],4)||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"link",onClick:function(){return r("togglesync")},children:"Connect to Research Network"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"lock",onClick:function(){return r("lock")},children:"Lock Console"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"red",icon:"trash",onClick:function(){return r("reset")},children:"Reset R&D Database"})]})||1===p&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",mb:1,onClick:function(){return r("find_device")},children:"Re-sync with Nearby Devices"}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.present&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destructive Analyzer",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",onClick:function(){return r("disconnect",{disconnect:"destroy"})},children:"Disconnect"})})||null,s.present&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Protolathe",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",onClick:function(){return r("disconnect",{disconnect:"lathe"})},children:"Disconnect"})})||null,u.present&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Circuit Imprinter",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",onClick:function(){return r("disconnect",{disconnect:"imprinter"})},children:"Disconnect"})})||null]})]})||(0,o.createComponentVNode)(2,a.Box,{children:"Error"})]})}))},{name:"Research List",icon:"flask",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.tech;return(0,o.createComponentVNode)(2,a.Section,{title:"Current Research Levels",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return r("print",{print:1})},children:"Print This Page"}),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:[(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{children:[" - Level ",e.level]})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.desc})})]},e.name)}))})})}))},{name:"Design List",icon:"file",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,u=c.designs;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l,{title:"Researched Technologies & Designs",target:"design_page"}),buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",onClick:function(){return r("print",{print:2})},children:"Print This Page"}),(0,o.createComponentVNode)(2,d,{target:"design_page"})||null],0),children:[(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search for...",value:c.search,onInput:function(e,t){return r("search",{search:t})},mb:1}),u&&u.length&&(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.desc},e.name)}))})||(0,o.createComponentVNode)(2,a.Box,{color:"warning",children:"No designs found."})]})}))},{name:"Disk Operations",icon:"save",template:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.info),c=r.d_disk,l=r.t_disk;return c.present||l.present?(0,o.createComponentVNode)(2,a.Section,{title:"Disk Operations",children:[(0,o.createComponentVNode)(2,u,{disk:l}),(0,o.createComponentVNode)(2,s,{disk:c})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Disk Operations",children:"No disk inserted."})}))}];t.ResearchConsole=function(e,t){var n=(0,i.useBackend)(t),r=n.act,l=n.data,d=l.busy_msg,u=l.locked,s=(0,i.useSharedState)(t,"rdmenu",0),m=s[0],p=s[1],C=!1;return(d||u)&&(C=!0),(0,o.createComponentVNode)(2,c.Window,{width:850,height:630,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:h.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:e.icon,selected:m===t,disabled:C,onClick:function(){return p(t)},children:e.name},t)}))}),d&&(0,o.createComponentVNode)(2,a.Section,{title:"Processing...",children:d})||u&&(0,o.createComponentVNode)(2,a.Section,{title:"Console Locked",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("lock")},icon:"lock-open",children:"Unlock"})})||h[m].template]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ResearchServerController=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(8);t.ResearchServerController=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,a.Window,{width:575,height:430,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data),c=(a.badmin,a.servers),l=(a.consoles,(0,r.useSharedState)(t,"selectedServer",null)),u=l[0],s=l[1],m=c.find((function(e){return e.id===u}));return m?(0,o.createComponentVNode)(2,d,{setSelectedServer:s,server:m}):(0,o.createComponentVNode)(2,i.Section,{title:"Server Selection",children:c.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return s(e.id)},children:e.name})},e.name)}))})},d=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.badmin),c=e.server,l=e.setSelectedServer,d=(0,r.useSharedState)(t,"tab",0),p=d[0],h=d[1];return(0,o.createComponentVNode)(2,i.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",onClick:function(){return l(null)},children:"Back"}),children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===p,onClick:function(){return h(0)},children:"Access Rights"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===p,onClick:function(){return h(1)},children:"Data Management"}),a&&(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===p,onClick:function(){return h(2)},color:"red",children:"Server-to-Server Transfer"})||null]}),0===p&&(0,o.createComponentVNode)(2,u,{server:c})||null,1===p&&(0,o.createComponentVNode)(2,s,{server:c})||null,2===p&&a&&(0,o.createComponentVNode)(2,m,{server:c})||null]})},u=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.server,d=c.consoles,u=function(e,t){return-1!==e.id_with_upload.indexOf(t.id)},s=function(e,t){return-1!==e.id_with_download.indexOf(t.id)};return(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Consoles",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name+" ("+e.loc+")",children:[(0,o.createComponentVNode)(2,i.Button,{icon:u(l,e)?"lock-open":"lock",selected:u(l,e),onClick:function(){return a("toggle_upload",{server:l.ref,console:e.ref})},children:u(l,e)?"Upload On":"Upload Off"}),(0,o.createComponentVNode)(2,i.Button,{icon:s(l,e)?"lock-open":"lock",selected:s(l,e),onClick:function(){return a("toggle_download",{server:l.ref,console:e.ref})},children:s(l,e)?"Download On":"Download Off"})]},e.name)}))})})},s=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=(n.data,e.server);return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Research Levels",children:l.tech.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",confirmIcon:"trash",color:"red",content:"Reset",onClick:function(){return a("reset_tech",{server:l.ref,tech:e.id})}})},e.name)}))}),(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Designs",children:(0,c.filter)((function(e){return!!e.name}))(l.designs).map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",confirmIcon:"trash",color:"red",content:"Delete",onClick:function(){return a("reset_design",{server:l.ref,design:e.id})}})},e.name)}))})],4)},m=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=e.server,d=c.badmin,u=c.servers;return d?(0,o.createComponentVNode)(2,i.Section,{level:2,title:"Server Data Transfer",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button.Confirm,{fluid:!0,color:"bad",content:(0,o.createComponentVNode)(2,i.Box,{children:["Transfer from ",l.name," To ",e.name]}),onClick:function(){return a("transfer_data",{server:l.ref,target:e.ref})}})},e.name)}))}):null}},function(e,t,n){"use strict";t.__esModule=!0,t.ResleevingConsole=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=(n(28),n(45)),l=n(3),d=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.args),l=c.activerecord,d=c.realname,u=c.obviously_dead,s=c.oocnotes,m=c.can_sleeve_active;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:"Mind Record ("+d+")",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",color:"red",onClick:function(){return r("modal_close")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:!m,icon:"user-plus",content:"Sleeve",onClick:function(){return r("sleeve",{ref:l,mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"user-plus",content:"Card",onClick:function(){return r("sleeve",{ref:l,mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"OOC Notes",children:(0,o.createComponentVNode)(2,a.Section,{style:{"word-break":"break-all",height:"100px"},scrollable:!0,children:s})})]})})},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.args),l=c.activerecord,d=c.realname,u=c.species,s=c.sex,m=c.mind_compat,p=c.synthetic,h=c.oocnotes,C=c.can_grow_active;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:"Body Record ("+d+")",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",color:"red",onClick:function(){return r("modal_close")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bio. Sex",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Compat",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Synthetic",children:p?"Yes":"No"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"OOC Notes",children:(0,o.createComponentVNode)(2,a.Section,{style:{"word-break":"break-all",height:"100px"},scrollable:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{disabled:!C,icon:"user-plus",content:p?"Build":"Grow",onClick:function(){return r("create",{ref:l})}})})]})})};t.ResleevingConsole=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),C=(r.menu,r.coredumped),f=r.emergency,N=(0,o.createFragment)([(0,o.createComponentVNode)(2,g),(0,o.createComponentVNode)(2,v),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,flexGrow:"1",children:(0,o.createComponentVNode)(2,m)})],4);return C&&(N=(0,o.createComponentVNode)(2,p)),f&&(N=(0,o.createComponentVNode)(2,h)),(0,c.modalRegisterBodyOverride)("view_b_rec",u),(0,c.modalRegisterBodyOverride)("view_m_rec",d),(0,o.createComponentVNode)(2,l.Window,{width:640,height:520,resizable:!0,children:[(0,o.createComponentVNode)(2,c.ComplexModal,{maxWidth:"75%",maxHeight:"75%"}),(0,o.createComponentVNode)(2,l.Window.Content,{className:"Layout__content--flexColumn",children:N})]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.menu;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,icon:"home",onClick:function(){return r("menu",{num:1})},children:"Main"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,icon:"folder",onClick:function(){return r("menu",{num:2})},children:"Body Records"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===c,icon:"folder",onClick:function(){return r("menu",{num:3})},children:"Mind Records"})]})},m=function(e,t){var n,r=(0,i.useBackend)(t).data,a=r.menu,c=r.bodyrecords,l=r.mindrecords;return 1===a?n=(0,o.createComponentVNode)(2,C):2===a?n=(0,o.createComponentVNode)(2,V,{records:c,actToDo:"view_b_rec"}):3===a&&(n=(0,o.createComponentVNode)(2,V,{records:l,actToDo:"view_m_rec"})),n},p=function(e,t){return(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",justify:"space-evenly",align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Icon,{size:12,color:"bad",name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"bad",mt:5,children:(0,o.createVNode)(1,"h2",null,"TransCore dump completed. Resleeving offline.",16)})]})})},h=function(e,t){var n=(0,i.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:(0,o.createVNode)(1,"h1",null,"TRANSCORE DUMP",16)}),(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:(0,o.createVNode)(1,"h2",null,"!!WARNING!!",16)}),(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"This will transfer all minds to the dump disk, and the TransCore will be made unusable until post-shift maintenance! This should only be used in emergencies!"}),(0,o.createComponentVNode)(2,a.Box,{mt:4,children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Disk",color:"good",onClick:function(){return n("ejectdisk")}})}),(0,o.createComponentVNode)(2,a.Box,{mt:4,children:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",confirmIcon:"exclamation-triangle",content:"Core Dump",confirmContent:"Disable Transcore?",color:"bad",onClick:function(){return n("coredump")}})})]})},C=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data);r.loading,r.scantemp,r.occupant,r.locked,r.can_brainscan,r.scan_mode,r.pods,r.selected_pod;return(0,o.createComponentVNode)(2,a.Section,{title:"Pods",level:"2",children:[(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,b),(0,o.createComponentVNode)(2,N)]})},f=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.pods,u=l.spods,s=l.selected_pod;return d&&d.length?d.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:e.progress/100,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[-Infinity,.25]},mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,a.Button,{selected:s===e.pod,icon:s===e.pod&&"check",content:"Select",mt:u&&u.length?"2rem":"0.5rem",onClick:function(){return c("selectpod",{ref:e.pod})}}),(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"pod_"+e.status+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.biomass>=150?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.biomass>=150?"circle":"circle-o"}),"\xa0",e.biomass]}),n]},t)})):null},N=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.sleevers,d=c.spods,u=c.selected_sleever;return l&&l.length?l.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"sleeve_"+(e.occupied?"occupied":"empty")+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:e.occupied?"label":"bad",children:e.name}),(0,o.createComponentVNode)(2,a.Button,{selected:u===e.sleever,icon:u===e.sleever&&"check",content:"Select",mt:d&&d.length?"3rem":"1.5rem",onClick:function(){return r("selectsleever",{ref:e.sleever})}})]},t)})):null},b=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.spods,u=l.selected_printer;return d&&d.length?d.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:e.progress/100,ranges:{good:[.75,Infinity],average:[.25,.75],bad:[-Infinity,.25]},mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,a.Button,{selected:u===e.spod,icon:u===e.spod&&"check",content:"Select",mt:"0.5rem",onClick:function(){return c("selectprinter",{ref:e.spod})}}),(0,o.createComponentVNode)(2,a.Box,{width:"64px",textAlign:"center",display:"inline-block",mr:"0.5rem",children:[(0,o.createVNode)(1,"img",null,null,1,{src:"synthprinter"+(e.busy?"_working":"")+".gif",style:{width:"100%","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createComponentVNode)(2,a.Box,{color:"label",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.steel>=15e3?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.steel>=15e3?"circle":"circle-o"}),"\xa0",e.steel]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:e.glass>=15e3?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.glass>=15e3?"circle":"circle-o"}),"\xa0",e.glass]}),n]},t)})):null},V=function(e,t){var n=(0,i.useBackend)(t).act,r=e.records,c=e.actToDo;return r.length?(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:r.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{icon:"user",mb:"0.5rem",content:e.name,onClick:function(){return n(c,{ref:e.recref})}},t)}))}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No records found."]})})},g=function(e,t){var n,r=(0,i.useBackend)(t),c=r.act,l=r.data.temp;if(l&&l.text&&!(l.text.length<=0)){var d=((n={})[l.style]=!0,n);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.NoticeBox,Object.assign({},d,{children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",verticalAlign:"middle",children:l.text}),(0,o.createComponentVNode)(2,a.Button,{icon:"times-circle",float:"right",onClick:function(){return c("cleartemp")}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]})))}},v=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=r.pods,l=r.spods,d=r.sleevers;r.autoallowed,r.autoprocess,r.disk;return(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pods",children:c&&c.length?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[c.length," connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"SynthFabs",children:l&&l.length?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[l.length," connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sleevers",children:d&&d.length?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[d.length," Connected"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"None connected!"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ResleevingPod=void 0;var o=n(0),r=n(3),i=n(1),a=n(2);t.ResleevingPod=function(e,t){var n=(0,i.useBackend)(t).data,c=n.occupied,l=n.name,d=n.health,u=n.maxHealth,s=n.stat,m=n.mindStatus,p=n.mindName,h=n.resleeveSick,C=n.initialSick;return(0,o.createComponentVNode)(2,r.Window,{width:300,height:350,resizeable:!0,children:(0,o.createComponentVNode)(2,r.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:c?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:2===s?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DEAD"}):1===s?(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Unconscious"}):(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.5,Infinity],average:[.25,.5],bad:[-Infinity,.25]},value:d/u,children:[d,"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Status",children:m?"Present":"Missing"}),m?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mind Occupying",children:p}):""]}),h?(0,o.createComponentVNode)(2,a.Box,{color:"average",mt:3,children:["Warning: Resleeving Sickness detected.",C?(0,o.createFragment)([(0,o.createTextVNode)(" Motion Sickness also detected. Please allow the newly resleeved person a moment to get their bearings. This warning will disappear when Motion Sickness is no longer detected.")],4):""]}):""],0):(0,o.createComponentVNode)(2,a.Box,{bold:!0,m:1,children:"Unoccupied."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.can_hack,s=d.safety,m=d.show_detonate_all,p=d.cyborgs,h=void 0===p?[]:p;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[!!m&&(0,o.createComponentVNode)(2,i.Section,{title:"Emergency Self Destruct",children:[(0,o.createComponentVNode)(2,i.Button,{icon:s?"lock":"unlock",content:s?"Disable Safety":"Enable Safety",selected:s,onClick:function(){return l("arm",{})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"bomb",disabled:s,content:"Destroy ALL Cyborgs",color:"bad",onClick:function(){return l("nuke",{})}})]}),(0,o.createComponentVNode)(2,c,{cyborgs:h,can_hack:u})]})})};var c=function(e,t){var n=e.cyborgs,a=(e.can_hack,(0,r.useBackend)(t)),c=a.act,l=a.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,buttons:(0,o.createFragment)([!!e.hackable&&!e.emagged&&(0,o.createComponentVNode)(2,i.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return c("hackbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",disabled:!l.auth,onClick:function(){return c("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"bomb",content:"Detonate",disabled:!l.auth,color:"bad",onClick:function(){return c("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Location",children:(0,o.createComponentVNode)(2,i.Box,{children:e.locstring})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.health>50?"good":"bad",value:e.health/100})}),"number"==typeof e.charge&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Charge",children:(0,o.createComponentVNode)(2,i.ProgressBar,{color:e.charge>30?"good":"bad",value:e.charge/100})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Capacity",children:(0,o.createComponentVNode)(2,i.Box,{color:e.cell_capacity<3e4?"average":"good",children:e.cell_capacity})})],4)||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell",children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No Power Cell"})}),!!e.is_hacked&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Safeties",children:(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"DISABLED"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,i.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No cyborg units detected within access parameters."})}},function(e,t,n){"use strict";t.__esModule=!0,t.RogueZones=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.RogueZones=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.timeout_percent,u=l.diffstep,s=l.difficulty,m=l.occupied,p=l.scanning,h=l.updated,C=l.debug,f=l.shuttle_location,N=l.shuttle_at_station,b=l.scan_ready,V=l.can_recall_shuttle;return(0,o.createComponentVNode)(2,a.Window,{width:360,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Current Area",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mineral Content",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle Location",buttons:V&&(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"rocket",onClick:function(){return c("recall_shuttle")},children:"Recall Shuttle"})||null,children:f}),m&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"bad",labelColor:"bad",label:"Personnel",children:["WARNING: Area occupied by ",m," personnel!"]})||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Personnel",color:"good",children:"No personnel detected."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!b,fluid:!0,icon:"search",onClick:function(){return c("scan_for_new")},children:"Scan For Asteroids"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scn Ramestat Core",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:d,maxValue:100,ranges:{good:[100,Infinity],average:[75,100],bad:[-Infinity,75]}})}),p&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scanning",children:"In progress."})||null,h&&!p&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Info",children:"Updated shuttle destination!"})||null,C&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Debug",labelColor:"bad",children:[(0,o.createComponentVNode)(2,i.Box,{children:["Timeout Percent: ",d]}),(0,o.createComponentVNode)(2,i.Box,{children:["Diffstep: ",u]}),(0,o.createComponentVNode)(2,i.Box,{children:["Difficulty: ",s]}),(0,o.createComponentVNode)(2,i.Box,{children:["Occupied: ",m]}),(0,o.createComponentVNode)(2,i.Box,{children:["Debug: ",C]}),(0,o.createComponentVNode)(2,i.Box,{children:["Shuttle Location: ",f]}),(0,o.createComponentVNode)(2,i.Box,{children:["Shuttle at station: ",N]}),(0,o.createComponentVNode)(2,i.Box,{children:["Scan Ready: ",b]})]})||null]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RustCoreMonitorContent=t.RustCoreMonitor=void 0;var o=n(0),r=n(1),i=n(3),a=n(2);t.RustCoreMonitor=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.cores;return(0,o.createComponentVNode)(2,a.Section,{title:"Cores",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set Tag",onClick:function(){return i("set_tag")}}),children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Position"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Reactant Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Instability"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Temperature"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Field Strength"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Plasma Content"})]}),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,{children:[e.x,", ",e.y,", ",e.z]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.has_field?"Online":"Offline",selected:e.has_field,disabled:!e.core_operational,onClick:function(){return i("toggle_active",{core:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.reactant_dump?"Dump":"Maintain",selected:e.has_field,disabled:!e.core_operational,onClick:function(){return i("toggle_reactantdump",{core:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.field_instability}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.field_temperature}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Knob,{forcedInputWidth:"60px",size:1.25,color:!!e.has_field&&"yellow",value:e.target_field_strength,unit:"(W.m^-3)",minValue:1,maxValue:1e3,stepPixelSize:1,onDrag:function(t,n){return i("set_fieldstr",{core:e.ref,fieldstr:n})}})}),(0,o.createComponentVNode)(2,a.Table.Cell)]},e.name)}))]})})};t.RustCoreMonitorContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.RustFuelContent=t.RustFuelControl=void 0;var o=n(0),r=n(1),i=n(3),a=n(2);t.RustFuelControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:627,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c)})})};var c=function(e,t){var n=(0,r.useBackend)(t),i=n.act,c=n.data.fuels;return(0,o.createComponentVNode)(2,a.Section,{title:"Fuel Injectors",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Set Tag",onClick:function(){return i("set_tag")}}),children:(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:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Position"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Remaining Fuel"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Fuel Rod Composition"})]}),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,{children:[e.x,", ",e.y,", ",e.z]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:e.active?"Online":"Offline",selected:e.active,disabled:!e.deployed,onClick:function(){return i("toggle_active",{fuel:e.ref})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.fuel_amt}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.fuel_type})]},e.name)}))]})})};t.RustFuelContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.Secbot=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Secbot=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.on,u=l.open,s=l.locked,m=l.idcheck,p=l.check_records,h=l.check_arrest,C=l.arrest_type,f=l.declare_arrests,N=l.bot_patrolling,b=l.patrol;return(0,o.createComponentVNode)(2,a.Window,{width:390,height:320,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Automatic Security Unit v2.0",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:d,onClick:function(){return c("power")},children:d?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Maintenance Panel",color:u?"bad":"good",children:u?"Open":"Closed"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Behavior Controls",color:s?"good":"bad",children:s?"Locked":"Unlocked"})]})}),!s&&(0,o.createComponentVNode)(2,i.Section,{title:"Behavior Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Check for Weapon Authorization",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"toggle-on":"toggle-off",selected:m,onClick:function(){return c("idcheck")},children:m?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Check Security Records",children:(0,o.createComponentVNode)(2,i.Button,{icon:p?"toggle-on":"toggle-off",selected:p,onClick:function(){return c("ignorerec")},children:p?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Check Arrest Status",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"toggle-on":"toggle-off",selected:h,onClick:function(){return c("ignorearr")},children:h?"Yes":"No"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Operating Mode",children:(0,o.createComponentVNode)(2,i.Button,{icon:C?"toggle-on":"toggle-off",selected:C,onClick:function(){return c("switchmode")},children:C?"Detain":"Arrest"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Report Arrests",children:(0,o.createComponentVNode)(2,i.Button,{icon:f?"toggle-on":"toggle-off",selected:f,onClick:function(){return c("declarearrests")},children:f?"Yes":"No"})}),!!N&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Auto Patrol",children:(0,o.createComponentVNode)(2,i.Button,{icon:b?"toggle-on":"toggle-off",selected:b,onClick:function(){return c("patrol")},children:b?"Yes":"No"})})]})})||null]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SecurityRecords=void 0;var o=n(0),r=n(1),i=n(2),a=n(45),c=n(3),l=n(95),d=n(96),u=n(62),s=(n(6),function(e,t){(0,a.modalOpen)(e,"edit",{field:t.edit,value:t.value})});t.SecurityRecords=function(e,t){var n,s=(0,r.useBackend)(t).data,C=s.authenticated,f=s.screen;return C?(2===f?n=(0,o.createComponentVNode)(2,m):3===f?n=(0,o.createComponentVNode)(2,p):4===f&&(n=(0,o.createComponentVNode)(2,h)),(0,o.createComponentVNode)(2,c.Window,{width:700,height:680,resizable:!0,children:[(0,o.createComponentVNode)(2,a.ComplexModal,{maxHeight:"100%",maxWidth:"400px"}),(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,l.LoginInfo),(0,o.createComponentVNode)(2,u.TemporaryNotice),(0,o.createComponentVNode)(2,N),(0,o.createComponentVNode)(2,i.Section,{height:"89%",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,c.Window,{width:700,height:680,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d.LoginScreen)})})};var m=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.records;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search by Name, DNA, or ID",onChange:function(e,t){return a("search",{t1:t})}}),(0,o.createComponentVNode)(2,i.Box,{mt:"0.5rem",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{icon:"user",mb:"0.5rem",color:e.color,content:e.id+": "+e.name+" (Criminal Status: "+e.criminal+")",onClick:function(){return a("d_rec",{d_rec:e.ref})}},t)}))})],4)},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"download",content:"Backup to Disk",disabled:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"upload",content:"Upload from Disk",my:"0.5rem",disabled:!0}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",content:"Delete All Security Records",onClick:function(){return n("del_all")}})],4)},h=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.security,d=c.printing;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"General Data",level:2,mt:"-6px",children:(0,o.createComponentVNode)(2,C)}),(0,o.createComponentVNode)(2,i.Section,{title:"Security Data",level:2,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,i.Section,{title:"Actions",level:2,children:[(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Security Record",color:"bad",onClick:function(){return a("del_r")}}),(0,o.createComponentVNode)(2,i.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Record (All)",color:"bad",onClick:function(){return a("del_r_2")}}),(0,o.createComponentVNode)(2,i.Button,{icon:d?"spinner":"print",disabled:d,iconSpin:!!d,content:"Print Entry",ml:"0.5rem",onClick:function(){return a("print_p")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-left",content:"Back",mt:"0.5rem",onClick:function(){return a("screen",{screen:2})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.general;return c&&c.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"left",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:c.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[(0,o.createComponentVNode)(2,i.Box,{height:"20px",display:"inline-block",children:e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)}))}),!!e.edit&&(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",onClick:function(){return s(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,i.Box,{width:"50%",float:"right",textAlign:"right",children:[!!c.has_photos&&c.photos.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e.substr(1,e.length-1),style:{width:"96px","margin-bottom":"0.5rem","-ms-interpolation-mode":"nearest-neighbor"}}),(0,o.createVNode)(1,"br"),"Photo #",t+1]},t)})),(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return a("photo_front")},children:"Update Front Photo"}),(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return a("photo_side")},children:"Update Side Photo"})]})]})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"General records lost!"})},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.security;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.field,children:[e.value.split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)})),(0,o.createComponentVNode)(2,i.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return s(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Comments/Log",level:2,children:[0===l.comments.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",display:"inline",children:e.header}),(0,o.createVNode)(1,"br"),e.text,(0,o.createComponentVNode)(2,i.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return c("del_c",{del_c:t+1})}})]},t)})),(0,o.createComponentVNode)(2,i.Button,{icon:"comment",content:"Add Entry",color:"good",mt:"0.5rem",mb:"0",onClick:function(){return(0,a.modalOpen)(t,"add_c")}})]})],4):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:["Security records lost!",(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:"New Record",ml:"0.5rem",onClick:function(){return c("new")}})]})},N=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data.screen;return(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:2===c,onClick:function(){return a("screen",{screen:2})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:3===c,onClick:function(){return a("screen",{screen:3})},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"wrench"}),"Record Maintenance"]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SeedStorage=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6),l=n(8);t.SeedStorage=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(u.scanner,u.seeds),m=(0,l.sortBy)((function(e){return e.name.toLowerCase()}))(s);return(0,o.createComponentVNode)(2,a.Window,{width:600,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Seeds",children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Flex,{spacing:1,mt:-1,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"60%",children:(0,o.createComponentVNode)(2,i.Collapsible,{title:(0,c.toTitleCase)(e.name)+" #"+e.uid,children:(0,o.createComponentVNode)(2,i.Section,{width:"165%",title:"Traits",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:Object.keys(e.traits).map((function(t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(0,c.toTitleCase)(t),children:e.traits[t]},t)}))})})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{mt:.4,children:[e.amount," Remaining"]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"download",onClick:function(){return d("vend",{id:e.id})},children:"Vend"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"trash",onClick:function(){return d("purge",{id:e.id})},children:"Purge"})})]},e.name+e.uid)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShieldCapacitor=void 0;var o=n(0),r=n(1),i=n(3),a=n(2),c=n(5),l=n(20);t.ShieldCapacitor=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.time_since_fail,p=u.stored_charge,h=u.max_charge,C=u.charge_rate,f=u.max_charge_rate;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:s,content:s?"Online":"Offline",onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Capacitor Status",children:m>2?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"OK."}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Discharging!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stored Energy",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:p,format:function(e){return(0,l.formatSiUnit)(e,0,"J")}})," (",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:100*(0,c.round)(p/h,1)}),"%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Rate",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,step:100,stepPixelSize:.2,minValue:1e4,maxValue:f,format:function(e){return(0,l.formatPower)(e)},onDrag:function(e,t){return d("charge_rate",{rate:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShieldGenerator=void 0;var o=n(0),r=n(1),i=n(3),a=n(2),c=n(5),l=n(20),d=n(61);t.ShieldGenerator=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.locked);return(0,o.createComponentVNode)(2,i.Window,{width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:a?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,s)})})};var u=function(e,t){return(0,o.createComponentVNode)(2,d.FullscreenNotice,{title:"Locked",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.5rem",bold:!0,children:(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",verticalAlign:"middle",size:3,mr:"1rem"})}),(0,o.createComponentVNode)(2,a.Box,{color:"label",my:"1rem",children:"Swipe your ID to begin."})]})},s=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data.lockedData,u=d.capacitors,s=d.active,m=d.failing,p=d.radius,h=d.max_radius,C=d.z_range,f=d.max_z_range,N=d.average_field_strength,b=d.target_field_strength,V=d.max_field_strength,g=d.shields,v=d.upkeep,_=d.strengthen_rate,k=d.max_strengthen_rate,y=d.gen_power,L=(u||[]).length;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Field Status",children:m?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Unstable"}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Stable"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overall Field Strength",children:[(0,c.round)(N,2)," Renwick (",b&&(0,c.round)(100*N/b,1)||"NA","%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upkeep Power",children:(0,l.formatPower)(v)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shield Generation Power",children:(0,l.formatPower)(y)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Currently Shielded",children:[g," m\xb2"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Capacitors",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:L?u.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Capacitor #"+t,children:[e.active?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Online"}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Offline"}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:[(0,l.formatSiUnit)(e.stored_charge,0,"J")," (",100*(0,c.round)(e.stored_charge/e.max_charge,2),"%)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:e.failing?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Discharging"}):(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"OK."})})]})]},t)})):(0,o.createComponentVNode)(2,a.LabeledList.Item,{color:"bad",children:"No Capacitors Connected"})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:s?"Online":"Offline",selected:s,onClick:function(){return i("toggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Coverage Radius",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:6,minValue:0,maxValue:h,value:p,unit:"m",onDrag:function(e,t){return i("change_radius",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Vertical Shielding",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:12,minValue:0,maxValue:f,value:C,unit:"vertical range",onDrag:function(e,t){return i("z_range",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Rate",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:12,minValue:0,step:.1,maxValue:k,value:_,format:function(e){return(0,c.round)(e,1)},unit:"Renwick/s",onDrag:function(e,t){return i("strengthen_rate",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maximum Field Strength",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,stepPixelSize:12,minValue:1,maxValue:V,value:b,unit:"Renwick",onDrag:function(e,t){return i("target_field_strength",{val:t})}})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleControl=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(3),l=function(e,t){var n="ERROR",r="bad",i=!1;return"docked"===e?(n="DOCKED",r="good"):"docking"===e?(n="DOCKING",r="average",i=!0):"undocking"===e?(n="UNDOCKING",r="average",i=!0):"undocked"===e&&(n="UNDOCKED",r="#676767"),i&&t&&(n+="-MANUAL"),(0,o.createComponentVNode)(2,a.Box,{color:r,children:n})},d=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,d=e.engineName,u=void 0===d?"Bluespace Drive":d,s=c.shuttle_status,m=c.shuttle_state,p=c.has_docking,h=c.docking_status,C=c.docking_override,f=c.docking_codes;return(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Status",children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",mb:1,children:s}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:u,children:"idle"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#676767",bold:!0,children:"IDLE"})||"warmup"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"SPINNING UP"})||"in_transit"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"ENGAGED"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR"})}),p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Docking Status",children:l(h,C)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Docking Codes",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pen",onClick:function(){return r("set_codes")},children:f||"Not Set"})})],4)||null]})]})},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.can_launch,d=c.can_cancel,u=c.can_force;return(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("move")},disabled:!l,icon:"rocket",fluid:!0,children:"Launch Shuttle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("cancel")},disabled:!d,icon:"ban",fluid:!0,children:"Cancel Launch"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return r("force")},color:"bad",disabled:!u,icon:"exclamation-triangle",fluid:!0,children:"Force Launch"})})]})})},s={ShuttleControlConsoleDefault:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t);n.act,n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)})),ShuttleControlConsoleMulti:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.can_cloak,s=c.can_pick,m=c.legit,p=c.cloaked,h=c.destination_name;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,a.Section,{title:"Multishuttle Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:m?"ATC Inhibitor":"Cloaking",children:(0,o.createComponentVNode)(2,a.Button,{selected:p,icon:p?"eye":"eye-o",onClick:function(){return r("toggle_cloaked")},children:p?"Enabled":"Disabled"})})||null,(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Destination",children:(0,o.createComponentVNode)(2,a.Button,{icon:"taxi",disabled:!s,onClick:function(){return r("pick")},children:h})})]})}),(0,o.createComponentVNode)(2,u)],4)})),ShuttleControlConsoleExploration:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.can_pick,s=c.destination_name,m=c.fuel_usage,p=c.fuel_span,h=c.remaining_fuel;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{engineName:"Engines"}),(0,o.createComponentVNode)(2,a.Section,{title:"Jump Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Destination",children:(0,o.createComponentVNode)(2,a.Button,{icon:"taxi",disabled:!l,onClick:function(){return r("pick")},children:s})}),m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Est. Delta-V Budget",color:p,children:[h," m/s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Avg. Delta-V Per Maneuver",children:[m," m/s"]})],4)||null]})}),(0,o.createComponentVNode)(2,u)],4)})),ShuttleControlConsoleWeb:(0,o.createComponentVNode)(2,(function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=d.autopilot,s=d.can_rename,m=d.shuttle_state,p=d.is_moving,h=d.skip_docking,C=d.docking_status,f=d.docking_override,N=d.shuttle_location,b=d.can_cloak,V=d.cloaked,g=d.can_autopilot,v=d.routes,_=d.is_in_transit,k=d.travel_progress,y=d.time_left,L=d.doors,B=d.sensors;return(0,o.createFragment)([u&&(0,o.createComponentVNode)(2,a.Section,{title:"AI PILOT (CLASS D) ACTIVE",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,children:"This vessel will start and stop automatically. Ensure that all non-cycling capable hatches and doors are closed, as the automated system may not be able to control them. Docking and flight controls are locked. To unlock, disable the automated flight system."})})||null,(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Status",buttons:s&&(0,o.createComponentVNode)(2,a.Button,{icon:"pen",onClick:function(){return c("rename_command")},children:"Rename"})||null,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Engines",children:"idle"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#676767",bold:!0,children:"IDLE"})||"warmup"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"SPINNING UP"})||"in_transit"===m&&(0,o.createComponentVNode)(2,a.Box,{color:"#336699",children:"ENGAGED"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"ERROR"})}),!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Location",children:(0,r.toTitleCase)(N)}),!h&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Docking Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{selected:"docked"===C,disabled:"undocked"!==C&&"docked"!==C,onClick:function(){return c("dock_command")},children:"Dock"}),(0,o.createComponentVNode)(2,a.Button,{selected:"undocked"===C,disabled:"docked"!==C&&"undocked"!==C,onClick:function(){return c("undock_command")},children:"Undock"})],4),children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,inline:!0,children:l(C,f)})})||null,b&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloaking",children:(0,o.createComponentVNode)(2,a.Button,{selected:V,icon:V?"eye":"eye-o",onClick:function(){return c("toggle_cloaked")},children:V?"Enabled":"Disabled"})})||null,g&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Autopilot",children:(0,o.createComponentVNode)(2,a.Button,{selected:u,icon:u?"eye":"eye-o",onClick:function(){return c("toggle_autopilot")},children:u?"Enabled":"Disabled"})})||null],0)||null]}),!p&&(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Available Destinations",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:v.length&&v.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{icon:"rocket",onClick:function(){return c("traverse",{traverse:e.index})},children:e.travel_time})},e.name)}))||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:"bad",children:"No routes found."})})})||null]}),_&&(0,o.createComponentVNode)(2,a.Section,{title:"Transit ETA",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Distance from target",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",minValue:0,maxValue:100,value:k,children:[y,"s"]})})})})||null,Object.keys(L).length&&(0,o.createComponentVNode)(2,a.Section,{title:"Hatch Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(L).map((function(e){var t=L[e];return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:[t.open&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"Open"})||(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Closed"}),"\xa0-\xa0",t.bolted&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Bolted"})||(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"Unbolted"})]},e)}))})})||null,Object.keys(B).length&&(0,o.createComponentVNode)(2,a.Section,{title:"Sensors",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(B).map((function(e){var t=B[e];return-1===t.reading?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,color:"bad",children:"Unable to get sensor air reading."}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[t.pressure,"kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[t.temp,"\xb0C"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",children:[t.oxygen,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nitrogen",children:[t.nitrogen,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Carbon Dioxide",children:[t.carbon_dioxide,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Phoron",children:[t.phoron,"%"]}),t.other&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Other",children:[t.other,"%"]})||null]})},e)}))})})||null],0)}))};t.ShuttleControl=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.subtemplate);return(0,o.createComponentVNode)(2,c.Window,{width:470,height:"ShuttleControlConsoleWeb"===r?560:370,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:s[r]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=[["good","Alive"],["average","Unconscious"],["bad","DEAD"]],d=[["Resp","oxyLoss"],["Toxin","toxLoss"],["Brute","bruteLoss"],["Burn","fireLoss"]],u={average:[.25,.5],bad:[.5,Infinity]},s=["bad","average","average","good","average","average","bad"];t.Sleeper=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.hasOccupant?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,N));return(0,o.createComponentVNode)(2,c.Window,{width:550,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:r})})};var m=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),a=(r.occupant,r.dialysis),c=r.stomachpumping;return(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,C,{title:"Dialysis",active:a,actToDo:"togglefilter"}),(0,o.createComponentVNode)(2,C,{title:"Stomach Pump",active:c,actToDo:"togglepump"}),(0,o.createComponentVNode)(2,f)],4)},p=function(e,t){var n=(0,i.useBackend)(t),c=n.act,d=n.data,u=d.occupant,m=d.auto_eject_dead,p=d.stasis;return(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"label",display:"inline",children:"Auto-eject if dead:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"toggle-on":"toggle-off",selected:m,content:m?"On":"Off",onClick:function(){return c("auto_eject_dead_"+(m?"off":"on"))}}),(0,o.createComponentVNode)(2,a.Button,{icon:"user-slash",content:"Eject",onClick:function(){return c("ejectify")}}),(0,o.createComponentVNode)(2,a.Button,{content:p,onClick:function(){return c("changestasis")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:0,max:u.maxHealth,value:u.health/u.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]},children:(0,r.round)(u.health,0)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l[u.stat][0],children:l[u.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u.maxTemp,value:u.bodyTemperature/u.maxTemp,color:s[u.temperatureSuitability+3],children:[(0,r.round)(u.btCelsius,0),"\xb0C,",(0,r.round)(u.btFaren,0),"\xb0F"]})}),!!u.hasBlood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u.bloodMax,value:u.bloodLevel/u.bloodMax,ranges:{bad:[-Infinity,.6],average:[.6,.9],good:[.6,Infinity]},children:[u.bloodPercent,"%, ",u.bloodLevel,"cl"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pulse",verticalAlign:"middle",children:[u.pulse," BPM"]})],4)]})})},h=function(e,t){var n=(0,i.useBackend)(t).data.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Damage",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e[0],children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:n[e[1]]/100,ranges:u,children:(0,r.round)(n[e[1]],0)},t)},t)}))})})},C=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.isBeakerLoaded,d=c.beakerMaxSpace,u=c.beakerFreeSpace,s=e.active,m=e.actToDo,p=e.title,h=s&&u>0;return(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{disabled:!l||u<=0,selected:h,icon:h?"toggle-on":"toggle-off",content:h?"Active":"Inactive",onClick:function(){return r(m)}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return r("removebeaker")}})],4),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remaining Space",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:d,value:u/d,ranges:{good:[.5,Infinity],average:[.25,.5],bad:[-Infinity,.25]},children:[u,"u"]})})}):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No beaker loaded."})})},f=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.occupant,d=c.chemicals,u=c.maxchem,s=c.amounts;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemicals",flexGrow:"1",children:d.map((function(e,t){var n,i="";return e.overdosing?(i="bad",n=(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-circle"}),"\xa0 Overdosing!"]})):e.od_warning&&(i="average",n=(0,o.createComponentVNode)(2,a.Box,{color:"average",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle"}),"\xa0 Close to overdosing"]})),(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Section,{title:e.title,level:"3",mx:"0",lineHeight:"18px",buttons:n,children:(0,o.createComponentVNode)(2,a.Flex,{align:"flex-start",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:u,value:e.occ_amount/u,color:i,mr:"0.5rem",children:[e.pretty_amount,"/",u,"u"]}),s.map((function(t,n){return(0,o.createComponentVNode)(2,a.Button,{disabled:!e.injectable||e.occ_amount+t>u||2===l.stat,icon:"syringe",content:t,mb:"0",height:"19px",onClick:function(){return r("chemical",{chemid:e.id,amount:t})}},n)}))]})})},t)}))})},N=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data.isBeakerLoaded;return(0,o.createComponentVNode)(2,a.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No occupant detected.",c&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Remove Beaker",onClick:function(){return r("removebeaker")}})})||null]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.SmartVend=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.config,u=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Storage",children:[u.secure&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:-1===u.locked,info:-1!==u.locked,children:-1===u.locked?(0,o.createComponentVNode)(2,a.Box,{children:"Sec.re ACC_** //):securi_nt.diag=>##'or 1=1'%($..."}):(0,o.createComponentVNode)(2,a.Box,{children:"Secure Access: Please have your identification ready."})})||null,0===u.contents.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Unfortunately, this ",d.title," is empty."]})||(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Item"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:"Amount"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:[e.amount," in stock"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",disabled:e.amount<1,onClick:function(){return l("Release",{index:e.index,amount:1})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",disabled:e.amount<5,onClick:function(){return l("Release",{index:e.index,amount:5})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom",disabled:e.amount<1,onClick:function(){return l("Release",{index:e.index})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",disabled:e.amount<1,onClick:function(){return l("Release",{index:e.index,amount:e.amount})}})]})]},t)}))(u.contents)]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(1),i=n(2),a=n(20),c=n(3),l=n(5);t.Smes=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.capacityPercent,m=u.capacity,p=u.charge,h=u.inputAttempt,C=u.inputting,f=u.inputLevel,N=u.inputLevelMax,b=u.inputAvailable,V=u.outputAttempt,g=u.outputting,v=u.outputLevel,_=u.outputLevelMax,k=u.outputUsed,y=(s>=100?"good":C&&"average")||"bad",L=(g?"good":p>0&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:340,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:.01*s,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]},children:[(0,l.round)(p/6e4,1)," kWh / ",(0,l.round)(m/6e4)," kWh (",s,"%)"]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Input",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:h?"sync-alt":"times",selected:h,onClick:function(){return d("tryinput")},children:h?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.Box,{color:y,children:(s>=100?"Fully Charged":C&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,i.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:0===f,onClick:function(){return d("input",{target:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"backward",disabled:0===f,onClick:function(){return d("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,i.Slider,{value:f/1e3,fillValue:b/1e3,minValue:0,maxValue:N/1e3,step:5,stepPixelSize:4,format:function(e){return(0,a.formatPower)(1e3*e,1)},onDrag:function(e,t){return d("input",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"forward",disabled:f===N,onClick:function(){return d("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:f===N,onClick:function(){return d("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Available",children:(0,a.formatPower)(b)})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Output",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:V?"power-off":"times",selected:V,onClick:function(){return d("tryoutput")},children:V?"On":"Off"}),children:(0,o.createComponentVNode)(2,i.Box,{color:L,children:g?"Sending":p>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,i.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:0===v,onClick:function(){return d("output",{target:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"backward",disabled:0===v,onClick:function(){return d("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,i.Slider,{value:v/1e3,minValue:0,maxValue:_/1e3,step:5,stepPixelSize:4,format:function(e){return(0,a.formatPower)(1e3*e,1)},onDrag:function(e,t){return d("output",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"forward",disabled:v===_,onClick:function(){return d("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:v===_,onClick:function(){return d("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Outputting",children:(0,a.formatPower)(k)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SolarControl=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(5);t.SolarControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.generated,s=d.generated_ratio,m=d.sun_angle,p=d.array_angle,h=d.rotation_rate,C=d.max_rotation_rate,f=d.tracking_state,N=d.connected_panels,b=d.connected_tracker;return(0,o.createComponentVNode)(2,a.Window,{width:380,height:230,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Scan for new hardware",onClick:function(){return l("refresh")}}),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:"Solar tracker",color:b?"good":"bad",children:b?"OK":"N/A"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Solar panels",color:N>0?"good":"bad",children:N})]})}),(0,o.createComponentVNode)(2,i.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:s,children:u+" W"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Star orientation",children:[m,"\xb0"]})]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Off",selected:0===f,onClick:function(){return l("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"clock-o",content:"Timed",selected:1===f,onClick:function(){return l("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"sync",content:"Auto",selected:2===f,disabled:!b,onClick:function(){return l("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Azimuth",children:[(0===f||1===f)&&(0,o.createComponentVNode)(2,i.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:p,format:function(e){var t=Math.sign(e)>0?" (CW)":" (CCW)";return Math.abs((0,c.round)(e))+t},onDrag:function(e,t){return l("azimuth",{value:t})}}),1===f&&(0,o.createComponentVNode)(2,i.NumberInput,{width:"80px",unit:"deg/h",step:1,minValue:-C-.01,maxValue:C+.01,value:h,format:function(e){var t=Math.sign(e)>0?" (CW)":" (CCW)";return Math.abs((0,c.round)(e))+t},onDrag:function(e,t){return l("azimuth_rate",{value:t})}}),2===f&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"label",mt:"3px",children:[p+"\xb0"," (auto)"]})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(0),r=n(28),i=n(1),a=n(2),c=n(3);t.SpaceHeater=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=d.temp,s=d.minTemp,m=d.maxTemp,p=d.cell,h=d.power;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:250,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:[u," K (",u-r.T0C,"\xb0 C)"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Charge",children:[h,"% ",!p&&"(No Cell Inserted)"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledControls,{children:[(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Thermostat",children:(0,o.createComponentVNode)(2,a.Knob,{animated:!0,value:u-r.T0C,minValue:s-r.T0C,maxValue:m-r.T0C,unit:"C",onChange:function(e,t){return l("temp",{newtemp:t+r.T0C})}})}),(0,o.createComponentVNode)(2,a.LabeledControls.Item,{label:"Cell",children:p?(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",onClick:function(){return l("cellremove")}}):(0,o.createComponentVNode)(2,a.Button,{icon:"car-battery",content:"Insert Cell",onClick:function(){return l("cellinstall")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Stack=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);n(24);t.Stack=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.amount,u=l.recipes;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Amount: "+d,children:(0,o.createComponentVNode)(2,c,{recipes:u})})})})};var c=function u(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data,e.recipes);return Object.keys(a).sort().map((function(e){var t=a[e];return t.ref===undefined?(0,o.createComponentVNode)(2,i.Collapsible,{ml:1,mb:-.7,color:"label",title:e,children:(0,o.createComponentVNode)(2,i.Box,{ml:1,children:(0,o.createComponentVNode)(2,u,{recipes:t})})}):(0,o.createComponentVNode)(2,d,{title:e,recipe:t})}))},l=function(e,t){for(var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.recipe),l=e.maxMultiplier,d=Math.min(l,Math.floor(c.max_res_amount/c.res_amount)),u=[5,10,25],s=[],m=function(){var e=h[p];d>=e&&s.push((0,o.createComponentVNode)(2,i.Button,{content:e*c.res_amount+"x",onClick:function(){return a("make",{ref:c.ref,multiplier:e})}}))},p=0,h=u;p1?"s":""),h+=")",s>1&&(h=s+"x "+h);var C=function(e,t){return e.req_amount>t?0:Math.floor(t/e.req_amount)}(d,c);return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,disabled:!C,icon:"wrench",content:h,onClick:function(){return a("make",{ref:d.ref,multiplier:1})}})}),m>1&&C>1&&(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l,{recipe:d,maxMultiplier:C})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.StarcasterCh=void 0;var o=n(0),r=n(1),i=n(2),a=n(3),c=n(75);t.StarcasterCh=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.article),c=(0,o.createComponentVNode)(2,d);return i&&(c=(0,o.createComponentVNode)(2,l)),(0,o.createComponentVNode)(2,a.Window,{width:575,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:c})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data.article;if(!l)return(0,o.createComponentVNode)(2,i.Section,{children:"Error: Article not found."});var d=l.title,u=l.cover,s=l.content;return(0,o.createComponentVNode)(2,i.Section,{title:"Viewing: "+d,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"times",onClick:function(){return a("PRG_reset")},children:"Close"}),children:[!!u&&(0,o.createVNode)(1,"img",null,null,1,{src:(0,c.resolveAsset)(u)}),(0,o.createVNode)(1,"div",null,null,1,{dangerouslySetInnerHTML:{__html:s}})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.showing_archived,d=c.all_articles;return(0,o.createComponentVNode)(2,i.Section,{title:"Articles List",buttons:(0,o.createComponentVNode)(2,i.Button.Checkbox,{onClick:function(){return a("PRG_toggle_archived")},checked:l,children:"Show Archived"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d.length&&d.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"download",onClick:function(){return a("PRG_openarticle",{uid:e.uid})}})},e.uid)}))||(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Error",children:"Unable to connect to Starfire database."})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationBlueprintsContent=t.StationBlueprints=void 0;var o=n(0),r=(n(8),n(41),n(10),n(6),n(1)),i=n(2),a=n(3);t.StationBlueprints=function(e,t){return(0,o.createComponentVNode)(2,a.Window,{width:870,height:708,resizable:!0,children:(0,o.createComponentVNode)(2,c)})};var c=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=(n.config,c.mapRef);c.areas,c.turfs;return(0,o.createFragment)([(0,o.createVNode)(1,"div","CameraConsole__left",(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:"Honk!"}),2),(0,o.createVNode)(1,"div","CameraConsole__right",(0,o.createComponentVNode)(2,i.ByondUi,{className:"CameraConsole__map",params:{id:l,type:"map"}}),2)],4)};t.StationBlueprintsContent=c},function(e,t,n){"use strict";t.__esModule=!0,t.SuitCycler=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.SuitCycler=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),s=i.active,m=i.locked,p=i.uv_active,h=(0,o.createComponentVNode)(2,c);return p?h=(0,o.createComponentVNode)(2,l):m?h=(0,o.createComponentVNode)(2,d):s&&(h=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.Window,{width:320,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:h})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.safeties,d=c.occupied,u=c.suit,s=c.helmet,m=c.departments,p=c.species,h=c.uv_level,C=c.max_uv_level,f=c.can_repair,N=c.damage;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"lock",content:"Lock",onClick:function(){return a("lock")}}),children:[!(!d||!l)&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Biological entity detected in suit chamber. Please remove before continuing with operation.",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",color:"red",content:"Eject Entity",onClick:function(){return a("eject_guy")}})]}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,i.Button,{icon:s?"square":"square-o",content:s||"Empty",disabled:!s,onClick:function(){return a("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,i.Button,{icon:u?"square":"square-o",content:u||"Empty",disabled:!u,onClick:function(){return a("dispense",{item:"suit"})}})}),f&&N?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Suit Damage",children:[N,(0,o.createComponentVNode)(2,i.Button,{icon:"wrench",content:"Repair",onClick:function(){return a("repair_suit")}})]}):null]})]}),(0,o.createComponentVNode)(2,i.Section,{title:"Customization",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Paintjob",children:(0,o.createComponentVNode)(2,i.Dropdown,{noscroll:!0,width:"100%",options:m,selected:m[0],onSelected:function(e){return a("department",{department:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target Species",children:(0,o.createComponentVNode)(2,i.Dropdown,{width:"100%",maxHeight:"160px",options:p,selected:p[0],onSelected:function(e){return a("species",{species:e})}})})]}),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,content:"Customize",onClick:function(){return a("apply_paintjob")}})]}),(0,o.createComponentVNode)(2,i.Section,{title:"UV Decontamination",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Radiation Level",children:(0,o.createComponentVNode)(2,i.NumberInput,{width:"50px",value:h,minValue:1,maxValue:C,stepPixelSize:30,onChange:function(e,t){return a("radlevel",{radlevel:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Decontaminate",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"recycle",disabled:d&&l,textAlign:"center",onClick:function(){return a("uv")}})})]})})],4)},l=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.model_text,d=c.userHasAccess;return(0,o.createComponentVNode)(2,i.Section,{title:"Locked",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Box,{color:"bad",bold:!0,children:["The ",l," suit cycler is currently locked. Please contact your system administrator."]}),(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"unlock",content:"[Unlock]",disabled:!d,onClick:function(){return a("lock")}})})]})},u=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Contents are currently being painted. Please wait."})}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),s=i.panelopen,m=i.uv_active,p=i.broken,h=(0,o.createComponentVNode)(2,c);return s?h=(0,o.createComponentVNode)(2,l):m?h=(0,o.createComponentVNode)(2,d):p&&(h=(0,o.createComponentVNode)(2,u)),(0,o.createComponentVNode)(2,a.Window,{width:400,height:365,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:h})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.locked,d=c.open,u=c.safeties,s=c.occupied,m=c.suit,p=c.helmet,h=c.mask;return(0,o.createComponentVNode)(2,i.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!d&&(0,o.createComponentVNode)(2,i.Button,{icon:l?"unlock":"lock",content:l?"Unlock":"Lock",onClick:function(){return a("lock")}}),!l&&(0,o.createComponentVNode)(2,i.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return a("door")}})],0),children:[!(!s||!u)&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:["Biological entity detected in suit chamber. Please remove before continuing with operation.",(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"eject",color:"red",content:"Eject Entity",onClick:function(){return a("eject_guy")}})]}),l&&(0,o.createComponentVNode)(2,i.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,i.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,i.Icon,{name:"lock"})]})||d&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,i.Button,{icon:p?"square":"square-o",content:p||"Empty",disabled:!p,onClick:function(){return a("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"square":"square-o",content:m||"Empty",disabled:!m,onClick:function(){return a("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,i.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return a("dispense",{item:"mask"})}})})]})||(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:s&&u,textAlign:"center",onClick:function(){return a("uv")}})]})},l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=c.safeties,d=c.uv_super;return(0,o.createComponentVNode)(2,i.Section,{title:"Maintenance Panel",children:[(0,o.createComponentVNode)(2,i.Box,{color:"grey",children:"The panel is ridden with controls, button and meters, labeled in strange signs and symbols that you cannot understand. Probably the manufactoring world's language. Among other things, a few controls catch your eye."}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Box,{children:["A small dial with a biohazard symbol next to it. It's pointing towards a gauge that reads ",d?"15nm":"185nm",".",(0,o.createComponentVNode)(2,i.Flex,{mt:1,align:"center",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Knob,{size:2,inline:!0,value:d,minValue:0,maxValue:1,step:1,stepPixelSize:40,color:d?"red":"green",format:function(e){return e?"15nm":"185nm"},onChange:function(e,t){return a("toggleUV")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Icon,{name:"biohazard",size:3,color:"orange"})})]})]}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,i.Box,{children:["A thick old-style button, with 2 grimy LED lights next to it. The ",l?(0,o.createVNode)(1,"font",null,"GREEN",16,{color:"green"}):(0,o.createVNode)(1,"font",null,"RED",16,{color:"red"})," LED is on.",(0,o.createComponentVNode)(2,i.Flex,{mt:1,align:"center",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,i.Button,{fontSize:"2rem",color:"grey",inline:!0,icon:"caret-square-right",style:{border:"4px solid #777","border-style":"outset"},onClick:function(){return a("togglesafeties")}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",textAlign:"center",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",color:l?"black":"red",mr:2}),(0,o.createComponentVNode)(2,i.Icon,{name:"circle",color:l?"green":"black"})]})]})]})]})},d=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})},u=function(e,t){return(0,o.createComponentVNode)(2,i.NoticeBox,{danger:!0,children:"Unit chamber is too contaminated to continue usage. Please call for a qualified individual to perform maintenance."})}},function(e,t,n){"use strict";t.__esModule=!0,t.SupplyConsole=void 0;var o=n(0),r=n(8),i=(n(5),n(20)),a=n(1),c=n(2),l=n(45),d=n(3),u=n(41),s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.supply_points,l=e.args,d=l.name,u=l.cost,s=l.manifest,m=l.ref,p=l.random;return(0,o.createComponentVNode)(2,c.Section,{width:"400px",level:2,m:"-1rem",pb:"1rem",title:d,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"shopping-cart",content:"Buy - "+u+" points",disabled:u>i,onClick:function(){return r("request_crate",{ref:m})}}),children:(0,o.createComponentVNode)(2,c.Section,{title:"Contains"+(p?" any "+p+" of:":""),scrollable:!0,height:"200px",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})};t.SupplyConsole=function(e,t){var n=(0,a.useBackend)(t);n.act,n.data;return(0,l.modalRegisterBodyOverride)("view_crate",s),(0,o.createComponentVNode)(2,d.Window,{width:700,height:620,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:[(0,o.createComponentVNode)(2,l.ComplexModal,{maxWidth:"100%"}),(0,o.createComponentVNode)(2,c.Section,{title:"Supply Records",children:[(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,p)]})]})})};var m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.supply_points,u=l.shuttle,s=null,m=!1;return l.shuttle_auth&&(1===u.launch&&0===u.mode?s=(0,o.createComponentVNode)(2,c.Button,{icon:"rocket",content:"Send Away",onClick:function(){return r("send_shuttle",{mode:"send_away"})}}):2!==u.launch||3!==u.mode&&1!==u.mode?1===u.launch&&5===u.mode&&(s=(0,o.createComponentVNode)(2,c.Button,{icon:"rocket",content:"Send Shuttle",onClick:function(){return r("send_shuttle",{mode:"send_to_station"})}})):s=(0,o.createComponentVNode)(2,c.Button,{icon:"ban",content:"Cancel Launch",onClick:function(){return r("send_shuttle",{mode:"cancel_shuttle"})}}),u.force&&(m=!0)),(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Supply Points",children:(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Supply Shuttle",mt:2,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",buttons:(0,o.createFragment)([s,m?(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",content:"Force Launch",onClick:function(){return r("send_shuttle",{mode:"force_shuttle"})}}):null],0),children:u.location}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Engine",children:u.engine}),4===u.mode?(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"ETA",children:u.time>1?(0,i.formatTime)(u.time):"LATE"}):null]})})]})},p=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data.order_auth,(0,a.useLocalState)(t,"tabIndex",0)),i=r[0],l=r[1];return(0,o.createComponentVNode)(2,c.Section,{title:"Menu",children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"box",selected:0===i,onClick:function(){return l(0)},children:"Request"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"check-circle-o",selected:1===i,onClick:function(){return l(1)},children:"Accepted"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"circle-o",selected:2===i,onClick:function(){return l(2)},children:"Requests"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"book",selected:3===i,onClick:function(){return l(3)},children:"Order history"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"book",selected:4===i,onClick:function(){return l(4)},children:"Export history"})]}),0===i?(0,o.createComponentVNode)(2,h):null,1===i?(0,o.createComponentVNode)(2,C,{mode:"Approved"}):null,2===i?(0,o.createComponentVNode)(2,C,{mode:"Requested"}):null,3===i?(0,o.createComponentVNode)(2,C,{mode:"All"}):null,4===i?(0,o.createComponentVNode)(2,f):null]})},h=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.categories,s=l.supply_packs,m=l.contraband,p=l.supply_points,h=(0,a.useLocalState)(t,"activeCategory",null),C=h[0],f=h[1],N=(0,u.flow)([(0,r.filter)((function(e){return e.group===C})),(0,r.filter)((function(e){return!e.contraband||m})),(0,r.sortBy)((function(e){return e.name})),(0,r.sortBy)((function(e){return e.cost>p}))])(s);return(0,o.createComponentVNode)(2,c.Section,{level:2,children:(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"25%",children:(0,o.createComponentVNode)(2,c.Section,{title:"Categories",scrollable:!0,fill:!0,height:"290px",children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:e,selected:e===C,onClick:function(){return f(e)}},e)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Contents",scrollable:!0,fill:!0,height:"290px",children:N.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:(0,o.createComponentVNode)(2,c.Flex,{align:"center",justify:"flex-start",spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"70%",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"shopping-cart",ellipsis:!0,content:e.name,color:e.cost>p?"red":null,onClick:function(){return i("request_crate",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{content:"#",color:e.cost>p?"red":null,onClick:function(){return i("request_crate_multi",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{content:"C",color:e.cost>p?"red":null,onClick:function(){return i("view_crate",{crate:e.ref})}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:[e.cost," points"]})]})},e.name)}))})})]})})},C=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=e.mode,d=i.orders,u=i.order_auth,s=i.supply_points,m=d.filter((function(e){return e.status===l||"All"===l}));return m.length?(0,o.createComponentVNode)(2,c.Section,{level:2,children:["Requested"===l&&u?(0,o.createComponentVNode)(2,c.Button,{mt:-1,mb:1,fluid:!0,color:"red",icon:"trash",content:"Clear all requests",onClick:function(){return r("clear_all_requests")}}):null,m.map((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{title:"Order "+(t+1),buttons:"All"===l&&u?(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"trash",content:"Delete Record",onClick:function(){return r("delete_order",{ref:e.ref})}}):null,children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[e.entries.map((function(t){return t.entry?(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t.field,buttons:u?(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Edit",onClick:function(){r("edit_order_value",{ref:e.ref,edit:t.field,"default":t.entry})}}):null,children:t.entry}):null})),"All"===l?(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:e.status}):null]}),u&&"Requested"===l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"check",content:"Approve",disabled:e.cost>s,onClick:function(){return r("approve_order",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Deny",onClick:function(){return r("deny_order",{ref:e.ref})}})],4):null]},t)}))]}):(0,o.createComponentVNode)(2,c.Section,{level:2,children:"No orders found."})},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.receipts,d=i.order_auth;return l.length?(0,o.createComponentVNode)(2,c.Section,{level:2,children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[e.title.map((function(t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t.field,buttons:d?(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Edit",onClick:function(){return r("export_edit",{ref:e.ref,edit:t.field,"default":t.entry})}}):null,children:t.entry},t.field)})),e.error?(0,o.createComponentVNode)(2,c.LabeledList.Item,{labelColor:"red",label:"Error",children:e.error}):e.contents.map((function(t,n){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t.object,buttons:d?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Edit",onClick:function(){return r("export_edit_field",{ref:e.ref,index:n+1,edit:"meow","default":t.object})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",color:"red",content:"Delete",onClick:function(){return r("export_delete_field",{ref:e.ref,index:n+1})}})],4):null,children:[t.quantity,"x -> ",t.value," points"]},n)}))]}),d?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{mt:1,icon:"plus",content:"Add Item To Record",onClick:function(){return r("export_add_field",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Delete Record",onClick:function(){return r("export_delete",{ref:e.ref})}})],4):null]},t)}))}):(0,o.createComponentVNode)(2,c.Section,{level:2,children:"No receipts found."})}},function(e,t,n){"use strict";t.__esModule=!0,t.TEGenerator=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(20);t.TEGenerator=function(e,t){var n=(0,i.useBackend)(t).data,r=n.totalOutput,u=n.maxTotalOutput,s=n.thermalOutput,m=n.primary,p=n.secondary;return(0,o.createComponentVNode)(2,c.Window,{width:550,height:310,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:r,maxValue:u,children:(0,l.formatPower)(r)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Thermal Output",children:(0,l.formatPower)(s)})]})}),m&&p?(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,grow:1,children:(0,o.createComponentVNode)(2,d,{name:"Primary Circulator",values:m})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,grow:1,children:(0,o.createComponentVNode)(2,d,{name:"Secondary Circulator",values:p})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Warning! Both circulators must be connected in order to operate this machine."})]})})};var d=function(e,t){var n=e.name,i=e.values,c=i.dir,d=i.output,u=i.flowCapacity,s=i.inletPressure,m=i.inletTemperature,p=i.outletPressure,h=i.outletTemperature;return(0,o.createComponentVNode)(2,a.Section,{title:n+" ("+c+")",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Output",children:(0,l.formatPower)(d)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Flow Capacity",children:[(0,r.round)(u,2),"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inlet Pressure",children:(0,l.formatSiUnit)(1e3*s,0,"Pa")}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inlet Temperature",children:[(0,r.round)(m,2)," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outlet Pressure",children:(0,l.formatSiUnit)(1e3*p,0,"Pa")}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outlet Temperature",children:[(0,r.round)(h,2)," K"]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Tank=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.connected,u=l.showToggle,s=void 0===u||u,m=l.maskConnected,p=l.tankPressure,h=l.releasePressure,C=l.defaultReleasePressure,f=l.minReleasePressure,N=l.maxReleasePressure;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:!!s&&(0,o.createComponentVNode)(2,i.Button,{icon:d?"air-freshener":"lock-open",selected:d,disabled:!m,content:"Mask Release Valve",onClick:function(){return c("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mask Connected",children:m?"Yes":"No"})})}),(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:p/1013,ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]},children:l.tankPressure+" kPa"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"fast-backward",disabled:h===f,onClick:function(){return c("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,i.NumberInput,{animated:!0,value:parseFloat(h),width:"65px",unit:"kPa",minValue:f,maxValue:N,onChange:function(e,t){return c("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"fast-forward",disabled:h===N,onClick:function(){return c("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"",disabled:h===C,onClick:function(){return c("pressure",{pressure:"reset"})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.TankDispenser=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createComponentVNode)(2,a.Window,{width:275,height:103,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Phoron",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.plasma?"square":"square-o",content:"Dispense",disabled:!l.plasma,onClick:function(){return c("plasma")}}),children:l.plasma}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Oxygen",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:l.oxygen?"square":"square-o",content:"Dispense",disabled:!l.oxygen,onClick:function(){return c("oxygen")}}),children:l.oxygen})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelecommsLogBrowser=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3);t.TelecommsLogBrowser=function(e,t){var n=(0,i.useBackend)(t),r=n.act,u=n.data,s=u.universal_translate,m=u.network,p=u.temp,h=u.servers,C=u.selectedServer;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[p&&p.length?(0,o.createComponentVNode)(2,a.NoticeBox,{warning:!0,children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline-box",verticalAlign:"middle",children:p}),(0,o.createComponentVNode)(2,a.Button,{icon:"times-circle",float:"right",onClick:function(){return r("cleartemp")}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]}):null,(0,o.createComponentVNode)(2,a.Section,{title:"Network Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Network",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Refresh",onClick:function(){return r("scan")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"exclamation-triangle",content:"Flush Buffer",disabled:0===h.length,onClick:function(){return r("release")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{content:m,icon:"pen",onClick:function(){return r("network")}})})})}),C?(0,o.createComponentVNode)(2,d,{network:m,server:C,universal_translate:s}):(0,o.createComponentVNode)(2,l,{network:m,servers:h})]})})};var l=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=(n.data,e.network,e.servers);return c&&c.length?(0,o.createComponentVNode)(2,a.Section,{title:"Detected Telecommunication Servers",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:c.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name+" ("+e.id+")",children:(0,o.createComponentVNode)(2,a.Button,{content:"View",icon:"eye",onClick:function(){return r("view",{id:e.id})}})},e.id)}))})}):(0,o.createComponentVNode)(2,a.Section,{title:"Detected Telecommunications Servers",children:[(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No servers detected."}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Scan",icon:"search",onClick:function(){return r("scan")}})]})},d=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=(n.data,e.network,e.server),d=e.universal_translate;return(0,o.createComponentVNode)(2,a.Section,{title:"Server ("+l.id+")",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Return",icon:"undo",onClick:function(){return c("mainmenu")}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Recorded Traffic",children:l.totalTraffic>=1024?(0,r.round)(l.totalTraffic/1024)+" Terrabytes":l.totalTraffic+" Gigabytes"})}),(0,o.createComponentVNode)(2,a.Section,{title:"Stored Logs",mt:"4px",children:(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:l.logs&&l.logs.length?l.logs.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{m:"2px",basis:"49%",grow:e.id%2,children:(0,o.createComponentVNode)(2,a.Section,{title:d||e.parameters.uspeech||e.parameters.intelligible||"Execution Error"===e.input_type?e.input_type:"Audio File",buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{confirmContent:"Delete Log?",color:"bad",icon:"trash",confirmIcon:"trash",onClick:function(){return c("delete",{id:e.id})}}),children:"Execution Error"===e.input_type?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Data type",children:"Error"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:e.parameters.message}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Delete",children:(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return c("delete",{id:e.id})}})})]}):d||e.parameters.uspeech||e.parameters.intelligible?(0,o.createComponentVNode)(2,u,{log:e}):(0,o.createComponentVNode)(2,u,{error:!0})})},e.id)})):"No Logs Detected."})})]})},u=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data,e.log),c=e.error,l=r&&r.parameters||{none:"none"},d=l.timecode,u=l.name,s=l.race,m=l.job,p=l.message;return c?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Recieved",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Source",children:"Unidentifiable"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Class",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contents",children:"Unintelligible"})]}):(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Recieved",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Source",children:[u," (Job: ",m,")"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Class",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contents",className:"LabeledList__breakContents",children:p})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelecommsMachineBrowser=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.TelecommsMachineBrowser=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.network,s=d.temp,m=d.machinelist,p=d.selectedMachine;return(0,o.createComponentVNode)(2,a.Window,{width:575,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[s&&s.length?(0,o.createComponentVNode)(2,i.NoticeBox,{warning:!0,children:[(0,o.createComponentVNode)(2,i.Box,{display:"inline-box",verticalAlign:"middle",children:s}),(0,o.createComponentVNode)(2,i.Button,{icon:"times-circle",float:"right",onClick:function(){return l("cleartemp")}}),(0,o.createComponentVNode)(2,i.Box,{clear:"both"})]}):null,(0,o.createComponentVNode)(2,i.Section,{title:"Network Control",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Network",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"search",content:"Probe Network",onClick:function(){return l("scan")}}),(0,o.createComponentVNode)(2,i.Button,{color:"bad",icon:"exclamation-triangle",content:"Flush Buffer",disabled:0===m.length,onClick:function(){return l("release")}})],4),children:(0,o.createComponentVNode)(2,i.Button,{content:u,icon:"pen",onClick:function(){return l("network")}})})})}),m&&m.length?(0,o.createComponentVNode)(2,c,{title:p?p.name+" ("+p.id+")":"Detected Network Entities",list:p?p.links:m,showBack:p}):(0,o.createComponentVNode)(2,i.Section,{title:"No Devices Found",children:(0,o.createComponentVNode)(2,i.Button,{icon:"search",content:"Probe Network",onClick:function(){return l("scan")}})})]})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.list),l=e.title,d=e.showBack;return(0,o.createComponentVNode)(2,i.Section,{title:l,buttons:d&&(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Back to Main Menu",onClick:function(){return a("mainmenu")}}),children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:(0,o.createVNode)(1,"u",null,"Linked entities",16)}),(0,o.createComponentVNode)(2,i.LabeledList,{children:c.length?c.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.name+" ("+e.id+")",children:(0,o.createComponentVNode)(2,i.Button,{content:"View",icon:"eye",onClick:function(){return a("view",{id:e.id})}})},e.id)})):(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"bad",children:"No links detected."})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelecommsMultitoolMenu=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(62),c=n(3);t.TelecommsMultitoolMenu=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),u=(i.temp,i.on,i.id,i.network,i.autolinkers,i.shadowlink,i.options);i.linked,i.filter,i.multitool,i.multitool_buffer;return(0,o.createComponentVNode)(2,c.Window,{width:520,height:540,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.TemporaryNotice),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d,{options:u})]})})};var l=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=n.data,l=(c.temp,c.on),d=c.id,u=c.network,s=c.autolinkers,m=c.shadowlink,p=(c.options,c.linked),h=c.filter,C=c.multitool,f=c.multitool_buffer;return(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:l,content:l?"On":"Off",onClick:function(){return a("toggle")}}),children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Identification String",children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:d,onClick:function(){return a("id")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Network",children:(0,o.createComponentVNode)(2,i.Button,{icon:"pen",content:u,onClick:function(){return a("network")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Prefabrication",children:s?"TRUE":"FALSE"}),m?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shadow Link",children:"Active."}):null,C?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Multitool Buffer",children:[f?(0,o.createFragment)([f.name,(0,o.createTextVNode)(" ("),f.id,(0,o.createTextVNode)(")")],0):null,(0,o.createComponentVNode)(2,i.Button,{color:f?"green":null,content:f?"Link ("+f.id+")":"Add Machine",icon:f?"link":"plus",onClick:f?function(){return a("link")}:function(){return a("buffer")}}),f?(0,o.createComponentVNode)(2,i.Button,{color:"red",content:"Flush",icon:"trash",onClick:function(){return a("flush")}}):null]}):null]}),(0,o.createComponentVNode)(2,i.Section,{title:"Linked network Entities",mt:1,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:e.ref+" "+e.name+" ("+e.id+")",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"red",icon:"trash",onClick:function(){return a("unlink",{unlink:e.index})}})},e.ref)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Filtering Frequencies",mt:1,children:[h.map((function(e){return(0,o.createComponentVNode)(2,i.Button.Confirm,{content:e.name+" GHz",confirmContent:"Delete?",confirmColor:"red",confirmIcon:"trash",onClick:function(){return a("delete",{"delete":e.freq})}},e.index)})),h&&0!==h.length?null:(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No filters."})]})]})},d=function(e,t){var n=(0,r.useBackend)(t),a=n.act,c=(n.data,e.options),l=c.use_listening_level,d=c.use_broadcasting,u=c.use_receiving,s=c.listening_level,m=c.broadcasting,p=c.receiving,h=c.use_change_freq,C=c.change_freq,f=c.use_broadcast_range,N=c.use_receive_range,b=c.range,V=c.minRange,g=c.maxRange;return l||d||u||h||f||N?(0,o.createComponentVNode)(2,i.Section,{title:"Options",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[l?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Signal Locked to Station",children:(0,o.createComponentVNode)(2,i.Button,{icon:s?"lock-closed":"lock-open",content:s?"Yes":"No",onClick:function(){return a("change_listening")}})}):null,d?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Broadcasting",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:m,content:m?"Yes":"No",onClick:function(){return a("broadcast")}})}):null,u?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Receving",children:(0,o.createComponentVNode)(2,i.Button,{icon:"power-off",selected:p,content:p?"Yes":"No",onClick:function(){return a("receive")}})}):null,h?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Change Signal Frequency",children:(0,o.createComponentVNode)(2,i.Button,{icon:"wave-square",selected:!!C,content:C?"Yes ("+C+")":"No",onClick:function(){return a("change_freq")}})}):null,f||N?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:(f?"Broadcast":"Receive")+" Range",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:b,minValue:V,maxValue:g,unit:"gigameters",stepPixelSize:4,format:function(e){return e+1},onDrag:function(e,t){return a("range",{range:t})}})}):null]})}):(0,o.createComponentVNode)(2,i.Section,{title:"No Options Found"})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.Teleporter=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.locked_name,u=l.station_connected,s=l.hub_connected,m=l.calibrated,p=l.teleporter_on;return(0,o.createComponentVNode)(2,a.Window,{width:300,height:200,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"bullseye",onClick:function(){return c("select_target")},content:d})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Calibrated",children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:m,color:m?"good":"bad",onClick:function(){return c("test_fire")},content:m?"Accurate":"Test Fire"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Teleporter",children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{fluid:!0,checked:p,color:p?"good":"bad",onClick:function(){return c("toggle_on")},content:p?"Online":"OFFLINE"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Station",children:u?"Connected":"Not Connected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Hub",children:s?"Connected":"Not Connected"})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TelesciConsoleContent=t.TelesciConsole=void 0;var o=n(0),r=n(8),i=n(1),a=n(2),c=n(3);t.TelesciConsole=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data.noTelepad);return(0,o.createComponentVNode)(2,c.Window,{width:400,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:r&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,d)})})};var l=function(e,t){return(0,o.createComponentVNode)(2,a.Section,{title:"Error",color:"bad",children:["No telepad located.",(0,o.createVNode)(1,"br"),"Please add telepad data."]})},d=function(e,t){var n=(0,i.useBackend)(t),c=n.act,l=n.data,d=l.insertedGps,u=l.rotation,s=l.currentZ,m=l.cooldown,p=l.crystalCount,h=l.maxCrystals,C=(l.maxPossibleDistance,l.maxAllowedDistance),f=l.distance,N=l.tempMsg,b=l.sectorOptions,V=l.lastTeleData;return(0,o.createComponentVNode)(2,a.Section,{title:"Telepad Controls",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d,onClick:function(){return c("ejectGPS")},content:"Eject GPS"}),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:m&&(0,o.createComponentVNode)(2,a.Box,{children:["Telepad is recharging. Please wait ",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m})," seconds."]})||(0,o.createComponentVNode)(2,a.Box,{children:N})}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bearing",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,value:u,format:function(e){return e+"\xb0"},step:1,minValue:-900,maxValue:900,onDrag:function(e,t){return c("setrotation",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Distance",children:(0,o.createComponentVNode)(2,a.NumberInput,{fluid:!0,value:f,format:function(e){return e+"/"+C+" m"},minValue:0,maxValue:C,step:1,stepPixelSize:4,onDrag:function(e,t){return c("setdistance",{val:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sector",children:(0,r.sortBy)((function(e){return Number(e)}))(b).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"check-circle",content:e,selected:s===e,onClick:function(){return c("setz",{setz:e})}},e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"share",iconRotation:-90,onClick:function(){return c("send")},content:"Send"}),(0,o.createComponentVNode)(2,a.Button,{icon:"share",iconRotation:90,onClick:function(){return c("receive")},content:"Receive"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",iconRotation:90,onClick:function(){return c("recal")},content:"Recalibrate"})]})]}),V&&(0,o.createComponentVNode)(2,a.Section,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Telepad Location",children:[V.src_x,", ",V.src_y]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Distance",children:[V.distance,"m"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transit Time",children:[V.time," secs"]})]})})||(0,o.createComponentVNode)(2,a.Section,{mt:1,children:"No teleport data found."}),(0,o.createComponentVNode)(2,a.Section,{children:["Crystals: ",p," / ",h]})]})};t.TelesciConsoleContent=d},function(e,t,n){"use strict";t.__esModule=!0,t.TimeClock=void 0;var o=n(0),r=n(5),i=n(1),a=n(2),c=n(3),l=n(192);t.TimeClock=function(e,t){var n=(0,i.useBackend)(t),d=n.act,u=n.data,s=u.department_hours,m=u.user_name,p=u.card,h=u.assignment,C=u.job_datum,f=u.allow_change_job,N=u.job_choices;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"OOC",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"OOC Note: PTO acquired is account-wide and shared across all characters. Info listed below is not IC information."}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Time Off Balance for "+m,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(s).map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,color:s[e]>6?"good":s[e]>1?"average":"bad",children:[(0,r.toFixed)(s[e],1)," ",1===s[e]?"hour":"hours"]},e)}))})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Employee Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Employee ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"user",onClick:function(){return d("id")},children:p||"Insert ID"})}),!!C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rank",children:(0,o.createComponentVNode)(2,a.Box,{backgroundColor:C.selection_color,p:.8,children:(0,o.createComponentVNode)(2,a.Flex,{justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{ml:1,children:(0,o.createComponentVNode)(2,l.RankIcon,{color:"white",rank:C.title})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{fontSize:1.5,inline:!0,mr:1,children:C.title})})]})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Departments",children:C.departments}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pay Scale",children:C.economic_modifier}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"PTO Elegibility",children:C.timeoff_factor>0&&(0,o.createComponentVNode)(2,a.Box,{children:["Earns PTO - ",C.pto_department]})||C.timeoff_factor<0&&(0,o.createComponentVNode)(2,a.Box,{children:["Requires PTO - ",C.pto_department]})||(0,o.createComponentVNode)(2,a.Box,{children:"Neutral"})})],4)]})}),!(!f||!C||0===C.timeoff_factor||"Dismissed"===h)&&(0,o.createComponentVNode)(2,a.Section,{title:"Employment Actions",children:C.timeoff_factor>0&&(s[C.pto_department]>0&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",onClick:function(){return d("switch-to-offduty")},children:"Go Off-Duty"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Warning: You do not have enough accrued time off to go off-duty."}))||Object.keys(N).length&&Object.keys(N).map((function(e){return N[e].map((function(t){return(0,o.createComponentVNode)(2,a.Button,{icon:"suitcase",onClick:function(){return d("switch-to-onduty-rank",{"switch-to-onduty-rank":e,"switch-to-onduty-assignment":t})},children:t},t)}))}))||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Open Positions - See Head Of Personnel"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TransferValve=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.TransferValve=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.tank_one,u=l.tank_two,s=l.attached_device,m=l.valve;return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Valve Status",children:(0,o.createComponentVNode)(2,i.Button,{icon:m?"unlock":"lock",content:m?"Open":"Closed",disabled:!d||!u,onClick:function(){return c("toggle")}})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Assembly",buttons:(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"150px",icon:"cog",content:"Configure Assembly",disabled:!s,onClick:function(){return c("device")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:s?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:s,disabled:!s,onClick:function(){return c("remove_device")}})}):(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"Attach Assembly"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Attachment One",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:d?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:d,disabled:!d,onClick:function(){return c("tankone")}})}):(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"Attach Tank"})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Attachment Two",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:u?(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:u,disabled:!u,onClick:function(){return c("tanktwo")}})}):(0,o.createComponentVNode)(2,i.NoticeBox,{textAlign:"center",children:"Attach Tank"})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TurbineControl=void 0;var o=n(0),r=(n(5),n(20)),i=n(1),a=n(2),c=n(3);t.TurbineControl=function(e,t){var n=(0,i.useBackend)(t),l=n.act,d=n.data,u=(d.connected,d.compressor_broke),s=d.turbine_broke,m=d.broken,p=d.door_status,h=d.online,C=d.power,f=d.rpm,N=d.temp;return(0,o.createComponentVNode)(2,c.Window,{width:520,height:440,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Turbine Controller",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:m&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:["Setup is broken",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",onClick:function(){return l("reconnect")},content:"Reconnect"})]})||(0,o.createComponentVNode)(2,a.Box,{color:h?"good":"bad",children:!h||u||s?"Offline":"Online"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Compressor",children:u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Compressor is inoperable."})||s&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Turbine is inoperable."})||(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:h,content:"Compressor Power",onClick:function(){return l(h?"power-off":"power-on")}})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Vent Doors",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:p,onClick:function(){return l("doors")},content:p?"Closed":"Open"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Turbine Speed",children:[m?"--":(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:f})," RPM"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Temperature",children:[m?"--":(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:N})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Generated Power",children:m?"--":(0,o.createComponentVNode)(2,a.AnimatedNumber,{format:function(e){return(0,r.formatPower)(e)},value:Number(C)})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Turbolift=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.Turbolift=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.floors,u=l.doors_open,s=l.fire_mode;return(0,o.createComponentVNode)(2,a.Window,{width:480,height:260+25*s,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Floor Selection",className:s?"Section--elevator--fire":null,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:u?"door-open":"door-closed",content:u?s?"Close Doors (SAFETY OFF)":"Doors Open":"Doors Closed",selected:u&&!s,color:s?"red":null,onClick:function(){return c("toggle_doors")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"exclamation-triangle",color:"bad",content:"Emergency Stop",onClick:function(){return c("emergency_stop")}})],4),children:[!s||(0,o.createComponentVNode)(2,i.Section,{className:"Section--elevator--fire",textAlign:"center",title:"FIREFIGHTER MODE ENGAGED"}),(0,o.createComponentVNode)(2,i.Flex,{wrap:"wrap",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"100%",children:(0,o.createComponentVNode)(2,i.Flex,{align:"center",justify:"space-around",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"22%",textAlign:"right",mr:"3px",children:e.label||"Floor #"+e.id}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"8%",textAlign:"left",children:(0,o.createComponentVNode)(2,i.Button,{icon:"circle",color:e.current?"red":e.target?"green":e.queued?"yellow":null,onClick:function(){return c("move_to_floor",{ref:e.ref})}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"50%",grow:1,children:e.name})]})},e.id)}))})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GenericUplink=t.Uplink=void 0;var o=n(0),r=n(6),i=n(1),a=n(2),c=n(20),l=n(3);t.Uplink=function(e,t){var n=(0,i.useBackend)(t).data,r=(0,i.useLocalState)(t,"screen",0),c=r[0],m=r[1],p=n.telecrystals;return(0,o.createComponentVNode)(2,l.Window,{width:620,height:580,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d,{screen:c,setScreen:m}),0===c&&(0,o.createComponentVNode)(2,s,{currencyAmount:p,currencySymbol:"TC"})||1===c&&(0,o.createComponentVNode)(2,u)||(0,o.createComponentVNode)(2,a.Section,{color:"bad",children:"Error"})]})})};var d=function(e,t){var n=(0,i.useBackend)(t),r=(n.act,n.data),c=e.screen,l=e.setScreen,d=r.discount_name,u=r.discount_amount,s=r.offer_expiry;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Tabs,{style:{"border-bottom":"none","margin-bottom":"0"},children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===c,onClick:function(){return l(0)},children:"Request Items"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return l(1)},children:"Exploitable Information"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Item Discount",level:2,children:u<100&&(0,o.createComponentVNode)(2,a.Box,{children:[d," - ",u,"% off. Offer expires at: ",s]})||(0,o.createComponentVNode)(2,a.Box,{children:"No items currently discounted."})})]})},u=function(e,t){var n=(0,i.useBackend)(t),r=n.act,c=n.data,l=c.exploit,d=c.locked_records;return(0,o.createComponentVNode)(2,a.Section,{title:"Exploitable Information",buttons:l&&(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Back",onClick:function(){return r("view_exploits",{id:0})}}),children:l&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sex",children:l.sex}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:l.species}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Age",children:l.age}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rank",children:l.rank}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home System",children:l.home_system}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Citizenship",children:l.citizenship}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Faction",children:l.faction}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Religion",children:l.religion}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fingerprint",children:l.fingerprint}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Other Affiliations",children:l.antagfaction}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:"Acquired Information"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notes",children:l.nanoui_exploit_record.split("
    ").map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})]})})||d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"eye",fluid:!0,content:e.name,onClick:function(){return r("view_exploits",{id:e.id})}},e.id)}))})},s=function(e,t){var n,l,d=e.currencyAmount,u=void 0===d?0:d,s=e.currencySymbol,p=void 0===s?"\u20ae":s,h=(0,i.useBackend)(t),C=h.act,f=h.data,N=f.compactMode,b=f.lockable,V=f.categories,g=void 0===V?[]:V,v=(0,i.useLocalState)(t,"searchText",""),_=v[0],k=v[1],y=(0,i.useLocalState)(t,"category",null==(n=g[0])?void 0:n.name),L=y[0],B=y[1],w=(0,r.createSearch)(_,(function(e){return e.name+e.desc})),x=_.length>0&&g.flatMap((function(e){return e.items||[]})).filter(w).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===L})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u>0?"good":"bad",children:[(0,c.formatMoney)(u)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,a.Input,{autoFocus:!0,value:_,onInput:function(e,t){return k(t)},mx:1}),(0,o.createComponentVNode)(2,a.Button,{icon:N?"list":"info",content:N?"Compact":"Detailed",onClick:function(){return C("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock",onClick:function(){return C("lock")}})],0),children:(0,o.createComponentVNode)(2,a.Flex,{children:[0===_.length&&(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e.name===L,onClick:function(){return B(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:[0===x.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:0===_.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,m,{compactMode:_.length>0||N,currencyAmount:u,currencySymbol:p,items:x})]})]})})};t.GenericUplink=s;var m=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,i.useBackend)(t).act,s=(0,i.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],h=m&&m.cost||0,C=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-h0&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",mb:1,children:"Please wait. Harvesting in progress."}),(0,o.createComponentVNode)(2,c),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,icon:"stop",onClick:function(){return l("stopharvest")},children:"Stop Early"})]})||s<0&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",textAlign:"center",mb:1,children:"Please wait. Energy dump in progress."}),(0,o.createComponentVNode)(2,c),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,icon:"stop",onClick:function(){return l("stopharvest")},children:"Stop Early"})]})||Object.keys(m).length&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:m.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c)}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy Signature ID",children:m.artifact_id})]}),(0,o.createComponentVNode)(2,i.Button,{mt:1,fluid:!0,icon:"eject",onClick:function(){return l("ejectbattery")},children:"Eject Battery"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"bolt",onClick:function(){return l("drainbattery")},children:"Drain Battery"}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"star",onClick:function(){return l("harvest")},children:"Begin Harvest"})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No battery inserted."})})})})};var c=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.info.inserted_battery);return Object.keys(a).length?(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:a.stored_charge,maxValue:a.capacity}):(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No battery inserted."})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchDepthScanner=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.XenoarchDepthScanner=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.current,u=l.positive_locations;return(0,o.createComponentVNode)(2,a.Window,{width:300,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[Object.keys(d).length&&(0,o.createComponentVNode)(2,i.Section,{title:"Selected",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"bad",icon:"trash",confirmIcon:"trash",content:"Delete Entry",onClick:function(){return c("clear",{index:d.index})}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Time",children:d.time}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coords",children:d.coords}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomaly Depth",children:[d.depth," cm"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomaly Size",children:[d.clearance," cm"]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Dissonance Spread",children:d.dissonance_spread}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomaly Material",children:d.material})]})})||null,(0,o.createComponentVNode)(2,i.Section,{title:"Entries",buttons:(0,o.createComponentVNode)(2,i.Button.Confirm,{color:"red",icon:"trash",confirmIcon:"trash",content:"Delete All",onClick:function(){return c("clear")}}),children:u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"eye",onClick:function(){return c("select",{select:e.index})},children:[e.time,", ",e.coords]},e.index)}))||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No traces found."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchHandheldPowerUtilizer=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.XenoarchHandheldPowerUtilizer=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.inserted_battery,u=l.anomaly,s=l.charge,m=l.capacity,p=l.timeleft,h=l.activated,C=l.duration,f=l.interval;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:500,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:"Anomaly Power Utilizer",buttons:(0,o.createComponentVNode)(2,i.Button,{disabled:!d,icon:"eject",onClick:function(){return c("ejectbattery")},children:"Eject Battery"}),children:d&&(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Inserted Battery",children:d}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Anomalies Detected",children:u||"N/A"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:s,maxValue:m,children:[s," / ",m]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Time Left Activated",children:p}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"power-off",onClick:function(){return c("startup")},children:h?"Activated":"Deactivated"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Activation Duration",children:(0,o.createComponentVNode)(2,i.NumberInput,{unit:"s",fluid:!0,minValue:0,value:C,stepPixelSize:4,maxValue:30,onDrag:function(e,t){return c("changeduration",{duration:10*t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Activation Interval",children:(0,o.createComponentVNode)(2,i.NumberInput,{unit:"s",fluid:!0,minValue:0,value:f,stepPixelSize:10,maxValue:10,onDrag:function(e,t){return c("changeinterval",{interval:10*t})}})})]})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No battery inserted. Please insert a cell."})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchReplicator=void 0;var o=n(0),r=(n(5),n(6),n(1)),i=n(2),a=n(3);t.XenoarchReplicator=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.tgui_construction;return(0,o.createComponentVNode)(2,a.Window,{theme:"abductor",width:400,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.Button,{color:e.background,icon:e.icon,iconColor:e.foreground,fontSize:4,onClick:function(){return c("construct",{key:e.key})}},e.key)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchSpectrometer=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3),c=n(6);t.XenoarchSpectrometer=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.scanned_item,s=d.scanned_item_desc,m=d.last_scan_data,p=d.scan_progress,h=d.scanning,C=d.scanner_seal_integrity,f=d.scanner_rpm,N=d.scanner_temperature,b=d.coolant_usage_rate,V=d.coolant_usage_max,g=(d.unused_coolant_abs,d.unused_coolant_per),v=d.coolant_purity,_=d.optimal_wavelength,k=d.maser_wavelength,y=d.maser_wavelength_max,L=d.maser_efficiency,B=d.radiation,w=(d.t_left_radspike,d.rad_shield_on);return(0,o.createComponentVNode)(2,a.Window,{width:900,height:760,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Button,{icon:"signal",selected:h,onClick:function(){return l("scanItem")},children:h?"HALT SCAN":"Begin Scan"}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",disabled:!u,onClick:function(){return l("ejectItem")},children:"Eject Item"})],4),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Item",children:u||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No item inserted."})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Heuristic Analysis",children:s||"None found."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Scanner",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Scan Progress",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:p,minValue:0,maxValue:100,color:"good"})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Vacuum Seal Integrity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[66,100],average:[33,66],bad:[0,33]}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"MASER",buttons:(0,o.createComponentVNode)(2,i.NoticeBox,{info:!0,children:"Match wavelengths to progress the scan."}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"MASER Efficiency",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:L,minValue:0,maxValue:100,ranges:{good:[66,100],average:[33,66],bad:[0,33]}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Wavelength",children:(0,o.createComponentVNode)(2,i.Slider,{animated:!0,value:k,fillValue:_,minValue:1,maxValue:y,format:function(e){return e+" MHz"},step:10,onDrag:function(e,t){return l("maserWavelength",{wavelength:t})}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Environment / Internal",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Centrifuge Speed",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:f,minValue:0,maxValue:1e3,color:"good",children:[f," RPM"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Internal Temperature",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:N,maxValue:1273,ranges:{bad:[1e3,Infinity],average:[250,1e3],good:[0,250]},children:[N," K"]})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Radiation",buttons:(0,o.createComponentVNode)(2,i.Button,{selected:w,icon:"radiation",onClick:function(){return l("toggle_rad_shield")},children:w?"Disable Radiation Shielding":"Enable Radiation Shielding"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Ambient Radiation",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:B,maxValue:100,ranges:{bad:[65,Infinity],average:[15,65],good:[0,15]},children:[B," mSv"]})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Cooling",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coolant Remaining",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:10*g,maxValue:1e3,ranges:{good:[65,Infinity],average:[15,65],bad:[0,15]},children:[10*g," u"]})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coolant Flow Rate",children:(0,o.createComponentVNode)(2,i.Slider,{minValue:0,value:b,maxValue:V,stepPixelSize:50,format:function(e){return e+" u/s"},onDrag:function(e,t){return l("coolantRate",{coolant:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Coolant Purity",children:(0,o.createComponentVNode)(2,i.ProgressBar,{minValue:0,value:v,maxValue:100,ranges:{good:[66,Infinity],average:[33,66],bad:[0,33]}})})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Latest Results",children:(0,c.decodeHtmlEntities)(m).split("\n").map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:e},e)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.XenoarchSuspension=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.XenoarchSuspension=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.cell,u=l.cellCharge,s=l.cellMaxCharge,m=l.locked,p=l.suspension_field;return(0,o.createComponentVNode)(2,a.Window,{width:400,height:150,children:(0,o.createComponentVNode)(2,a.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{title:'Triple-phase S.F.G. MK III "Reliant"',buttons:(0,o.createComponentVNode)(2,i.Button,{icon:m?"lock":"lock-open",selected:!m,onClick:function(){return c("lock")},children:m?"Locked":"Unlocked"}),children:m&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"This interface is locked. Swipe an ID card to unlock it."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cell Charge",children:d&&(0,o.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.75*s,Infinity],average:[.5*s,.75*s],bad:[-Infinity,.5*s]},value:u,maxValue:s})||(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"No cell inserted."})})}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,mt:1,icon:"meteor",selected:p,onClick:function(){return c("toggle_field")},children:p?"Disengage Suspension Field":"Engage Suspension Field"})],4)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIAtmos=void 0;var o=n(0),r=n(8),i=n(6),a=n(1),c=n(2),l=n(3);t.pAIAtmos=function(e,t){var n=(0,a.useBackend)(t),d=(n.act,n.data.aircontents);return(0,o.createComponentVNode)(2,l.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,r.filter)((function(e){return"0"!==e.val||"Pressure"===e.entry||"Temperature"===e.entry}))(d).map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.entry,color:(t=e.val,n=e.bad_low,r=e.poor_low,a=e.poor_high,l=e.bad_high,ta?"average":t>l?"bad":"good"),children:[e.val,(0,i.decodeHtmlEntities)(e.units)]},e.entry);var t,n,r,a,l}))})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIDirectives=void 0;var o=n(0),r=n(1),i=n(2),a=n(3);t.pAIDirectives=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.master,u=l.dna,s=l.prime,m=l.supplemental;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Master",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Master",children:d&&(0,o.createComponentVNode)(2,i.Box,{children:[d," (",u,")",(0,o.createComponentVNode)(2,i.Button,{icon:"syringe",content:"Request Sample",onClick:function(){return c("getdna")}})]})||(0,o.createComponentVNode)(2,i.Box,{children:"None"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Directives",children:[(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Prime Directive",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Supplemental Directive(s)",children:m||"None"})]}),(0,o.createComponentVNode)(2,i.Box,{mt:1,italic:!0,children:'Recall, personality, that you are a complex piece of software with tremendous social skills. Unlike station AI models, you are focused entirely on sapient-software interfacing. You may parse the "spirit" of a directive and follow its intent, rather than tripping over pedantics and getting snared by technicalities. Above all, you should strive to be seen as the ideal, unwavering digital companion that you are.'}),(0,o.createComponentVNode)(2,i.Box,{mt:1,bold:!0,children:"Your prime directive comes before all others. Should a supplemental directive conflict with it, you are capable of simply discarding this inconsistency, ignoring the conflicting supplemental directive and continuing to fulfill your prime directive to the best of your ability."})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIDoorjack=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAIDoorjack=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.cable,u=l.machine,s=l.inprogress,m=l.progress_a,p=l.progress_b,h=l.aborted;return(0,o.createComponentVNode)(2,a.Window,{width:300,height:150,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Cable",children:u&&(0,o.createComponentVNode)(2,i.Box,{color:"good",children:"Connected"})||d&&(0,o.createComponentVNode)(2,i.Box,{color:"average",children:"Extended"})||(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"ethernet",content:"Retracted",onClick:function(){return c("cable")}})})}),!!u&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Hack",children:s&&(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.ProgressBar,{value:m,maxValue:100,ranges:{good:[67,Infinity],average:[33,67],bad:[-Infinity,33]},children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:m}),".",(0,o.createComponentVNode)(2,i.AnimatedNumber,{value:p}),"%"]}),(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"bad",onClick:function(){return c("cancel")}})]})||(0,o.createComponentVNode)(2,i.Button,{icon:"virus",content:"Start",onClick:function(){return c("jack")}})})||!!h&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{color:"bad",mt:1,children:"Hack aborted."})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIInterface=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAIInterface=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.bought,u=l.not_bought,s=l.available_ram,m=l.emotions,p=l.current_emotion;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Emotion",children:m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,selected:e.id===p,onClick:function(){return c("image",{image:e.id})}},e.id)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Software (Available RAM: "+s+")",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Installed",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,selected:e.on,onClick:function(){return c("software",{software:e.id})}},e.id)}))}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Downloadable",children:u.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name+" ("+e.ram+")",disabled:e.ram>s,onClick:function(){return c("purchase",{purchase:e.id})}},e.id)}))})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAIMedrecords=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAIMedrecords=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.records,u=l.general,s=l.medical,m=l.could_not_find;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,onClick:function(){return c("select",{select:e.ref})}},e.ref)}))}),(u||s)&&(0,o.createComponentVNode)(2,i.Section,{title:"Selected Record",children:[!!m&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Warning: Failed to find some records. The information below may not be complete."}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Record ID",children:u.id}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Entity Classification",children:u.brain_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Blood Type",children:s.b_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Disabilities",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.mi_dis}),(0,o.createComponentVNode)(2,i.Box,{children:s.mi_dis_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Disabilities",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.ma_dis}),(0,o.createComponentVNode)(2,i.Box,{children:s.ma_dis_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Allergies",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.alg}),(0,o.createComponentVNode)(2,i.Box,{children:s.alg_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Current Diseases",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.cdi}),(0,o.createComponentVNode)(2,i.Box,{children:s.cdi_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes",children:s.notes})]})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pAISecrecords=void 0;var o=n(0),r=(n(5),n(1)),i=n(2),a=n(3);t.pAISecrecords=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.records,u=l.general,s=l.security,m=l.could_not_find;return(0,o.createComponentVNode)(2,a.Window,{width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name,onClick:function(){return c("select",{select:e.ref})}},e.ref)}))}),(u||s)&&(0,o.createComponentVNode)(2,i.Section,{title:"Selected Record",children:[!!m&&(0,o.createComponentVNode)(2,i.Box,{color:"bad",children:"Warning: Failed to find some records. The information below may not be complete."}),(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Record ID",children:u.id}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Entity Classification",children:u.brain_type}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Sex",children:u.sex}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Species",children:u.species}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Age",children:u.age}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Rank",children:u.rank}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Fingerprint",children:u.fingerprint}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Physical Status",children:u.p_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Mental Status",children:u.m_stat}),(0,o.createComponentVNode)(2,i.LabeledList.Divider),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Criminal Status",children:(0,o.createComponentVNode)(2,i.Box,{children:s.criminal})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Minor Crimes",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.mi_crim}),(0,o.createComponentVNode)(2,i.Box,{children:s.mi_crim_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Major Crimes",children:[(0,o.createComponentVNode)(2,i.Box,{children:s.ma_crim}),(0,o.createComponentVNode)(2,i.Box,{children:s.ma_crim_d})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Important Notes",children:s.notes})]})]})]})})}}]); \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 155511a30f..92559bfce4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -58,6 +58,7 @@ #include "code\__defines\lighting_vr.dm" #include "code\__defines\machinery.dm" #include "code\__defines\map.dm" +#include "code\__defines\materials.dm" #include "code\__defines\math.dm" #include "code\__defines\math_physics.dm" #include "code\__defines\MC.dm" @@ -266,6 +267,7 @@ #include "code\controllers\subsystems\atoms.dm" #include "code\controllers\subsystems\character_setup.dm" #include "code\controllers\subsystems\chat.dm" +#include "code\controllers\subsystems\chemistry.dm" #include "code\controllers\subsystems\circuits.dm" #include "code\controllers\subsystems\dbcore.dm" #include "code\controllers\subsystems\dcs.dm" @@ -303,7 +305,6 @@ #include "code\controllers\subsystems\vote.dm" #include "code\controllers\subsystems\xenoarch.dm" #include "code\controllers\subsystems\processing\bellies_vr.dm" -#include "code\controllers\subsystems\processing\chemistry.dm" #include "code\controllers\subsystems\processing\fastprocess.dm" #include "code\controllers\subsystems\processing\obj.dm" #include "code\controllers\subsystems\processing\processing.dm" @@ -885,8 +886,6 @@ #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\transportpod.dm" #include "code\game\machinery\turret_control.dm" -#include "code\game\machinery\vending.dm" -#include "code\game\machinery\vending_machines.dm" #include "code\game\machinery\vending_machines_vr.dm" #include "code\game\machinery\vending_yw.dm" #include "code\game\machinery\vitals_monitor.dm" @@ -911,6 +910,7 @@ #include "code\game\machinery\computer\ai_core.dm" #include "code\game\machinery\computer\aifixer.dm" #include "code\game\machinery\computer\arcade.dm" +#include "code\game\machinery\computer\arcade_vr.dm" #include "code\game\machinery\computer\atmos_alert.dm" #include "code\game\machinery\computer\atmos_control.dm" #include "code\game\machinery\computer\camera.dm" @@ -1103,6 +1103,7 @@ #include "code\game\objects\effects\blockers_yw.dm" #include "code\game\objects\effects\bluespace_spawner_ch.dm" #include "code\game\objects\effects\bump_teleporter.dm" +#include "code\game\objects\effects\confetti_vr.dm" #include "code\game\objects\effects\effect_system.dm" #include "code\game\objects\effects\effect_system_ch.dm" #include "code\game\objects\effects\explosion_particles.dm" @@ -1260,19 +1261,16 @@ #include "code\game\objects\items\robot\robot_parts.dm" #include "code\game\objects\items\robot\robot_upgrades.dm" #include "code\game\objects\items\robot\robot_upgrades_vr.dm" -#include "code\game\objects\items\stacks\fifty_spawner.dm" #include "code\game\objects\items\stacks\marker_beacons.dm" #include "code\game\objects\items\stacks\matter_synth.dm" #include "code\game\objects\items\stacks\medical.dm" #include "code\game\objects\items\stacks\medical_vr.dm" #include "code\game\objects\items\stacks\nanopaste.dm" #include "code\game\objects\items\stacks\nanopaste_vr.dm" -#include "code\game\objects\items\stacks\rods.dm" #include "code\game\objects\items\stacks\sandbags.dm" #include "code\game\objects\items\stacks\stack.dm" #include "code\game\objects\items\stacks\telecrystal.dm" #include "code\game\objects\items\stacks\tickets.dm" -#include "code\game\objects\items\stacks\sheets\leather.dm" #include "code\game\objects\items\stacks\tiles\fifty_spawner_tiles.dm" #include "code\game\objects\items\stacks\tiles\fifty_spawner_tiles_yw.dm" #include "code\game\objects\items\stacks\tiles\tile_types.dm" @@ -2196,18 +2194,44 @@ #include "code\modules\economy\cash.dm" #include "code\modules\economy\cash_register.dm" #include "code\modules\economy\casinocash_ch.dm" +#include "code\modules\economy\coins.dm" #include "code\modules\economy\economy_misc.dm" #include "code\modules\economy\EFTPOS.dm" #include "code\modules\economy\Events.dm" #include "code\modules\economy\Events_Mundane.dm" #include "code\modules\economy\lorenews.dm" +#include "code\modules\economy\mint.dm" +#include "code\modules\economy\money_bag.dm" #include "code\modules\economy\price_list.dm" #include "code\modules\economy\price_list_ch.dm" #include "code\modules\economy\price_list_yw.dm" #include "code\modules\economy\retail_scanner.dm" #include "code\modules\economy\TradeDestinations.dm" +#include "code\modules\economy\vending.dm" +#include "code\modules\economy\vending_machines.dm" +#include "code\modules\emotes\definitions\audible_furry_vr.dm" +#include "code\modules\emotes\definitions\helpers_vr.dm" +#include "code\modules\emotes\definitions\visible_vr.dm" #include "code\modules\entopics_vr\alternate_appearance.dm" #include "code\modules\entopics_vr\entopics.dm" +#include "code\modules\emotes\emote_define.dm" +#include "code\modules\emotes\emote_mob.dm" +#include "code\modules\emotes\definitions\_mob.dm" +#include "code\modules\emotes\definitions\_species.dm" +#include "code\modules\emotes\definitions\audible.dm" +#include "code\modules\emotes\definitions\audible_cough.dm" +#include "code\modules\emotes\definitions\audible_scream.dm" +#include "code\modules\emotes\definitions\audible_slap.dm" +#include "code\modules\emotes\definitions\audible_snap.dm" +#include "code\modules\emotes\definitions\audible_sneeze.dm" +#include "code\modules\emotes\definitions\audible_whistle.dm" +#include "code\modules\emotes\definitions\exertion.dm" +#include "code\modules\emotes\definitions\human.dm" +#include "code\modules\emotes\definitions\slimes.dm" +#include "code\modules\emotes\definitions\synthetics.dm" +#include "code\modules\emotes\definitions\visible.dm" +#include "code\modules\emotes\definitions\visible_animated.dm" +#include "code\modules\emotes\definitions\visible_vomit.dm" #include "code\modules\error_handler\_defines.dm" #include "code\modules\error_handler\error_handler.dm" #include "code\modules\error_handler\error_viewer.dm" @@ -2312,6 +2336,7 @@ #include "code\modules\food\drinkingglass\shaker_vr.dm" #include "code\modules\food\food\cans.dm" #include "code\modules\food\food\cans_ch.dm" +#include "code\modules\food\food\cans_vr.dm" #include "code\modules\food\food\condiment.dm" #include "code\modules\food\food\drinks.dm" #include "code\modules\food\food\lunch.dm" @@ -2565,16 +2590,61 @@ #include "code\modules\maps\tg\map_template.dm" #include "code\modules\maps\tg\map_template_vr.dm" #include "code\modules\maps\tg\reader.dm" +#include "code\modules\materials\fifty_spawner.dm" #include "code\modules\materials\fifty_spawner_mats.dm" -#include "code\modules\materials\material_recipes.dm" -#include "code\modules\materials\material_recipes_ch.dm" -#include "code\modules\materials\material_recipes_vr.dm" -#include "code\modules\materials\material_sheets.dm" -#include "code\modules\materials\material_sheets_vr.dm" +#include "code\modules\materials\fifty_spawner_mats_vr.dm" #include "code\modules\materials\material_synth.dm" -#include "code\modules\materials\materials.dm" -#include "code\modules\materials\materials_ch.dm" -#include "code\modules\materials\materials_vr.dm" +#include "code\modules\materials\materials\_materials.dm" +#include "code\modules\materials\materials\_materials_vr.dm" +#include "code\modules\materials\materials\alien_alloy.dm" +#include "code\modules\materials\materials\cult.dm" +#include "code\modules\materials\materials\gems.dm" +#include "code\modules\materials\materials\glass.dm" +#include "code\modules\materials\materials\glass_vr.dm" +#include "code\modules\materials\materials\holographic.dm" +#include "code\modules\materials\materials\other_vr.dm" +#include "code\modules\materials\materials\plastic.dm" +#include "code\modules\materials\materials\plastic_ch.dm" +#include "code\modules\materials\materials\snow.dm" +#include "code\modules\materials\materials\stone.dm" +#include "code\modules\materials\materials\supermatter.dm" +#include "code\modules\materials\materials\metals\hull.dm" +#include "code\modules\materials\materials\metals\hull_vr.dm" +#include "code\modules\materials\materials\metals\metals.dm" +#include "code\modules\materials\materials\metals\metals_vr.dm" +#include "code\modules\materials\materials\metals\plasteel.dm" +#include "code\modules\materials\materials\metals\plasteel_vr.dm" +#include "code\modules\materials\materials\metals\plasteel_ch.dm" +#include "code\modules\materials\materials\metals\steel.dm" +#include "code\modules\materials\materials\metals\steel_vr.dm" +#include "code\modules\materials\materials\organic\animal_products.dm" +#include "code\modules\materials\materials\organic\cloth.dm" +#include "code\modules\materials\materials\organic\cloth_ch.dm" +#include "code\modules\materials\materials\organic\leather.dm" +#include "code\modules\materials\materials\organic\resin.dm" +#include "code\modules\materials\materials\organic\wood.dm" +#include "code\modules\materials\materials\organic\wood_ch.dm" +#include "code\modules\materials\sheets\_sheets.dm" +#include "code\modules\materials\sheets\gems.dm" +#include "code\modules\materials\sheets\glass.dm" +#include "code\modules\materials\sheets\glass_vr.dm" +#include "code\modules\materials\sheets\plastic.dm" +#include "code\modules\materials\sheets\snow.dm" +#include "code\modules\materials\sheets\stone.dm" +#include "code\modules\materials\sheets\supermatter.dm" +#include "code\modules\materials\sheets\metals\hull.dm" +#include "code\modules\materials\sheets\metals\hull_vr.dm" +#include "code\modules\materials\sheets\metals\metal.dm" +#include "code\modules\materials\sheets\metals\metal_vr.dm" +#include "code\modules\materials\sheets\metals\rods.dm" +#include "code\modules\materials\sheets\organic\animal_products.dm" +#include "code\modules\materials\sheets\organic\resin.dm" +#include "code\modules\materials\sheets\organic\textiles.dm" +#include "code\modules\materials\sheets\organic\wood.dm" +#include "code\modules\materials\sheets\organic\tanning\hide.dm" +#include "code\modules\materials\sheets\organic\tanning\hide_hairless.dm" +#include "code\modules\materials\sheets\organic\tanning\leather_wet.dm" +#include "code\modules\materials\sheets\organic\tanning\tanning_rack.dm" #include "code\modules\media\media_machinery.dm" #include "code\modules\media\media_player_html5.dm" #include "code\modules\media\media_player_vlc.dm" @@ -2589,20 +2659,13 @@ #include "code\modules\mining\abandonedcrates_vr.dm" #include "code\modules\mining\alloys.dm" #include "code\modules\mining\alloys_vr.dm" -#include "code\modules\mining\coins.dm" #include "code\modules\mining\fulton.dm" -#include "code\modules\mining\machine_input_output_plates.dm" -#include "code\modules\mining\machine_processing.dm" -#include "code\modules\mining\machine_stacking.dm" -#include "code\modules\mining\machine_unloading.dm" #include "code\modules\mining\mine_items.dm" #include "code\modules\mining\mine_items_vr.dm" #include "code\modules\mining\mine_outcrops.dm" #include "code\modules\mining\mine_turfs.dm" #include "code\modules\mining\mine_turfs_vr.dm" #include "code\modules\mining\mineral_effect.dm" -#include "code\modules\mining\mint.dm" -#include "code\modules\mining\money_bag.dm" #include "code\modules\mining\ore.dm" #include "code\modules\mining\ore_box.dm" #include "code\modules\mining\ore_datum.dm" @@ -2611,6 +2674,10 @@ #include "code\modules\mining\shelters_vr.dm" #include "code\modules\mining\drilling\drill.dm" #include "code\modules\mining\drilling\scanner.dm" +#include "code\modules\mining\machinery\machine_input_output_plates.dm" +#include "code\modules\mining\machinery\machine_processing.dm" +#include "code\modules\mining\machinery\machine_stacking.dm" +#include "code\modules\mining\machinery\machine_unloading.dm" #include "code\modules\mining\ore_redemption_machine\construction.dm" #include "code\modules\mining\ore_redemption_machine\equipment_vendor.dm" #include "code\modules\mining\ore_redemption_machine\mine_point_items.dm" @@ -3504,7 +3571,6 @@ #include "code\modules\power\fusion\fusion_circuits.dm" #include "code\modules\power\fusion\fusion_particle_catcher.dm" #include "code\modules\power\fusion\fusion_reactions.dm" -#include "code\modules\power\fusion\fusion_reagents.dm" #include "code\modules\power\fusion\magpower.dm" #include "code\modules\power\fusion\core\_core.dm" #include "code\modules\power\fusion\core\core_control.dm" @@ -3616,6 +3682,7 @@ #include "code\modules\projectiles\guns\projectile\automatic_vr.dm" #include "code\modules\projectiles\guns\projectile\automatic_yw.dm" #include "code\modules\projectiles\guns\projectile\boltaction.dm" +#include "code\modules\projectiles\guns\projectile\boltaction_vr.dm" #include "code\modules\projectiles\guns\projectile\caseless.dm" #include "code\modules\projectiles\guns\projectile\contender.dm" #include "code\modules\projectiles\guns\projectile\dartgun.dm" @@ -3678,53 +3745,45 @@ #include "code\modules\random_map\noise\ore.dm" #include "code\modules\random_map\noise\tundra.dm" #include "code\modules\reagents\Chemistry-Colours.dm" -#include "code\modules\reagents\Chemistry-Holder.dm" -#include "code\modules\reagents\Chemistry-Holder_ch.dm" #include "code\modules\reagents\Chemistry-Logging.dm" -#include "code\modules\reagents\Chemistry-Machinery.dm" -#include "code\modules\reagents\Chemistry-Machinery_vr.dm" #include "code\modules\reagents\Chemistry-Metabolism.dm" -#include "code\modules\reagents\Chemistry-Readme.dm" -#include "code\modules\reagents\Chemistry-Reagents-Helpers.dm" -#include "code\modules\reagents\Chemistry-Reagents.dm" -#include "code\modules\reagents\Chemistry-Reagents_vr.dm" -#include "code\modules\reagents\Chemistry-Recipes.dm" -#include "code\modules\reagents\Chemistry-Recipes_ch.dm" -#include "code\modules\reagents\Chemistry-Recipes_vr.dm" -#include "code\modules\reagents\Chemistry-Recipes_yw.dm" -#include "code\modules\reagents\kelshark.dm" -#include "code\modules\reagents\reagent_containers.dm" -#include "code\modules\reagents\reagent_dispenser.dm" -#include "code\modules\reagents\reagent_dispenser_ch.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Core.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Dispenser.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Food-Drinks.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Food-Drinks_ch.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Food-Drinks_vr.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Food-Drinks_yw.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Medicine.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Medicine_vr.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Modifiers.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Other.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Toxins.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Vore_vr.dm" -#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents_ch.dm" -#include "code\modules\reagents\dispenser\_defines.dm" -#include "code\modules\reagents\dispenser\cartridge.dm" -#include "code\modules\reagents\dispenser\cartridge_presets.dm" -#include "code\modules\reagents\dispenser\cartridge_presets_ch.dm" -#include "code\modules\reagents\dispenser\cartridge_presets_vr.dm" -#include "code\modules\reagents\dispenser\cartridge_spawn.dm" -#include "code\modules\reagents\dispenser\dispenser2.dm" -#include "code\modules\reagents\dispenser\dispenser2_energy.dm" -#include "code\modules\reagents\dispenser\dispenser_presets.dm" -#include "code\modules\reagents\dispenser\dispenser_presets_vr.dm" -#include "code\modules\reagents\dispenser\supply.dm" -#include "code\modules\reagents\distilling\Distilling-Recipes.dm" -#include "code\modules\reagents\distilling\distilling.dm" +#include "code\modules\reagents\holder\distilling.dm" +#include "code\modules\reagents\holder\holder.dm" +#include "code\modules\reagents\holder\holder_ch.dm" #include "code\modules\reagents\hoses\connector.dm" #include "code\modules\reagents\hoses\hose.dm" #include "code\modules\reagents\hoses\hose_connector.dm" +#include "code\modules\reagents\machinery\chem_master.dm" +#include "code\modules\reagents\machinery\chem_master_vr.dm" +#include "code\modules\reagents\machinery\chemalyzer.dm" +#include "code\modules\reagents\machinery\distillery.dm" +#include "code\modules\reagents\machinery\grinder.dm" +#include "code\modules\reagents\machinery\dispenser\_defines.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge_presets.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge_presets_ch.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge_presets_vr.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge_spawn.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser2.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser2_energy.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser_presets.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser_presets_vr.dm" +#include "code\modules\reagents\machinery\dispenser\reagent_tank.dm" +#include "code\modules\reagents\machinery\dispenser\reagent_tank_ch.dm" +#include "code\modules\reagents\machinery\dispenser\supply.dm" +#include "code\modules\reagents\reactions\_reactions.dm" +#include "code\modules\reagents\reactions\distilling\distilling.dm" +#include "code\modules\reagents\reactions\fusion\fusion.dm" +#include "code\modules\reagents\reactions\instant\drinks.dm" +#include "code\modules\reagents\reactions\instant\drinks_ch.dm" +#include "code\modules\reagents\reactions\instant\drinks_vr.dm" +#include "code\modules\reagents\reactions\instant\food.dm" +#include "code\modules\reagents\reactions\instant\food_ch.dm" +#include "code\modules\reagents\reactions\instant\food_vr.dm" +#include "code\modules\reagents\reactions\instant\instant.dm" +#include "code\modules\reagents\reactions\instant\instant_ch.dm" +#include "code\modules\reagents\reactions\instant\instant_vr.dm" +#include "code\modules\reagents\reagent_containers\_reagent_containers.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" #include "code\modules\reagents\reagent_containers\blood_pack_vr.dm" #include "code\modules\reagents\reagent_containers\borghypo.dm" @@ -3742,6 +3801,23 @@ #include "code\modules\reagents\reagent_containers\syringes_vr.dm" #include "code\modules\reagents\reagent_containers\unidentified_hypospray.dm" #include "code\modules\reagents\reagent_containers\food\drinks\bluespacecoffee.dm" +#include "code\modules\reagents\reagents\_helpers.dm" +#include "code\modules\reagents\reagents\_reagents.dm" +#include "code\modules\reagents\reagents\core.dm" +#include "code\modules\reagents\reagents\dispenser.dm" +#include "code\modules\reagents\reagents\food_drinks.dm" +#include "code\modules\reagents\reagents\food_drinks_ch.dm" +#include "code\modules\reagents\reagents\food_drinks_vr.dm" +#include "code\modules\reagents\reagents\medicine.dm" +#include "code\modules\reagents\reagents\medicine_ch.dm" +#include "code\modules\reagents\reagents\medicine_vr.dm" +#include "code\modules\reagents\reagents\modifiers.dm" +#include "code\modules\reagents\reagents\other.dm" +#include "code\modules\reagents\reagents\other_ch.dm" +#include "code\modules\reagents\reagents\other_vr.dm" +#include "code\modules\reagents\reagents\toxins.dm" +#include "code\modules\reagents\reagents\vore_ch.dm" +#include "code\modules\reagents\reagents\vore_vr.dm" #include "code\modules\recycling\conveyor2.dm" #include "code\modules\recycling\disposal-construction.dm" #include "code\modules\recycling\disposal.dm"