diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index eff6c453acd..88eec1aece6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,7 +10,7 @@ on:
jobs:
run_linters:
name: Run Linters
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Setup Cache
@@ -37,7 +37,7 @@ jobs:
compile_all_maps:
name: Compile All Maps
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Setup Cache
@@ -54,7 +54,7 @@ jobs:
unit_tests_and_sql:
name: Unit Tests + SQL Validation
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-20.04
services:
mariadb:
image: mariadb:latest
diff --git a/.github/workflows/render_nanomaps.yml b/.github/workflows/render_nanomaps.yml
index bb90815b7f0..403bc8dc77d 100644
--- a/.github/workflows/render_nanomaps.yml
+++ b/.github/workflows/render_nanomaps.yml
@@ -35,11 +35,6 @@ jobs:
git commit -m "NanoMap Auto-Update (`date`)" -a || true
git push -f -u origin nanomap-render
- - name: 'Push Maps'
- uses: ad-m/github-push-action@master
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
-
- name: Create Pull Request
uses: repo-sync/pull-request@v2
with:
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000000..5547f1b61f6
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,8 @@
+{
+ "workbench.editorAssociations": [
+ {
+ "filenamePattern": "*.dmi",
+ "viewType": "imagePreview.previewEditor"
+ }
+ ]
+}
diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql
index 8917d28d6bb..a1ece757484 100644
--- a/SQL/paradise_schema.sql
+++ b/SQL/paradise_schema.sql
@@ -99,7 +99,7 @@ CREATE TABLE `customuseritems` (
`cuiJobMask` text NOT NULL,
PRIMARY KEY (`id`),
KEY `cuiCKey` (`cuiCKey`)
-) ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -126,7 +126,7 @@ CREATE TABLE `death` (
`fireloss` int(11) NOT NULL,
`oxyloss` int(11) NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=166546 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=166546 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -241,7 +241,7 @@ CREATE TABLE `feedback` (
`version` tinyint(3) UNSIGNED NOT NULL,
`json` LONGTEXT NOT NULL COLLATE 'utf8mb4_general_ci',
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=257638 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=257638 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -321,7 +321,7 @@ CREATE TABLE `karma` (
`spenderip` text NOT NULL,
`time` datetime NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=73614 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=73614 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -338,7 +338,7 @@ CREATE TABLE `karmatotals` (
`karmaspent` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `byondkey` (`byondkey`)
-) ENGINE=MyISAM AUTO_INCREMENT=25715 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=25715 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -359,7 +359,7 @@ CREATE TABLE `library` (
PRIMARY KEY (`id`),
KEY `ckey` (`ckey`),
KEY `flagged` (`flagged`)
-) ENGINE=MyISAM AUTO_INCREMENT=4537 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=4537 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -375,7 +375,7 @@ CREATE TABLE `legacy_population` (
`admincount` int(11) DEFAULT NULL,
`time` datetime NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=2550 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=2550 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -392,7 +392,7 @@ CREATE TABLE `whitelist` (
`species` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ckey` (`ckey`)
-) ENGINE=MyISAM AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql
index b3c8f1f7643..9b2fdb845e0 100644
--- a/SQL/paradise_schema_prefixed.sql
+++ b/SQL/paradise_schema_prefixed.sql
@@ -98,7 +98,7 @@ CREATE TABLE `SS13_customuseritems` (
`cuiPropAdjust` text,
`cuiJobMask` text NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8mb4;
ALTER TABLE `SS13_customuseritems` ADD INDEX(`cuiCKey`);
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -126,7 +126,7 @@ CREATE TABLE `SS13_death` (
`fireloss` int(11) NOT NULL,
`oxyloss` int(11) NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=166546 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=166546 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -240,7 +240,7 @@ CREATE TABLE `SS13_feedback` (
`version` tinyint(3) UNSIGNED NOT NULL,
`json` LONGTEXT NOT NULL COLLATE 'utf8mb4_general_ci',
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=257638 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=257638 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -320,7 +320,7 @@ CREATE TABLE `SS13_karma` (
`spenderip` text NOT NULL,
`time` datetime NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=73614 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=73614 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -337,7 +337,7 @@ CREATE TABLE `SS13_karmatotals` (
`karmaspent` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `byondkey` (`byondkey`)
-) ENGINE=MyISAM AUTO_INCREMENT=25715 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=25715 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -358,7 +358,7 @@ CREATE TABLE `SS13_library` (
PRIMARY KEY (`id`),
KEY `ckey` (`ckey`),
KEY `flagged` (`flagged`)
-) ENGINE=MyISAM AUTO_INCREMENT=4537 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=4537 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -374,7 +374,7 @@ CREATE TABLE `SS13_legacy_population` (
`admincount` int(11) DEFAULT NULL,
`time` datetime NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=MyISAM AUTO_INCREMENT=2550 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=2550 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -391,7 +391,7 @@ CREATE TABLE `SS13_whitelist` (
`species` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ckey` (`ckey`)
-) ENGINE=MyISAM AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
diff --git a/SQL/updates/22-23.sql b/SQL/updates/22-23.sql
new file mode 100644
index 00000000000..975e8acd413
--- /dev/null
+++ b/SQL/updates/22-23.sql
@@ -0,0 +1,11 @@
+# Updating SQL from version 22 to 23 -AffectedArc07
+# Converts existing MyISAM tables to InnoDB
+
+ALTER TABLE `customuseritems` ENGINE=InnoDB;
+ALTER TABLE `death` ENGINE=InnoDB;
+ALTER TABLE `feedback` ENGINE=InnoDB;
+ALTER TABLE `karma` ENGINE=InnoDB;
+ALTER TABLE `karmatotals` ENGINE=InnoDB;
+ALTER TABLE `legacy_population` ENGINE=InnoDB;
+ALTER TABLE `library` ENGINE=InnoDB;
+ALTER TABLE `whitelist` ENGINE=InnoDB;
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index e8162ac7e5f..0eed170f63f 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -4095,7 +4095,7 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/machinery/suit_storage_unit/engine/secure,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"ajT" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/yellow{
@@ -4603,7 +4603,7 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/machinery/suit_storage_unit/engine/secure,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"akQ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -5164,15 +5164,13 @@
/turf/simulated/floor/plating,
/area/security/main)
"alQ" = (
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Singularity";
- name = "Containment Blast Doors";
- opacity = 0
+/obj/structure/sign/securearea{
+ pixel_y = 32
},
-/turf/simulated/floor/plasteel,
+/obj/machinery/light_switch{
+ pixel_x = -9
+ },
+/turf/simulated/wall/r_wall,
/area/engine/engineering)
"alR" = (
/obj/machinery/door/firedoor,
@@ -7246,11 +7244,6 @@
icon_state = "redcorner"
},
/area/security/brig)
-"aqe" = (
-/obj/effect/decal/warning_stripes/west,
-/obj/machinery/suit_storage_unit/engine/secure,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aqh" = (
/obj/machinery/gravity_generator/main/station,
/turf/simulated/floor/plasteel{
@@ -7356,16 +7349,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/fore)
-"aqv" = (
-/obj/machinery/alarm{
- dir = 4;
- icon_state = "alarm0";
- pixel_x = -22
- },
-/obj/effect/decal/warning_stripes/southwest,
-/obj/machinery/suit_storage_unit/engine/secure,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aqw" = (
/obj/structure/closet/crate,
/obj/item/bodybag,
@@ -8745,26 +8728,6 @@
icon_state = "showroomfloor"
},
/area/security/warden)
-"asX" = (
-/obj/structure/table,
-/obj/item/stack/sheet/metal{
- amount = 50
- },
-/obj/item/stack/sheet/glass{
- amount = 50
- },
-/obj/item/stack/rods{
- amount = 50
- },
-/obj/item/stack/sheet/mineral/plasma{
- amount = 30
- },
-/obj/machinery/cell_charger,
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
"asZ" = (
/turf/simulated/floor/engine,
/area/security/podbay)
@@ -12290,10 +12253,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/fore)
-"azM" = (
-/obj/machinery/space_heater,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"azN" = (
/obj/structure/disposalpipe/segment{
dir = 1;
@@ -13417,10 +13376,10 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"aCd" = (
+/obj/effect/decal/warning_stripes/northwest,
/obj/structure/sign/securearea{
pixel_y = 32
},
-/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aCe" = (
@@ -13435,33 +13394,20 @@
},
/area/crew_quarters/sleep)
"aCf" = (
-/obj/machinery/light_switch{
- pixel_x = 23
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
-/obj/machinery/shower{
- dir = 8;
- icon_state = "shower";
- name = "emergency shower";
- tag = "icon-shower (WEST)"
- },
+/obj/effect/decal/warning_stripes/northeast,
/obj/structure/sign/securearea{
pixel_y = 32
},
-/obj/effect/decal/warning_stripes/northeast,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aCg" = (
/turf/simulated/wall/r_wall,
/area/engine/engineering)
"aCh" = (
-/obj/structure/closet/emcloset,
-/turf/simulated/floor/plating,
+/obj/machinery/atmospherics/unary/vent_pump/on,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
/area/engine/engineering)
"aCi" = (
/obj/machinery/newscaster{
@@ -13648,13 +13594,16 @@
},
/area/security/nuke_storage)
"aCD" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+/obj/machinery/atmospherics/unary/portables_connector{
+ layer = 2
+ },
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/turf/simulated/floor/plating/airless,
/area/engine/engineering)
"aCE" = (
/obj/machinery/alarm{
@@ -13823,7 +13772,7 @@
icon_state = "0-8"
},
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aCN" = (
/obj/structure/disposalpipe/segment{
dir = 8;
@@ -13992,14 +13941,9 @@
/area/engine/gravitygenerator)
"aDc" = (
/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/decal/warning_stripes/north,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5;
- level = 1
- },
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aDd" = (
@@ -14019,13 +13963,12 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"aDf" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 2
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/turf/simulated/floor/plating/airless,
/area/engine/engineering)
"aDg" = (
/obj/structure/table,
@@ -14034,75 +13977,19 @@
icon_state = "showroomfloor"
},
/area/security/warden)
-"aDh" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aDi" = (
-/turf/simulated/floor/plating/airless,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering Supermatter Fore";
+ dir = 8;
+ network = list("SS13","engine")
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
/area/engine/engineering)
-"aDj" = (
-/obj/structure/cable,
-/obj/machinery/power/emitter{
- anchored = 1;
- state = 2
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
-"aDk" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/maintenance/starboard)
-"aDl" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
-"aDm" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
-"aDn" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'HIGH VOLTAGE'";
- icon_state = "shock";
- name = "HIGH VOLTAGE"
- },
-/turf/simulated/wall/r_wall,
-/area/engine/engineering)
-"aDo" = (
-/obj/structure/grille,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aDp" = (
/obj/item/stack/cable_coil,
/turf/simulated/floor/plating/airless,
@@ -14148,16 +14035,13 @@
name = "\improper Mining Office"
})
"aDw" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+/obj/effect/decal/warning_stripes/east,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aDx" = (
@@ -14239,19 +14123,6 @@
/area/quartermaster/sorting{
name = "\improper Warehouse"
})
-"aDC" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Fore Arm - Far";
- dir = 8;
- network = list("Singulo")
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aDD" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -14331,8 +14202,24 @@
/turf/simulated/floor/plating,
/area/bridge)
"aDL" = (
-/obj/effect/spawner/window/reinforced,
-/turf/simulated/floor/plating,
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aDM" = (
/obj/machinery/flasher{
@@ -14556,14 +14443,14 @@
/turf/simulated/floor/carpet,
/area/security/detectives_office)
"aEd" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
},
/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
+ icon_state = "dark"
},
/area/engine/engineering)
"aEe" = (
@@ -14607,14 +14494,6 @@
},
/turf/simulated/floor/plating,
/area/bridge)
-"aEi" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aEj" = (
/obj/machinery/atmospherics/pipe/simple/hidden/universal,
/turf/simulated/floor/plating,
@@ -14647,17 +14526,20 @@
},
/area/crew_quarters/sleep)
"aEn" = (
-/obj/machinery/door/airlock/external{
- name = "Engineering External Access";
- req_access = null;
- req_access_txt = "10;13"
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
},
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/turf/simulated/floor/plating,
/area/engine/engineering)
"aEo" = (
/obj/structure/disposalpipe/segment{
@@ -14833,7 +14715,7 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/maintenance/starboard)
+/area/engine/engineering)
"aEy" = (
/obj/machinery/door/window/southright{
dir = 4;
@@ -14845,17 +14727,17 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aEz" = (
-/obj/structure/table,
-/obj/item/stack/packageWrap,
-/obj/item/wrench,
/obj/machinery/light{
dir = 8
},
-/obj/item/hand_labeler,
/obj/structure/window/reinforced{
dir = 1
},
/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/disposal,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aEA" = (
@@ -14913,14 +14795,6 @@
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"aEF" = (
-/obj/item/multitool,
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
-"aEG" = (
-/obj/item/radio/off,
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aEH" = (
/obj/structure/closet/crate,
/obj/item/stack/ore/glass,
@@ -15059,14 +14933,6 @@
icon_state = "dark"
},
/area/security/brig)
-"aES" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aET" = (
/turf/simulated/floor/plasteel{
icon_state = "floorgrime"
@@ -15095,15 +14961,6 @@
icon_state = "showroomfloor"
},
/area/security/warden)
-"aEW" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aEX" = (
/obj/structure/closet/crate{
name = "Gold Crate"
@@ -15138,18 +14995,6 @@
luminosity = 2
},
/area/security/nuke_storage)
-"aFa" = (
-/obj/structure/grille,
-/obj/machinery/light{
- dir = 1
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aFb" = (
/obj/item/coin/silver{
pixel_x = 7;
@@ -15257,29 +15102,11 @@
icon_state = "floorgrime"
},
/area/security/brig)
-"aFk" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aFl" = (
/turf/simulated/floor/plasteel{
icon_state = "red"
},
/area/security/brig)
-"aFm" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aFn" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
@@ -15583,14 +15410,6 @@
/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"aFN" = (
-/obj/machinery/disposal,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aFO" = (
/obj/machinery/door/poddoor/shutters{
dir = 8;
@@ -15644,10 +15463,6 @@
"aFR" = (
/turf/simulated/wall,
/area/engine/engineering)
-"aFS" = (
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aFT" = (
/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plating,
@@ -15674,32 +15489,20 @@
},
/area/security/brig)
"aFY" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 2
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
/area/engine/engineering)
"aFZ" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Fore Arm - Near";
- dir = 4;
- network = list("Singulo")
+/obj/structure/closet/firecloset,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/turf/space,
-/area/space/nearstation)
+/area/engine/engineering)
"aGb" = (
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
- },
-/obj/item/clothing/mask/gas{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/clothing/mask/gas,
-/obj/item/clothing/mask/gas{
- pixel_x = -3;
- pixel_y = -3
- },
/obj/item/radio/intercom{
frequency = 1459;
name = "Station Intercom (General)";
@@ -15710,7 +15513,7 @@
dir = 2;
network = list("SS13")
},
-/obj/effect/decal/warning_stripes/yellow,
+/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aGc" = (
@@ -15722,24 +15525,6 @@
/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"aGd" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
-"aGe" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'RADIOACTIVE AREA'";
- icon_state = "radiation";
- name = "RADIOACTIVE AREA";
- pixel_x = 32
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aGf" = (
/obj/machinery/hologram/holopad,
/turf/simulated/floor/plasteel,
@@ -16003,17 +15788,9 @@
},
/area/security/brig)
"aGC" = (
-/obj/structure/disposalpipe/sortjunction{
- sortType = 4
- },
-/obj/effect/landmark/start{
- name = "Station Engineer"
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aGD" = (
@@ -16163,14 +15940,6 @@
},
/turf/simulated/floor/plasteel,
/area/crew_quarters/sleep)
-"aGT" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aGU" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -16280,14 +16049,7 @@
},
/area/security/processing)
"aHi" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Singularity";
- name = "Containment Blast Doors";
- opacity = 0
- },
-/obj/effect/decal/warning_stripes/west,
+/obj/effect/spawner/window/reinforced/plasma,
/turf/simulated/floor/plating,
/area/engine/engineering)
"aHj" = (
@@ -16476,7 +16238,7 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aHI" = (
/turf/simulated/floor/plasteel{
dir = 1;
@@ -16794,10 +16556,6 @@
/area/crew_quarters/locker/locker_toilet{
name = "\improper Restrooms"
})
-"aIf" = (
-/obj/structure/lattice,
-/turf/space,
-/area/engine/engineering)
"aIg" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/decal/cleanable/fungus,
@@ -16813,12 +16571,17 @@
name = "\improper Restrooms"
})
"aIi" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+/obj/structure/disposalpipe/segment{
+ dir = 8;
+ icon_state = "pipe-c"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/effect/decal/warning_stripes/south,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aIk" = (
@@ -16903,12 +16666,22 @@
/turf/simulated/floor/mineral/tranquillite,
/area/crew_quarters/sleep)
"aIu" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
-/obj/machinery/atmospherics/unary/vent_scrubber,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aIv" = (
@@ -16918,15 +16691,12 @@
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/northeast,
-/obj/machinery/atmospherics/unary/vent_pump,
+/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aIw" = (
-/obj/effect/landmark/start{
- name = "Station Engineer"
- },
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aIy" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
@@ -16945,7 +16715,7 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aIA" = (
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plasteel,
@@ -16959,7 +16729,7 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aIC" = (
@@ -16998,7 +16768,7 @@
dir = 6
},
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aIE" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -17016,11 +16786,17 @@
/area/engine/engineering)
"aIF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+ dir = 9
},
-/obj/effect/decal/warning_stripes/south,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/effect/decal/warning_stripes/east,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4;
+ initialize_directions = 11
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -17147,7 +16923,7 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aIT" = (
/obj/machinery/light/small,
/obj/structure/table/wood,
@@ -17174,18 +16950,7 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
-"aIW" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aIX" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable/yellow{
@@ -17239,21 +17004,8 @@
/turf/simulated/floor/plasteel,
/area/hallway/primary/fore)
"aJb" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/structure/disposalpipe/segment{
- dir = 8;
- icon_state = "pipe-c"
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel,
+/obj/effect/spawner/window/reinforced/plasma,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aJc" = (
/turf/simulated/floor/plasteel,
@@ -17392,23 +17144,6 @@
},
/turf/simulated/floor/plasteel,
/area/hallway/primary/fore)
-"aJo" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/item/clothing/glasses/meson,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Singularity";
- name = "Containment Blast Doors";
- opacity = 0
- },
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aJp" = (
/obj/structure/chair/office/dark{
dir = 8
@@ -17469,13 +17204,21 @@
},
/area/security/detectives_office)
"aJt" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/manifold/visible/green{
+ dir = 1;
+ tag = "icon-manifold-g (NORTH)"
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/meter,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"aJu" = (
/obj/machinery/door/airlock/maintenance{
name = "Law Office Maintenance";
@@ -17509,14 +17252,6 @@
/area/crew_quarters/locker/locker_toilet{
name = "\improper Restrooms"
})
-"aJx" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aJy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security/glass{
@@ -17654,20 +17389,14 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aJJ" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/effect/spawner/window/reinforced/plasma,
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 2
},
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"aJK" = (
/obj/machinery/door/airlock/bananium/glass,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -17688,7 +17417,7 @@
dir = 4
},
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aJN" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable/yellow,
@@ -17718,7 +17447,7 @@
dir = 9
},
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aJR" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering/glass{
@@ -17738,7 +17467,7 @@
dir = 4
},
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aJS" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable/yellow{
@@ -17775,34 +17504,30 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aJU" = (
-/obj/structure/closet/secure_closet/engineering_electrical,
-/obj/effect/decal/warning_stripes/yellow,
+/obj/effect/decal/warning_stripes/east,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5;
+ level = 1
+ },
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aJV" = (
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
-/obj/item/storage/belt/utility,
-/obj/item/wrench,
-/obj/item/weldingtool,
-/obj/item/clothing/head/welding{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aJW" = (
-/obj/machinery/field/generator{
- anchored = 1;
- state = 2
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 10;
+ initialize_directions = 10
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/effect/decal/warning_stripes/southwestcorner,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"aJX" = (
/turf/simulated/floor/wood,
/area/lawoffice)
@@ -17822,18 +17547,16 @@
/turf/simulated/floor/plating,
/area/bridge)
"aJZ" = (
-/obj/structure/closet/radiation,
-/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
-"aKa" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"aKb" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -17960,14 +17683,6 @@
},
/turf/simulated/floor/plating,
/area/hallway/primary/fore)
-"aKp" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aKq" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable/yellow{
@@ -18342,6 +18057,13 @@
icon_state = "grimy"
},
/area/security/detectives_office)
+"aKT" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 4
+ },
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
"aKU" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -18541,21 +18263,6 @@
/obj/structure/closet/secure_closet/clown,
/turf/simulated/floor/wood,
/area/crew_quarters/sleep)
-"aLn" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/effect/decal/warning_stripes/southeast,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aLo" = (
/obj/machinery/door/poddoor/shutters{
dir = 2;
@@ -18602,7 +18309,7 @@
/obj/item/grenade/chem_grenade/metalfoam,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aLq" = (
/obj/structure/table,
/obj/item/stack/rods{
@@ -18612,7 +18319,7 @@
/obj/item/storage/box/lights/mixed,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aLr" = (
/obj/structure/closet/crate{
name = "solar pack crate"
@@ -18635,27 +18342,7 @@
/obj/item/paper/solar,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
-"aLs" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
-"aLt" = (
-/obj/effect/landmark/start{
- name = "Station Engineer"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aLu" = (
/obj/structure/table,
/obj/item/stack/cable_coil{
@@ -18675,7 +18362,7 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aLv" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/security/glass{
@@ -18688,30 +18375,30 @@
},
/area/security/processing)
"aLw" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/decal/warning_stripes/south,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aLx" = (
-/obj/item/wirecutters,
-/obj/structure/lattice,
-/turf/space,
-/area/space/nearstation)
+/obj/machinery/power/emitter{
+ anchored = 1;
+ state = 2
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"aLy" = (
/obj/machinery/computer/guestpass{
pixel_x = 30
@@ -18748,21 +18435,15 @@
/turf/simulated/floor/plasteel,
/area/construction)
"aLE" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 8
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Singularity";
- name = "Containment Blast Doors";
- opacity = 0
+/obj/machinery/portable_atmospherics/canister,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/engine/supermatter)
"aLF" = (
/obj/structure/closet/toolcloset,
/obj/machinery/light_construct{
@@ -18800,23 +18481,20 @@
/turf/simulated/floor/plating,
/area/maintenance/fore)
"aLN" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+/obj/machinery/atmospherics/binary/pump{
+ dir = 8;
+ name = "Mix Bypass"
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
-"aLO" = (
-/obj/machinery/power/grounding_rod{
- anchored = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
},
-/turf/simulated/floor/plating/airless,
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aLP" = (
/obj/structure/disposalpipe/segment,
@@ -18844,7 +18522,7 @@
/obj/structure/cable/yellow,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/equipmentstorage)
"aLS" = (
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plasteel,
@@ -18857,26 +18535,11 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"aLU" = (
-/obj/structure/table,
-/obj/machinery/light_switch{
- pixel_x = 23
- },
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
-/obj/item/storage/toolbox/mechanical{
- pixel_y = 5
- },
-/obj/item/flashlight{
- pixel_x = 1;
- pixel_y = 5
- },
-/obj/item/flashlight{
- pixel_x = 1;
- pixel_y = 5
- },
-/obj/effect/decal/warning_stripes/yellow,
+/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aLV" = (
@@ -19271,10 +18934,6 @@
/area/construction/Storage{
name = "Storage Wing"
})
-"aMF" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aMG" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
@@ -19307,11 +18966,17 @@
name = "Storage Wing"
})
"aMI" = (
-/obj/machinery/power/grounding_rod{
- anchored = 1
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 2
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"aMJ" = (
/obj/machinery/door/window{
dir = 1;
@@ -19363,20 +19028,19 @@
/turf/simulated/floor/plating,
/area/turret_protected/ai_upload)
"aMQ" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
- },
-/obj/item/crowbar,
-/obj/item/wirecutters,
-/obj/item/stack/cable_coil,
-/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aMR" = (
/obj/machinery/firealarm{
@@ -19421,18 +19085,19 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"aMU" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/southeastcorner,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aMW" = (
/obj/structure/cable/yellow{
@@ -19462,9 +19127,13 @@
d2 = 8;
icon_state = "2-8"
},
-/obj/effect/decal/warning_stripes/southeastcorner,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -19565,13 +19234,15 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"aNd" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'RADIOACTIVE AREA'";
- icon_state = "radiation";
- name = "RADIOACTIVE AREA"
+/obj/machinery/atmospherics/binary/pump{
+ dir = 8;
+ name = "External Gas to Loop"
},
-/turf/simulated/wall/r_wall,
-/area/engine/engineering)
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/supermatter)
"aNe" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -20046,14 +19717,14 @@
state = 2
},
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aNT" = (
/obj/machinery/field/generator{
anchored = 0;
state = 2
},
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aNU" = (
/obj/machinery/shieldgen,
/obj/machinery/light/small{
@@ -20065,11 +19736,11 @@
network = list("SS13")
},
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aNV" = (
/obj/machinery/shieldgen,
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aNX" = (
/obj/machinery/camera{
c_tag = "Cargo Bay - Storage Wing Entrance";
@@ -20100,15 +19771,15 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"aOa" = (
-/obj/machinery/power/rad_collector{
- anchored = 1
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
},
-/obj/structure/cable{
- d2 = 8;
- icon_state = "0-8"
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 2
},
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aOb" = (
/obj/machinery/computer/security{
@@ -20121,21 +19792,13 @@
icon_state = "dark"
},
/area/security/brig)
-"aOc" = (
-/obj/effect/landmark/start{
- name = "Station Engineer"
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aOd" = (
/turf/simulated/floor/plating,
/area/engine/engineering)
"aOe" = (
-/obj/structure/particle_accelerator/particle_emitter/right{
- dir = 4
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/obj/machinery/atmospherics/pipe/simple/visible/universal,
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"aOf" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
@@ -20158,7 +19821,15 @@
name = "Storage Wing"
})
"aOg" = (
-/obj/effect/decal/warning_stripes/northeast,
+/obj/effect/decal/warning_stripes/east,
+/obj/structure/table,
+/obj/item/geiger_counter,
+/obj/item/geiger_counter,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/head/radiation,
+/obj/item/tank/internals/emergency_oxygen/engi,
+/obj/item/clothing/gloves/color/black,
+/obj/item/clothing/glasses/meson/engine,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aOh" = (
@@ -20203,10 +19874,6 @@
icon_state = "dark"
},
/area/security/brig)
-"aOj" = (
-/obj/item/crowbar,
-/turf/space,
-/area/space/nearstation)
"aOk" = (
/obj/machinery/alarm{
dir = 4;
@@ -20222,10 +19889,6 @@
},
/turf/simulated/floor/plating,
/area/construction)
-"aOm" = (
-/obj/effect/decal/warning_stripes/northwest,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aOp" = (
/obj/machinery/door/poddoor{
id_tag = "QMLoaddoor";
@@ -20236,10 +19899,6 @@
},
/turf/simulated/floor/plating,
/area/quartermaster/storage)
-"aOq" = (
-/obj/effect/decal/warning_stripes/northeast,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aOs" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
req_access_txt = 1
@@ -20251,18 +19910,6 @@
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
-"aOv" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/warning_stripes/northeastcorner,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aOw" = (
/obj/structure/toilet{
pixel_y = 8
@@ -20530,20 +20177,18 @@
name = "\improper Restrooms"
})
"aPa" = (
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 8;
+ initialize_directions = 11;
+ level = 2
+ },
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Singularity";
- name = "Containment Blast Doors";
- opacity = 0
- },
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aPb" = (
/obj/structure/disposalpipe/segment,
@@ -20566,13 +20211,6 @@
icon_state = "redcorner"
},
/area/security/brig)
-"aPd" = (
-/obj/machinery/the_singularitygen{
- anchored = 1
- },
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aPe" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/decal/warning_stripes/west,
@@ -20587,19 +20225,6 @@
/obj/structure/plasticflaps/mining,
/turf/simulated/floor/plating,
/area/quartermaster/storage)
-"aPg" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aPh" = (
/obj/structure/table,
/obj/item/hatchet,
@@ -20646,7 +20271,7 @@
"aPl" = (
/obj/machinery/portable_atmospherics/canister/toxins,
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aPm" = (
/obj/machinery/door_timer{
dir = 1;
@@ -20707,29 +20332,59 @@
/turf/simulated/floor/plasteel,
/area/construction)
"aPs" = (
-/obj/structure/particle_accelerator/end_cap{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 8;
+ initialize_directions = 11;
+ level = 2
},
-/turf/simulated/floor/plating,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/effect/decal/warning_stripes/east,
+/obj/machinery/door_control{
+ id = "engsm";
+ name = "Radiation Shutters Control";
+ pixel_x = 24;
+ req_access_txt = "10";
+ req_one_access = null
+ },
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aPt" = (
-/obj/structure/particle_accelerator/fuel_chamber{
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
dir = 4
},
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"aPu" = (
-/obj/structure/particle_accelerator/power_box{
- dir = 4
+/obj/machinery/atmospherics/binary/pump{
+ dir = 4;
+ name = "Gas to Chamber"
},
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/obj/machinery/power/apc{
+ cell_type = 25000;
+ dir = 1;
+ name = "Engineering Engine Super APC";
+ pixel_x = 0;
+ pixel_y = 24;
+ shock_proof = 1
+ },
+/obj/structure/cable/yellow{
+ d1 = 0;
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aPv" = (
-/obj/structure/particle_accelerator/particle_emitter/center{
- dir = 4
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 9
},
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"aPw" = (
/obj/machinery/door_control{
id = "qm_warehouse";
@@ -20755,12 +20410,20 @@
name = "Storage Wing"
})
"aPy" = (
-/obj/machinery/power/tesla_coil{
- anchored = 1
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/obj/structure/cable,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/effect/decal/warning_stripes/northeast,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/binary/valve/digital/open{
+ name = "Output Release"
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"aPz" = (
/obj/item/seeds/apple,
/obj/item/seeds/banana,
@@ -20879,15 +20542,17 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aPL" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Singularity";
- name = "Containment Blast Doors";
- opacity = 0
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
},
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/turf/simulated/floor/plasteel,
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aPM" = (
/obj/structure/window/reinforced{
@@ -21300,6 +20965,15 @@
icon_state = "neutralcorner"
},
/area/crew_quarters/locker)
+"aQF" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/plasteel,
+/area/engine/engineering)
"aQG" = (
/obj/effect/decal/warning_stripes/arrow{
dir = 8;
@@ -21428,30 +21102,32 @@
name = "\improper Garden"
})
"aQR" = (
+/obj/effect/decal/warning_stripes/east,
/obj/structure/table,
-/obj/machinery/door_control{
- id = "Singularity";
- name = "Shutters Control";
- pixel_x = 25;
- req_access_txt = "11"
- },
-/obj/item/storage/toolbox/electrical{
+/obj/item/rpd,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/glasses/meson,
+/obj/item/clothing/head/radiation,
+/obj/item/tank/internals/emergency_oxygen/engi,
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = 5
+ },
+/obj/item/flashlight{
+ pixel_x = 1;
pixel_y = 5
},
-/obj/effect/decal/warning_stripes/yellow,
-/obj/item/clothing/glasses/meson/engine,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aQS" = (
/obj/machinery/power/emitter,
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aQT" = (
/obj/effect/landmark{
name = "blobstart"
},
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aQU" = (
/obj/effect/decal/warning_stripes/southwestcorner,
/turf/simulated/floor/plasteel,
@@ -21495,72 +21171,70 @@
},
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"aQZ" = (
-/obj/machinery/door_control{
- id = "Singularity";
- name = "Shutters Control";
- pixel_x = -25;
- req_access_txt = "11"
- },
-/obj/effect/decal/warning_stripes/northwest,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aRa" = (
-/obj/structure/cable{
+/obj/machinery/atmospherics/pipe/simple/visible/supply{
+ dir = 6
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
+"aRb" = (
+/obj/machinery/door/airlock/engineering/glass{
+ heat_proof = 1;
+ name = "Supermatter Chamber";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
+ },
+/obj/structure/cable/yellow{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
-"aRb" = (
-/obj/machinery/particle_accelerator/control_box,
-/obj/structure/cable{
- d2 = 8;
- icon_state = "0-8"
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aRc" = (
-/obj/structure/chair/stool{
- pixel_y = 8
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
-"aRd" = (
-/obj/structure/particle_accelerator/particle_emitter/left{
- dir = 4
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
-"aRe" = (
-/obj/item/weldingtool,
-/turf/space,
-/area/space/nearstation)
-"aRf" = (
-/obj/item/wirecutters,
-/obj/structure/cable{
+/obj/structure/cable/yellow{
d1 = 1;
- d2 = 4;
- icon_state = "1-4"
+ d2 = 8;
+ icon_state = "1-8"
},
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
+"aRd" = (
+/obj/machinery/door/airlock/engineering/glass{
+ heat_proof = 1;
+ name = "Supermatter Chamber";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
+"aRe" = (
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 2
+ },
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/engine,
/area/engine/engineering)
+"aRf" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aRg" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 8;
+ initialize_directions = 11;
+ level = 2
+ },
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plating,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aRh" = (
/obj/effect/decal/warning_stripes/west,
@@ -21627,29 +21301,17 @@
},
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
-"aRr" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Engineering - Particle Accelerator";
- dir = 2;
- network = list("Singulo","SS13")
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aRs" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
+/obj/machinery/atmospherics/pipe/simple/visible/supply{
+ dir = 10
},
-/obj/effect/decal/warning_stripes/northeast,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aRt" = (
/obj/structure/mirror{
pixel_x = -28
@@ -22068,7 +21730,7 @@
/obj/machinery/power/emitter,
/obj/machinery/light/small,
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"aSh" = (
/obj/structure/closet/crate,
/obj/item/stack/sheet/metal{
@@ -22091,17 +21753,7 @@
},
/obj/item/gps,
/turf/simulated/floor/plating,
-/area/engine/engineering)
-"aSi" = (
-/obj/machinery/the_singularitygen{
- anchored = 0
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
-"aSk" = (
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/area/storage/secure)
"aSl" = (
/obj/machinery/navbeacon{
codes_txt = "delivery";
@@ -22129,13 +21781,17 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aSo" = (
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aSp" = (
-/obj/effect/decal/warning_stripes/southwest,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/structure/reflector/box{
+ anchored = 1;
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"aSq" = (
/turf/simulated/wall/mineral/titanium,
/area/shuttle/pod_1)
@@ -22202,13 +21858,8 @@
name = "\improper Garden"
})
"aSC" = (
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/cell/high{
- charge = 100;
- maxcharge = 15000
- },
/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/computer/sm_monitor,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aSD" = (
@@ -22234,8 +21885,12 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment,
-/obj/effect/decal/warning_stripes/southeastcorner,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aSF" = (
@@ -22597,15 +22252,6 @@
/obj/machinery/hologram/holopad,
/turf/simulated/floor/wood,
/area/lawoffice)
-"aTl" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aTm" = (
/obj/machinery/firealarm{
dir = 8;
@@ -22865,10 +22511,6 @@
/area/hallway/secondary/construction{
name = "\improper Garden"
})
-"aTG" = (
-/obj/effect/decal/warning_stripes/southeast,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aTH" = (
/obj/machinery/power/apc{
dir = 4;
@@ -22896,54 +22538,35 @@
/area/hallway/secondary/construction{
name = "\improper Garden"
})
-"aTI" = (
-/obj/machinery/the_singularitygen/tesla{
- anchored = 1
- },
-/obj/effect/decal/warning_stripes/south,
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aTJ" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
+/obj/machinery/atmospherics/pipe/simple/visible/cyan,
+/obj/machinery/light{
+ dir = 4
},
-/turf/simulated/floor/plating,
-/area/engine/engineering)
-"aTK" = (
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/engine,
/area/engine/engineering)
+"aTK" = (
+/obj/structure/window/plasmareinforced,
+/obj/machinery/atmospherics/pipe/manifold/visible/supply{
+ dir = 8
+ },
+/obj/machinery/power/rad_collector{
+ anchored = 1
+ },
+/obj/structure/cable,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aTL" = (
/obj/structure/disposalpipe/segment,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
-"aTM" = (
-/obj/machinery/power/tesla_coil{
- anchored = 1
- },
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
-"aTO" = (
-/obj/effect/spawner/lootdrop/maintenance,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aTP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plating,
@@ -22955,9 +22578,11 @@
/turf/simulated/floor/plasteel,
/area/construction)
"aTR" = (
-/obj/effect/decal/warning_stripes/south,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"aTS" = (
/obj/docking_port/stationary{
dir = 8;
@@ -22986,9 +22611,9 @@
/turf/simulated/floor/plating,
/area/quartermaster/storage)
"aTV" = (
-/obj/effect/decal/warning_stripes/southeast,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"aTW" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -23142,13 +22767,6 @@
/turf/simulated/floor/plasteel,
/area/storage/primary)
"aUh" = (
-/obj/machinery/computer/security/telescreen{
- desc = "Used for monitoring the singularity engine safely.";
- dir = 8;
- name = "Singularity Monitor";
- network = list("Singulo");
- pixel_x = 32
- },
/obj/machinery/camera{
c_tag = "Engineering - Central";
dir = 8;
@@ -23392,18 +23010,6 @@
/area/hallway/secondary/construction{
name = "\improper Garden"
})
-"aUF" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/light{
- dir = 8
- },
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aUG" = (
/obj/structure/window/reinforced{
dir = 1
@@ -23472,19 +23078,6 @@
tag = "icon-vault"
},
/area/engine/engineering)
-"aUM" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"aUN" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -23528,7 +23121,6 @@
d2 = 8;
icon_state = "2-8"
},
-/obj/effect/decal/warning_stripes/east,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -23661,17 +23253,13 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aVh" = (
-/obj/structure/closet/secure_closet/engineering_welding,
-/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
-"aVi" = (
-/obj/machinery/power/smes/engineering,
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/effect/decal/warning_stripes/yellow,
+/obj/effect/decal/warning_stripes/east,
+/obj/structure/table,
+/obj/item/rpd,
+/obj/item/geiger_counter,
+/obj/item/clothing/suit/radiation,
+/obj/item/clothing/glasses/meson,
+/obj/item/clothing/head/radiation,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aVk" = (
@@ -23766,17 +23354,21 @@
},
/area/crew_quarters/locker)
"aVs" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
+/obj/machinery/atmospherics/binary/pump/on{
+ name = "Gas to Filter"
},
/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/plating,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aVt" = (
/obj/structure/table,
@@ -24042,25 +23634,6 @@
icon_state = "neutralcorner"
},
/area/crew_quarters/locker)
-"aVN" = (
-/obj/structure/table,
-/obj/item/book/manual/engineering_guide{
- pixel_x = 3;
- pixel_y = 4
- },
-/obj/item/book/manual/engineering_particle_accelerator{
- pixel_x = -2;
- pixel_y = 3
- },
-/obj/machinery/door_control{
- id = "Singularity";
- name = "Shutters Control";
- pixel_x = 25;
- req_access_txt = "11"
- },
-/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"aVO" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -24189,16 +23762,6 @@
/area/hallway/secondary/construction{
name = "\improper Garden"
})
-"aWb" = (
-/obj/machinery/door_control{
- id = "Singularity";
- name = "Shutters Control";
- pixel_x = -25;
- req_access_txt = "11"
- },
-/obj/effect/decal/warning_stripes/southwest,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"aWc" = (
/turf/simulated/floor/plasteel{
dir = 6;
@@ -24239,13 +23802,25 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"aWg" = (
+/obj/machinery/atmospherics/pipe/manifold/visible/green{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = 24
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering Supermatter Port";
+ dir = 8;
+ network = list("SS13","engine")
+ },
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
-/obj/effect/decal/warning_stripes/south,
-/turf/simulated/floor/plating,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aWh" = (
/obj/machinery/camera/autoname{
@@ -24355,25 +23930,12 @@
},
/area/security/brig)
"aWp" = (
-/obj/structure/table,
-/obj/item/book/manual/engineering_hacking{
- pixel_x = 4;
- pixel_y = 5
- },
-/obj/item/book/manual/engineering_construction{
- pixel_y = 3
- },
-/obj/structure/extinguisher_cabinet{
- pixel_x = 27
- },
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
-/obj/item/book/manual/engineering_singularity_safety{
- pixel_x = -4
- },
-/obj/effect/decal/warning_stripes/yellow,
+/obj/effect/decal/warning_stripes/east,
+/obj/structure/closet/firecloset,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aWq" = (
@@ -24461,6 +24023,12 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high{
+ charge = 100;
+ maxcharge = 15000
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "yellow"
@@ -24494,15 +24062,10 @@
icon_state = "neutralcorner"
},
/area/crew_quarters/locker)
-"aWz" = (
-/obj/machinery/power/grounding_rod{
- anchored = 1
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"aWA" = (
-/turf/space,
-/area/engine/engineering)
+/obj/structure/lattice,
+/turf/simulated/wall/r_wall,
+/area/space/nearstation)
"aWB" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -24826,22 +24389,15 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"aXo" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/manifold/visible/red{
+ dir = 1
},
-/obj/structure/rack{
- dir = 8;
- layer = 2.9
- },
-/obj/item/crowbar,
-/obj/item/stack/cable_coil,
-/obj/item/screwdriver,
-/obj/item/weldingtool,
+/obj/machinery/meter,
/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/supermatter)
"aXp" = (
/obj/machinery/vending/crittercare,
/obj/effect/decal/warning_stripes/north,
@@ -24862,24 +24418,14 @@
name = "\improper Garden"
})
"aXs" = (
+/obj/machinery/atmospherics/trinary/filter/flipped,
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4";
- tag = "90Curve"
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aXt" = (
/obj/machinery/computer/security/mining,
@@ -25581,9 +25127,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/effect/landmark/start{
- name = "Station Engineer"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
@@ -25632,7 +25175,7 @@
icon_state = "vault";
tag = "icon-vault"
},
-/area/engine/chiefs_office)
+/area/engine/engineering)
"aYV" = (
/obj/structure/cable/yellow{
d2 = 4;
@@ -25646,16 +25189,16 @@
icon_state = "vault";
tag = "icon-vault"
},
-/area/engine/chiefs_office)
+/area/engine/engineering)
"aYW" = (
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/effect/decal/warning_stripes/north,
+/obj/effect/decal/warning_stripes/east,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+ dir = 10
},
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -25764,7 +25307,6 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/effect/decal/warning_stripes/northeastcorner,
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4;
@@ -25773,68 +25315,50 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"aZd" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/power/terminal{
- dir = 1;
- icon_state = "term"
- },
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aZe" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
+/obj/effect/spawner/window/reinforced/plasma,
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plasteel,
+/obj/structure/sign/securearea{
+ pixel_y = 32
+ },
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aZg" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 5
},
-/obj/effect/decal/warning_stripes/northeast,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/supermatter)
"aZh" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green,
/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4";
- tag = "90Curve"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8";
+ tag = ""
},
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
-/obj/effect/decal/warning_stripes/north,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aZj" = (
/obj/machinery/door/airlock/external{
@@ -26085,13 +25609,21 @@
},
/area/turret_protected/ai_upload_foyer)
"aZO" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/atmospherics/pipe/manifold/visible/green{
+ dir = 1;
+ tag = "icon-manifold-g (NORTH)"
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"aZP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -26354,33 +25886,33 @@
},
/area/storage/primary)
"bao" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 5;
+ initialize_directions = 12;
+ tag = "icon-intact-g (NORTHEAST)"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/obj/structure/cable{
d1 = 1;
d2 = 4;
icon_state = "1-4";
- tag = "90Curve"
+ tag = ""
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/northeastcorner,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"bap" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/manifold/visible/yellow{
+ dir = 4
},
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"baq" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -26426,10 +25958,6 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
-"bat" = (
-/obj/machinery/light_switch,
-/turf/simulated/wall,
-/area/engine/engineering)
"bau" = (
/obj/item/clothing/head/fedora,
/obj/structure/table/wood/poker,
@@ -26451,12 +25979,13 @@
/obj/effect/decal/warning_stripes/south,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"bax" = (
-/obj/item/wrench,
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"bay" = (
/obj/machinery/hologram/holopad,
/obj/structure/cable/yellow{
@@ -26473,16 +26002,6 @@
/area/bridge/meeting_room{
name = "\improper Command Hallway"
})
-"baA" = (
-/obj/machinery/light,
-/obj/machinery/camera{
- c_tag = "Engineering - Aft";
- dir = 1;
- network = list("SS13")
- },
-/obj/effect/decal/warning_stripes/south,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"baB" = (
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plasteel,
@@ -26513,41 +26032,11 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"baE" = (
-/obj/machinery/camera/autoname{
- dir = 4;
- network = list("SS13")
- },
-/obj/machinery/door_control{
- desc = "A remote control-switch for the engineering security doors.";
- id = "Engineering";
- name = "Engineering Lockdown";
- pixel_x = -24;
- pixel_y = -6;
- req_access_txt = "1"
- },
-/obj/machinery/door_control{
- id = "atmos";
- name = "Atmospherics Lockdown";
- pixel_x = -24;
- pixel_y = 5;
- req_access_txt = "1"
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/machinery/atmospherics/unary/vent_pump{
- dir = 4;
- external_pressure_bound = 101.325;
- on = 1;
- pressure_checks = 1
- },
/turf/simulated/floor/plasteel{
- dir = 10;
+ dir = 9;
icon_state = "yellow"
},
-/area/engine/engineering)
+/area/engine/break_room)
"baF" = (
/obj/machinery/light{
dir = 4
@@ -26569,9 +26058,12 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"baG" = (
-/obj/effect/decal/warning_stripes/south,
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 5
+ },
+/turf/space,
+/area/space/nearstation)
"baH" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 10;
@@ -27042,16 +26534,13 @@
},
/area/hallway/primary/central)
"bbC" = (
-/obj/effect/landmark/start{
- name = "Station Engineer"
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"bbD" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -27099,14 +26588,6 @@
"bbH" = (
/turf/simulated/wall,
/area/storage/tech)
-"bbI" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"bbJ" = (
/obj/structure/cable{
d1 = 2;
@@ -27141,16 +26622,8 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"bbO" = (
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -4;
- pixel_y = 10
- },
-/obj/item/pen{
- pixel_x = -3;
- pixel_y = 5
- },
/obj/effect/decal/warning_stripes/yellow,
+/obj/structure/closet/secure_closet/engineering_welding,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"bbP" = (
@@ -27225,19 +26698,6 @@
/area/quartermaster/office{
name = "\improper Cargo Office"
})
-"bbU" = (
-/obj/structure/cable{
- d2 = 2;
- icon_state = "0-2";
- pixel_y = 1
- },
-/obj/machinery/power/emitter{
- anchored = 1;
- dir = 1;
- state = 2
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"bbV" = (
/obj/structure/table,
/obj/item/analyzer,
@@ -27524,22 +26984,9 @@
tag = "icon-vault (SOUTHWEST)"
},
/area/turret_protected/ai_upload_foyer)
-"bcp" = (
-/obj/machinery/light/small,
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/effect/decal/warning_stripes/south,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"bcq" = (
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/folder/yellow,
-/obj/item/storage/firstaid/fire,
/obj/effect/decal/warning_stripes/yellow,
+/obj/structure/closet/secure_closet/engineering_electrical,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"bcr" = (
@@ -27670,16 +27117,6 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/security/brig)
-"bcC" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'RADIOACTIVE AREA'";
- icon_state = "radiation";
- name = "RADIOACTIVE AREA";
- pixel_x = 32
- },
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"bcD" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -27734,18 +27171,6 @@
/area/maintenance/fpmaint2{
name = "Port Maintenance"
})
-"bcG" = (
-/obj/machinery/atmospherics/unary/vent_pump{
- dir = 1;
- on = 1
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"bcH" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -28154,18 +27579,12 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"bdp" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Aft Arm - Far";
- dir = 8;
- network = list("Singulo")
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 10
},
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
+/turf/space,
+/area/space/nearstation)
"bdq" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -28412,16 +27831,6 @@
},
/turf/simulated/floor/plasteel,
/area/hallway/primary/central)
-"bdG" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4";
- tag = "90Curve"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"bdH" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -29118,12 +28527,6 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/turf/simulated/floor/plasteel,
/area/security/brig)
-"beU" = (
-/obj/machinery/door/airlock/external{
- name = "South Containment Arm Access"
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"beV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
@@ -29153,17 +28556,6 @@
/area/construction/hallway{
name = "\improper MiniSat Exterior"
})
-"beZ" = (
-/obj/machinery/camera/emp_proof{
- c_tag = "Aft Arm - Near";
- dir = 4;
- network = list("Singulo")
- },
-/obj/machinery/power/grounding_rod{
- anchored = 1
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
"bfb" = (
/obj/structure/window/reinforced{
dir = 8
@@ -29419,22 +28811,6 @@
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"bft" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
- icon_state = "space";
- layer = 4;
- name = "EXTERNAL AIRLOCK";
- pixel_y = -32
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/warning_stripes/southeast,
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
"bfu" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -29486,24 +28862,14 @@
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"bfz" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
- icon_state = "space";
- layer = 4;
- name = "EXTERNAL AIRLOCK";
- pixel_y = 32
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 6;
+ icon_state = "intact";
+ tag = "icon-intact (SOUTHEAST)"
},
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/warning_stripes/east,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
"bfA" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -29520,16 +28886,6 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/security/brig)
-"bfB" = (
-/obj/machinery/light,
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
"bfC" = (
/obj/machinery/status_display{
dir = 4;
@@ -30118,17 +29474,15 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/storage)
"bgE" = (
-/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable/yellow{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
-/obj/machinery/door/airlock/engineering,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/area/engine/break_room)
"bgF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -30144,10 +29498,6 @@
},
/turf/simulated/floor/plasteel,
/area/hallway/primary/central)
-"bgG" = (
-/obj/item/cigbutt,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"bgH" = (
/obj/machinery/ai_status_display{
pixel_y = 32
@@ -30625,19 +29975,10 @@
},
/area/hallway/primary/central)
"bhA" = (
-/obj/structure/grille,
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plating/airless,
-/area/engine/engineering)
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"bhB" = (
/obj/machinery/atmospherics/unary/vent_pump{
dir = 4;
@@ -31794,13 +31135,6 @@
},
/area/storage/tools)
"bjG" = (
-/obj/machinery/computer/security/telescreen{
- desc = "Used for monitoring the singularity engine safely.";
- dir = 8;
- name = "Singularity Monitor";
- network = list("Singulo");
- pixel_x = 29
- },
/obj/structure/cable/yellow{
d1 = 1;
d2 = 2;
@@ -31812,6 +31146,14 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/computer/security/telescreen{
+ desc = "A telescreen that connects to the engine's camera network.";
+ dir = 8;
+ layer = 4;
+ name = "Engine Monitor";
+ network = list("engine");
+ pixel_x = 30
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "vault"
@@ -31879,26 +31221,6 @@
"bjN" = (
/turf/simulated/wall,
/area/engine/break_room)
-"bjO" = (
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = 24
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/machinery/computer/monitor,
-/obj/structure/cable/yellow{
- d2 = 8;
- icon_state = "0-8"
- },
-/turf/simulated/floor/plasteel{
- dir = 6;
- icon_state = "yellow"
- },
-/area/engine/engineering)
"bjP" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable/yellow,
@@ -31930,20 +31252,6 @@
icon_state = "vault"
},
/area/turret_protected/ai)
-"bjT" = (
-/obj/structure/sign/securearea{
- desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
- icon_state = "space";
- layer = 4;
- name = "EXTERNAL AIRLOCK";
- pixel_y = 32
- },
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/visible{
- dir = 4
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"bjU" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4;
@@ -32657,16 +31965,11 @@
/turf/simulated/floor/plating,
/area/engine/mechanic_workshop)
"blj" = (
-/obj/machinery/door/firedoor,
/obj/structure/cable/yellow{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/airlock/engineering/glass{
- name = "Mechanic Workshop";
- req_access_txt = "70"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
},
@@ -32674,7 +31977,10 @@
dir = 4;
level = 1
},
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "vault"
+ },
/area/engine/mechanic_workshop)
"bll" = (
/obj/structure/closet/emcloset,
@@ -34141,27 +33447,8 @@
d2 = 2;
icon_state = "1-2"
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "yellow"
- },
-/area/engine/break_room)
-"bnD" = (
-/obj/machinery/disposal{
- pixel_x = 2;
- pixel_y = 2
- },
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "yellow"
- },
+/turf/simulated/floor/plasteel,
/area/engine/break_room)
"bnE" = (
/obj/machinery/light_switch{
@@ -36019,6 +35306,9 @@
/obj/structure/chair/stool{
pixel_y = 8
},
+/obj/effect/landmark/start{
+ name = "Station Engineer"
+ },
/turf/simulated/floor/plasteel,
/area/engine/break_room)
"bqT" = (
@@ -36994,6 +36284,9 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/landmark/start{
+ name = "Station Engineer"
+ },
/turf/simulated/floor/plasteel,
/area/engine/break_room)
"bsE" = (
@@ -37010,15 +36303,13 @@
/turf/simulated/floor/plating,
/area/janitor)
"bsF" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/unary/vent_pump{
- dir = 4;
- on = 1
+/obj/structure/disposalpipe/sortjunction,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8;
+ initialize_directions = 11
},
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
},
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -37096,6 +36387,8 @@
icon_state = "D-NW";
tag = "icon-D-NW"
},
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/space,
/area/space/nearstation)
"bsO" = (
@@ -37239,6 +36532,12 @@
dir = 4;
level = 1
},
+/obj/structure/table,
+/obj/item/pod_parts/core,
+/obj/item/circuitboard/mecha/pod,
+/obj/item/clothing/glasses/welding{
+ pixel_y = 12
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "vault"
@@ -37255,6 +36554,20 @@
name = "Mechanic Workshop APC";
pixel_y = -25
},
+/obj/structure/table,
+/obj/item/stack/sheet/mineral/plasma{
+ amount = 30
+ },
+/obj/item/stack/rods{
+ amount = 50
+ },
+/obj/item/stack/sheet/glass{
+ amount = 50
+ },
+/obj/item/stack/sheet/metal{
+ amount = 50
+ },
+/obj/machinery/cell_charger,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "vault"
@@ -38639,7 +37952,7 @@
dir = 8;
icon_state = "vault"
},
-/area/space/nearstation)
+/area/engine/break_room)
"bvl" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/door/poddoor/shutters{
@@ -38805,7 +38118,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space/nearstation)
+/area/engine/break_room)
"bvw" = (
/obj/machinery/alarm{
dir = 4;
@@ -39513,6 +38826,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
/turf/simulated/floor/plating/airless,
/area/space/nearstation)
"bwG" = (
@@ -41831,7 +41145,7 @@
dir = 8;
icon_state = "vault"
},
-/area/space/nearstation)
+/area/engine/break_room)
"bAu" = (
/obj/machinery/vending/boozeomat,
/turf/simulated/wall,
@@ -41950,15 +41264,11 @@
},
/area/hallway/primary/starboard)
"bAL" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
-"bAO" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/simulated/floor/plating,
-/area/engine/break_room)
"bAP" = (
/obj/machinery/door/poddoor{
density = 0;
@@ -42690,10 +42000,7 @@
name = "\improper Command Hallway"
})
"bCj" = (
-/obj/structure/disposalpipe/segment{
- dir = 4;
- icon_state = "pipe-c"
- },
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
"bCk" = (
@@ -42880,7 +42187,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space/nearstation)
+/area/engine/break_room)
"bCx" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
@@ -43122,7 +42429,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/space/nearstation)
+/area/engine/break_room)
"bDa" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -44237,13 +43544,13 @@
},
/area/atmos)
"bEL" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/engine,
/area/engine/engineering)
"bEM" = (
/obj/machinery/computer/atmos_alert,
@@ -48803,18 +48110,6 @@
},
/turf/simulated/floor/wood,
/area/library)
-"bMO" = (
-/obj/machinery/power/rad_collector{
- anchored = 1
- },
-/obj/item/tank/internals/plasma,
-/obj/structure/cable{
- d2 = 8;
- icon_state = "0-8"
- },
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"bMP" = (
/obj/machinery/bookbinder,
/turf/simulated/floor/wood,
@@ -54319,7 +53614,7 @@
name = "Secure Storage Blast Doors"
},
/turf/simulated/floor/plating,
-/area/engine/engineering)
+/area/storage/secure)
"bXv" = (
/obj/structure/sign/nosmoking_2,
/turf/simulated/wall,
@@ -55615,10 +54910,6 @@
/area/maintenance/aft{
name = "Aft Maintenance"
})
-"bZV" = (
-/obj/effect/decal/cleanable/fungus,
-/turf/simulated/wall/r_wall,
-/area/maintenance/starboard)
"bZW" = (
/obj/machinery/newscaster{
pixel_x = -32
@@ -56889,9 +56180,16 @@
name = "Aft Maintenance"
})
"ccu" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/decal/warning_stripes/west,
-/turf/simulated/floor/plating,
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
/area/engine/engineering)
"ccv" = (
/obj/structure/closet/crate/hydroponics,
@@ -68413,6 +67711,9 @@
icon_state = "bluecorner"
},
/area/hallway/primary/aft)
+"cwA" = (
+/turf/simulated/wall/r_wall,
+/area/engine/equipmentstorage)
"cwB" = (
/obj/machinery/power/compressor{
comp_id = "incineratorturbine";
@@ -87032,31 +86333,26 @@
name = "\improper Secure Lab"
})
"ddZ" = (
-/obj/machinery/power/tesla_coil{
- anchored = 1
- },
-/obj/structure/cable{
- d2 = 2;
- icon_state = "0-2"
- },
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"dea" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
-"dec" = (
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
-/turf/simulated/floor/plating/airless,
-/area/space/nearstation)
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"ded" = (
/obj/machinery/dye_generator,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -87467,8 +86763,23 @@
},
/area/chapel/main)
"deW" = (
-/obj/machinery/light_switch,
-/turf/simulated/wall/r_wall,
+/obj/structure/rack{
+ dir = 1
+ },
+/obj/item/radio{
+ pixel_y = 6
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_x = -2;
+ pixel_y = -1
+ },
+/obj/item/storage/toolbox/electrical,
+/obj/item/storage/belt/utility,
+/obj/item/extinguisher,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "vault"
+ },
/area/engine/mechanic_workshop)
"deX" = (
/obj/structure/chair/stool,
@@ -87507,68 +86818,6 @@
icon_state = "vault"
},
/area/engine/mechanic_workshop)
-"dfb" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "mechpod";
- name = "Mechanic's Workshop Inner Door";
- opacity = 0
- },
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
-"dfc" = (
-/obj/machinery/mecha_part_fabricator/spacepod,
-/obj/machinery/light{
- dir = 1;
- in_use = 1
- },
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
-"dfd" = (
-/obj/machinery/camera,
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
-"dfe" = (
-/obj/structure/table,
-/obj/item/pod_parts/core,
-/obj/item/circuitboard/mecha/pod,
-/obj/item/clothing/glasses/welding{
- pixel_y = 12
- },
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
-"dff" = (
-/obj/structure/rack{
- dir = 1
- },
-/obj/item/extinguisher,
-/obj/item/storage/belt/utility,
-/obj/item/storage/toolbox/electrical,
-/obj/item/storage/toolbox/mechanical{
- pixel_x = -2;
- pixel_y = -1
- },
-/obj/item/radio{
- pixel_y = 6
- },
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
"dfg" = (
/turf/simulated/floor/plasteel{
dir = 5;
@@ -87618,13 +86867,6 @@
icon_state = "vault"
},
/area/engine/mechanic_workshop)
-"dfm" = (
-/obj/machinery/vending/cola,
-/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "vault"
- },
-/area/engine/mechanic_workshop)
"dfn" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -87774,8 +87016,13 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Mechanic Workshop";
+ req_access_txt = "70"
+ },
+/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel,
-/area/engine/break_room)
+/area/engine/mechanic_workshop)
"dfB" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -87852,6 +87099,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
+/obj/machinery/vending/cola,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "vault"
@@ -88329,9 +87577,9 @@
/turf/simulated/floor/plasteel,
/area/engine/break_room)
"dgO" = (
-/obj/structure/sign/pods,
+/obj/machinery/light_switch,
/turf/simulated/wall,
-/area/engine/break_room)
+/area/engine/mechanic_workshop)
"dgW" = (
/obj/machinery/computer/camera_advanced/xenobio,
/turf/simulated/floor/plasteel{
@@ -88648,12 +87896,32 @@
icon_state = "yellowcorner"
},
/area/hallway/primary/starboard)
+"dom" = (
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/plasteel,
+/area/engine/equipmentstorage)
"dqh" = (
/obj/effect/decal/warning_stripes/south,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/break_room)
+"dqm" = (
+/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
+ dir = 9
+ },
+/obj/machinery/camera{
+ c_tag = "Supermatter Chamber";
+ dir = 4;
+ network = list("engine")
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"dvV" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 6
@@ -88740,6 +88008,17 @@
},
/turf/simulated/floor/plasteel,
/area/construction)
+"dMG" = (
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"dMV" = (
/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
dir = 8;
@@ -88821,6 +88100,20 @@
icon_state = "neutralcorner"
},
/area/hallway/primary/central)
+"dXb" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ level = 2
+ },
+/obj/machinery/light{
+ dir = 2
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"dZe" = (
/obj/effect/decal/warning_stripes/west,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -88830,6 +88123,29 @@
icon_state = "white"
},
/area/medical/cryo)
+"ebM" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"ebV" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"edg" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -88845,6 +88161,22 @@
icon_state = "green"
},
/area/hydroponics)
+"edK" = (
+/obj/machinery/atmospherics/binary/pump{
+ dir = 1;
+ name = "Gas to Mix"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"ehr" = (
/obj/structure/chair/office/dark,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -88889,6 +88221,12 @@
icon_state = "dark"
},
/area/engine/break_room)
+"evR" = (
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/engineering)
"eEV" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 4;
@@ -88972,6 +88310,22 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/hallway/primary/central)
+"fga" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green,
+/obj/machinery/door/window/northleft{
+ dir = 8;
+ icon_state = "left";
+ name = "Inner Pipe Access";
+ req_access_txt = "24"
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4;
+ level = 2
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/atmos)
"fgw" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
@@ -88989,14 +88343,35 @@
/area/hallway/secondary/entry{
name = "Arrivals"
})
+"flr" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/machinery/power/rad_collector{
+ anchored = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
+ dir = 9
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"fmg" = (
/obj/effect/spawner/window/reinforced,
/obj/effect/spawner/airlock,
/turf/simulated/floor/plating,
/area/maintenance/portsolar)
-"fnC" = (
-/turf/space,
-/area/space/nearstation)
+"fmP" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 10
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"frX" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -89045,10 +88420,6 @@
icon_state = "white"
},
/area/medical/virology)
-"fBB" = (
-/obj/structure/lattice,
-/turf/space,
-/area/space)
"fDi" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -89075,6 +88446,13 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"fHC" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 5
+ },
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"fNU" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
@@ -89172,6 +88550,11 @@
icon_state = "chapel"
},
/area/chapel/main)
+"gdM" = (
+/obj/effect/spawner/window/reinforced/plasma,
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"ged" = (
/obj/structure/sink{
dir = 8;
@@ -89193,6 +88576,17 @@
/area/toxins/xenobiology{
name = "\improper Secure Lab"
})
+"gfB" = (
+/obj/structure/window/plasmareinforced,
+/obj/machinery/power/rad_collector{
+ anchored = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/supply{
+ dir = 10
+ },
+/obj/structure/cable,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"gog" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -89200,6 +88594,22 @@
icon_state = "redfull"
},
/area/security/main)
+"gpj" = (
+/obj/machinery/status_display,
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
+"gqj" = (
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 8;
+ initialize_directions = 11;
+ level = 2
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"gsn" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -89212,6 +88622,26 @@
},
/turf/simulated/floor/plasteel,
/area/hallway/primary/aft)
+"gsr" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"gyy" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 9
+ },
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"gyR" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
@@ -89282,6 +88712,51 @@
/obj/effect/spawner/airlock/s_to_n,
/turf/simulated/floor/plating,
/area/maintenance/auxsolarstarboard)
+"gYM" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
+"gZY" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"hdL" = (
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"hfb" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
+"hgN" = (
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"hlZ" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -89303,6 +88778,12 @@
},
/turf/simulated/floor/plasteel,
/area/crew_quarters/courtroom)
+"hnC" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 5
+ },
+/turf/simulated/floor/plasteel,
+/area/atmos)
"hnL" = (
/obj/structure/chair{
dir = 8
@@ -89315,6 +88796,29 @@
/area/crew_quarters/fitness{
name = "\improper Recreation Area"
})
+"hqN" = (
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"huo" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 10
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"hxv" = (
/obj/machinery/camera{
c_tag = "Telecoms - Server Room - Aft";
@@ -89329,6 +88833,15 @@
},
/turf/simulated/floor/plasteel/dark,
/area/tcommsat/server)
+"hAg" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/northwest,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"hBn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
req_access_txt = 1
@@ -89355,6 +88868,40 @@
},
/turf/simulated/floor/plasteel,
/area/storage/primary)
+"hEA" = (
+/obj/machinery/camera/autoname{
+ dir = 4;
+ network = list("SS13")
+ },
+/obj/machinery/door_control{
+ desc = "A remote control-switch for the engineering security doors.";
+ id = "Engineering";
+ name = "Engineering Lockdown";
+ pixel_x = -24;
+ pixel_y = -6;
+ req_access_txt = "1"
+ },
+/obj/machinery/door_control{
+ id = "atmos";
+ name = "Atmospherics Lockdown";
+ pixel_x = -24;
+ pixel_y = 5;
+ req_access_txt = "1"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/unary/vent_pump{
+ dir = 4;
+ on = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "yellow"
+ },
+/area/engine/engineering)
"hEP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -89366,6 +88913,10 @@
icon_state = "chapel"
},
/area/chapel/main)
+"hHE" = (
+/obj/effect/decal/warning_stripes/southwest,
+/turf/simulated/floor/plasteel,
+/area/engine/equipmentstorage)
"hHX" = (
/obj/machinery/firealarm{
dir = 8;
@@ -89379,6 +88930,21 @@
icon_state = "neutralcorner"
},
/area/hallway/primary/aft)
+"hIG" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = 24
+ },
+/obj/machinery/computer/monitor,
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "yellow"
+ },
+/area/engine/engineering)
"hIT" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
@@ -89402,6 +88968,14 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/bluegrid,
/area/turret_protected/ai_upload)
+"hWr" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'HIGH VOLTAGE'";
+ icon_state = "shock";
+ name = "HIGH VOLTAGE"
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"hYZ" = (
/obj/machinery/atmospherics/pipe/simple/visible/universal{
dir = 4
@@ -89435,6 +89009,18 @@
/area/toxins/xenobiology{
name = "\improper Secure Lab"
})
+"ibi" = (
+/obj/effect/spawner/window/reinforced/plasma,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"ibR" = (
/obj/docking_port/stationary{
dir = 8;
@@ -89487,11 +89073,38 @@
icon_state = "green"
},
/area/hydroponics)
+"iof" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/plasteel,
+/area/engine/engineering)
"izL" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/storage/primary)
+"iAT" = (
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 8;
+ initialize_directions = 11;
+ level = 2
+ },
+/obj/machinery/camera{
+ c_tag = "Engineering Supermatter Starboard";
+ dir = 4;
+ network = list("SS13","engine")
+ },
+/obj/effect/decal/warning_stripes/northwest,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"iDw" = (
/obj/machinery/atmospherics/unary/portables_connector,
/obj/machinery/portable_atmospherics/canister/air,
@@ -89524,6 +89137,15 @@
},
/turf/simulated/floor/bluegrid,
/area/turret_protected/ai_upload)
+"iIk" = (
+/obj/effect/decal/warning_stripes/east,
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/engine/engineering)
"iMC" = (
/obj/effect/decal/warning_stripes/west,
/obj/machinery/light{
@@ -89549,6 +89171,29 @@
/area/medical/research{
name = "Research Division"
})
+"iNu" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "yellow"
+ },
+/area/engine/break_room)
+"iNI" = (
+/obj/machinery/atmospherics/pipe/manifold4w/visible,
+/turf/simulated/floor/plasteel,
+/area/atmos)
+"iSH" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/machinery/atmospherics/binary/pump{
+ dir = 8;
+ name = "Atmos to Loop"
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"iTR" = (
/obj/effect/decal/warning_stripes/south,
/obj/machinery/atmospherics/pipe/simple/visible{
@@ -89590,12 +89235,25 @@
icon_state = "dark"
},
/area/chapel/main)
+"iZY" = (
+/obj/structure/sign/pods,
+/turf/simulated/wall,
+/area/engine/mechanic_workshop)
"jap" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating,
/area/maintenance/fpmaint2{
name = "Port Maintenance"
})
+"jbk" = (
+/obj/structure/reflector/double{
+ anchored = 1;
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"jdi" = (
/obj/effect/landmark/start{
name = "Life Support Specialist"
@@ -89687,25 +89345,57 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry)
"jLP" = (
-/obj/machinery/atmospherics/unary/vent_pump,
+/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/plasteel,
/area/atmos)
-"jZt" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+"jPv" = (
+/obj/effect/decal/warning_stripes/north,
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
+"jUV" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/binary/valve{
+ dir = 4;
+ name = "Output to Waste"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"kez" = (
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
+"kkt" = (
+/obj/effect/spawner/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4;
+ level = 2
+ },
+/turf/simulated/floor/plating,
+/area/atmos)
"kmF" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/hallway/secondary/entry)
+"knc" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green,
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"koz" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -89730,6 +89420,22 @@
icon_state = "neutralcorner"
},
/area/hallway/primary/port)
+"kto" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
+/turf/space,
+/area/space/nearstation)
+"ktv" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 9;
+ tag = "icon-intact-y (NORTHWEST)"
+ },
+/turf/space,
+/area/space/nearstation)
"ktI" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
@@ -89762,6 +89468,35 @@
},
/turf/simulated/floor/bluegrid,
/area/assembly/chargebay)
+"kxf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/effect/decal/warning_stripes/northwestcorner,
+/obj/effect/decal/warning_stripes/southeastcorner,
+/turf/simulated/floor/plasteel,
+/area/engine/engineering)
+"kBa" = (
+/obj/machinery/atmospherics/binary/pump/on{
+ name = "Gas to Cooling Loop"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"kBq" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -89784,6 +89519,19 @@
icon_state = "brown"
},
/area/storage/primary)
+"kGw" = (
+/obj/machinery/door/poddoor/shutters/radiation/preopen{
+ dir = 2;
+ id_tag = "engsm";
+ name = "Radiation Chamber Shutters"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/engine/supermatter)
"kHS" = (
/obj/structure/chair/office/dark{
dir = 8
@@ -89793,6 +89541,23 @@
},
/turf/simulated/floor/wood,
/area/library)
+"kKa" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 5;
+ icon_state = "intact";
+ tag = "icon-intact (NORTHEAST)"
+ },
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
+"kLs" = (
+/obj/machinery/atmospherics/unary/portables_connector{
+ layer = 2
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"kNc" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
@@ -89810,20 +89575,20 @@
icon_state = "whiteblue"
},
/area/medical/paramedic)
-"kOI" = (
-/obj/structure/cable/yellow{
- d1 = 1;
+"kRX" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/machinery/power/rad_collector{
+ anchored = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers,
+/obj/structure/cable{
d2 = 2;
- icon_state = "1-2"
+ icon_state = "0-2"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/warning_stripes/east,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/turf/simulated/floor/plasteel,
-/area/engine/engineering)
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"kSC" = (
/obj/machinery/atmospherics/unary/portables_connector{
dir = 4
@@ -89842,12 +89607,21 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
-"kWU" = (
-/obj/machinery/atmospherics/pipe/simple/visible{
- dir = 6;
- level = 2
+"kWg" = (
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 8
+ },
+/obj/machinery/portable_atmospherics/canister/nitrogen,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/supermatter)
+"lcc" = (
+/obj/machinery/atmospherics/pipe/manifold4w/visible,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/turf/simulated/floor/plating,
/area/engine/engineering)
"lcL" = (
/obj/machinery/portable_atmospherics/canister/air,
@@ -89858,6 +89632,10 @@
/area/maintenance/aft{
name = "Aft Maintenance"
})
+"len" = (
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"lfz" = (
/obj/effect/decal/warning_stripes/west,
/obj/machinery/atmospherics/unary/vent_pump{
@@ -89893,6 +89671,27 @@
icon_state = "redfull"
},
/area/security/main)
+"lmi" = (
+/obj/structure/lattice/catwalk,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 10
+ },
+/turf/space,
+/area/space/nearstation)
+"lpU" = (
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 2
+ },
+/obj/effect/decal/warning_stripes/southeast,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"lwo" = (
+/obj/effect/decal/warning_stripes/east,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 5
+ },
+/turf/simulated/floor/plasteel,
+/area/engine/engineering)
"lCt" = (
/obj/structure/window/reinforced{
dir = 4
@@ -89913,12 +89712,51 @@
},
/turf/simulated/floor/engine,
/area/toxins/explab)
+"lGk" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"lGr" = (
+/obj/machinery/atmospherics/binary/pump{
+ dir = 8;
+ name = "Gas to Filter"
+ },
+/obj/machinery/alarm/engine{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"lIR" = (
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "green"
},
/area/hydroponics)
+"lJX" = (
+/obj/structure/window/plasmareinforced,
+/obj/machinery/power/rad_collector{
+ anchored = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/visible/supply{
+ dir = 1
+ },
+/obj/structure/cable,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
+"lOU" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan,
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"lPA" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -90013,6 +89851,27 @@
},
/turf/simulated/floor/plating,
/area/hallway/secondary/entry)
+"miB" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 5;
+ tag = "icon-intact-y (NORTHWEST)"
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"moi" = (
+/obj/machinery/atmospherics/trinary/filter/flipped{
+ dir = 1;
+ filter_type = -1
+ },
+/obj/effect/decal/warning_stripes/northeast,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"moJ" = (
/obj/structure/window/reinforced{
dir = 4
@@ -90042,6 +89901,23 @@
/area/medical/research{
name = "Research Division"
})
+"mzf" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/machinery/power/rad_collector{
+ anchored = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{
+ dir = 8;
+ initialize_directions = 11
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"mAt" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -90078,9 +89954,65 @@
/area/toxins/xenobiology{
name = "\improper Secure Lab"
})
+"mVG" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"mWL" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"mXy" = (
/turf/simulated/floor/mineral/titanium,
/area/shuttle/arrival/station)
+"mZJ" = (
+/obj/structure/reflector/single{
+ anchored = 1;
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"naP" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 2;
+ initialize_directions = 11
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"nbq" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -90142,6 +90074,24 @@
icon_state = "redfull"
},
/area/security/main)
+"nqA" = (
+/obj/machinery/hologram/holopad,
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 10
+ },
+/turf/simulated/floor/plasteel,
+/area/atmos)
+"nss" = (
+/obj/machinery/atmospherics/binary/pump{
+ dir = 4;
+ name = "Cooling Loop Bypass"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes/northwestcorner,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"ntG" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable/yellow{
@@ -90196,6 +90146,22 @@
/area/construction/hallway{
name = "\improper MiniSat Exterior"
})
+"nEQ" = (
+/obj/machinery/atmospherics/binary/pump/on{
+ dir = 1;
+ name = "Cooling Loop to Gas"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/southeast,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"nIZ" = (
/obj/docking_port/stationary{
dir = 8;
@@ -90236,6 +90202,22 @@
icon_state = "dark"
},
/area/crew_quarters/courtroom)
+"nMx" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
+/turf/space,
+/area/space/nearstation)
+"nMC" = (
+/turf/simulated/wall/r_wall,
+/area/storage/secure)
+"nRh" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"nUW" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -90292,6 +90274,22 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"ogE" = (
+/obj/machinery/door/airlock/engineering/glass{
+ name = "Supermatter Engine Room";
+ req_access_txt = "10";
+ req_one_access_txt = "0"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"ogV" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
@@ -90314,6 +90312,14 @@
/area/toxins/xenobiology{
name = "\improper Secure Lab"
})
+"ojl" = (
+/obj/machinery/atmospherics/trinary/filter/flipped{
+ dir = 1;
+ filter_type = 2
+ },
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"okl" = (
/obj/effect/landmark/start{
name = "Cook"
@@ -90345,10 +90351,6 @@
icon_state = "purplecorner"
},
/area/hallway/primary/aft)
-"oAG" = (
-/obj/effect/spawner/airlock/w_to_e,
-/turf/simulated/wall,
-/area/engine/engineering)
"oBY" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 1
@@ -90399,6 +90401,11 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"oOs" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"oOT" = (
/obj/machinery/atmospherics/unary/vent_pump{
dir = 1;
@@ -90416,6 +90423,10 @@
/area/medical/medbay2{
name = "Medbay Storage"
})
+"oTM" = (
+/obj/structure/sign/fire,
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"oUC" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -90428,6 +90439,14 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/hallway/primary/aft)
+"oWm" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"pad" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -90456,6 +90475,15 @@
/area/toxins/xenobiology{
name = "\improper Secure Lab"
})
+"pcW" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/southwest,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"pdC" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -90483,10 +90511,23 @@
/area/medical/research{
name = "Research Division"
})
+"peo" = (
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
+/turf/space,
+/area/space)
"pep" = (
/obj/effect/spawner/airlock/s_to_n,
/turf/simulated/wall,
/area/maintenance/starboard)
+"peO" = (
+/obj/machinery/atmospherics/pipe/simple/visible/yellow,
+/obj/machinery/atmospherics/binary/pump{
+ dir = 4;
+ name = "Mix to Engine"
+ },
+/turf/simulated/floor/plasteel,
+/area/atmos)
"pkf" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -90509,6 +90550,23 @@
/area/toxins/mixing{
name = "\improper Toxins Lab"
})
+"plu" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 6
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
+"pmh" = (
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 2
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"poN" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/wood,
@@ -90530,6 +90588,11 @@
/area/hallway/secondary/exit{
name = "\improper Departure Lounge"
})
+"pvv" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan,
+/obj/effect/decal/warning_stripes/southwest,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"pzX" = (
/obj/effect/decal/warning_stripes/south,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -90561,12 +90624,27 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/security/armoury)
+"pKs" = (
+/obj/machinery/atmospherics/pipe/simple/visible/universal{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"pMx" = (
/obj/effect/spawner/airlock/w_to_e,
/turf/simulated/wall,
/area/maintenance/aft{
name = "Aft Maintenance"
})
+"pNG" = (
+/obj/machinery/atmospherics/pipe/simple/visible,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"pOV" = (
/obj/effect/decal/warning_stripes/south,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -90576,6 +90654,16 @@
/area/hallway/secondary/entry{
name = "Arrivals"
})
+"pPA" = (
+/obj/machinery/light{
+ dir = 1;
+ in_use = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "vault"
+ },
+/area/engine/mechanic_workshop)
"pQx" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -90595,6 +90683,32 @@
/area/maintenance/aft{
name = "Aft Maintenance"
})
+"pRy" = (
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/camera,
+/turf/simulated/floor/engine,
+/area/engine/mechanic_workshop)
+"pSk" = (
+/obj/machinery/mecha_part_fabricator/spacepod,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "vault"
+ },
+/area/engine/mechanic_workshop)
+"pUc" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
+"pUq" = (
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 8;
+ initialize_directions = 11;
+ level = 2
+ },
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"pXI" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -90658,6 +90772,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/security/brig)
+"qpO" = (
+/turf/simulated/wall,
+/area/engine/equipmentstorage)
"qsd" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -90676,6 +90793,16 @@
},
/turf/simulated/floor/plasteel,
/area/assembly/robotics)
+"qtt" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 5;
+ icon_state = "intact";
+ tag = "icon-intact (NORTHEAST)"
+ },
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"qtw" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
@@ -90685,6 +90812,18 @@
icon_state = "neutralcorner"
},
/area/hallway/primary/aft)
+"qxn" = (
+/obj/machinery/alarm{
+ dir = 1;
+ pixel_y = -22
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"qAm" = (
/obj/structure/window/reinforced{
dir = 8
@@ -90770,6 +90909,19 @@
/area/toxins/misc_lab{
name = "\improper Research Testing Range"
})
+"qHS" = (
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/disposal{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "yellowcorner"
+ },
+/area/engine/break_room)
"qQy" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -90785,6 +90937,13 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"qWn" = (
+/obj/machinery/atmospherics/pipe/simple/visible/red{
+ dir = 2
+ },
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"qYF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5;
@@ -90792,6 +90951,17 @@
},
/turf/simulated/floor/bluegrid,
/area/turret_protected/ai_upload)
+"raV" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"rdz" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-06";
@@ -90810,6 +90980,10 @@
/area/hallway/secondary/entry{
name = "Arrivals"
})
+"riM" = (
+/obj/effect/decal/warning_stripes/northwest,
+/turf/simulated/floor/plasteel,
+/area/engine/equipmentstorage)
"rjU" = (
/obj/structure/window/reinforced{
dir = 1;
@@ -90825,6 +90999,24 @@
/area/construction/hallway{
name = "\improper MiniSat Exterior"
})
+"rlJ" = (
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ level = 2
+ },
+/obj/machinery/light{
+ dir = 2
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"rpg" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -90852,6 +91044,22 @@
},
/turf/simulated/floor/plasteel,
/area/engine/break_room)
+"rsT" = (
+/obj/machinery/atmospherics/binary/pump{
+ name = "Mix to Gas"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"rwh" = (
+/obj/machinery/power/supermatter_crystal/engine,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
"rxV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
@@ -90867,13 +91075,6 @@
icon_state = "neutralcorner"
},
/area/atmos)
-"rzO" = (
-/obj/machinery/portable_atmospherics/canister/air,
-/obj/machinery/atmospherics/unary/portables_connector{
- dir = 1
- },
-/turf/simulated/floor/plating,
-/area/engine/engineering)
"rDg" = (
/obj/structure/cable/yellow{
d1 = 4;
@@ -90901,6 +91102,19 @@
},
/turf/space,
/area/space)
+"rDF" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "yellow"
+ },
+/area/engine/break_room)
"rEw" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -90960,6 +91174,10 @@
/area/construction/hallway{
name = "\improper MiniSat Exterior"
})
+"rNt" = (
+/obj/effect/decal/warning_stripes/south,
+/turf/simulated/floor/plasteel,
+/area/engine/equipmentstorage)
"rOw" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
@@ -90989,6 +91207,18 @@
icon_state = "neutralcorner"
},
/area/hallway/primary/port)
+"rRM" = (
+/obj/effect/spawner/window/reinforced/plasma,
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"rTO" = (
/obj/docking_port/stationary{
dir = 2;
@@ -91001,6 +91231,21 @@
},
/turf/space,
/area/space)
+"rYj" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 9
+ },
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
+"rYO" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 4
+ },
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"say" = (
/obj/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -91072,6 +91317,23 @@
/area/medical/research{
name = "Research Division"
})
+"ssZ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"swl" = (
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"szt" = (
/obj/machinery/atmospherics/unary/vent_pump{
dir = 8;
@@ -91086,6 +91348,9 @@
},
/turf/simulated/floor/wood,
/area/security/vacantoffice)
+"sBY" = (
+/turf/simulated/floor/plating,
+/area/storage/secure)
"sDC" = (
/obj/docking_port/stationary/whiteship{
dir = 8;
@@ -91186,6 +91451,10 @@
},
/turf/simulated/floor/plasteel,
/area/security/brig)
+"tbK" = (
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/plasteel,
+/area/engine/equipmentstorage)
"tca" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -91210,6 +91479,13 @@
icon_state = "dark"
},
/area/chapel/main)
+"tgE" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 10
+ },
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
"thz" = (
/obj/effect/decal/warning_stripes/north,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -91225,6 +91501,37 @@
},
/turf/simulated/floor/plasteel,
/area/construction)
+"tpg" = (
+/obj/machinery/firealarm{
+ pixel_y = 29
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
+"tvk" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"tvn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9;
@@ -91234,6 +91541,12 @@
icon_state = "grimy"
},
/area/security/detectives_office)
+"tvr" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"twD" = (
/obj/structure/disposalpipe/segment{
dir = 2;
@@ -91243,6 +91556,25 @@
/area/maintenance/fpmaint2{
name = "Port Maintenance"
})
+"tAn" = (
+/obj/machinery/atmospherics/pipe/simple/visible/green{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"tEL" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -91278,6 +91610,20 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/hallway/primary/aft)
+"tSX" = (
+/obj/structure/lattice,
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/space,
+/area/space/nearstation)
+"tVw" = (
+/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
+ dir = 5
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"tWl" = (
/obj/effect/spawner/window/reinforced,
/obj/effect/spawner/airlock/e_to_w,
@@ -91285,6 +91631,20 @@
/area/maintenance/aft{
name = "Aft Maintenance"
})
+"tZI" = (
+/obj/machinery/atmospherics/unary/outlet_injector{
+ frequency = 1441;
+ icon_state = "on";
+ id = "engine-waste_out";
+ name = "engine outlet injector";
+ on = 1;
+ volume_rate = 200
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"uaQ" = (
+/turf/simulated/wall,
+/area/engine/mechanic_workshop)
"ueD" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
@@ -91380,6 +91740,13 @@
/area/maintenance/fpmaint2{
name = "Port Maintenance"
})
+"uLE" = (
+/obj/structure/reflector/single{
+ anchored = 1;
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"uMx" = (
/obj/structure/cable/yellow{
d1 = 1;
@@ -91451,6 +91818,15 @@
icon_state = "dark"
},
/area/crew_quarters/courtroom)
+"vfv" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"vgP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -91467,6 +91843,27 @@
},
/turf/space,
/area/space)
+"vjL" = (
+/obj/effect/spawner/window/reinforced/plasma,
+/turf/simulated/floor/engine,
+/area/engine/supermatter)
+"vmT" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 6;
+ icon_state = "intact";
+ tag = "icon-intact (SOUTHEAST)"
+ },
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
+"vny" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"vtP" = (
/obj/machinery/conveyor/west{
id = "garbage"
@@ -91482,6 +91879,14 @@
icon_state = "whitebluefull"
},
/area/medical/reception)
+"vwA" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"vBA" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
@@ -91493,6 +91898,16 @@
icon_state = "dark"
},
/area/bridge)
+"vCR" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"vDW" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
@@ -91550,6 +91965,27 @@
icon_state = "redcorner"
},
/area/security/brig)
+"vRY" = (
+/obj/effect/spawner/window/reinforced/plasma,
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
+"vUD" = (
+/obj/machinery/power/emitter{
+ anchored = 1;
+ dir = 1;
+ state = 2
+ },
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"vVo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -91604,6 +92040,14 @@
"vZo" = (
/turf/simulated/floor/plating,
/area/space/nearstation)
+"vZU" = (
+/obj/machinery/atmospherics/unary/thermomachine/freezer{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/engine/engineering)
"wgm" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -91621,6 +92065,13 @@
icon_state = "whiteblue"
},
/area/medical/reception)
+"wuZ" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"wvK" = (
/obj/structure/cable{
d1 = 1;
@@ -91646,6 +92097,14 @@
icon_state = "dark"
},
/area/medical/morgue)
+"wxE" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
+/obj/structure/lattice,
+/turf/space,
+/area/space/nearstation)
"wyX" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -91659,6 +92118,17 @@
/area/medical/research{
name = "Research Division"
})
+"wAP" = (
+/obj/structure/transit_tube{
+ icon_state = "D-SW";
+ tag = "icon-D-SW"
+ },
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 6
+ },
+/turf/space,
+/area/space/nearstation)
"wHZ" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/sign/securearea{
@@ -91675,6 +92145,14 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"wLN" = (
+/obj/machinery/atmospherics/trinary/filter/flipped{
+ dir = 1;
+ filter_type = -1
+ },
+/obj/effect/decal/warning_stripes/east,
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"wRS" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
@@ -91792,6 +92270,16 @@
},
/turf/simulated/floor/carpet,
/area/library)
+"xyA" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4;
+ level = 2
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/atmos)
"xyZ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/carpet,
@@ -91808,6 +92296,14 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/hallway/primary/aft)
+"xDw" = (
+/obj/effect/decal/warning_stripes/east,
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/manifold/visible/red{
+ dir = 8
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"xEi" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
@@ -91830,6 +92326,30 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"xHf" = (
+/obj/effect/decal/warning_stripes/southeast,
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/engine/engineering)
+"xHU" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/engine/engineering)
"xJS" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -91845,6 +92365,14 @@
icon_state = "neutralcorner"
},
/area/hallway/primary/central)
+"xLf" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 10
+ },
+/obj/structure/lattice,
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"xOM" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -91897,10 +92425,43 @@
icon_state = "floorgrime"
},
/area/security/permabrig)
+"xYW" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
"xZq" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/solar/starboard)
+"yaq" = (
+/obj/machinery/power/emitter{
+ anchored = 1;
+ dir = 1;
+ state = 2
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plating,
+/area/engine/engineering)
+"yeW" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'RADIOACTIVE AREA'";
+ icon_state = "radiation";
+ name = "RADIOACTIVE AREA";
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/turf/simulated/wall/r_wall,
+/area/engine/supermatter)
"yij" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -130551,23 +131112,23 @@ asI
aoG
dHr
asI
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
-axh
+cwA
+cwA
+cwA
+cwA
+cwA
+cwA
+nMC
+nMC
+nMC
+nMC
+nMC
+nMC
+aCg
+aCg
+aCg
+aCg
+aCg
bam
bam
bam
@@ -130808,23 +131369,23 @@ asJ
aoG
dHr
arr
-axh
+cwA
aHH
aIV
aJI
aJT
aLq
-aCg
+nMC
aNS
aNT
aQS
aQS
-aCg
+nMC
aWN
aYE
aZI
aYV
-bam
+aCg
bdE
bdy
beI
@@ -131065,23 +131626,23 @@ awL
ayo
aBX
asJ
-axh
+cwA
ajS
-aHa
-aIA
-aJL
+riM
+tbK
+hHE
aLp
-aCg
+nMC
aNT
aNT
aQS
aSg
-aCg
+nMC
aUL
aYD
aXx
aYU
-bam
+aCg
bfd
bdz
beJ
@@ -131322,23 +131883,23 @@ asJ
aoG
dHr
asI
-axh
+cwA
aIz
-aHg
+dom
aIw
-aJO
+rNt
aLu
-aCg
+nMC
aNU
aPl
aQT
aSh
-aCg
+nMC
aWX
aYG
aXF
aYU
-bam
+aCg
bbK
bdz
beK
@@ -131579,23 +132140,23 @@ aoG
aoG
dHr
aDa
-axh
+cwA
akP
-aHg
-ccH
+dom
+aIw
aJM
aLr
-aCg
+nMC
aNV
-aOd
-aOd
-aSi
-aCg
+sBY
+sBY
+sBY
+nMC
aST
aUK
aZM
aST
-bam
+aCg
bam
bdA
bmN
@@ -131836,18 +132397,18 @@ ayv
xGP
qQy
dgI
-axh
+cwA
aIS
aIv
aID
aJQ
aLR
-aCg
-aCg
+nMC
+nMC
bXu
bXu
-aCg
-aCg
+nMC
+nMC
aVg
aYQ
aXQ
@@ -132093,12 +132654,12 @@ aoG
aoG
aBZ
axh
-axh
-aFR
+cwA
+qpO
aCM
aJR
aCM
-aFR
+qpO
aFR
aPK
aHa
@@ -132349,7 +132910,7 @@ buC
bZJ
asJ
aBW
-axh
+aCg
aEA
aGc
aIA
@@ -132606,13 +133167,13 @@ aoG
aoG
aoG
dgE
-axh
+aCg
aEA
aHg
aHc
aIB
-aMF
-aLt
+ccH
+ccH
ccH
ccH
aPo
@@ -132863,20 +133424,20 @@ ayo
ayr
atA
aCa
-axh
+aCg
aFM
-aHg
+jPv
bCj
aMX
-aLs
-kOI
-jZt
-aOv
+aPp
+aPp
+aPp
+aPp
aPp
aSE
-jZt
+aPp
aUR
-jZt
+aPp
aZc
ccz
baw
@@ -133118,11 +133679,11 @@ asJ
asJ
aoG
aAI
-axh
+aCg
aEx
-axh
+aCg
aGb
-aHg
+kxf
bAL
aIF
aJU
@@ -133130,13 +133691,13 @@ aLU
aQR
aOg
aUh
-aSn
-aVN
+iIk
+baB
aWp
aVh
aYW
-ccH
-aJO
+lwo
+xHf
bcq
aFR
bho
@@ -133152,7 +133713,7 @@ bsC
bqS
bxm
bjN
-bAO
+buz
bCM
bCM
bCM
@@ -133375,26 +133936,26 @@ avD
aoG
aoG
azs
-axh
+aCg
aEy
aEz
-aFN
aHg
-bAL
-aIF
-aJZ
+iof
aCg
+vRY
+aJZ
+aJb
aCg
alQ
-aCg
+aJb
aPL
+aJb
aCg
aCg
-aJZ
aZe
-ccH
-baA
-bat
+dMG
+vRY
+aCg
aFR
aFR
aFR
@@ -133634,32 +134195,32 @@ ayN
ayI
amk
aCd
-aIA
aEE
aPn
-bAL
-aIF
+iof
+aCg
+hAg
aJV
-aCg
-aQZ
-aTl
-aUF
+len
+len
+len
+len
bEL
-aWb
-aCg
-aVi
+len
+len
+len
aZd
-ccH
-aQU
-aqe
-aqv
-aFR
+vny
+pcW
+aCg
ayE
aAO
aHw
-baE
+hEA
bhZ
-bnz
+baE
+iNu
+qHS
dfz
bqT
bsD
@@ -133903,22 +134464,22 @@ aTJ
aPs
aVs
aWg
-aPa
+knc
aXs
aZh
bao
bbC
-bcG
-bcp
-aFR
+aCg
azv
aAW
-aIu
+aQF
bck
+aIu
+rDF
bgE
bnC
dfB
-bpn
+dgL
bpn
aZo
bxd
@@ -134149,33 +134710,33 @@ azn
amk
aCf
aDw
-aGe
-aGd
-aIW
-aLn
+baB
+aSn
+aJb
+aLw
aMQ
aNd
-aRa
-aOc
+aNd
+kez
aPt
aRb
aTR
-aNd
+yeW
aXo
aZg
aZO
-baB
-bcC
-bft
-aFR
+miB
+aCg
azJ
aHl
bfr
-bjO
-bhZ
-bnD
+hIG
+aFR
+uaQ
+bli
+bli
dfA
-dgL
+iZY
bvt
bpn
bqU
@@ -134403,34 +134964,34 @@ avI
amk
amk
bqV
-bZV
cbc
+aCg
aEn
aCg
aHi
-aJo
-aLE
-aLE
aCg
-aRr
-aOd
+aLw
+aMQ
+kWg
+kWg
+kez
aPu
aRc
-aTR
+lGr
+kez
+aLE
+aLE
+ebM
+iSH
aCg
-aLE
-aLE
-aLE
-aHi
-aCg
-aEn
aFR
aFR
aFR
aFR
-aFR
-aFR
-bli
+uaQ
+pSk
+dfg
+dfg
blj
dgO
bjN
@@ -134660,36 +135221,36 @@ avH
axM
amk
aAK
-bZV
+cbc
aCh
aEd
-aCg
+plu
aFY
aOa
-aOa
-aOa
-aDL
+rsT
+rlJ
+gpj
aRa
aOe
aPv
aRd
-aTR
-aDL
-aOa
-bMO
-aOa
+huo
+aOe
+tVw
+gpj
+tAn
ccu
aCg
bfz
-aTR
-beU
-bgG
-aCh
+pUc
+pUc
+kKa
+anq
deW
-dff
-dfm
+dfg
+dfg
bsZ
-bnt
+anq
bnt
bxf
jdX
@@ -134917,36 +135478,36 @@ awU
ayz
amk
aCb
-axh
-aCg
-aEn
-aCg
aCg
+kLs
+pNG
+lcc
+vZU
+aJb
+aLw
aDL
-aDL
-aDL
-aDL
+kGw
aRs
aTK
aRf
aSo
aTV
-aDL
-aDL
-aDL
-aDL
-aCg
-aCg
-aEn
-aCg
-aCg
-aOd
+mzf
+dqm
+kGw
+mVG
+ccu
aCg
+aKT
+bfz
+pUc
+rYj
+anq
avP
dfh
dft
dfI
-bnt
+anq
bvu
bly
bxg
@@ -135174,31 +135735,31 @@ amk
amk
amk
azy
-bZV
+cbc
aCD
-aES
-abq
+pNG
+pmh
aFZ
-arA
+aJb
aMI
-aDL
-aDL
-aDL
-aDL
-aUK
-aDL
-aDL
-aDL
-aDL
-beZ
-arA
-aaa
-abq
-aGT
-bdG
-aCg
-aOd
+naP
+kGw
+ebV
+lJX
+aRf
+rwh
+aTV
+kRX
+ebV
+kGw
+tvk
+xHU
aCg
+aKT
+tgE
+pUc
+kKa
+anq
dfa
dfg
dfq
@@ -135218,7 +135779,7 @@ bMd
bNa
bPz
bRf
-bSR
+iNI
bUv
bSP
bSP
@@ -135431,33 +135992,33 @@ ape
arr
ayx
azy
-axh
-aDf
-aDi
-abq
-abq
-aJx
-aLN
-aLN
-aLN
-aLN
-aLN
-aUM
-aLN
-aLN
-aLN
-aLN
+aCg
+kLs
+pNG
+lcc
+vZU
+aJb
+aLw
aLN
+kGw
+ebV
+gfB
+aRf
+aSo
+aTV
+flr
+ebV
+kGw
dea
-abq
-abq
-aDi
-aDf
+ccu
aCg
-aOd
-aCg
-dfc
-dfg
+aKT
+bfz
+pUc
+rYj
+anq
+anq
+pPA
dfx
dfK
anq
@@ -135475,8 +136036,8 @@ bMe
bNc
bIp
bIn
-bSS
-bGG
+nqA
+hnC
bYk
bYm
bYk
@@ -135688,32 +136249,32 @@ ans
ans
asI
azy
-axh
+aCg
aDf
aDi
-aDi
-aaa
+fmP
+aFY
+aOa
+edK
+dXb
+gpj
+kez
+kez
+oTM
+vjL
+hWr
+kez
+kez
+gpj
aJt
-arA
-arA
-arA
-arA
-arA
-arA
-arA
-arA
-arA
-arA
-arA
-aJt
-aaa
-aDi
-aDi
-aDf
-aCg
-aOd
-aCg
-dfb
+kBa
+gdM
+gyy
+xLf
+qtt
+vmT
+qtt
+anq
dfj
dfu
dfJ
@@ -135733,7 +136294,7 @@ bNa
bPA
bRg
bRg
-bRg
+peO
bVS
bRg
bRg
@@ -135945,33 +136506,33 @@ arT
ans
azr
azy
-axh
-aDh
-aDj
-aFS
-abq
-aJt
-arA
-aJW
-aaa
-aaa
-aJW
-aaa
-aaa
-aaa
-aaa
-aJW
-arA
-aJt
-abq
-baG
-bbU
-bhA
aCg
-aOd
aCg
-dfd
-dfk
+aCg
+aCg
+aHi
+aCg
+gsr
+aJW
+pUq
+lOU
+gqj
+pvv
+oOs
+iAT
+vwA
+fHC
+len
+nss
+ccu
+aJb
+abq
+bfz
+wxE
+wxE
+gyy
+anq
+pRy
dfy
btc
anq
@@ -135990,7 +136551,7 @@ bNg
bQR
bSs
bUt
-bUw
+fga
bXj
bYc
bZK
@@ -136203,31 +136764,31 @@ axd
aGW
bal
axh
-aDf
-aWz
-aEF
-aaa
+axh
+abq
+aef
+tZI
aJJ
aPy
-aaa
-aaa
-aaa
-abq
-aaa
+xDw
+wLN
+qWn
+wLN
+lpU
aRe
-aaa
-aaa
-aaa
+moi
+qWn
+ojl
ddZ
bap
-aaa
-bax
-aDi
-aDf
-aCg
-aOd
-aCg
-asX
+nEQ
+gdM
+kKa
+tgE
+wxE
+wxE
+qtt
+anq
dfk
deZ
bkV
@@ -136247,7 +136808,7 @@ bNe
bPC
bRi
bSU
-bRi
+xyA
bPC
bRi
bSU
@@ -136460,31 +137021,31 @@ ayA
azu
asJ
axh
-aDk
-aEW
-aDi
-aaa
-aJt
-arA
-aaa
-aaa
+axh
abq
-abq
-abq
-abq
-abq
-aaa
-aaa
-arA
-aJt
-aaa
-aDi
-aCD
-aFk
+aef
+aef
aCg
-aOd
+rRM
+ogE
+aJb
aCg
-dfe
+aCg
+aJb
+aJb
+aJb
+aCg
+aCg
+aJb
+hqN
+ibi
+aCg
+aKT
+bfz
+wxE
+wxE
+gyy
+anq
dfk
aoN
dgK
@@ -136504,7 +137065,7 @@ bzL
bHG
bzL
bIt
-bzL
+kkt
bHG
bzL
bIt
@@ -136718,50 +137279,50 @@ buC
aCc
axh
axh
-aDf
-aDi
-aaa
-aJt
-arA
-aaa
-aaa
-abq
-aOm
-aRh
-aSp
abq
abq
-aJW
-arA
-aJt
-aaa
-aDi
-aDf
-aCg
+abq
aCg
+mWL
+jUV
aOd
+gYM
+nRh
+nRh
+aSp
+jbk
+nRh
+gYM
+aOd
+gZY
+hgN
aCg
+rYO
+xLf
+vfv
+vfv
+qtt
anq
dfl
dfl
azD
anq
-bsL
+wAP
bwF
bsN
-aaa
-abq
-abq
-abq
-abq
-bIu
-abq
-bMj
-abq
-bIu
-abq
-bMj
-abq
+peo
+cmL
+cmL
+cmL
+cmL
+nMx
+cmL
+kto
+cmL
+nMx
+cmL
+kto
+ktv
bIu
abq
bMj
@@ -136975,35 +137536,35 @@ cbX
asJ
arr
axh
-aFa
-aDi
-abq
-aJJ
-aPy
aaa
aaa
-abq
-aPd
-csp
-aTI
-abq
aaa
-aaa
-ddZ
-bap
-aaa
-aDi
-bfB
aCg
-azM
-aOd
+tpg
+lGk
+raV
+nRh
+nRh
+nRh
+nRh
+nRh
+nRh
+nRh
+oWm
+ssZ
+qxn
aCg
+rYO
+vmT
+vfv
+vfv
+gyy
anq
abq
abq
abq
anq
-abq
+bIu
bwL
abq
abq
@@ -137231,36 +137792,36 @@ bnI
asJ
asJ
axh
+axh
+aaa
+aaa
+aaa
aCg
-aDf
-aDi
-abq
-aJt
-arA
-aJW
+mWL
+pKs
aLx
-abq
-aOq
-aSk
-aTG
-abq
-aaa
-aaa
-arA
-aJt
-abq
-aDi
-aDf
+nRh
+nRh
+nRh
+aSp
+nRh
+nRh
+nRh
+yaq
+xYW
+hfb
aCg
-aCg
-kWU
-rzO
-aDL
+aKT
+tgE
+wxE
+wxE
+qtt
+aaa
aaa
aaa
aaa
abq
-aaa
+bIu
bwL
aaa
aaa
@@ -137488,36 +138049,36 @@ axh
azf
dAH
axh
-aCD
-aFk
-aDi
-aaa
-aJt
-arA
aaa
aaa
-abq
-abq
-abq
-abq
-abq
aaa
aaa
-arA
-aJt
-aaa
-aDi
-aDm
-bdG
aCg
-bjT
-aFR
-aFR
+tvr
+vCR
+hdL
+aOd
+aOd
+uLE
+aCg
+mZJ
+aOd
+aOd
+vUD
+wuZ
+swl
+aCg
+aKT
+bfz
+wxE
+wxE
+gyy
aaa
aaa
aaa
-abq
aaa
+aaa
+bIu
bwL
aaa
aaa
@@ -137745,36 +138306,36 @@ aoG
aoG
asJ
uJn
-aDf
-aWz
-aEG
aaa
-aJJ
-aPy
-aaa
-aaa
-aaa
-aOj
aaa
abq
-aaa
-aaa
-aaa
-ddZ
-bap
-aaa
-aDi
-aDi
-aDf
+abq
aCg
-aOd
-oAG
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+aCg
+evR
+aCg
+aKT
+tgE
+wxE
+wxE
+qtt
aaa
aaa
aaa
aaa
-abq
-abq
+aaa
+tSX
bwM
abq
abq
@@ -138002,36 +138563,36 @@ aoG
aoG
asJ
axh
-aDl
-aDj
-aFS
abq
-aJt
-arA
-aJW
+abd
+abd
aaa
aaa
aaa
aaa
-aJW
-aaa
-aaa
-aJW
-arA
-aJt
abq
+aaa
+aaa
+aaa
+aaa
+abq
+aaa
+aaa
+abq
+aef
+lmi
baG
-bbU
+rYO
bhA
-aCg
-aOd
-aFR
+xLf
+gyy
+rYO
aaa
-fnC
-fnC
-abq
-abq
aaa
+aaa
+aaa
+abq
+bIu
bwU
aaa
abq
@@ -138259,36 +138820,36 @@ aaa
aoG
asJ
axh
-aDf
-aDi
-aDi
aaa
-aJt
-arA
-arA
-aTM
-arA
-arA
-aTM
-arA
-arA
-aTM
-arA
-arA
-aJt
+abd
+bre
+bre
+aaa
+aaa
+aaa
abq
-aDi
-aDi
-aDf
-aCg
-aOd
-aFR
aaa
aaa
aaa
aaa
abq
aaa
+aaa
+abq
+aaa
+aaa
+bIu
+tgE
+pUc
+pUc
+pUc
+rYj
+aaa
+aaa
+aaa
+aaa
+aaa
+bIu
bwL
aaa
abq
@@ -138516,36 +139077,36 @@ aaa
abq
aef
aCj
-aDm
-aFm
-aDC
-aWA
-aKa
-aLN
-aLN
-aPg
-aLN
-aLN
-aPg
-aLN
-aLN
-aPg
-aLN
-aLN
-dec
-aWA
-bdp
-aFm
-aFk
-aNd
-aef
-abq
-abq
-abq
-fBB
-fBB
-abq
aaa
+abd
+abd
+bre
+abd
+abq
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+bdp
+cmL
+cmL
+cmL
+cmL
+cmL
+cmL
+cmL
+cmL
+cmL
+cmL
+ktv
bwL
aaa
abq
@@ -138772,32 +139333,32 @@ abq
abq
abq
aef
+axh
+aaa
+aaa
+abd
+abd
+abd
+aaa
+abd
+bre
bre
-aCg
-aDn
-aGT
-aEi
aWA
+bre
+bre
+bre
+bre
aWA
-aIf
-aIf
-aWA
-aWA
-aIf
-aWA
-aWA
-aIf
-aIf
-aWA
-aWA
-bbI
-aES
-aDn
-aCg
-aCg
-aef
-aaa
+bre
+bre
+arB
aaa
+arB
+abd
+arB
+abd
+abd
+abd
aaa
aaa
aaa
@@ -139030,34 +139591,34 @@ aaa
aaa
aaa
abq
-abq
-aCg
-aCg
-aGT
-aKp
-aLO
-aKp
-aKp
-aKp
-aTO
-aLO
-aKp
-aKp
-aKp
-aKp
-aLO
-aKp
-aES
-aCg
-aCg
-abq
-abq
aaa
aaa
aaa
aaa
aaa
aaa
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+arB
+bFb
+arB
+arB
+arB
+abq
+arB
+bre
+aWA
+bre
+bre
+abd
+aaa
+aaa
+aaa
abq
aaa
bwL
@@ -139288,33 +139849,33 @@ aaa
aaa
aaa
aaa
-abq
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-aCg
-abq
-aaa
-abf
aaa
aaa
aaa
aaa
aaa
aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+arB
+abd
+arB
+abd
+abd
+abd
+aaa
+aaa
+aaa
abq
aaa
bwL
@@ -139546,23 +140107,23 @@ aaa
aaa
aaa
aaa
-aDo
-aDo
-aDo
-aDo
-aNd
-aDo
-aDo
-aDo
-aDo
-aDo
-aDo
-aDo
-aNd
-aDo
-aDo
-aDo
-aDo
+aaa
+aaa
+aaD
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+abq
abq
aaa
abq
@@ -139803,22 +140364,22 @@ aaa
aaa
aaa
aaa
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
-abq
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
+aaa
abq
abq
aaa
@@ -140064,15 +140625,15 @@ aaa
aaa
aaa
aaa
-abq
-aaa
-aaa
-abq
aaa
aaa
aaa
aaa
-abq
+aaa
+aaa
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -140321,7 +140882,6 @@ aaa
aaa
aaa
aaa
-abq
aaa
aaa
aaa
@@ -140329,7 +140889,8 @@ aaa
aaa
aaa
aaa
-abq
+aaa
+aaa
aaa
aaa
aaa
@@ -140578,7 +141139,6 @@ aaa
aaa
aaa
aaa
-abq
aaa
aaa
aaa
@@ -140586,7 +141146,8 @@ aaa
aaa
aaa
aaa
-abq
+aaa
+aaa
aaa
aaa
aaa
@@ -140843,7 +141404,7 @@ aaa
aaa
aaa
aaa
-abq
+aaa
aaa
aaa
aaa
@@ -141605,7 +142166,7 @@ aaa
aaa
aaa
aaa
-aaD
+aaa
aaa
aaa
aaa
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
index 1be71d3b8a8..210d381f45e 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
@@ -132,7 +132,7 @@
/area/ruin/powered/beach)
"ax" = (
/obj/machinery/disco/immobile,
-/turf/simulated/floor/light/colour_cycle,
+/turf/simulated/floor/light,
/area/ruin/powered/beach)
"ay" = (
/obj/machinery/door/airlock/sandstone{
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
deleted file mode 100644
index 93415236e34..00000000000
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
+++ /dev/null
@@ -1,9161 +0,0 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"aa" = (
-/turf/template_noop,
-/area/template_noop)
-"ab" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ac" = (
-/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"ad" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1449;
- master_tag = "syndicate_base_virology";
- name = "interior access button";
- pixel_x = 25;
- pixel_y = -25;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ae" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"af" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ag" = (
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ah" = (
-/obj/structure/table/wood,
-/obj/machinery/chem_dispenser/beer/upgraded{
- dir = 1
- },
-/obj/structure/sign/barsign{
- pixel_y = -32;
- req_access = null;
- req_access_txt = "0"
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ai" = (
-/obj/structure/table/wood,
-/obj/machinery/chem_dispenser/soda/upgraded{
- dir = 1
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"aj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/medical/syndicate_access,
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ak" = (
-/obj/machinery/vending/boozeomat/syndicate_access,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"al" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/medical/syndicate_access,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"am" = (
-/obj/effect/decal/cleanable/dirt,
-/mob/living/carbon/human/monkey{
- faction = list("neutral","syndicate")
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"an" = (
-/mob/living/carbon/human/monkey{
- faction = list("neutral","syndicate")
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 5
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ao" = (
-/mob/living/carbon/human/monkey{
- faction = list("neutral","syndicate")
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 10
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ap" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"aq" = (
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"ar" = (
-/obj/effect/decal/cleanable/dirt,
-/mob/living/carbon/human/monkey{
- faction = list("neutral","syndicate")
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"as" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"at" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/poddoor{
- id_tag = "lavalandsyndi_chemistry"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"au" = (
-/obj/structure/bed/roller,
-/obj/machinery/iv_drip,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/mob/living/carbon/human/monkey{
- faction = list("neutral","syndicate")
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"av" = (
-/obj/machinery/light/small,
-/obj/structure/bed/roller,
-/obj/machinery/iv_drip,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/mob/living/carbon/human/monkey{
- faction = list("neutral","syndicate")
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"aw" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"ax" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 1;
- icon_state = "pipe-c"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ay" = (
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_north_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/obj/structure/fans/tiny,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"az" = (
-/obj/machinery/embedded_controller/radio/airlock/access_controller{
- frequency = 1449;
- id_tag = "syndicate_base_west_south";
- pixel_x = -25;
- req_access_txt = "150";
- tag_exterior_door = "syndicate_base_west_south_exterior";
- tag_interior_door = "syndicate_base_west_south_interior"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aA" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/sign/fire{
- pixel_x = 32
- },
-/obj/structure/closet/emcloset/anchored,
-/obj/item/tank/internals/emergency_oxygen/engi,
-/obj/item/flashlight/seclite,
-/obj/item/clothing/mask/gas,
-/obj/structure/sign/vacuum{
- pixel_x = 0;
- pixel_y = 32
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aB" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_north_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aC" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_north_exterior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1449;
- master_tag = "syndicate_base_west_south";
- name = "interior access button";
- pixel_x = 25;
- pixel_y = 25;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aE" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aF" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"aG" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_south_exterior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aH" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aI" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical{
- frequency = 1449;
- id_tag = "syndicate_base_virology_interior";
- locked = 1;
- name = "Virology Lab Interior Airlock";
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"aJ" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical{
- frequency = 1449;
- id_tag = "syndicate_base_virology_exterior";
- locked = 1;
- name = "Virology Lab Exterior Airlock";
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aK" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/access_button{
- command = "cycle_exterior";
- frequency = 1449;
- master_tag = "syndicate_base_virology";
- name = "exterior access button";
- pixel_x = -25;
- pixel_y = 25;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aL" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"aM" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/chem_dispenser/upgraded,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"aN" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/caution/stand_clear{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1449;
- master_tag = "syndicate_base_south";
- name = "interior access button";
- pixel_x = 25;
- pixel_y = -25;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aO" = (
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_south_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/obj/structure/fans/tiny,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aP" = (
-/obj/structure/sign/vacuum{
- pixel_x = -32
- },
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/embedded_controller/radio/airlock/access_controller{
- frequency = 1449;
- id_tag = "syndicate_base_south";
- pixel_x = 25;
- req_access_txt = "150";
- tag_exterior_door = "syndicate_base_south_exterior";
- tag_interior_door = "syndicate_base_south_interior"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aQ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aR" = (
-/obj/structure/sign/xeno_warning_mining{
- pixel_x = -32
- },
-/obj/structure/sign/fire{
- pixel_x = 32
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aS" = (
-/obj/machinery/access_button{
- command = "cycle_exterior";
- frequency = 1449;
- master_tag = "syndicate_base_south";
- name = "exterior access button";
- pixel_x = 20;
- pixel_y = 21;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"aT" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1449;
- master_tag = "syndicate_base_west_north";
- name = "interior access button";
- pixel_x = 25;
- pixel_y = -8;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aU" = (
-/obj/machinery/embedded_controller/radio/airlock/access_controller{
- frequency = 1449;
- id_tag = "syndicate_base_west_north";
- pixel_x = -25;
- req_access_txt = "150";
- tag_exterior_door = "syndicate_base_west_north_exterior";
- tag_interior_door = "syndicate_base_west_north_interior"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aV" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/sign/fire{
- pixel_x = 32
- },
-/obj/structure/closet/emcloset/anchored,
-/obj/item/tank/internals/emergency_oxygen/engi,
-/obj/item/flashlight/seclite,
-/obj/item/clothing/mask/gas,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/vacuum{
- pixel_x = 0;
- pixel_y = -32
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aW" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi_arrivals";
- name = "Arrivals Blast Door Control";
- pixel_y = -26;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"aX" = (
-/obj/effect/turf_decal/caution/red{
- dir = 1
- },
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/disposalpipe/segment{
- dir = 2;
- icon_state = "pipe-c"
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"aY" = (
-/obj/structure/fans/tiny,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_north_exterior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"aZ" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_south_exterior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"ba" = (
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_south_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/obj/structure/fans/tiny,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"bb" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_west_south_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"bc" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/mapping_helpers/no_lava,
-/obj/machinery/access_button{
- command = "cycle_exterior";
- frequency = 1449;
- master_tag = "syndicate_base_west_north";
- name = "exterior access button";
- pixel_x = -21;
- pixel_y = 21;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"bd" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/embedded_controller/radio/airlock/access_controller{
- frequency = 1449;
- id_tag = "syndicate_base_virology";
- pixel_x = -25;
- req_access_txt = "150";
- tag_exterior_door = "syndicate_base_virology_exterior";
- tag_interior_door = "syndicate_base_virology_interior"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"be" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/power/apc/syndicate{
- dir = 1;
- name = "Engineering APC";
- pixel_y = 24
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 8;
- icon_state = "0-8"
- },
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bf" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/door/airlock/glass{
- frequency = 1449;
- id_tag = "syndicate_base_incinerator_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1449;
- master_tag = "syndicate_base_incinerator";
- name = "interior access button";
- pixel_x = -25;
- pixel_y = 0;
- req_access_txt = "150"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bg" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bh" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bi" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/atmospherics/binary/pump{
- name = "Incinerator Input"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bj" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/door/airlock/glass{
- frequency = 1449;
- id_tag = "syndicate_base_incinerator_exterior";
- locked = 1;
- req_access_txt = "150"
- },
-/obj/machinery/access_button{
- command = "cycle_exterior";
- frequency = 1449;
- master_tag = "syndicate_base_incinerator";
- name = "exterior access button";
- pixel_x = -25;
- pixel_y = 0;
- req_access_txt = "150"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bk" = (
-/obj/structure/rack,
-/obj/item/flashlight{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/flashlight,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bl" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bm" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/turf_decal/caution/stand_clear{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1449;
- master_tag = "syndicate_base_east";
- name = "interior access button";
- pixel_x = 25;
- pixel_y = 25;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bn" = (
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_east_interior";
- locked = 1;
- req_access_txt = "150"
- },
-/obj/structure/fans/tiny,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bo" = (
-/obj/structure/sign/vacuum{
- pixel_y = -32
- },
-/obj/machinery/light/small,
-/obj/machinery/embedded_controller/radio/airlock/access_controller{
- frequency = 1449;
- id_tag = "syndicate_base_east";
- pixel_x = 0;
- pixel_y = 25;
- req_access_txt = "150";
- tag_exterior_door = "syndicate_base_east_exterior";
- tag_interior_door = "syndicate_base_east_interior"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bp" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- frequency = 1449;
- id_tag = "syndicate_base_east_exterior";
- locked = 1;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bq" = (
-/obj/machinery/access_button{
- command = "cycle_exterior";
- frequency = 1449;
- master_tag = "syndicate_base_east";
- name = "exterior access button";
- pixel_x = -21;
- pixel_y = 21;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"br" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/trinary/mixer/flipped{
- dir = 8;
- node1_concentration = 0.2;
- node2_concentration = 0.8;
- on = 1;
- target_pressure = 4500
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bs" = (
-/obj/machinery/air_sensor{
- frequency = 1442;
- id_tag = "syndie_lavaland_n2_sensor"
- },
-/turf/simulated/floor/engine/n2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bt" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/turf/simulated/floor/engine/n2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bu" = (
-/obj/machinery/atmospherics/unary/vent_pump/siphon/on{
- dir = 8;
- frequency = 1442;
- id_tag = "syndie_lavaland_n2_out";
- name = "nitrogen out"
- },
-/turf/simulated/floor/engine/n2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bv" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/effect/mapping_helpers/no_lava,
-/obj/machinery/access_button{
- command = "cycle_exterior";
- frequency = 1449;
- master_tag = "syndicate_base_west_south";
- name = "exterior access button";
- pixel_x = -21;
- pixel_y = -21;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"bw" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/structure/bookcase/random,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"bx" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/turretid/lethal{
- ailock = 1;
- check_synth = 0;
- control_area = "Syndicate Lavaland Primary Hallway";
- dir = 1;
- faction = "syndicate";
- name = "Base turret controls";
- pixel_y = 30;
- req_access = null;
- req_access_txt = "150";
- syndicate = 1
- },
-/turf/simulated/floor/redgrid,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"by" = (
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bz" = (
-/obj/machinery/atmospherics/pipe/simple/visible/cyan{
- dir = 6;
- initialize_directions = 6;
- level = 2
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bA" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/visible/cyan{
- dir = 4;
- level = 2
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bB" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/atmospherics/pipe/simple/visible/cyan{
- dir = 4;
- level = 2
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bC" = (
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bD" = (
-/obj/machinery/atmospherics/pipe/simple/visible/universal,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bE" = (
-/obj/machinery/atmospherics/pipe/simple/visible/cyan,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bF" = (
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/visible/supply{
- dir = 5
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/manifold/visible/supply,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bH" = (
-/obj/machinery/atmospherics/pipe/simple/visible/cyan,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bI" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"bJ" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/manifold/visible/cyan,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bK" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/visible/cyan{
- dir = 4;
- level = 2
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/manifold/visible/yellow{
- dir = 8;
- level = 2
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bM" = (
-/obj/effect/turf_decal/stripes/corner,
-/obj/machinery/light/small,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/binary/pump{
- dir = 8;
- name = "Plasma to Incinerator"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bN" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/visible/yellow{
- dir = 10;
- level = 2
- },
-/obj/structure/reagent_dispensers/fueltank,
-/obj/item/clothing/head/welding,
-/obj/item/weldingtool/largetank,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bO" = (
-/obj/machinery/ignition_switch{
- id = "syndicate_base_incinerator";
- pixel_x = 6;
- pixel_y = -24
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/canister,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/embedded_controller/radio/airlock/access_controller{
- frequency = 1449;
- id_tag = "syndicate_base_incinerator";
- pixel_x = -6;
- pixel_y = -25;
- req_access_txt = "150";
- tag_exterior_door = "syndicate_base_incinerator_exterior";
- tag_interior_door = "syndicate_base_incinerator_interior"
- },
-/obj/machinery/atmospherics/pipe/simple/visible/yellow,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bP" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/atmospherics/pipe/simple/visible/yellow,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bQ" = (
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"bR" = (
-/obj/machinery/optable,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"bS" = (
-/obj/machinery/vending/toyliberationstation{
- req_access_txt = "150"
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bT" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"bU" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi";
- name = "Syndicate Experimentation Lockdown Control";
- pixel_y = 26;
- req_access_txt = "150"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"bV" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel/white/corner{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"bW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"bX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"bY" = (
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"bZ" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ca" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/visible/yellow{
- dir = 6;
- level = 2
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cb" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"cc" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"cd" = (
-/obj/machinery/light/small,
-/obj/structure/extinguisher_cabinet{
- pixel_y = -29
- },
-/obj/structure/cable/yellow,
-/obj/machinery/power/apc/syndicate{
- dir = 4;
- name = "Medbay APC";
- pixel_x = 24
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"ce" = (
-/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"cg" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/turf/simulated/floor/engine/n2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"ch" = (
-/obj/machinery/air_sensor{
- frequency = 1442;
- id_tag = "syndie_lavaland_o2_sensor"
- },
-/turf/simulated/floor/engine/o2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"ci" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/turf/simulated/floor/engine/o2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cj" = (
-/obj/machinery/atmospherics/unary/vent_pump/siphon/on{
- dir = 8;
- frequency = 1442;
- id_tag = "syndie_lavaland_o2_out";
- name = "oxygen out"
- },
-/turf/simulated/floor/engine/o2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"ck" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/simulated/floor/engine/o2,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cl" = (
-/obj/machinery/atmospherics/unary/vent_pump/siphon/on{
- dir = 1;
- frequency = 1442;
- id_tag = "syndie_lavaland_tox_out";
- name = "toxin out"
- },
-/turf/simulated/floor/engine/plasma,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cm" = (
-/obj/machinery/air_sensor{
- frequency = 1442;
- id_tag = "syndie_lavaland_tox_sensor"
- },
-/turf/simulated/floor/engine/plasma,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cn" = (
-/obj/machinery/portable_atmospherics/canister/toxins,
-/turf/simulated/floor/engine/plasma,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"co" = (
-/obj/machinery/light/small,
-/turf/simulated/floor/engine/plasma,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cp" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/igniter{
- id = "syndicate_base_incinerator"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cq" = (
-/obj/machinery/atmospherics/unary/outlet_injector/on{
- dir = 1;
- id = "syndie_lavaland_inc_in"
- },
-/obj/structure/sign/vacuum/external{
- pixel_y = -32
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cr" = (
-/obj/machinery/door/poddoor{
- id_tag = "lavalandsyndi_incineratorinput"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cs" = (
-/obj/structure/cable,
-/obj/structure/cable{
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/machinery/power/compressor{
- comp_id = "syndie_lavaland_incineratorturbine";
- dir = 1;
- luminosity = 2
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"ct" = (
-/obj/structure/cable,
-/obj/machinery/power/turbine{
- dir = 2;
- luminosity = 2
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cu" = (
-/obj/machinery/door/poddoor{
- id_tag = "lavalandsyndi_incineratoroutput"
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"cA" = (
-/obj/structure/table/reinforced,
-/obj/item/clothing/glasses/science,
-/obj/item/clothing/glasses/science,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"cG" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/chem_master,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dc" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"di" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"do" = (
-/obj/structure/closet/secure_closet/medical1{
- req_access = null;
- req_access_txt = "150"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/box/beakers/bluespace,
-/obj/item/storage/box/beakers/bluespace,
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"du" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi_chemistry";
- name = "Chemistry Blast Door Control";
- pixel_y = 26;
- req_access_txt = "150"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dv" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/chem_heater,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dw" = (
-/obj/structure/chair/office/light{
- dir = 1
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/turf_decal/stripes/line,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dx" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/structure/closet/crate,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dy" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"dA" = (
-/obj/structure/closet/l3closet,
-/obj/machinery/power/apc/syndicate{
- dir = 8;
- name = "Chemistry APC";
- pixel_x = -24
- },
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dB" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dC" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dE" = (
-/obj/structure/table/glass,
-/obj/item/stack/sheet/mineral/plasma{
- amount = 5;
- pixel_x = -2;
- pixel_y = 6
- },
-/obj/item/stack/sheet/mineral/plasma{
- amount = 5;
- pixel_y = 2
- },
-/obj/item/stack/sheet/mineral/plasma{
- amount = 5;
- pixel_x = 2;
- pixel_y = -2
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/reagent_containers/glass/bottle/charcoal{
- pixel_x = 6
- },
-/obj/item/reagent_containers/glass/bottle/epinephrine,
-/turf/simulated/floor/plasteel/white/corner{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dG" = (
-/obj/structure/lattice/catwalk,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
-/area/lavaland/surface/outdoors)
-"dI" = (
-/obj/structure/table/glass,
-/obj/machinery/reagentgrinder{
- pixel_y = 5
- },
-/obj/item/reagent_containers/glass/beaker/large,
-/turf/simulated/floor/plasteel/white/side{
- dir = 5
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dK" = (
-/obj/effect/turf_decal/box/white/corners{
- dir = 1
- },
-/obj/structure/closet/crate/secure/gear{
- req_access_txt = "150"
- },
-/obj/item/clothing/gloves/combat,
-/obj/item/clothing/gloves/combat,
-/obj/item/clothing/under/syndicate/combat,
-/obj/item/clothing/under/syndicate/combat,
-/obj/item/storage/belt/military,
-/obj/item/storage/belt/military,
-/obj/item/clothing/shoes/combat,
-/obj/item/clothing/shoes/combat,
-/obj/item/clothing/mask/gas/syndicate,
-/obj/item/clothing/mask/gas/syndicate,
-/obj/item/clothing/glasses/night,
-/obj/item/clothing/glasses/night,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"dL" = (
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/obj/structure/closet/crate,
-/obj/item/extinguisher{
- pixel_x = -5;
- pixel_y = 5
- },
-/obj/item/extinguisher{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/extinguisher{
- pixel_x = 1;
- pixel_y = -1
- },
-/obj/item/flashlight{
- pixel_x = -5;
- pixel_y = 5
- },
-/obj/item/flashlight{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/flashlight{
- pixel_x = 1;
- pixel_y = -1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"dM" = (
-/obj/effect/turf_decal/box/white/corners{
- dir = 4
- },
-/obj/structure/closet/crate,
-/obj/item/storage/box/donkpockets{
- pixel_x = -2;
- pixel_y = 6
- },
-/obj/item/storage/box/donkpockets{
- pixel_y = 3
- },
-/obj/item/storage/box/donkpockets{
- pixel_x = 2
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"dP" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"dQ" = (
-/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"dR" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/hatch{
- heat_proof = 1;
- name = "Experimentation Room";
- req_access_txt = "150"
- },
-/obj/machinery/door/poddoor/preopen{
- id_tag = "lavalandsyndi";
- name = "Syndicate Research Experimentation Shutters"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"dS" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id_tag = "lavalandsyndi";
- name = "Syndicate Research Experimentation Shutters"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"dT" = (
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dU" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dX" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dY" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"dZ" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/table/glass,
-/obj/item/folder/white,
-/obj/item/reagent_containers/glass/beaker/large{
- pixel_x = -3
- },
-/obj/item/reagent_containers/glass/beaker/large{
- pixel_x = -3
- },
-/obj/item/reagent_containers/dropper,
-/obj/machinery/alarm/syndicate{
- dir = 8;
- pixel_x = 24
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/screwdriver/nuke{
- pixel_y = 18
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"ea" = (
-/obj/effect/turf_decal/box/white/corners{
- dir = 8
- },
-/obj/structure/closet/crate/secure/weapon{
- req_access_txt = "150"
- },
-/obj/item/ammo_box/c10mm{
- pixel_y = 6
- },
-/obj/item/ammo_box/c10mm,
-/obj/item/ammo_box/magazine/m10mm{
- pixel_x = -5;
- pixel_y = 5
- },
-/obj/item/ammo_box/magazine/m10mm{
- pixel_x = -2;
- pixel_y = 2
- },
-/obj/item/ammo_box/magazine/m10mm{
- pixel_x = 1;
- pixel_y = -1
- },
-/obj/item/ammo_box/magazine/m10mm{
- pixel_x = 4;
- pixel_y = -4
- },
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eb" = (
-/obj/structure/closet/crate,
-/obj/item/storage/toolbox/electrical{
- pixel_y = 4
- },
-/obj/item/storage/toolbox/mechanical,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ec" = (
-/obj/effect/turf_decal/box/white/corners,
-/obj/structure/closet/crate/medical,
-/obj/item/storage/firstaid/fire{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/storage/firstaid/brute,
-/obj/item/storage/firstaid/regular{
- pixel_x = -3;
- pixel_y = -3
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ed" = (
-/obj/structure/table,
-/obj/item/pen,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/item/paper_bin/syndicate,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ef" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/machinery/power/apc/syndicate{
- dir = 1;
- name = "Cargo Bay APC";
- pixel_y = 24
- },
-/obj/structure/closet/emcloset/anchored,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eg" = (
-/obj/structure/closet/firecloset/full{
- anchored = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eh" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ei" = (
-/obj/structure/disposaloutlet{
- dir = 1
- },
-/obj/structure/disposalpipe/trunk,
-/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ek" = (
-/obj/effect/spawner/window/plastitanium,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"el" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eo" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/toolbox/syndicate,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/item/paper/crumpled{
- info = "Explosive testing on site is STRICTLY forbidden, as this outpost's walls are lined with explosives intended for intentional self-destruct purposes that may be set off prematurely through careless experiments.";
- name = "Explosives Testing Warning";
- pixel_x = -6;
- pixel_y = -3
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"ep" = (
-/obj/structure/table/reinforced,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/pen,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/item/paper_bin/syndicate,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eq" = (
-/obj/structure/table/reinforced,
-/obj/item/restraints/handcuffs,
-/obj/item/taperecorder,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"er" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27;
- pixel_y = 1
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"es" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"et" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"eu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/machinery/chem_heater,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"ev" = (
-/turf/simulated/floor/plasteel/white/corner,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"ew" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/syndichem,
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"ex" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ey" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ez" = (
-/obj/structure/cable/yellow{
- 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
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eA" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/mining/glass{
- name = "Warehouse";
- req_access_txt = "150"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eB" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eC" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eE" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/table,
-/obj/item/storage/box/lights/bulbs,
-/obj/item/wrench,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eF" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- id_tag = "lavalandsyndi_cargo"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eG" = (
-/obj/structure/closet/secure_closet/personal/patient,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"eH" = (
-/obj/structure/bed,
-/obj/item/bedsheet,
-/obj/machinery/light/small{
- dir = 1
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 5
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"eI" = (
-/obj/effect/spawner/window/plastitanium,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"eJ" = (
-/obj/structure/disposalpipe/segment,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"eL" = (
-/obj/machinery/door/airlock/hatch{
- name = "Monkey Pen";
- req_access_txt = "150"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eM" = (
-/obj/machinery/firealarm/syndicate{
- dir = 1;
- pixel_y = -24
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eN" = (
-/obj/machinery/alarm/syndicate{
- dir = 1;
- pixel_y = -24
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eO" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eP" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eQ" = (
-/obj/machinery/light/small,
-/obj/structure/table/reinforced,
-/obj/item/storage/box/monkeycubes/syndicate,
-/obj/item/storage/box/monkeycubes/syndicate,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"eR" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white/side{
- dir = 10
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"eS" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/chem_master,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"eT" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/chair/office/light,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"eU" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/chem_dispenser/upgraded,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"eV" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"eW" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eX" = (
-/obj/effect/turf_decal/box/white/corners{
- dir = 1
- },
-/obj/structure/closet/crate/internals,
-/obj/item/tank/internals/oxygen/yellow,
-/obj/item/tank/internals/oxygen/yellow,
-/obj/item/tank/internals/oxygen/yellow,
-/obj/item/tank/internals/emergency_oxygen/double,
-/obj/item/tank/internals/emergency_oxygen/double,
-/obj/item/tank/internals/emergency_oxygen/double,
-/obj/item/clothing/mask/gas,
-/obj/item/clothing/mask/gas,
-/obj/item/clothing/mask/gas,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eY" = (
-/obj/effect/turf_decal/box/white/corners{
- dir = 4
- },
-/obj/structure/closet/crate,
-/obj/item/storage/box/donkpockets{
- pixel_x = -2;
- pixel_y = 6
- },
-/obj/item/storage/box/donkpockets{
- pixel_y = 3
- },
-/obj/item/storage/box/donkpockets{
- pixel_x = 2
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"eZ" = (
-/obj/structure/rack{
- dir = 8
- },
-/obj/item/stack/sheet/cardboard{
- amount = 3
- },
-/obj/item/stack/rods/twentyfive,
-/obj/item/stock_parts/cell/high/plus,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fa" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/crate,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fc" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fd" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fe" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/cell/high/plus,
-/turf/simulated/floor/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ff" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 10
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fg" = (
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fh" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 10
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fi" = (
-/obj/structure/table/glass,
-/obj/item/storage/box/beakers{
- pixel_x = 2;
- pixel_y = 2
- },
-/obj/item/storage/box/syringes,
-/obj/machinery/power/apc/syndicate{
- dir = 1;
- name = "Virology APC";
- pixel_y = 24
- },
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fj" = (
-/obj/structure/table/glass,
-/obj/structure/reagent_dispensers/virusfood{
- pixel_y = 28
- },
-/obj/item/clothing/gloves/color/latex,
-/obj/item/healthanalyzer,
-/obj/item/clothing/glasses/hud/health,
-/obj/structure/disposalpipe/segment,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/firealarm/syndicate{
- dir = 4;
- pixel_x = 26
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 5
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fk" = (
-/obj/machinery/power/apc/syndicate{
- dir = 2;
- name = "Experimentation Lab APC";
- pixel_y = -24
- },
-/obj/structure/cable/yellow{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"fl" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/extinguisher_cabinet{
- pixel_x = 25
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"fm" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical{
- name = "Chemistry Lab";
- req_access_txt = "150"
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"fn" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"fo" = (
-/obj/machinery/door/firedoor,
-/obj/structure/table/reinforced,
-/obj/machinery/door/window/southleft{
- base_state = "left";
- dir = 2;
- icon_state = "left";
- name = "Chemistry"
- },
-/obj/machinery/door/window/southleft{
- base_state = "left";
- dir = 1;
- icon_state = "left";
- name = "Chemistry";
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"fp" = (
-/obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"fq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/assist,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fr" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fs" = (
-/obj/effect/turf_decal/box/white/corners{
- dir = 8
- },
-/obj/structure/closet/crate,
-/obj/item/storage/box/stockparts/deluxe,
-/obj/item/storage/box/stockparts/deluxe,
-/obj/item/stack/sheet/metal/fifty,
-/obj/item/stack/sheet/glass/fifty,
-/obj/item/circuitboard/processor,
-/obj/item/circuitboard/gibber,
-/obj/item/circuitboard/deepfryer,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ft" = (
-/obj/effect/turf_decal/box/white/corners,
-/obj/structure/closet/crate,
-/obj/item/reagent_containers/glass/beaker/waterbottle/large{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/reagent_containers/glass/beaker/waterbottle/large{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/reagent_containers/glass/beaker/waterbottle/large,
-/obj/item/reagent_containers/glass/beaker/waterbottle/large,
-/obj/item/reagent_containers/glass/beaker/waterbottle/large{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/reagent_containers/glass/beaker/waterbottle/large{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fu" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/structure/table,
-/obj/item/clothing/suit/storage/hazardvest,
-/obj/item/clothing/suit/storage/hazardvest,
-/obj/item/clothing/head/soft{
- pixel_x = -8
- },
-/obj/item/clothing/head/soft{
- pixel_x = -8
- },
-/obj/item/radio{
- pixel_x = 5
- },
-/obj/item/radio{
- pixel_x = 5
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fv" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fx" = (
-/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fy" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Isolation B";
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fz" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Isolation A";
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fA" = (
-/obj/structure/table/glass,
-/obj/item/reagent_containers/syringe/antiviral,
-/obj/item/reagent_containers/dropper,
-/obj/item/reagent_containers/spray/cleaner,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fB" = (
-/obj/structure/chair/stool,
-/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/plasteel/white/corner{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fC" = (
-/obj/machinery/smartfridge/secure/chemistry/virology/preloaded/syndicate,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 5
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fD" = (
-/obj/structure/sign/biohazard,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"fE" = (
-/obj/effect/turf_decal/bot,
-/obj/structure/closet/l3closet,
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"fF" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/shower{
- pixel_y = 14
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"fG" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/door/airlock/hatch{
- name = "Experimentation Lab";
- req_access_txt = "150"
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"fH" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/main)
-"fI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white/side{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/main)
-"fO" = (
-/turf/simulated/floor/plasteel/white/side{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/main)
-"fW" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/door/airlock/mining/glass{
- name = "Warehouse";
- req_access_txt = "150"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"fY" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27;
- pixel_y = 1
- },
-/obj/structure/table,
-/obj/item/folder/yellow,
-/obj/item/stack/wrapping_paper{
- pixel_y = 5
- },
-/obj/item/stack/packageWrap,
-/obj/item/hand_labeler,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gb" = (
-/obj/structure/table,
-/obj/item/paper_bin,
-/obj/item/pen,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gg" = (
-/obj/structure/sign/fire{
- pixel_y = 32
- },
-/obj/structure/sign/xeno_warning_mining{
- pixel_y = -32
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gj" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gp" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gq" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gr" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gs" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
-/obj/machinery/light/small,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gt" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gv" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gy" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gz" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gE" = (
-/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gF" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gG" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gH" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gI" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gJ" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gK" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gL" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gM" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"gO" = (
-/obj/structure/sign/cargo,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gP" = (
-/obj/machinery/photocopier,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gQ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gR" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gS" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 4
- },
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi_cargo";
- name = "Cargo Bay Blast Door Control";
- pixel_x = 26;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"gT" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Monkey Pen";
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gU" = (
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/structure/sink{
- dir = 8;
- pixel_x = -12;
- pixel_y = 2
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"gV" = (
-/obj/structure/chair/office/light,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ha" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hc" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hd" = (
-/obj/effect/turf_decal/tile/red,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"he" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hf" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hg" = (
-/obj/machinery/light/small,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hh" = (
-/obj/machinery/door/firedoor,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hi" = (
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hj" = (
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hk" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining/glass{
- name = "Cargo Bay"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hl" = (
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hn" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"ho" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/computer/shuttle{
- desc = "Occasionally used to call in a resupply shuttle if one is in range.";
- dir = 8;
- icon_keyboard = "syndie_key";
- icon_screen = "syndishuttle";
- light_color = "#FA8282";
- name = "syndicate cargo shuttle terminal";
- possible_destinations = "syndielavaland_cargo";
- req_access_txt = "150";
- shuttleId = "syndie_cargo"
- },
-/turf/simulated/floor/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hq" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/white/side{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"hs" = (
-/obj/machinery/computer/pandemic,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door_control{
- id = "lavalandsyndi_virology";
- name = "Virology Blast Door Control";
- pixel_x = -26;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 10
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"ht" = (
-/obj/structure/table,
-/obj/item/paper_bin{
- pixel_x = -2;
- pixel_y = 5
- },
-/obj/item/hand_labeler,
-/obj/item/pen/red,
-/obj/item/restraints/handcuffs,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/glasses/science,
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"hu" = (
-/obj/structure/table,
-/obj/machinery/reagentgrinder,
-/obj/item/stack/sheet/mineral/plasma{
- amount = 5
- },
-/obj/item/stack/sheet/mineral/uranium{
- amount = 10
- },
-/obj/item/stack/sheet/mineral/gold{
- amount = 10
- },
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"hv" = (
-/obj/machinery/disposal,
-/obj/structure/sign/deathsposal{
- pixel_x = 32
- },
-/obj/effect/turf_decal/stripes/red/box,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"hx" = (
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hy" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hz" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hA" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hB" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hC" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/mining/glass{
- name = "Cargo Bay"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/structure/rack,
-/obj/item/storage/belt/utility,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hF" = (
-/obj/machinery/light/small,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"hH" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/poddoor/preopen{
- id_tag = "lavalandsyndi_virology"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/virology)
-"hJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hL" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hM" = (
-/obj/structure/table/wood,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/sniper_rounds,
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hN" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hO" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hP" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hQ" = (
-/obj/structure/table/wood,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"hR" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hS" = (
-/obj/structure/table/reinforced,
-/obj/item/folder,
-/obj/item/suppressor,
-/obj/item/clothing/ears/earmuffs,
-/obj/item/clothing/ears/earmuffs,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hU" = (
-/obj/machinery/light/small,
-/obj/structure/filingcabinet/chestdrawer,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown,
-/obj/effect/turf_decal/tile/brown{
- dir = 8
- },
-/obj/machinery/autolathe,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/cargo)
-"hW" = (
-/obj/machinery/porta_turret/syndicate{
- dir = 10
- },
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"hZ" = (
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ia" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ib" = (
-/obj/effect/mob_spawn/human/lavaland_syndicate{
- icon_state = "sleeper_s";
- dir = 4
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"ic" = (
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"id" = (
-/obj/structure/toilet{
- pixel_y = 18
- },
-/obj/structure/sink{
- dir = 4;
- pixel_x = 11
- },
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/structure/mirror{
- pixel_x = 28
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"ie" = (
-/obj/effect/mob_spawn/human/lavaland_syndicate/comms{
- dir = 8;
- icon_state = "sleeper_s"
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"if" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ig" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"ih" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"ii" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/emergency,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ij" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ik" = (
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"il" = (
-/obj/machinery/door/airlock{
- name = "Cabin 2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"im" = (
-/obj/machinery/door/airlock{
- name = "Unisex Restrooms"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"in" = (
-/obj/machinery/door/airlock{
- name = "Cabin 4"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"ip" = (
-/obj/effect/turf_decal/stripes/red/corner,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iq" = (
-/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ir" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 9
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"it" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 5
- },
-/obj/structure/filingcabinet,
-/obj/item/folder/syndicate/mining,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iu" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"iv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"iw" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27;
- pixel_y = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ix" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iy" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Dormitories"
- },
-/obj/machinery/door/firedoor,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iz" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iA" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iB" = (
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iD" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/firealarm/syndicate{
- dir = 2;
- pixel_y = 24
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iE" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iF" = (
-/obj/machinery/washing_machine,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iG" = (
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iH" = (
-/obj/effect/turf_decal/stripes/red/line{
- dir = 4
- },
-/obj/effect/turf_decal/caution/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iI" = (
-/obj/machinery/door/airlock/vault{
- id_tag = "syndie_lavaland_vault";
- req_access_txt = "150";
- locked = 1
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iJ" = (
-/turf/simulated/floor/redgrid,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iK" = (
-/obj/machinery/syndicatebomb/self_destruct{
- anchored = 1
- },
-/turf/simulated/floor/redgrid,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iM" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"iN" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iO" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iP" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iQ" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"iR" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/public/glass{
- name = "Dormitories"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iS" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iT" = (
-/obj/machinery/light/small,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel{
- heat_capacity = 1e+006
- },
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iU" = (
-/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iV" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/power/apc/syndicate{
- dir = 2;
- name = "Dormitories APC";
- pixel_y = -24
- },
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 8;
- icon_state = "0-8"
- },
-/obj/effect/turf_decal/tile/neutral,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iW" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iX" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel{
- heat_capacity = 1e+006
- },
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iY" = (
-/obj/structure/table,
-/obj/structure/bedsheetbin,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"iZ" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27;
- pixel_y = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ja" = (
-/obj/effect/turf_decal/stripes/red/corner{
- dir = 4
- },
-/obj/machinery/door_control{
- id = "syndie_lavaland_vault";
- name = "Vault Bolt Control";
- normaldoorcontrol = 1;
- pixel_x = 24;
- pixel_y = 8;
- req_access_txt = "150";
- specialfunctions = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 10
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jc" = (
-/obj/machinery/light/small,
-/turf/simulated/floor/redgrid,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jd" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/stripes/red/line{
- dir = 6
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"je" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"jf" = (
-/obj/machinery/door/airlock{
- name = "Cabin 1"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jg" = (
-/obj/machinery/door/airlock/maintenance,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jh" = (
-/obj/machinery/door/airlock{
- name = "Cabin 3"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"ji" = (
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/machinery/power/apc/syndicate{
- dir = 8;
- name = "Primary Hallway APC";
- pixel_x = -24
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jj" = (
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jk" = (
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"jl" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jm" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jn" = (
-/obj/effect/mob_spawn/human/lavaland_syndicate{
- icon_state = "sleeper_s";
- dir = 4
- },
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jo" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jp" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jq" = (
-/obj/effect/mob_spawn/human/lavaland_syndicate{
- dir = 8;
- icon_state = "sleeper_s"
- },
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jr" = (
-/obj/machinery/vending/snack,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"js" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jt" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/obj/structure/reagent_dispensers/watertank,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ju" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jv" = (
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/suit_storage_unit/radsuit,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jw" = (
-/obj/effect/turf_decal/bot,
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/toolcloset{
- anchored = 1
- },
-/obj/item/crowbar,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jx" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id_tag = "lavalandsyndi_bar"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jy" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jz" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Bar"
- },
-/obj/machinery/door/firedoor,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jA" = (
-/obj/structure/table/wood,
-/obj/item/ammo_box/magazine/m10mm,
-/obj/item/ammo_box/magazine/sniper_rounds,
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jB" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jC" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/turf/simulated/floor/plasteel/grimy,
-/area/ruin/unpowered/syndicate_lava_base/dormitories)
-"jD" = (
-/obj/machinery/vending/cola,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jE" = (
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jF" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jG" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor,
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/door/airlock/engineering{
- name = "Engineering";
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jH" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jI" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/alarm/syndicate{
- dir = 8;
- pixel_x = 24
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jJ" = (
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
- dir = 6
- },
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jK" = (
-/obj/machinery/atmospherics/unary/outlet_injector/on{
- dir = 8;
- volume_rate = 200;
- id = "syndie_lavaland_waste"
- },
-/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jL" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/lighter{
- pixel_x = 7;
- pixel_y = 6
- },
-/obj/item/storage/fancy/cigarettes/cigpack_syndicate{
- pixel_x = -3
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jM" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi_bar";
- name = "Bar Blast Door Control";
- pixel_y = 26;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jN" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jO" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = 25
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jP" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jQ" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jR" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jS" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jT" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/firecloset/full{
- anchored = 1
- },
-/obj/effect/turf_decal/tile/yellow,
-/obj/effect/turf_decal/tile/yellow{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"jU" = (
-/obj/structure/sign/engineering,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jV" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/shower{
- desc = "The HS-452. Installed recently by the DonkCo Hygiene Division.";
- dir = 4;
- name = "emergency shower"
- },
-/obj/structure/sign/radiation/rad_area{
- pixel_y = -32
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jW" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"jY" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"jZ" = (
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ka" = (
-/obj/structure/closet/crate,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kb" = (
-/obj/structure/rack{
- dir = 8
- },
-/obj/item/storage/box/lights/bulbs,
-/obj/item/stack/rods{
- amount = 50
- },
-/obj/item/clothing/head/welding,
-/obj/item/stock_parts/cell/high/plus,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kc" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kd" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ke" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kf" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kg" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kh" = (
-/obj/machinery/door/airlock/maintenance,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ki" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kj" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/structure/chair{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kk" = (
-/obj/effect/turf_decal/delivery,
-/obj/machinery/door/firedoor,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/door/airlock/engineering{
- name = "Engineering";
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kl" = (
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"km" = (
-/obj/structure/cable/yellow{
- d1 = 0;
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/machinery/computer/monitor/secret,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kn" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ko" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kp" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kq" = (
-/obj/machinery/alarm/syndicate{
- dir = 8;
- pixel_x = 24
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/machinery/vending/coffee/free,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kr" = (
-/obj/machinery/door/airlock/maintenance{
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ks" = (
-/obj/structure/reagent_dispensers/fueltank,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kt" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/obj/structure/window/reinforced{
- dir = 8
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"ku" = (
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kv" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kw" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/clothing/gloves/combat{
- pixel_y = -6
- },
-/obj/item/tank/internals/emergency_oxygen{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/clothing/mask/breath{
- pixel_x = -2;
- pixel_y = 4
- },
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kx" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"ky" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kz" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kB" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kC" = (
-/obj/machinery/computer/general_air_control/large_tank_control{
- dir = 8;
- frequency = 1442;
- name = "Nitrogen Supply Control";
- output_tag = "syndie_lavaland_n2_out";
- sensors = list("syndie_lavaland_n2_sensor" = "Tank")
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kD" = (
-/obj/effect/spawner/window/plastitanium,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kG" = (
-/obj/structure/table,
-/obj/item/reagent_containers/food/drinks/cans/beer,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kH" = (
-/obj/structure/chair{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kJ" = (
-/obj/structure/chair/stool/bar,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kK" = (
-/obj/structure/chair/stool/bar,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kL" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kM" = (
-/obj/machinery/firealarm/syndicate{
- dir = 4;
- pixel_x = 26
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/vending/cigarette/syndicate/free,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kN" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sink/kitchen{
- pixel_y = 28
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kO" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"kP" = (
-/obj/structure/reagent_dispensers/watertank,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/soap/syndie,
-/obj/item/mop,
-/obj/item/reagent_containers/glass/bucket,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"kQ" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"kR" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical/glass{
- name = "Medbay"
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"kS" = (
-/obj/machinery/door/firedoor,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/medical/glass{
- name = "Medbay"
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"kT" = (
-/obj/structure/sign/lifestar,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"kV" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/power/smes/engineering,
-/obj/structure/cable/yellow,
-/obj/structure/sign/electricshock{
- pixel_x = -32
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"kW" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/power/smes/engineering,
-/obj/structure/cable/yellow,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lf" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/structure/chair{
- dir = 1
- },
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lg" = (
-/obj/structure/chair/stool/bar,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lh" = (
-/obj/structure/table/wood,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"li" = (
-/obj/structure/table/wood,
-/obj/item/toy/cards/deck/syndicate{
- pixel_x = -6;
- pixel_y = 6
- },
-/turf/simulated/floor/wood{
- icon_state = "wood-broken4"
- },
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lj" = (
-/obj/machinery/door/window/southleft{
- base_state = "right";
- dir = 1;
- icon_state = "right";
- name = "Bar"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lk" = (
-/obj/structure/table/wood,
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/computer/security/telescreen/entertainment{
- pixel_x = 30
- },
-/obj/structure/window/reinforced{
- dir = 1;
- pixel_y = 1
- },
-/obj/item/book/manual/chef_recipes{
- pixel_x = 2;
- pixel_y = 6
- },
-/obj/item/reagent_containers/food/drinks/shaker,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ll" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/reagent_dispensers/beerkeg,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lm" = (
-/obj/structure/closet/secure_closet/medical1{
- req_access = null;
- req_access_txt = "150"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/defibrillator,
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"ln" = (
-/turf/simulated/floor/plasteel/white/side{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lo" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/box/masks{
- pixel_x = -2;
- pixel_y = -2
- },
-/obj/item/storage/box/gloves{
- pixel_x = 5;
- pixel_y = 5
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 5
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lp" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
- },
-/obj/machinery/power/terminal{
- dir = 1
- },
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lq" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 6
- },
-/obj/machinery/power/terminal{
- dir = 1
- },
-/obj/structure/cable{
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lu" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/effect/turf_decal/bot,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/portable_atmospherics/pump,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lw" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/mapping_helpers/no_lava,
-/turf/simulated/floor/plating{
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface;
- oxygen = 14;
- nitrogen = 23;
- temperature = 300
- },
-/area/lavaland/surface/outdoors)
-"ly" = (
-/obj/structure/chair/stool/bar,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lz" = (
-/obj/structure/table/wood,
-/obj/item/reagent_containers/glass/rag{
- pixel_x = -4;
- pixel_y = 9
- },
-/obj/item/reagent_containers/food/drinks/cans/beer{
- pixel_x = 5;
- pixel_y = -2
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lA" = (
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lB" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lC" = (
-/obj/structure/table/wood,
-/obj/machinery/reagentgrinder,
-/obj/item/kitchen/rollingpin,
-/obj/item/kitchen/knife{
- pixel_x = 6
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lE" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lF" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/closet/crate,
-/obj/item/vending_refill/snack{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/vending_refill/snack{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/vending_refill/coffee,
-/obj/item/vending_refill/cola,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lG" = (
-/obj/structure/table,
-/obj/item/storage/box/syringes,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/gun/syringe/syndicate,
-/obj/machinery/defibrillator_mount/loaded{
- pixel_x = -30
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 9
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lH" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/corner{
- dir = 1
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lI" = (
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lK" = (
-/obj/structure/table,
-/obj/item/storage/firstaid/regular{
- pixel_x = -4;
- pixel_y = -4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/firstaid/fire{
- pixel_x = 4;
- pixel_y = 4
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"lL" = (
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/structure/table,
-/obj/item/stack/sheet/metal/fifty{
- pixel_x = -1;
- pixel_y = 1
- },
-/obj/item/stack/sheet/mineral/plastitanium{
- amount = 30
- },
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 1;
- pixel_y = -1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lM" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lP" = (
-/obj/machinery/computer/general_air_control/large_tank_control{
- dir = 8;
- frequency = 1442;
- name = "Oxygen Supply Control";
- output_tag = "syndie_lavaland_o2_out";
- sensors = list("syndie_lavaland_o2_sensor" = "Tank")
- },
-/obj/effect/turf_decal/tile/blue,
-/obj/effect/turf_decal/tile/blue{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"lS" = (
-/obj/machinery/porta_turret/syndicate{
- dir = 9
- },
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"lU" = (
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/structure/chair/stool,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lV" = (
-/obj/structure/chair/stool/bar,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lW" = (
-/obj/structure/table/wood,
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lX" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lY" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"lZ" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"ma" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/door/airlock{
- name = "Bar Storage";
- req_access_txt = "150"
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mb" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mc" = (
-/obj/item/storage/box/donkpockets{
- pixel_x = -2;
- pixel_y = 6
- },
-/obj/item/storage/box/donkpockets{
- pixel_y = 3
- },
-/obj/item/storage/box/donkpockets{
- pixel_x = 2
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/secure_closet/freezer/kitchen/maintenance{
- req_access = null
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"md" = (
-/obj/machinery/sleeper/syndie{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"me" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mf" = (
-/obj/structure/sink{
- dir = 4;
- pixel_x = 11
- },
-/obj/machinery/alarm/syndicate{
- dir = 8;
- pixel_x = 24
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mg" = (
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/structure/table,
-/obj/machinery/cell_charger,
-/obj/item/stock_parts/cell/high/plus,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/rpd{
- pixel_y = 3
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"mh" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"mj" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/binary/pump{
- dir = 8;
- name = "O2 to Incinerator"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"mn" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mo" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mp" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id_tag = "lavalandsyndi_telecomms"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mr" = (
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"mt" = (
-/obj/machinery/computer/arcade/orion_trail,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mu" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-22"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mv" = (
-/obj/structure/table/wood,
-/obj/machinery/light/small,
-/obj/structure/cable/yellow,
-/obj/machinery/power/apc/syndicate{
- dir = 2;
- name = "Bar APC";
- pixel_y = -24
- },
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mw" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mx" = (
-/obj/structure/table/wood,
-/obj/machinery/kitchen_machine/microwave,
-/turf/simulated/floor/wood,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"my" = (
-/obj/structure/closet/secure_closet/freezer/fridge/open,
-/obj/item/reagent_containers/food/condiment/enzyme,
-/obj/item/reagent_containers/food/snacks/chocolatebar,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mz" = (
-/obj/machinery/door/airlock/maintenance,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"mA" = (
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/structure/bed/roller,
-/obj/machinery/iv_drip,
-/obj/item/reagent_containers/iv_bag/blood/OMinus,
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mB" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mC" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mD" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mE" = (
-/obj/structure/table/reinforced,
-/obj/item/scalpel,
-/obj/item/circular_saw{
- pixel_y = 9
- },
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"mF" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = -27;
- pixel_y = 1
- },
-/obj/structure/chair/stool,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"mG" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"mK" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/machinery/computer/general_air_control/large_tank_control{
- dir = 1;
- frequency = 1442;
- name = "Toxins Supply Control";
- output_tag = "syndie_lavaland_tox_out";
- sensors = list("syndie_lavaland_tox_sensor" = "Tank")
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"mN" = (
-/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mP" = (
-/obj/structure/filingcabinet/security,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mQ" = (
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mR" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/syndicate,
-/obj/item/multitool,
-/obj/machinery/door_control{
- id = "lavalandsyndi_telecomms";
- name = "Telecomms Blast Door Control";
- pixel_x = 26;
- req_access_txt = "150"
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"mT" = (
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"mU" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/bar)
-"mX" = (
-/obj/structure/rack{
- dir = 8
- },
-/obj/item/storage/toolbox/mechanical,
-/obj/item/stack/cable_coil/yellow{
- pixel_x = 2;
- pixel_y = -3
- },
-/obj/item/multitool,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"mY" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"mZ" = (
-/obj/machinery/sleeper/syndie{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"na" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"nc" = (
-/obj/machinery/computer/turbine_computer{
- dir = 1;
- id = "syndie_lavaland_incineratorturbine"
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi_incineratoroutput";
- name = "Incinerator Output Blast Door Control";
- pixel_x = -6;
- pixel_y = -24;
- req_access_txt = "150"
- },
-/obj/machinery/door_control{
- id = "lavalandsyndi_incineratorinput";
- name = "Incinerator Input Blast Door Control";
- pixel_x = 6;
- pixel_y = -24;
- req_access_txt = "150"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"nd" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"nf" = (
-/obj/structure/sign/fire,
-/turf/simulated/wall/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"ng" = (
-/obj/structure/table,
-/obj/machinery/photocopier/faxmachine/longrange/syndie{
- department = "Syndicate Bioweapon Research Outpost"
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nk" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nl" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nm" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/obj/structure/noticeboard{
- dir = 8;
- pixel_x = 27
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nn" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"no" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"np" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nq" = (
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"ns" = (
-/obj/structure/closet/emcloset/anchored,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nt" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc/syndicate{
- dir = 1;
- name = "Arrival Hallway APC";
- pixel_y = 24
- },
-/obj/structure/cable/yellow{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nu" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nv" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nw" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nx" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/door/airlock/medical/glass{
- name = "Medbay"
- },
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"ny" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel/white/side{
- dir = 8
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"nz" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"nA" = (
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plasteel/white/corner,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"nB" = (
-/obj/structure/table/reinforced,
-/obj/item/surgicaldrill,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/bonegel,
-/obj/item/bonesetter,
-/obj/item/FixOVein,
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"nC" = (
-/obj/structure/table/reinforced,
-/obj/item/retractor,
-/obj/item/hemostat,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/cautery,
-/turf/simulated/floor/plasteel/white/side{
- dir = 6
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"nH" = (
-/obj/machinery/alarm/syndicate{
- dir = 4;
- pixel_x = -24
- },
-/obj/machinery/light/small{
- dir = 8
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nI" = (
-/obj/machinery/computer/camera_advanced,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nJ" = (
-/obj/structure/table/reinforced,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nK" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nL" = (
-/obj/machinery/door/airlock/hatch{
- name = "Telecommunications";
- req_access_txt = "150"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"nN" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nQ" = (
-/obj/effect/turf_decal/stripes/corner{
- dir = 8
- },
-/obj/machinery/light/small,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nR" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nS" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/firealarm/syndicate{
- dir = 2;
- pixel_y = 24
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nT" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nU" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/alarm/syndicate{
- pixel_y = 24
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nV" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nW" = (
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nX" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"nZ" = (
-/turf/simulated/floor/plasteel/white/side{
- dir = 4
- },
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"oa" = (
-/turf/simulated/floor/plasteel/white/side{
- dir = 10
- },
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"ob" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/white/side,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"oh" = (
-/obj/machinery/firealarm/syndicate{
- dir = 8;
- pixel_x = -26
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"oi" = (
-/obj/structure/chair/office{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"ok" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/structure/cable/yellow,
-/obj/machinery/power/apc/syndicate{
- dir = 2;
- name = "Telecommunications APC";
- pixel_y = -24
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"ol" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
-/obj/structure/rack{
- dir = 8
- },
-/obj/item/clothing/suit/space/syndicate,
-/obj/item/clothing/mask/gas/syndicate,
-/obj/item/clothing/head/helmet/space/syndicate,
-/obj/item/mining_scanner,
-/obj/item/pickaxe,
-/turf/simulated/floor/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"om" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"on" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
-/obj/structure/extinguisher_cabinet{
- pixel_y = -29
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"oo" = (
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"op" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/simulated/floor/plasteel,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"or" = (
-/obj/structure/rack{
- dir = 8
- },
-/obj/item/storage/belt/medical,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/crowbar,
-/obj/item/clothing/glasses/hud/health,
-/obj/item/clothing/accessory/stethoscope,
-/turf/simulated/floor/plasteel/white,
-/area/ruin/unpowered/syndicate_lava_base/medbay)
-"ou" = (
-/obj/machinery/computer/message_monitor{
- dir = 1
- },
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"ov" = (
-/obj/structure/table/reinforced,
-/obj/item/pen,
-/obj/item/paper_bin/syndicate,
-/turf/simulated/floor/plasteel/dark,
-/area/ruin/unpowered/syndicate_lava_base/telecomms)
-"ox" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- id_tag = "lavalandsyndi_arrivals"
- },
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"oF" = (
-/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/arrivals)
-"oP" = (
-/obj/structure/sign/chemistry,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"pQ" = (
-/obj/structure/sign/explosives/alt{
- pixel_x = 32
- },
-/turf/simulated/floor/redgrid,
-/area/ruin/unpowered/syndicate_lava_base/main)
-"qG" = (
-/obj/structure/sign/explosives/alt{
- pixel_x = -32
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"vu" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"yd" = (
-/obj/machinery/atmospherics/pipe/simple/visible/yellow,
-/turf/simulated/wall/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"yU" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/chemistry)
-"Au" = (
-/turf/simulated/wall/mineral/plastitanium/explosive,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"BF" = (
-/obj/effect/spawner/window/plastitanium,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor/preopen{
- id_tag = "lavalandsyndi";
- name = "Syndicate Research Experimentation Shutters"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plating,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"Cg" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"CG" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"DL" = (
-/obj/structure/sign/explosives/alt{
- pixel_x = 32
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"Lg" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"LQ" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"RI" = (
-/turf/simulated/wall/mineral/plastitanium,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"RV" = (
-/obj/structure/sign/fire,
-/turf/simulated/wall/mineral/plastitanium/nodiagonal,
-/area/ruin/unpowered/syndicate_lava_base/engineering)
-"Tp" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-"TC" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
- },
-/turf/simulated/floor/engine,
-/area/ruin/unpowered/syndicate_lava_base/testlab)
-
-(1,1,1) = {"
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-"}
-(2,1,1) = {"
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-"}
-(3,1,1) = {"
-aa
-aa
-aa
-aa
-aa
-ab
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(4,1,1) = {"
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-"}
-(5,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(6,1,1) = {"
-aa
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-"}
-(7,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-eh
-gj
-eh
-eh
-eh
-eh
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-mn
-mN
-mn
-mn
-mn
-mn
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(8,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-eh
-eG
-ff
-eI
-aj
-eh
-eh
-eh
-eh
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-mp
-mP
-cb
-nH
-oh
-mn
-mn
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(9,1,1) = {"
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-eh
-eH
-fg
-fy
-gp
-eI
-am
-ao
-eh
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-mp
-ng
-nk
-nI
-oi
-ou
-mn
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(10,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-eh
-eI
-eI
-eI
-gq
-gT
-hq
-hF
-eh
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-mp
-mQ
-nl
-nJ
-nJ
-ov
-mn
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(11,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-eh
-eG
-fh
-eI
-gr
-eI
-an
-ar
-eh
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-mp
-mR
-nm
-nK
-ok
-mn
-mn
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(12,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-eh
-eH
-fg
-fz
-gs
-eh
-gj
-eh
-eh
-ab
-ab
-ab
-ab
-ab
-ab
-dG
-dG
-dG
-dG
-dG
-dG
-lS
-mn
-mn
-mo
-nL
-mn
-mn
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(13,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-eh
-gj
-eI
-eI
-gt
-gU
-hs
-hH
-ab
-ab
-ab
-ab
-ab
-ab
-dG
-dG
-ig
-iu
-iu
-iu
-bv
-aZ
-az
-ba
-nn
-aE
-mT
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(14,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-eh
-fi
-fA
-bV
-gV
-ht
-hH
-ab
-ab
-ab
-ab
-ab
-dG
-dG
-ig
-je
-iv
-jk
-aw
-lw
-aZ
-mr
-bb
-aD
-nN
-ol
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(15,1,1) = {"
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ei
-eJ
-fj
-fB
-gv
-ax
-hu
-hH
-ab
-ab
-ab
-ab
-dG
-dG
-ig
-je
-jk
-jx
-jx
-jy
-jy
-jy
-aA
-mT
-no
-nN
-ol
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(16,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ab
-ac
-ac
-ae
-ae
-ae
-ae
-fC
-ad
-aX
-hv
-hH
-ab
-ab
-ab
-dG
-dG
-ig
-je
-jk
-jx
-jx
-kG
-lf
-bw
-jy
-jy
-jP
-np
-aH
-mT
-mT
-mT
-oF
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(17,1,1) = {"
-ab
-ab
-ab
-ab
-ab
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-au
-av
-aL
-fD
-aI
-eh
-eh
-eh
-hW
-dG
-dG
-dG
-ig
-je
-iv
-jx
-jx
-kn
-kH
-jN
-jZ
-lU
-mt
-mU
-np
-aN
-aO
-aP
-aR
-aG
-aS
-ab
-ab
-ab
-ab
-aa
-"}
-(18,1,1) = {"
-ab
-ab
-ab
-ab
-ae
-aL
-aq
-aq
-qG
-dc
-aq
-dQ
-ek
-eL
-ae
-fE
-gy
-bd
-ay
-aU
-aC
-bc
-iu
-iu
-je
-jk
-jx
-jx
-jN
-jZ
-jN
-jZ
-jN
-jZ
-kn
-mU
-nq
-nQ
-mT
-mT
-mT
-oF
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(19,1,1) = {"
-ab
-ab
-ab
-ab
-ae
-ap
-aq
-Lg
-aq
-Lg
-aq
-dR
-el
-eM
-ae
-fF
-gz
-aT
-aB
-hJ
-aY
-ih
-iv
-iM
-iv
-iv
-jx
-jL
-jY
-jN
-bZ
-lg
-ly
-lV
-mu
-mU
-cc
-nR
-om
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-"}
-(20,1,1) = {"
-aa
-ab
-ab
-ab
-ae
-aq
-aq
-aF
-aq
-aF
-aq
-ae
-bU
-eN
-ae
-ae
-aJ
-ha
-ha
-aV
-ha
-ha
-ha
-ha
-ha
-ha
-jy
-jM
-jN
-jZ
-kJ
-lh
-lz
-lW
-mv
-jy
-jy
-nS
-on
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(21,1,1) = {"
-aa
-ab
-ab
-ab
-ae
-aq
-aq
-Tp
-aq
-Cg
-aq
-dS
-eo
-eO
-fk
-ae
-aK
-hb
-ha
-iN
-ha
-ii
-iw
-iO
-hB
-jl
-jz
-jN
-jZ
-ko
-kK
-li
-lA
-lX
-mw
-ah
-jy
-nu
-oo
-ox
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(22,1,1) = {"
-aa
-ab
-ab
-ab
-ae
-ap
-aq
-CG
-vu
-TC
-LQ
-BF
-ep
-eP
-fl
-fG
-gE
-hc
-hx
-hL
-hZ
-ij
-ix
-iP
-hd
-jm
-jz
-jO
-jN
-kp
-kL
-lj
-lB
-lY
-lA
-ai
-jP
-nT
-op
-ox
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(23,1,1) = {"
-aa
-ab
-ab
-ab
-ae
-ae
-aq
-aq
-DL
-di
-aq
-dS
-eq
-eQ
-ae
-dQ
-gF
-hd
-hy
-hy
-ia
-ik
-if
-iQ
-hz
-hz
-jP
-jy
-ka
-kq
-kM
-lk
-lC
-lZ
-mx
-jy
-jy
-nU
-oo
-ox
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(24,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ae
-ae
-ae
-ae
-ae
-aL
-ae
-ae
-ae
-oP
-fH
-gG
-he
-hz
-hz
-hz
-hz
-iy
-iR
-hz
-jn
-jA
-jy
-jy
-jy
-jy
-jy
-ak
-ma
-jy
-jy
-ns
-nV
-oo
-ox
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(25,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-as
-do
-dA
-dT
-er
-eR
-fm
-fI
-gH
-he
-hz
-hM
-ib
-hz
-iz
-iS
-jf
-jo
-jB
-hz
-kb
-jy
-kN
-jZ
-lE
-mb
-my
-jy
-nt
-nW
-aW
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(26,1,1) = {"
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-as
-as
-du
-dB
-dU
-es
-eS
-fn
-fO
-gG
-hf
-hz
-hN
-ic
-il
-iA
-iT
-hz
-hz
-hz
-hz
-kc
-kr
-kO
-ll
-lF
-mc
-jy
-jy
-nu
-nX
-oo
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(27,1,1) = {"
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-at
-aM
-dv
-dC
-bI
-et
-eT
-fo
-fO
-gG
-hg
-hz
-hz
-hz
-hz
-iB
-iU
-jg
-jp
-jp
-jQ
-kd
-jy
-jy
-jy
-jy
-jy
-jy
-mX
-nv
-aQ
-mT
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(28,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-at
-cA
-dw
-dC
-dX
-eu
-eU
-fn
-fH
-gG
-he
-hA
-hO
-id
-im
-bX
-iV
-hz
-hz
-hz
-hz
-ke
-jQ
-jQ
-jQ
-jp
-jp
-mz
-mY
-nw
-nZ
-mT
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(29,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-at
-cG
-dx
-dE
-dY
-ev
-eV
-fp
-fH
-gI
-he
-hz
-hz
-hz
-hz
-iD
-iW
-jh
-jo
-jC
-hz
-kf
-ks
-kP
-kQ
-kQ
-kQ
-kQ
-kT
-nx
-kR
-kQ
-kQ
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(30,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-as
-as
-as
-dI
-dZ
-ew
-as
-yU
-as
-gJ
-hh
-hz
-hP
-ic
-in
-iE
-iX
-hz
-jq
-jA
-hz
-kg
-kt
-kQ
-bT
-lG
-md
-mA
-mZ
-ny
-oa
-or
-kQ
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(31,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-as
-as
-as
-as
-as
-fq
-dy
-gK
-he
-hz
-hQ
-ie
-hz
-iF
-iY
-hz
-hO
-hz
-hz
-kh
-ha
-kQ
-lm
-lH
-me
-mB
-na
-nz
-ob
-al
-kQ
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(32,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-dy
-dK
-ea
-ex
-eW
-fr
-fW
-gL
-he
-hz
-hz
-hz
-hz
-hz
-hz
-hz
-jr
-jD
-jR
-iQ
-ku
-kR
-ln
-lI
-lI
-mC
-lI
-nA
-cd
-kQ
-kQ
-ac
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(33,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-dL
-eb
-ey
-eX
-fs
-fa
-gM
-hi
-hB
-hB
-hB
-ag
-iG
-iZ
-ji
-js
-jE
-jS
-ki
-kv
-kS
-ln
-lJ
-mf
-mD
-lI
-nB
-kQ
-kQ
-ac
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(34,1,1) = {"
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-dM
-ec
-ez
-eY
-ft
-dP
-gN
-hj
-hj
-hR
-af
-ip
-iH
-ja
-bY
-jj
-gI
-if
-kj
-kw
-kT
-lo
-lK
-kQ
-mE
-bR
-nC
-kQ
-ac
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(35,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-dy
-ed
-ey
-eZ
-dy
-dy
-gO
-hk
-hC
-dy
-ha
-ce
-iI
-iq
-ha
-jt
-jF
-jT
-ju
-ju
-ju
-ju
-ju
-Au
-ju
-ju
-RI
-RI
-RI
-RI
-RI
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(36,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-dy
-dy
-eA
-fa
-dy
-fY
-gP
-gQ
-hl
-hS
-ha
-ir
-iJ
-jb
-ha
-ju
-jG
-jU
-ju
-kx
-kV
-lp
-lL
-mg
-mF
-nc
-RI
-bg
-RI
-bQ
-RI
-RI
-nf
-ab
-ab
-ab
-ab
-aa
-"}
-(37,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-bk
-eB
-fb
-fu
-gb
-gQ
-hl
-bW
-bS
-ha
-bx
-iK
-jc
-ha
-jv
-jH
-jV
-ju
-ky
-kW
-lq
-lM
-mh
-mG
-nd
-bf
-bh
-bj
-cp
-cs
-ct
-cu
-ab
-ab
-ab
-ab
-ab
-"}
-(38,1,1) = {"
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-ef
-eC
-fc
-fv
-fv
-gR
-gQ
-hl
-hU
-ha
-it
-pQ
-jd
-ha
-jw
-jI
-jW
-kk
-kz
-by
-bC
-bF
-ca
-bL
-bO
-yd
-bi
-yd
-cq
-RI
-RI
-nf
-ab
-ab
-ab
-ab
-ab
-"}
-(39,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-eg
-eD
-fd
-bl
-bm
-gS
-hn
-gQ
-hV
-ha
-ha
-ha
-ha
-ha
-ju
-jJ
-kl
-kl
-be
-bz
-bD
-bG
-mj
-bM
-RV
-RI
-RI
-RI
-cr
-nf
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(40,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-dP
-eE
-fe
-dy
-bn
-dy
-ho
-hD
-dy
-dy
-ac
-ab
-ab
-ab
-ac
-jK
-ju
-km
-kB
-br
-bE
-bH
-bJ
-bN
-bP
-cl
-cn
-RI
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(41,1,1) = {"
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-eF
-eF
-dy
-bo
-dy
-eF
-eF
-dy
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ju
-ju
-kC
-bA
-lu
-lP
-bK
-mK
-kD
-cm
-co
-RI
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-"}
-(42,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-dy
-gg
-dy
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ju
-kD
-bB
-Au
-kD
-bB
-ju
-ju
-ju
-ju
-RI
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(43,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-fx
-bp
-fx
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ju
-bs
-bu
-ju
-ch
-cj
-ju
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(44,1,1) = {"
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-bq
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ju
-bt
-cg
-ju
-ci
-ck
-ju
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-"}
-(45,1,1) = {"
-aa
-aa
-aa
-ab
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ju
-ju
-ju
-ju
-ju
-ju
-ju
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-"}
-(46,1,1) = {"
-aa
-aa
-aa
-aa
-aa
-ab
-ab
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-"}
-(47,1,1) = {"
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-"}
-(48,1,1) = {"
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-"}
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm
new file mode 100644
index 00000000000..6f97ce3e9f8
--- /dev/null
+++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm
@@ -0,0 +1,8654 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aj" = (
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"ap" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"ar" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"at" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"av" = (
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"aT" = (
+/obj/effect/decal/cleanable/blood,
+/obj/item/clothing/mask/gas/clown_hat{
+ desc = "What is this? A secret syndie space face, inside the secret syndie space base?";
+ name = "syndicate clown mask"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"aX" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"be" = (
+/obj/machinery/atmospherics/binary/pump/on{
+ name = "Air To Distro"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"br" = (
+/obj/effect/turf_decal/stripes/red/line,
+/obj/machinery/door_control{
+ id = "syndie_lavaland_vault";
+ name = "Vault Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_x = 24;
+ pixel_y = -24;
+ req_access_txt = "150";
+ specialfunctions = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"bw" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "whitebluefull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"bO" = (
+/obj/structure/rack,
+/obj/item/rpd{
+ pixel_y = 3
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"bS" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"bT" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"bY" = (
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"cg" = (
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "darkbluecorners"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"ch" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"cj" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"cs" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"cB" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 5;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"cC" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"cD" = (
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 4;
+ initialize_directions = 11;
+ level = 2
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"cE" = (
+/obj/machinery/atmospherics/binary/valve,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"cH" = (
+/obj/machinery/door/window/eastright{
+ name = "Animal Storage";
+ req_access_txt = "150";
+ req_one_access_txt = "150"
+ },
+/obj/structure/window/basic{
+ dir = 1
+ },
+/turf/simulated/floor/grass,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"cJ" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 5;
+ level = 1
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"cL" = (
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Medical APC";
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"cO" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"cS" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4;
+ initialize_directions = 11;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"cU" = (
+/obj/structure/table/glass,
+/obj/machinery/reagentgrinder{
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/glass/beaker/large,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"di" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"dl" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"ds" = (
+/obj/structure/sign/poster/contraband/hacking_guide,
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"dH" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"dP" = (
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/portable_atmospherics/canister/sleeping_agent,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"dS" = (
+/obj/structure/closet/crate,
+/obj/item/extinguisher{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/item/extinguisher{
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/obj/item/extinguisher{
+ pixel_x = 1;
+ pixel_y = -1
+ },
+/obj/item/flashlight{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/item/flashlight{
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/obj/item/flashlight{
+ pixel_x = 1;
+ pixel_y = -1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"dW" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"el" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/box/monkeycubes/syndicate,
+/obj/item/storage/box/monkeycubes/syndicate,
+/obj/item/storage/box/monkeycubes/syndicate,
+/obj/item/storage/box/monkeycubes/syndicate,
+/obj/item/storage/box/monkeycubes/syndicate,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"em" = (
+/obj/structure/table,
+/obj/machinery/door_control{
+ id = "SSBrestricted";
+ name = "Shutters Control";
+ pixel_x = 6;
+ req_access_txt = "151"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"eC" = (
+/obj/machinery/atmospherics/unary/thermomachine/freezer,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"eN" = (
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"eQ" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"eV" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (NORTH)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"fb" = (
+/obj/machinery/kitchen_machine/microwave,
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"fe" = (
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"ff" = (
+/obj/machinery/cryopod/offstation,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"fi" = (
+/obj/machinery/atmospherics/pipe/simple/visible,
+/turf/simulated/floor/engine/air,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"fn" = (
+/obj/machinery/vending/syndichem,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -5;
+ pixel_y = 30
+ },
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTHWEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"fu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/chem_master,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (SOUTHWEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"fx" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"fF" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"fH" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"fP" = (
+/obj/effect/mob_spawn/human/spacebase_syndicate{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"fQ" = (
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"fU" = (
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"fX" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 4
+ },
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"ge" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"gg" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"gh" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"gj" = (
+/obj/structure/sign/securearea{
+ name = "\improper STAY CLEAR HEAVY MACHINERY";
+ pixel_y = 32
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"gl" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"gn" = (
+/obj/structure/sign/poster/contraband/syndicate_pistol,
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"gs" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"gu" = (
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 1
+ },
+/obj/machinery/portable_atmospherics/canister/toxins,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"gD" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"gS" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/bed/roller,
+/obj/machinery/iv_drip,
+/obj/item/reagent_containers/iv_bag/blood/OMinus,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"gY" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/redgrid,
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"gZ" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"hc" = (
+/obj/machinery/atmospherics/binary/volume_pump,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"hp" = (
+/obj/structure/table/glass,
+/obj/machinery/reagentgrinder{
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/glass/beaker/large,
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Chemistry APC";
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"hq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"hr" = (
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 8
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"hB" = (
+/obj/machinery/plantgenes,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"hK" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"hO" = (
+/obj/item/stack/sheet/mineral/plastitanium{
+ amount = 30;
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/stack/sheet/mineral/plastitanium{
+ amount = 30
+ },
+/obj/item/stack/sheet/mineral/plastitanium{
+ amount = 30;
+ pixel_x = -5;
+ pixel_y = -5
+ },
+/obj/structure/rack{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"hR" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"hS" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"hX" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4;
+ initialize_directions = 11;
+ level = 1
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"ia" = (
+/turf/simulated/mineral,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"ic" = (
+/turf/template_noop,
+/area/template_noop)
+"id" = (
+/obj/machinery/atmospherics/unary/passive_vent,
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"ii" = (
+/obj/machinery/hydroponics/constructable,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"ik" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"in" = (
+/obj/machinery/kitchen_machine/oven,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"ir" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"it" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"iy" = (
+/obj/structure/table,
+/obj/machinery/photocopier/faxmachine/longrange/syndie{
+ department = "Syndicate Bioweapon Research Outpost"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"iA" = (
+/obj/machinery/atmospherics/pipe/simple/visible/universal{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"iF" = (
+/obj/structure/table,
+/obj/item/pen,
+/obj/item/paper_bin,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"iH" = (
+/obj/machinery/atmospherics/unary/thermomachine/heater,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"ji" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"jl" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"jm" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"jq" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"jt" = (
+/obj/structure/table,
+/obj/item/storage/box/masks{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/storage/box/gloves{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"jy" = (
+/obj/structure/toilet{
+ dir = 8
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "freezerfloor"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"jB" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/soap/syndie,
+/obj/item/soap/syndie,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"jC" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"jI" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"jO" = (
+/obj/structure/chair/stool/bar,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"jS" = (
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 4;
+ initialize_directions = 11;
+ level = 2
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"jW" = (
+/obj/structure/table/wood,
+/obj/machinery/chem_dispenser/beer/upgraded{
+ dir = 1
+ },
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"kg" = (
+/obj/machinery/computer/cryopod{
+ pixel_x = -32;
+ req_one_access = null
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"kk" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"ks" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitebluefull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"ku" = (
+/obj/structure/window/basic{
+ dir = 4
+ },
+/obj/structure/reagent_dispensers/watertank/high,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"kC" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"kD" = (
+/obj/structure/table,
+/obj/item/paper_bin,
+/obj/item/pen,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"kE" = (
+/obj/effect/spawner/window/reinforced,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"kI" = (
+/obj/machinery/portable_atmospherics/canister/toxins,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"kU" = (
+/obj/structure/table/glass,
+/obj/item/storage/box/beakers{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/storage/box/syringes,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"kY" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"lf" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/main)
+"lm" = (
+/obj/machinery/atmospherics/unary/passive_vent,
+/turf/simulated/floor/engine/air,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"lo" = (
+/obj/machinery/optable,
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"lr" = (
+/obj/machinery/smartfridge,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"lu" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel{
+ icon_state = "whitebluefull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"lv" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/stack/sheet/cardboard{
+ amount = 3
+ },
+/obj/item/stack/rods/twentyfive,
+/obj/item/stock_parts/cell/high/plus,
+/obj/item/storage/box/stockparts/deluxe,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"lw" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"ly" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"lB" = (
+/obj/machinery/smartfridge/secure/chemistry/virology/preloaded/syndicate,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"lM" = (
+/obj/effect/mob_spawn/human/spacebase_syndicate{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"lZ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/yellow{
+ d1 = 0;
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"mh" = (
+/obj/structure/table/glass,
+/obj/structure/reagent_dispensers/virusfood{
+ pixel_y = 28
+ },
+/obj/item/clothing/gloves/color/latex,
+/obj/item/healthanalyzer,
+/obj/item/clothing/glasses/hud/health,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"mi" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"mB" = (
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Telecomms APC";
+ pixel_y = 24
+ },
+/obj/structure/filingcabinet/chestdrawer,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"mE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/fans/tiny,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"mP" = (
+/obj/machinery/power/generator,
+/obj/structure/cable/yellow,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"mX" = (
+/obj/structure/sink{
+ dir = 4;
+ icon_state = "sink";
+ pixel_x = 10;
+ pixel_y = 0
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"nc" = (
+/obj/machinery/atmospherics/unary/outlet_injector/on{
+ dir = 8
+ },
+/turf/simulated/floor/plating/airless,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"ne" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8;
+ initialize_directions = 11
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"nf" = (
+/obj/item/book/manual/chef_recipes{
+ pixel_x = 2;
+ pixel_y = 6
+ },
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"nj" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"nm" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"nr" = (
+/obj/machinery/door/airlock/vault{
+ id_tag = "syndie_lavaland_vault";
+ locked = 1;
+ req_access_txt = "150"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"nv" = (
+/obj/machinery/light,
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"ny" = (
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "whitegreen";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"nA" = (
+/turf/simulated/floor/grass,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"nD" = (
+/obj/machinery/hydroponics/constructable,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"nG" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"nT" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"nY" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"nZ" = (
+/obj/machinery/reagentgrinder,
+/obj/item/stack/sheet/mineral/plasma{
+ amount = 5
+ },
+/obj/item/stack/sheet/mineral/uranium{
+ amount = 10
+ },
+/obj/item/stack/sheet/mineral/gold{
+ amount = 10
+ },
+/obj/structure/table/glass,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"ob" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"oi" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"oj" = (
+/obj/structure/closet/crate,
+/obj/item/storage/box/donkpockets{
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/obj/item/storage/box/donkpockets{
+ pixel_y = 3
+ },
+/obj/item/storage/box/donkpockets{
+ pixel_x = 2
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Storage APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"ol" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"ow" = (
+/obj/structure/closet/crate/medical,
+/obj/item/storage/firstaid/fire{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/storage/firstaid/brute,
+/obj/item/storage/firstaid/regular{
+ pixel_x = -3;
+ pixel_y = -3
+ },
+/obj/structure/window/basic,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"oO" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"oW" = (
+/obj/structure/window/basic{
+ dir = 4
+ },
+/obj/machinery/biogenerator,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/reagent_containers/glass/bucket,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"oZ" = (
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/atmospherics/binary/pump{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"pa" = (
+/obj/effect/mob_spawn/human/spacebase_syndicate{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"ph" = (
+/obj/machinery/light,
+/obj/machinery/cryopod/offstation,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"pp" = (
+/obj/machinery/vending/hydronutrients,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"pA" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"pG" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"pI" = (
+/obj/structure/table/reinforced,
+/obj/item/retractor,
+/obj/item/hemostat,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/cautery,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"pK" = (
+/obj/item/flag/syndi,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"pR" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"qs" = (
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"qt" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/computer/operating,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"qv" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"qz" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"qF" = (
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"qN" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4;
+ initialize_directions = 11;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"qQ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"qT" = (
+/obj/machinery/conveyor_switch/oneway{
+ id = "syndiegarbage";
+ name = "disposal coveyor"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"qY" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 10
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"rp" = (
+/obj/machinery/vending/toyliberationstation{
+ req_access_txt = "150"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"rr" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"rw" = (
+/obj/item/gun/energy/floragun,
+/obj/item/gun/energy/floragun,
+/obj/item/gun/energy/floragun,
+/obj/item/gun/energy/floragun,
+/obj/structure/closet/crate/hydroponics,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"rD" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/reagent_containers/spray/cleaner,
+/obj/item/reagent_containers/spray/cleaner,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"rK" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"rN" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 9
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"rV" = (
+/obj/machinery/seed_extractor,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"rW" = (
+/obj/effect/decal/warning_stripes/north,
+/obj/machinery/atmospherics/binary/pump,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"sb" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"sr" = (
+/obj/effect/decal/warning_stripes/blue,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"ss" = (
+/obj/structure/bookcase/random,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"sw" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"sz" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/navbeacon/invisible{
+ codes_txt = "patrol;next_patrol=SBSE";
+ location = "SBNE"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"sH" = (
+/obj/machinery/vending/artvend,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"sR" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"te" = (
+/obj/machinery/computer/camera_advanced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"tf" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"th" = (
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"tj" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8;
+ initialize_directions = 11
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"tv" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"tz" = (
+/obj/structure/closet/secure_closet/medical1{
+ req_access = null;
+ req_access_txt = "150"
+ },
+/obj/item/defibrillator,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"tL" = (
+/obj/structure/closet/firecloset/full,
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"tQ" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"tW" = (
+/obj/structure/table,
+/obj/machinery/computer/library/checkout,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"uk" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"un" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/fans/tiny,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"uq" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "freezerfloor"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"ur" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"uu" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"uz" = (
+/obj/machinery/portable_atmospherics/pump,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"uF" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/stack/sheet/metal/fifty{
+ pixel_x = -5;
+ pixel_y = -5
+ },
+/obj/item/stack/sheet/metal/fifty{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/stack/sheet/metal/fifty,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"uJ" = (
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"uL" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 12
+ },
+/obj/item/storage/box/monkeycubes/syndicate,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"uN" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4;
+ initialize_directions = 11;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1;
+ initialize_directions = 11;
+ level = 1
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"uX" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"uZ" = (
+/obj/machinery/monkey_recycler,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (SOUTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"ve" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"vk" = (
+/obj/machinery/kitchen_machine/grill,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"vn" = (
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"vq" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"vs" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8";
+ tag = ""
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"vt" = (
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"vv" = (
+/obj/structure/table/wood,
+/obj/machinery/chem_dispenser/soda/upgraded{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"vE" = (
+/obj/machinery/atmospherics/binary/volume_pump{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"vF" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/structure/window/plasmareinforced,
+/obj/structure/grille,
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"vJ" = (
+/obj/structure/closet/l3closet,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"vK" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/mop,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"vL" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/bot,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurplefull";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"vM" = (
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"vP" = (
+/obj/machinery/recycler,
+/obj/machinery/conveyor/east{
+ id = "syndiegarbage"
+ },
+/obj/machinery/light,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"vQ" = (
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"vY" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"wc" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1;
+ initialize_directions = 11;
+ level = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"wf" = (
+/obj/structure/closet/crate,
+/obj/item/vending_refill/snack{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/vending_refill/snack{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/vending_refill/coffee,
+/obj/item/vending_refill/cola,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"wg" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"wh" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"wj" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurplefull";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"wn" = (
+/obj/structure/table,
+/obj/machinery/smartfridge/disks,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"wp" = (
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"wq" = (
+/obj/structure/closet/crate/secure/weapon{
+ req_access_txt = "150"
+ },
+/obj/item/ammo_box/magazine/m10mm/ap,
+/obj/item/ammo_box/magazine/m10mm/ap,
+/obj/item/ammo_box/magazine/m10mm/fire,
+/obj/item/ammo_box/magazine/m10mm/fire,
+/obj/item/ammo_box/magazine/m10mm/hp,
+/obj/item/ammo_box/magazine/m10mm/hp,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"ws" = (
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"wz" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkbluecorners"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"wB" = (
+/obj/structure/bed,
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"wC" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"wJ" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/effect/turf_decal/caution/red,
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 4;
+ initialize_directions = 11;
+ level = 2
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"wS" = (
+/obj/item/kitchen/rollingpin,
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"wX" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Primary Corridor APC";
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"wZ" = (
+/obj/machinery/atmospherics/binary/circulator{
+ side = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"xc" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"xm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/vending/medical/syndicate_access,
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (NORTHWEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"xo" = (
+/obj/machinery/door_control{
+ id = "syndbaseventing";
+ name = "Toxin Venting Control";
+ pixel_x = -8;
+ pixel_y = 26
+ },
+/obj/machinery/ignition_switch{
+ id = "syndbaseigniter";
+ pixel_x = 6;
+ pixel_y = 25
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"xr" = (
+/obj/structure/window/basic{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"xt" = (
+/obj/machinery/portable_atmospherics/canister/air{
+ anchored = 1
+ },
+/turf/simulated/floor/engine/air,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"xu" = (
+/obj/structure/sign/poster/contraband/tools,
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"xB" = (
+/obj/item/storage/box/monkeycubes/syndicate,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"xG" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"xN" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"yf" = (
+/obj/machinery/computer/monitor{
+ name = "Engine Grid Power Monitoring Computer"
+ },
+/obj/structure/cable/yellow,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"yq" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"yz" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"yB" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"yE" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"yY" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"yZ" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 9
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"zj" = (
+/obj/structure/table,
+/obj/item/storage/box/disks_plantgene,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"zl" = (
+/obj/structure/table/glass,
+/obj/item/reagent_containers/syringe/antiviral,
+/obj/item/reagent_containers/dropper,
+/obj/item/reagent_containers/spray/cleaner,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"zm" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"zs" = (
+/obj/structure/sign/biohazard{
+ pixel_y = 0
+ },
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/virology)
+"zG" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/cans/beer,
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"zS" = (
+/obj/structure/window/basic{
+ dir = 4
+ },
+/obj/machinery/floodlight,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Ai" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Aj" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Am" = (
+/obj/structure/closet/secure_closet/freezer/fridge/open,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/item/reagent_containers/food/condiment/flour,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"AA" = (
+/obj/structure/table/reinforced,
+/obj/item/clothing/glasses/science,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurplefull";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"AB" = (
+/obj/machinery/autolathe/syndicate,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"AG" = (
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (NORTHWEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"AI" = (
+/obj/structure/table/glass,
+/obj/item/stack/sheet/mineral/plasma{
+ amount = 5;
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/obj/item/stack/sheet/mineral/plasma{
+ amount = 5;
+ pixel_y = 2
+ },
+/obj/item/stack/sheet/mineral/plasma{
+ amount = 5;
+ pixel_x = 2;
+ pixel_y = -2
+ },
+/obj/item/reagent_containers/glass/bottle/charcoal{
+ pixel_x = 6
+ },
+/obj/item/reagent_containers/glass/bottle/epinephrine,
+/obj/item/storage/box/beakers/bluespace,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTH)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"AJ" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"AM" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"AU" = (
+/obj/machinery/vending/cigarette/syndicate/free,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"AV" = (
+/turf/simulated/mineral,
+/area/template_noop)
+"AX" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Bt" = (
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"BC" = (
+/obj/machinery/door/airlock/hatch/syndicate,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"BG" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 5
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"BH" = (
+/obj/structure/table/reinforced,
+/obj/item/scalpel,
+/obj/item/circular_saw{
+ pixel_y = 9
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"BN" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"BS" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Cd" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Ce" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Cf" = (
+/obj/machinery/conveyor/east{
+ id = "syndiegarbage"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Cj" = (
+/obj/item/reagent_containers/food/condiment/saltshaker{
+ pixel_x = -3;
+ pixel_y = 0
+ },
+/obj/item/reagent_containers/food/condiment/peppermill{
+ pixel_x = 3
+ },
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Cr" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Cv" = (
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (SOUTHWEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"CG" = (
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"CH" = (
+/obj/structure/closet/bombcloset,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"CI" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"CL" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/redgrid,
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"CM" = (
+/obj/structure/sign/explosives/alt,
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"Da" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Dp" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4;
+ initialize_directions = 11;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Dv" = (
+/obj/machinery/portable_atmospherics/pump,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Dw" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Dy" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"DE" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"DG" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"DH" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"DL" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"DN" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"DP" = (
+/obj/item/clothing/glasses/night,
+/obj/item/clothing/glasses/night,
+/obj/item/clothing/mask/gas/syndicate,
+/obj/item/clothing/mask/gas/syndicate,
+/obj/item/clothing/shoes/combat,
+/obj/item/clothing/shoes/combat,
+/obj/item/storage/belt/military,
+/obj/item/storage/belt/military,
+/obj/item/clothing/under/syndicate/combat,
+/obj/item/clothing/under/syndicate/combat,
+/obj/item/clothing/gloves/combat,
+/obj/structure/closet/crate/secure/gear{
+ req_access_txt = "150"
+ },
+/obj/item/clothing/gloves/combat,
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"DW" = (
+/obj/machinery/computer/pandemic,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"El" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Em" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Es" = (
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"EA" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/obj/structure/cable/yellow{
+ d1 = 0;
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"EC" = (
+/obj/structure/table,
+/obj/item/storage/box/syringes,
+/obj/item/gun/syringe/syndicate,
+/obj/machinery/defibrillator_mount/loaded{
+ pixel_x = -30
+ },
+/obj/item/stock_parts/cell/high/plus,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"EI" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"EK" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"EM" = (
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"EO" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"EP" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8;
+ initialize_directions = 11
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"ET" = (
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"EW" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/structure/window/plasmareinforced,
+/obj/structure/window/plasmareinforced{
+ dir = 8
+ },
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/insulated,
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"EX" = (
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkbluecorners"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Fd" = (
+/obj/structure/table,
+/obj/item/storage/firstaid/regular{
+ pixel_x = -4;
+ pixel_y = -4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/firstaid/fire{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Fe" = (
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Virology APC";
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"Fi" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Fl" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/virology)
+"Fm" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Fp" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/chem_heater,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Fs" = (
+/obj/structure/window/basic{
+ dir = 1
+ },
+/turf/simulated/floor/grass,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Ft" = (
+/obj/structure/sign/chemistry,
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"FC" = (
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"FK" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"FQ" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/storage/bag/trash,
+/obj/item/storage/bag/trash,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"FW" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"FY" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"Ga" = (
+/obj/machinery/cryopod/offstation,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Gd" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Ge" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/chem_master,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (SOUTHWEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Go" = (
+/obj/machinery/cooker/deepfryer,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Gq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"GJ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -5;
+ pixel_y = 30
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"GK" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/item/storage/bag/plants,
+/obj/item/storage/bag/plants,
+/obj/item/storage/bag/plants,
+/obj/item/storage/bag/plants,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"GM" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"GQ" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"GY" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Hc" = (
+/turf/space,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"He" = (
+/obj/machinery/portable_atmospherics/scrubber,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Hq" = (
+/obj/structure/closet/firecloset/full,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Hv" = (
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"HB" = (
+/obj/structure/sink{
+ dir = 8;
+ icon_state = "sink";
+ pixel_x = -12;
+ pixel_y = 2
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"HF" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"HL" = (
+/obj/structure/closet/crate,
+/obj/item/storage/box/stockparts/deluxe,
+/obj/item/storage/box/stockparts/deluxe,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/circuitboard/gibber,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"HS" = (
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"HZ" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Ig" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{
+ dir = 4
+ },
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Ih" = (
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Il" = (
+/obj/structure/closet/secure_closet/freezer/fridge/open,
+/obj/item/reagent_containers/food/condiment/enzyme,
+/obj/item/reagent_containers/food/drinks/cans/beer,
+/obj/item/reagent_containers/food/drinks/cans/beer,
+/obj/item/reagent_containers/food/drinks/cans/beer,
+/obj/item/reagent_containers/food/drinks/cans/beer,
+/obj/item/reagent_containers/food/drinks/cans/beer,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Iv" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"IA" = (
+/obj/machinery/vending/boozeomat,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"IL" = (
+/obj/machinery/navbeacon/invisible{
+ codes_txt = "patrol;next_patrol=SBNE";
+ location = "SBNW"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"IZ" = (
+/obj/machinery/atmospherics/binary/circulator,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Ja" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"Je" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Jg" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/effect/turf_decal/caution/red,
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Jh" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitebluefull";
+ tag = "icon-whitebluefull"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Ji" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-22"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Jk" = (
+/obj/machinery/tcomms/relay/ruskie{
+ network_id = "SYNDIE-RELAY"
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"Jm" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Jq" = (
+/obj/structure/table/wood,
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"JH" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"JX" = (
+/obj/machinery/navbeacon/invisible{
+ codes_txt = "patrol;next_patrol=SBNW";
+ location = "SBSW"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Kf" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Kh" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Ki" = (
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-22"
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Bar APC";
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Kj" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Km" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/machinery/chem_heater,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Ko" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Kt" = (
+/obj/machinery/bodyscanner,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Kv" = (
+/obj/structure/mirror{
+ pixel_y = 32
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "freezerfloor"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Kw" = (
+/obj/machinery/processor,
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Kx" = (
+/obj/machinery/recharge_station,
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"KB" = (
+/mob/living/simple_animal/pig,
+/turf/simulated/floor/grass,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"KH" = (
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"KJ" = (
+/obj/item/flag/syndi,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"KK" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"KQ" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"KS" = (
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = -5;
+ pixel_y = -5
+ },
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/stack/sheet/glass/fifty,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"La" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Le" = (
+/obj/structure/reagent_dispensers/beerkeg,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Lf" = (
+/obj/machinery/cryopod/offstation,
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Lh" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/item/wrench,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Lj" = (
+/obj/item/reagent_containers/food/drinks/shaker,
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Lk" = (
+/obj/machinery/computer/syndicate_depot/teleporter,
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Lm" = (
+/obj/structure/table,
+/obj/item/clothing/glasses/welding,
+/obj/item/clothing/glasses/welding,
+/obj/item/clothing/glasses/welding,
+/obj/item/clothing/glasses/welding,
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Engineering APC";
+ pixel_y = 24;
+ shock_proof = 1
+ },
+/obj/structure/cable/yellow{
+ d1 = 0;
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Ls" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"LI" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4;
+ initialize_directions = 11;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"LK" = (
+/obj/structure/chair/stool/bar,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"LP" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkbluecorners"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"LQ" = (
+/obj/structure/closet/crate/secure/gear{
+ req_access_txt = "150"
+ },
+/obj/item/clothing/suit/space/syndicate,
+/obj/item/clothing/suit/space/syndicate,
+/obj/item/clothing/mask/gas/syndicate,
+/obj/item/clothing/mask/gas/syndicate,
+/obj/item/clothing/head/helmet/space/syndicate,
+/obj/item/clothing/head/helmet/space/syndicate,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"LR" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"LV" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 10
+ },
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"LX" = (
+/obj/machinery/door/poddoor{
+ id_tag = "syndbaseventing";
+ name = "Venting Bay Door";
+ use_power = 0
+ },
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"LY" = (
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 12
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "freezerfloor"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Mb" = (
+/obj/machinery/atmospherics/unary/vent_pump/on,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Mc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Me" = (
+/obj/machinery/atmospherics/binary/volume_pump,
+/obj/machinery/alarm/syndicate{
+ pixel_x = -32
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Mi" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Mk" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitepurplefull";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Mq" = (
+/obj/structure/rack{
+ dir = 8
+ },
+/obj/item/storage/belt/medical,
+/obj/item/crowbar,
+/obj/item/clothing/glasses/hud/health,
+/obj/item/clothing/accessory/stethoscope,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Ms" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"MH" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"MU" = (
+/obj/structure/table,
+/obj/item/t_scanner,
+/obj/item/t_scanner,
+/obj/item/t_scanner,
+/obj/item/t_scanner,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"MV" = (
+/obj/effect/mob_spawn/human/spacebase_syndicate{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Na" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"NE" = (
+/obj/machinery/atmospherics/unary/outlet_injector/on,
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"NN" = (
+/obj/structure/bookcase/random,
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"NO" = (
+/obj/item/paper_bin{
+ pixel_x = -2;
+ pixel_y = 5
+ },
+/obj/item/hand_labeler,
+/obj/item/pen/red,
+/obj/item/restraints/handcuffs,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/clothing/glasses/science,
+/obj/structure/table/glass,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"NT" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -5;
+ pixel_y = 30
+ },
+/obj/structure/rack,
+/obj/item/clothing/gloves/color/yellow,
+/obj/item/clothing/gloves/color/yellow,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"NV" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Og" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"On" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/power/smes/engineering,
+/obj/structure/cable/yellow,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Op" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Ot" = (
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkred"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"OG" = (
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"OK" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"OY" = (
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Dorms APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Pq" = (
+/obj/item/holosign_creator/atmos,
+/obj/structure/table,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"PB" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8;
+ initialize_directions = 11
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"PE" = (
+/obj/machinery/vending/medical/syndicate_access,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whitegreen";
+ tag = "icon-whitegreen (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"PH" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/machinery/chem_dispenser/upgraded,
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (SOUTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"PI" = (
+/obj/machinery/light,
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"PK" = (
+/obj/structure/table/wood,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"PX" = (
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2";
+ pixel_y = 1
+ },
+/obj/machinery/computer/monitor{
+ name = "Output Grid Power Monitoring Computer"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Qj" = (
+/obj/structure/closet/crate/medical,
+/obj/item/clothing/mask/breath/medical,
+/obj/item/clothing/mask/breath/medical,
+/obj/item/tank/internals/anesthetic,
+/obj/item/tank/internals/anesthetic,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Qr" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Qt" = (
+/obj/structure/sign/barsign,
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"QO" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"QQ" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"QW" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Ri" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"Rk" = (
+/obj/machinery/cryopod/offstation,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Rn" = (
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"Rr" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Ry" = (
+/obj/structure/table/reinforced,
+/obj/item/surgicaldrill,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/bonegel,
+/obj/item/bonesetter,
+/obj/item/FixOVein,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"RC" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"RF" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"RG" = (
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/obj/effect/mob_spawn/human/spacebase_syndicate{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"RM" = (
+/obj/structure/grille,
+/obj/structure/window/full/plastitanium,
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/virology)
+"RN" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Sh" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/navbeacon/invisible{
+ codes_txt = "patrol;next_patrol=SBSW";
+ location = "SBSE"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8;
+ initialize_directions = 11
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"SE" = (
+/obj/structure/table/glass,
+/obj/item/folder/white,
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -3
+ },
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -3
+ },
+/obj/item/reagent_containers/dropper,
+/obj/item/screwdriver/nuke{
+ pixel_y = 18
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/item/reagent_containers/spray/cleaner,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"SI" = (
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/bluespace_beacon/syndicate/infiltrator,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"SO" = (
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/obj/machinery/cryopod/offstation,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"SQ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"SU" = (
+/obj/machinery/vending/coffee/free,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"SV" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"SW" = (
+/mob/living/simple_animal/cow,
+/turf/simulated/floor/grass,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"SX" = (
+/obj/structure/window/basic{
+ dir = 4
+ },
+/mob/living/simple_animal/chicken,
+/turf/simulated/floor/grass,
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Tc" = (
+/obj/structure/closet/crate,
+/obj/item/storage/box/donkpockets{
+ pixel_x = -2;
+ pixel_y = 6
+ },
+/obj/item/storage/box/donkpockets{
+ pixel_y = 3
+ },
+/obj/item/storage/box/donkpockets{
+ pixel_x = 2
+ },
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"Te" = (
+/obj/machinery/sparker{
+ id = "syndbaseigniter";
+ pixel_x = -20
+ },
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 4
+ },
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Tg" = (
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Tl" = (
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 4;
+ initialize_directions = 11;
+ level = 2
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Tm" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Tn" = (
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Tq" = (
+/obj/structure/window/basic{
+ dir = 4
+ },
+/obj/machinery/vending/hydroseeds,
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Tr" = (
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Arrivals APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Tv" = (
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Tw" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "floorgrime"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"TC" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"TD" = (
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"TJ" = (
+/obj/structure/table/wood,
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"TM" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/alarm/syndicate{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"TN" = (
+/obj/structure/curtain/open/shower,
+/turf/simulated/floor/plasteel{
+ icon_state = "freezerfloor"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"Uo" = (
+/obj/structure/closet/l3closet,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"Us" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"UF" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"UR" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Vc" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"Vd" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/floor/redgrid,
+/area/ruin/unpowered/syndicate_space_base/telecomms)
+"Vf" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Vg" = (
+/obj/machinery/portable_atmospherics/canister/carbon_dioxide,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Vl" = (
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"Vs" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Vu" = (
+/obj/machinery/monkey_recycler,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Vx" = (
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/effect/turf_decal/caution/red,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"VB" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/insulated{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"VH" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/power/smes/engineering{
+ charge = 0
+ },
+/obj/structure/cable/yellow,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"VK" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"VP" = (
+/obj/machinery/light,
+/obj/effect/mob_spawn/human/spacebase_syndicate{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"VQ" = (
+/obj/machinery/shower{
+ dir = 8;
+ icon_state = "shower";
+ tag = "icon-shower (WEST)"
+ },
+/obj/item/soap/syndie,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "freezerfloor"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"VW" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Wi" = (
+/obj/machinery/kitchen_machine/candy_maker,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Wl" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/hydroponics/constructable,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Wn" = (
+/obj/machinery/sleeper/syndie,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whiteblue";
+ tag = "icon-whitehall (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Wr" = (
+/turf/simulated/floor/engine/air,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Wz" = (
+/obj/structure/sign/lifestar{
+ desc = "The Star of Life, a symbol of Medical Aid.";
+ icon_state = "lifestar";
+ name = "Medbay"
+ },
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"WC" = (
+/obj/item/kitchen/knife{
+ pixel_x = 6
+ },
+/obj/structure/table,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "cafeteria";
+ tag = "icon-cafeteria (NORTHEAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"WG" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"WN" = (
+/obj/machinery/atmospherics/pipe/manifold/visible{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"WT" = (
+/obj/structure/window/basic,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "whiteblue";
+ tag = "icon-whiteblue (WEST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/medbay)
+"Xa" = (
+/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
+ dir = 9
+ },
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Xb" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Xh" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Xm" = (
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "yellow"
+ },
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"XQ" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/structure/window/plasmareinforced{
+ dir = 1
+ },
+/obj/structure/window/plasmareinforced,
+/obj/structure/window/plasmareinforced{
+ dir = 4
+ },
+/obj/structure/grille,
+/obj/machinery/atmospherics/pipe/simple/insulated,
+/turf/simulated/floor/engine/vacuum,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"XS" = (
+/obj/structure/table/glass,
+/obj/item/folder/white,
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -3
+ },
+/obj/item/reagent_containers/glass/beaker/large{
+ pixel_x = -3
+ },
+/obj/item/reagent_containers/dropper,
+/obj/item/screwdriver/nuke{
+ pixel_y = 18
+ },
+/obj/item/reagent_containers/spray/cleaner,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (EAST)"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"Ya" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4;
+ level = 1
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1;
+ initialize_directions = 11;
+ level = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"Yc" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0;
+ tag = ""
+ },
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"Yq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/universal{
+ dir = 4
+ },
+/turf/simulated/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Yz" = (
+/obj/machinery/door/poddoor/shutters{
+ dir = 8;
+ id_tag = "SSBrestricted";
+ name = "Syndicate Restricted Area"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/arrivals)
+"YC" = (
+/obj/effect/spawner/window/reinforced,
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/chemistry)
+"YJ" = (
+/obj/structure/table,
+/obj/machinery/cell_charger,
+/obj/item/stock_parts/cell/high/plus,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"YP" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 6
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"YU" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/storage/part_replacer,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/ruin/unpowered/syndicate_space_base/cargo)
+"Za" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Zg" = (
+/obj/machinery/power/apc/syndicate{
+ dir = 1;
+ name = "Test Chamber APC";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/engine,
+/area/ruin/unpowered/syndicate_space_base/testlab)
+"Zl" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/item/cultivator,
+/obj/item/cultivator,
+/obj/item/cultivator,
+/obj/item/cultivator,
+/obj/item/shovel/spade,
+/obj/item/shovel/spade,
+/obj/item/shovel/spade,
+/obj/item/shovel/spade,
+/obj/item/hatchet,
+/obj/item/hatchet,
+/obj/item/hatchet,
+/obj/item/hatchet,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/bar)
+"Zo" = (
+/obj/machinery/computer/general_air_control{
+ frequency = 1222;
+ name = "Bomb Mix Monitor";
+ sensors = list("burn_sensor" = "Burn Mix")
+ },
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered/syndicate_space_base/engineering)
+"Zy" = (
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "darkblue"
+ },
+/area/ruin/unpowered/syndicate_space_base/dormitories)
+"ZB" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/main)
+"ZR" = (
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/ruin/unpowered/syndicate_space_base/testlab)
+
+(1,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(2,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(3,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(4,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(5,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(6,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(7,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(8,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(9,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(10,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(11,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+"}
+(12,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+HZ
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+"}
+(13,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+fF
+fF
+fF
+fF
+fF
+fF
+fF
+fF
+nj
+nj
+nj
+nj
+nj
+nj
+hB
+Tw
+Wl
+Tw
+ii
+HB
+ii
+Tw
+ii
+Fs
+nA
+HZ
+AV
+AV
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+"}
+(14,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+Lf
+Vs
+KJ
+kg
+KJ
+Vs
+Rk
+nj
+iy
+iF
+Jk
+te
+nj
+rV
+Dy
+nD
+Dy
+nD
+Dy
+nD
+Dy
+nD
+Fs
+KB
+HZ
+lf
+lf
+gD
+xm
+Mq
+tz
+EC
+gS
+WT
+pI
+BH
+Ry
+gD
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+"}
+(15,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+fF
+SO
+La
+La
+La
+La
+La
+ph
+nj
+fU
+CL
+Vd
+gY
+nj
+pp
+Tw
+Dy
+Tw
+Dy
+Tw
+Dy
+Tw
+Dy
+Fs
+SW
+HZ
+uk
+uk
+Wz
+eV
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+lo
+gD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+"}
+(16,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+Ga
+Zy
+cg
+La
+EX
+Zy
+ff
+nj
+mB
+FY
+zm
+jl
+nj
+Tq
+xr
+zS
+wn
+Tw
+Dy
+zj
+ku
+oW
+cH
+SX
+HZ
+tv
+fQ
+EI
+cO
+ks
+lu
+lu
+Jh
+bw
+bw
+bw
+qt
+gD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+"}
+(17,1,1) = {"
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+fF
+fF
+qz
+La
+Fm
+fF
+fF
+nj
+nj
+hR
+uX
+kE
+nj
+Ji
+GK
+Zl
+rw
+Dy
+Tw
+lr
+Am
+Il
+Tw
+Ji
+HZ
+ZB
+yz
+gD
+cL
+Fd
+Kt
+Wn
+Wn
+ow
+Qj
+av
+jt
+gD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+"}
+(18,1,1) = {"
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+HS
+La
+Gq
+dl
+dl
+Tm
+LR
+Dp
+ne
+Cd
+ik
+Gd
+ap
+DN
+qN
+Gd
+ap
+Gd
+yY
+cS
+ap
+Gd
+ik
+Rr
+cC
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+gD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+"}
+(19,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+OY
+gl
+Xh
+gl
+gl
+Yc
+VW
+VW
+Mi
+IL
+pR
+it
+Tw
+Dy
+Tw
+Dy
+Tw
+Dy
+Tw
+Dy
+Tw
+Dy
+OG
+JX
+yz
+Fl
+AG
+cs
+wg
+lB
+DW
+PE
+Cv
+RM
+vq
+wC
+Fl
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+"}
+(20,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+fF
+fF
+qz
+La
+DE
+fF
+fF
+fF
+fF
+fF
+Op
+Es
+HZ
+Ki
+di
+Jq
+jO
+Tw
+IA
+WC
+wS
+fb
+Cj
+uJ
+Qt
+ZB
+yz
+Fl
+Fe
+EO
+EO
+EO
+bS
+EO
+ny
+nY
+wC
+wB
+Fl
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(21,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+fP
+Vs
+wz
+La
+LP
+Vs
+MV
+fF
+La
+fF
+xN
+uk
+HZ
+jW
+di
+zG
+LK
+Dy
+AU
+Lj
+uJ
+uJ
+uJ
+uJ
+HZ
+kk
+Kh
+ir
+uu
+qQ
+gg
+gg
+yq
+EO
+ny
+RM
+RM
+RM
+Fl
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(22,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+RG
+La
+La
+La
+La
+La
+VP
+fF
+La
+fF
+xN
+uk
+HZ
+Jq
+di
+PK
+jO
+Tw
+SU
+nf
+uJ
+uJ
+uJ
+uJ
+HZ
+uk
+yz
+zs
+ly
+jq
+EO
+jq
+EO
+EO
+ny
+nY
+wC
+wC
+Fl
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(23,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+fF
+pa
+Zy
+pK
+Zy
+pK
+Zy
+lM
+fF
+aT
+fF
+Ya
+mi
+HZ
+vv
+di
+TJ
+LK
+Dy
+Le
+Kw
+vk
+in
+Go
+Wi
+HZ
+uk
+yz
+Fl
+mh
+NO
+zl
+kU
+nZ
+uL
+uZ
+RM
+jI
+wB
+Fl
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(24,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+xN
+uk
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+DG
+uk
+PI
+Og
+Og
+Og
+Og
+YC
+Og
+Og
+YC
+Og
+Og
+Og
+Og
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(25,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Kx
+gh
+lw
+RN
+Em
+tL
+He
+Pq
+He
+Hq
+Em
+NV
+jC
+DG
+Tc
+dS
+YU
+vJ
+lv
+wf
+HL
+wf
+gn
+ws
+wq
+DG
+uk
+yz
+Og
+fn
+tQ
+HF
+FK
+fu
+Og
+fn
+tQ
+HF
+FK
+Ge
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(26,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+AB
+CG
+CG
+Jm
+Em
+AJ
+CG
+CG
+CG
+Jm
+Em
+wX
+uk
+EM
+SV
+vQ
+Iv
+vQ
+vQ
+vQ
+Ja
+br
+nr
+nG
+DP
+DG
+uk
+yz
+YC
+AI
+Mk
+wj
+vL
+AA
+fe
+AI
+Mk
+wj
+vL
+AA
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(27,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+hO
+CG
+uF
+KS
+Em
+uz
+Xm
+CG
+Xm
+Dv
+Em
+GJ
+uk
+DG
+oj
+rp
+oO
+Uo
+CH
+sH
+Ja
+el
+DG
+qs
+LQ
+DG
+uk
+yz
+Og
+hp
+XS
+UF
+Fp
+PH
+Og
+cU
+SE
+bT
+Km
+PH
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(28,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Em
+sR
+Hv
+Em
+Em
+Em
+Hv
+sR
+Em
+Em
+Em
+tf
+uk
+DG
+DG
+DG
+oi
+EM
+EM
+EM
+BC
+DG
+DG
+DG
+DG
+DG
+uk
+yz
+Og
+Og
+Og
+TM
+Ft
+Og
+Og
+Og
+Ft
+Xb
+Og
+Og
+Og
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(29,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Tn
+DH
+DH
+Da
+eQ
+ar
+Ms
+Qr
+BS
+BS
+hX
+sz
+BS
+FW
+Ko
+LI
+BS
+xG
+tj
+fx
+BS
+BS
+BS
+wh
+BS
+Sh
+yB
+ge
+Kf
+Fi
+EP
+PB
+Na
+Na
+Na
+sb
+kC
+cB
+Xb
+xB
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(30,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Za
+qF
+qF
+qF
+qF
+Ls
+SQ
+Tg
+uk
+uk
+hK
+uk
+uk
+uk
+El
+uk
+uk
+yz
+pG
+uk
+uk
+uk
+uk
+KQ
+uk
+gs
+uk
+vM
+Xb
+Ai
+hS
+CI
+Xb
+mX
+Xb
+CI
+Xb
+Ai
+Xb
+Vu
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(31,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Em
+Em
+Za
+qF
+qF
+qF
+JH
+QW
+SQ
+xu
+Em
+Em
+Em
+Em
+Em
+sR
+pA
+Em
+yE
+GM
+gZ
+yE
+yE
+yE
+yE
+yE
+yE
+TD
+TD
+TD
+TD
+TD
+rr
+CM
+TD
+TD
+TD
+CM
+ZR
+TD
+Og
+Og
+Og
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(32,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+MU
+qF
+Za
+qF
+qF
+qF
+qF
+Ls
+SQ
+bO
+Em
+Wr
+Wr
+Wr
+Vx
+Aj
+Ce
+vn
+yE
+nT
+rK
+xc
+uq
+uq
+uq
+uq
+uq
+TD
+ia
+ia
+ia
+TD
+un
+TD
+ia
+ia
+ia
+TD
+mE
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(33,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+PX
+DH
+vs
+Vf
+VH
+lZ
+AM
+Je
+SQ
+YJ
+Em
+Wr
+xt
+Wr
+Jg
+Aj
+iA
+UR
+yE
+nT
+rK
+yE
+Kv
+yE
+TN
+yE
+TN
+TD
+TD
+TD
+TD
+TD
+rr
+CM
+TD
+TD
+TD
+CM
+ZR
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(34,1,1) = {"
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Lm
+VK
+aX
+Mc
+On
+EA
+AM
+ch
+AX
+yf
+Em
+Wr
+lm
+fi
+wJ
+be
+jS
+rN
+yE
+dW
+Us
+yE
+LY
+yE
+jy
+yE
+VQ
+TD
+Zg
+fH
+fH
+RC
+uN
+ol
+RF
+RF
+dH
+cJ
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(35,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+NT
+qF
+ji
+AM
+AM
+AM
+AM
+nm
+EK
+ds
+Em
+Em
+Em
+Em
+Em
+yE
+yE
+yE
+yE
+Tr
+rK
+yE
+yE
+yE
+yE
+yE
+yE
+TD
+Rn
+Vl
+Vl
+sw
+Vc
+Vl
+Vl
+Vl
+Vc
+Ri
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+"}
+(36,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+th
+qF
+qF
+qF
+qF
+qF
+qF
+at
+qF
+YP
+Me
+BG
+TC
+qF
+Em
+jB
+ur
+WG
+aj
+Mb
+cj
+aj
+WG
+qT
+jm
+yE
+AV
+TD
+Vl
+Vl
+Vl
+sw
+Vc
+Vl
+Vl
+Vl
+Vc
+Ri
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(37,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+qF
+ET
+qF
+qF
+qF
+qF
+qF
+at
+eC
+Tl
+IZ
+cD
+vE
+gu
+Em
+vt
+WG
+WG
+xc
+WG
+rK
+xc
+WG
+WG
+Cf
+yE
+AV
+TD
+Vl
+Vl
+Vl
+sw
+Vc
+Vl
+Vl
+Vl
+Vc
+Ri
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(38,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+qF
+VB
+qF
+qF
+qF
+qF
+qF
+kY
+AM
+Lh
+mP
+qF
+qF
+qF
+Em
+rD
+vK
+FQ
+yE
+Ih
+QO
+yE
+yE
+gj
+vP
+yE
+AV
+TD
+Vl
+Vl
+Vl
+sw
+Vc
+Vl
+Vl
+Vl
+Vc
+Ri
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(39,1,1) = {"
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Em
+Ig
+Em
+Em
+xo
+qF
+JH
+QW
+iH
+WN
+wZ
+hr
+vE
+gu
+Em
+yE
+yE
+yE
+yE
+WG
+rK
+BN
+yE
+WG
+Cf
+yE
+AV
+TD
+Vl
+Vl
+Vl
+DL
+ve
+Vl
+Vl
+Vl
+ve
+DL
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(40,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+Em
+Em
+Em
+fX
+Te
+NE
+EW
+oZ
+cE
+Bt
+Ls
+qF
+qY
+hc
+yZ
+qF
+qF
+Em
+ss
+WG
+WG
+aj
+WG
+rK
+bY
+yE
+WG
+yE
+yE
+AV
+TD
+eN
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+nv
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(41,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+Em
+Hc
+LX
+fX
+fX
+Tv
+vF
+Zo
+qF
+qF
+wc
+OK
+QQ
+OK
+OK
+GQ
+qF
+Em
+ss
+WG
+WG
+xc
+WG
+rK
+MH
+yE
+yE
+yE
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+"}
+(42,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+Em
+Em
+Em
+LV
+Xa
+id
+XQ
+rW
+cE
+Bt
+vY
+qF
+Em
+KH
+qF
+qF
+dP
+Em
+NN
+WG
+WG
+yE
+aj
+ob
+aj
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+"}
+(43,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Yq
+Em
+Em
+Cr
+qF
+qF
+dP
+Em
+ss
+WG
+BN
+yE
+FC
+GY
+kD
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+"}
+(44,1,1) = {"
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+nc
+Hc
+Em
+kI
+qF
+qF
+Vg
+Em
+ss
+WG
+tW
+yE
+Dw
+hq
+Ot
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+"}
+(45,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Hc
+Hc
+Em
+kI
+qF
+Kj
+Vg
+Em
+yE
+yE
+yE
+yE
+wp
+em
+KK
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+"}
+(46,1,1) = {"
+ic
+ic
+ic
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+Em
+AV
+AV
+AV
+yE
+Yz
+yE
+yE
+yE
+AV
+AV
+AV
+AV
+TD
+eN
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+nv
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+"}
+(47,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+yE
+WG
+WG
+sr
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+"}
+(48,1,1) = {"
+ic
+AV
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+yE
+WG
+WG
+Lk
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+"}
+(49,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+yE
+WG
+WG
+SI
+yE
+AV
+AV
+AV
+AV
+TD
+Vl
+qv
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+Vl
+qv
+Vl
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+"}
+(50,1,1) = {"
+ic
+AV
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+yE
+yE
+yE
+yE
+yE
+AV
+AV
+AV
+AV
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+TD
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+"}
+(51,1,1) = {"
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+"}
+(52,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+"}
+(53,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(54,1,1) = {"
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+AV
+ic
+ic
+AV
+ic
+ic
+ic
+AV
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(55,1,1) = {"
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(56,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+AV
+ic
+ic
+ic
+AV
+ic
+AV
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(57,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(58,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+AV
+ic
+AV
+AV
+AV
+AV
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(59,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+AV
+AV
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+AV
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
+(60,1,1) = {"
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+AV
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+ic
+"}
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
index 3a657a7e054..1ba82c992a5 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
@@ -6735,7 +6735,7 @@
})
"nS" = (
/obj/structure/table/wood,
-/obj/item/reagent_containers/food/snacks/beetsoup,
+/obj/item/reagent_containers/food/snacks/soup/beetsoup,
/turf/simulated/floor/plasteel{
icon_state = "bar"
},
diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm
index 3001121184a..e77a5d19162 100644
--- a/_maps/map_files/RandomZLevels/beach.dmm
+++ b/_maps/map_files/RandomZLevels/beach.dmm
@@ -18,10 +18,6 @@
},
/turf/simulated/floor/beach/away/water/deep/sand_floor,
/area/awaymission/undersea)
-"af" = (
-/obj/structure/constructshell,
-/turf/simulated/floor/beach/away/water/deep/wood_floor,
-/area/awaymission/undersea)
"ag" = (
/obj/structure/chair/wood/wings,
/turf/simulated/floor/beach/away/water/deep/wood_floor,
@@ -46312,7 +46308,7 @@ ad
ad
ad
ah
-af
+ah
ah
ah
ar
@@ -46823,7 +46819,7 @@ av
av
ad
ad
-af
+ah
ah
ah
ah
@@ -48108,7 +48104,7 @@ av
av
ad
ad
-af
+ah
ah
ah
ah
@@ -48625,7 +48621,7 @@ ad
ad
ad
ah
-af
+ah
ah
ah
ah
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 82ff15e5bd5..41249533907 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -666,7 +666,7 @@
/area/awaymission/spacebattle/cruiser)
"cS" = (
/obj/structure/table/reinforced,
-/obj/item/reagent_containers/food/snacks/stew,
+/obj/item/reagent_containers/food/snacks/soup/stew,
/turf/simulated/floor/plasteel{
icon_state = "cafeteria";
dir = 2
diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm
index 5ceeeac6383..50a7074a7a9 100644
--- a/_maps/map_files/RandomZLevels/wildwest.dmm
+++ b/_maps/map_files/RandomZLevels/wildwest.dmm
@@ -1217,7 +1217,7 @@
},
/area/awaymission/wwgov)
"dy" = (
-/obj/item/reagent_containers/food/snacks/stew,
+/obj/item/reagent_containers/food/snacks/soup/stew,
/turf/simulated/floor/plasteel{
tag = "icon-stage_bleft";
icon_state = "stage_bleft"
diff --git a/code/__DEFINES/contracts.dm b/code/__DEFINES/contracts.dm
deleted file mode 100644
index 26351cfbac2..00000000000
--- a/code/__DEFINES/contracts.dm
+++ /dev/null
@@ -1,58 +0,0 @@
-#define CONTRACT_POWER "Power"
-#define CONTRACT_WEALTH "Wealth"
-#define CONTRACT_PRESTIGE "Prestige"
-#define CONTRACT_MAGIC "Magic"
-#define CONTRACT_REVIVE "Revive"
-#define CONTRACT_KNOWLEDGE "Knowledge"
-#define CONTRACT_UNWILLING "Unwilling"
-#define CONTRACT_FRIENDSHIP "Friendship"
-// FIXME: Implement these
-#define CONTRACT_ETALENT "Engineering Talent"
-#define CONTRACT_CTALENT "Chemistry Talent"
-#define CONTRACT_RETURNDEAD "Return Dead"
-#define CONTRACT_AUGMENT "Cybernetic Augmentations"
-#define CONTRACT_CANDY "Endless Candy"
-#define CONTRACT_ECHANCE "An Extra Chance"
-#define CONTRACT_ATECH "Advanced Technology"
-#define CONTRACT_DEVILSMACHINE "Devil's Machinery"
-#define CONTRACT_YOUTH "Eternal Youth"
-#define CONTRACT_FOOD "Food"
-#define CONTRACT_SPACE "Space Gear"
-#define CONTRACT_CALAMITY "Calamity"
-
-#define BANE_SALT "salt"
-#define BANE_LIGHT "light"
-#define BANE_IRON "iron"
-#define BANE_WHITECLOTHES "whiteclothes"
-#define BANE_SILVER "silver"
-#define BANE_HARVEST "harvest"
-#define BANE_TOOLBOX "toolbox"
-
-#define OBLIGATION_FOOD "food"
-#define OBLIGATION_FIDDLE "fiddle"
-#define OBLIGATION_DANCEOFF "danceoff"
-#define OBLIGATION_GREET "greet"
-#define OBLIGATION_PRESENCEKNOWN "presenceknown"
-#define OBLIGATION_SAYNAME "sayname"
-#define OBLIGATION_ANNOUNCEKILL "announcekill"
-#define OBLIGATION_ANSWERTONAME "answername"
-
-#define BAN_HURTWOMAN "hurtwoman"
-#define BAN_HURTMAN "hurtman"
-#define BAN_CHAPEL "chapel"
-#define BAN_HURTPRIEST "hurtpriest"
-#define BAN_AVOIDWATER "avoidwater"
-#define BAN_STRIKEUNCONCIOUS "strikeunconcious"
-#define BAN_HURTLIZARD "hurtlizard"
-#define BAN_HURTANIMAL "hurtanimal"
-
-#define BANISH_WATER "water"
-#define BANISH_COFFIN "coffin"
-#define BANISH_FORMALDYHIDE "embalm"
-#define BANISH_RUNES "runes"
-#define BANISH_CANDLES "candles"
-#define BANISH_DESTRUCTION "destruction"
-#define BANISH_FUNERAL_GARB "funeral"
-
-#define LORE 1
-#define LAW 2
diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm
index 157fa1c30b9..f64022136ef 100644
--- a/code/__DEFINES/genetics.dm
+++ b/code/__DEFINES/genetics.dm
@@ -81,3 +81,4 @@
#define NO_INTORGANS "no_internal_organs"
#define CAN_WINGDINGS "can_wingdings"
#define NO_CLONESCAN "no_clone_scan"
+#define NO_HAIR "no_hair"
diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm
index f4d5b9f5b1c..14e5fc674ce 100644
--- a/code/__DEFINES/hud.dm
+++ b/code/__DEFINES/hud.dm
@@ -53,9 +53,8 @@
#define ANTAG_HUD_VAMPIRE 16
#define ANTAG_HUD_ABDUCTOR 17
#define DATA_HUD_ABDUCTOR 18
-#define ANTAG_HUD_DEVIL 19
-#define ANTAG_HUD_EVENTMISC 20
-#define ANTAG_HUD_BLOB 21
+#define ANTAG_HUD_EVENTMISC 19
+#define ANTAG_HUD_BLOB 20
// Notification action types
#define NOTIFY_JUMP "jump"
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index e75eb49a02e..f9aba1efc1b 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -363,7 +363,7 @@
#define INVESTIGATE_BOMB "bombs"
// The SQL version required by this version of the code
-#define SQL_VERSION 22
+#define SQL_VERSION 23
// Vending machine stuff
#define CAT_NORMAL 1
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 878dab544d9..7ee21738019 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -54,8 +54,9 @@
#define PREFTOGGLE_2_EMOTE_BUBBLE 256
// Yes I know this being an "enable to disable" is misleading, but it avoids having to tweak all existing pref entries
#define PREFTOGGLE_2_REVERB_DISABLE 512
+#define PREFTOGGLE_2_FORCE_WHITE_RUNECHAT 1024
-#define TOGGLES_2_TOTAL 1023 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.
+#define TOGGLES_2_TOTAL 2047 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.
#define TOGGLES_2_DEFAULT (PREFTOGGLE_2_FANCYUI|PREFTOGGLE_2_ITEMATTACK|PREFTOGGLE_2_WINDOWFLASHING|PREFTOGGLE_2_RUNECHAT|PREFTOGGLE_2_DEATHMESSAGE|PREFTOGGLE_2_EMOTE_BUBBLE)
@@ -93,7 +94,7 @@
#define EXP_TYPE_SERVICE "Service"
#define EXP_TYPE_WHITELIST "Whitelist"
-#define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL)
+#define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SUPPLY, EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL, EXP_TYPE_GHOST)
// Defines just for parallax because its levels make storing it in the regular prefs a pain in the ass
// These dont need to be bitflags because there isnt going to be more than one at a time of these active
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index 8021fa4452d..85c15c1971c 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -26,7 +26,6 @@
#define ROLE_REVENANT "revenant"
#define ROLE_HOG_GOD "hand of god: god" // We're prolly gonna port this one day or another
#define ROLE_HOG_CULTIST "hand of god: cultist"
-#define ROLE_DEVIL "devil"
#define ROLE_RAIDER "vox raider"
#define ROLE_TRADER "trader"
#define ROLE_VAMPIRE "vampire"
@@ -54,7 +53,6 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_CHANGELING = /datum/game_mode/changeling, // Changeling
ROLE_BORER, // Cortical borer
ROLE_CULTIST = /datum/game_mode/cult, // Cultist
- ROLE_DEVIL = /datum/game_mode/devil/devil_agents, // Devil
ROLE_GSPIDER, // Giant spider
ROLE_GUARDIAN, // Guardian
ROLE_MORPH, // Morph
diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 333efc90e0b..c3f7780b917 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -6,11 +6,14 @@
#define CHANNEL_HEARTBEAT 1020 //sound channel for heartbeats
#define CHANNEL_BUZZ 1019
#define CHANNEL_AMBIENCE 1018
+#define CHANNEL_ENGINE 1017 // Engine ambient sounds
+
+#define USER_VOLUME(M, C) M?.client?.prefs.get_channel_volume(C)
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
-#define CHANNEL_HIGHEST_AVAILABLE 1017
+#define CHANNEL_HIGHEST_AVAILABLE 1016
#define MAX_INSTRUMENT_CHANNELS (128 * 6)
diff --git a/code/__HELPERS/AnimationLibrary.dm b/code/__HELPERS/AnimationLibrary.dm
index cc496a85b63..1f0c3dd9ab1 100644
--- a/code/__HELPERS/AnimationLibrary.dm
+++ b/code/__HELPERS/AnimationLibrary.dm
@@ -4,26 +4,26 @@
* The spin from being thrown will interrupt most of these animations as will grabs, account for that accordingly.
*/
-/proc/animate_fade_grayscale(var/atom/A, var/time = 5)
+/proc/animate_fade_grayscale(atom/A, time = 5)
if(!istype(A) && !istype(A, /client))
return
A.color = null
animate(A, color = MATRIX_GREYSCALE, time = time, easing = SINE_EASING)
-/proc/animate_melt_pixel(var/atom/A)
+/proc/animate_melt_pixel(atom/A)
if(!istype(A))
return
animate(A, pixel_y = 0, time = 50 - A.pixel_y, alpha = 175, easing = BOUNCE_EASING)
animate(alpha = 0, easing = LINEAR_EASING)
-/proc/animate_explode_pixel(var/atom/A)
+/proc/animate_explode_pixel(atom/A)
if(!istype(A))
return
var/floatdegrees = rand(5, 20)
var/side = pick(-1, 1)
animate(A, pixel_x = rand(-64, 64), pixel_y = rand(-64, 64), transform = matrix(floatdegrees * (side == 1 ? 1:-1), MATRIX_ROTATE), time = 10, alpha = 0, easing = SINE_EASING)
-/proc/animate_float(var/atom/A, var/loopnum = -1, floatspeed = 20, random_side = 1)
+/proc/animate_float(atom/A, loopnum = -1, floatspeed = 20, random_side = 1)
if(!istype(A))
return
var/floatdegrees = rand(5, 20)
@@ -35,7 +35,7 @@
animate(A, pixel_y = 32, transform = matrix(floatdegrees * (side == 1 ? 1:-1), MATRIX_ROTATE), time = floatspeed, loop = loopnum, easing = SINE_EASING)
animate(pixel_y = 0, transform = matrix(floatdegrees * (side == 1 ? -1:1), MATRIX_ROTATE), time = floatspeed, loop = loopnum, easing = SINE_EASING)
-/proc/animate_levitate(var/atom/A, var/loopnum = -1, floatspeed = 20, random_side = 1)
+/proc/animate_levitate(atom/A, loopnum = -1, floatspeed = 20, random_side = 1)
if(!istype(A))
return
var/floatdegrees = rand(5, 20)
@@ -47,7 +47,7 @@
animate(A, pixel_y = 8, transform = matrix(floatdegrees * (side == 1 ? 1:-1), MATRIX_ROTATE), time = floatspeed, loop = loopnum, easing = SINE_EASING)
animate(pixel_y = 0, transform = null, time = floatspeed, loop = loopnum, easing = SINE_EASING)
-/proc/animate_ghostly_presence(var/atom/A, var/loopnum = -1, floatspeed = 20, random_side = 1)
+/proc/animate_ghostly_presence(atom/A, loopnum = -1, floatspeed = 20, random_side = 1)
if(!istype(A))
return
var/floatdegrees = rand(5, 20)
@@ -59,7 +59,7 @@
animate(A, pixel_y = 8, transform = matrix(floatdegrees * (side == 1 ? 1:-1), MATRIX_ROTATE), time = floatspeed, loop = loopnum, easing = SINE_EASING)
animate(pixel_y = 0, transform = matrix(floatdegrees * (side == 1 ? -1:1), MATRIX_ROTATE), time = floatspeed, loop = loopnum, easing = SINE_EASING)
-/proc/animate_fading_leap_up(var/atom/A)
+/proc/animate_fading_leap_up(atom/A)
if(!istype(A))
return
var/matrix/M = matrix()
@@ -71,7 +71,7 @@
sleep(1)
A.alpha = 0
-/proc/animate_fading_leap_down(var/atom/A)
+/proc/animate_fading_leap_down(atom/A)
if(!istype(A))
return
var/matrix/M = matrix()
@@ -84,7 +84,7 @@
sleep(1)
animate(A, transform = M, pixel_z = 0, alpha = 255, time = 1, loop = 1, easing = LINEAR_EASING)
-/proc/animate_shake(var/atom/A, var/amount = 5, var/x_severity = 2, var/y_severity = 2)
+/proc/animate_shake(atom/A, amount = 5, x_severity = 2, y_severity = 2)
// Wiggles the sprite around on its tile then returns it to normal
if(!istype(A))
return
@@ -101,7 +101,7 @@
spawn(amount)
animate(A, transform = null, pixel_y = 0, pixel_x = 0,time = 1,loop = 1, easing = LINEAR_EASING)
-/proc/animate_teleport(var/atom/A)
+/proc/animate_teleport(atom/A)
if(!istype(A))
return
var/matrix/M = matrix(1, 3, MATRIX_SCALE)
@@ -110,7 +110,7 @@
animate(transform = M, time = 5, color = "#1111ff", alpha = 0, easing = CIRCULAR_EASING)
animate(transform = null, time = 5, color = "#ffffff", alpha = 255, pixel_y = 0, easing = ELASTIC_EASING)
-/proc/animate_teleport_wiz(var/atom/A)
+/proc/animate_teleport_wiz(atom/A)
if(!istype(A))
return
var/matrix/M = matrix(0, 4, MATRIX_SCALE)
@@ -119,14 +119,14 @@
animate(time = 8, transform = M, alpha = 5) //Do nothing, essentially
animate(transform = null, time = 5, color = "#ffffff", alpha = 255, pixel_y = 0, easing = ELASTIC_EASING)
-/proc/animate_rainbow_glow_old(var/atom/A)
+/proc/animate_rainbow_glow_old(atom/A)
if(!istype(A))
return
animate(A, color = "#FF0000", time = rand(5,10), loop = -1, easing = LINEAR_EASING)
animate(color = "#00FF00", time = rand(5,10), loop = -1, easing = LINEAR_EASING)
animate(color = "#0000FF", time = rand(5,10), loop = -1, easing = LINEAR_EASING)
-/proc/animate_rainbow_glow(var/atom/A)
+/proc/animate_rainbow_glow(atom/A)
if(!istype(A))
return
animate(A, color = "#FF0000", time = rand(5,10), loop = -1, easing = LINEAR_EASING)
@@ -136,37 +136,37 @@
animate(color = "#0000FF", time = rand(5,10), loop = -1, easing = LINEAR_EASING)
animate(color = "#FF00FF", time = rand(5,10), loop = -1, easing = LINEAR_EASING)
-/proc/animate_fade_to_color_fill(var/atom/A, var/the_color, var/time)
+/proc/animate_fade_to_color_fill(atom/A, the_color, time)
if(!istype(A) || !the_color || !time)
return
animate(A, color = the_color, time = time, easing = LINEAR_EASING)
-/proc/animate_flash_color_fill(var/atom/A, var/the_color, var/loops, var/time)
+/proc/animate_flash_color_fill(atom/A, the_color, loops, time)
if(!istype(A) || !the_color || !time || !loops)
return
animate(A, color = the_color, time = time, easing = LINEAR_EASING)
animate(color = "#FFFFFF", time = 5, loop = loops, easing = LINEAR_EASING)
-/proc/animate_flash_color_fill_inherit(var/atom/A, var/the_color, var/loops, var/time)
+/proc/animate_flash_color_fill_inherit(atom/A, the_color, loops, time)
if(!istype(A) || !the_color || !time || !loops)
return
var/color_old = A.color
animate(A, color = the_color, time = time, loop = loops, easing = LINEAR_EASING)
animate(A, color = color_old, time = time, loop = loops, easing = LINEAR_EASING)
-/proc/animate_clownspell(var/atom/A)
+/proc/animate_clownspell(atom/A)
if(!istype(A))
return
animate(A, transform = matrix(1.3, MATRIX_SCALE), time = 5, color = "#00ff00", easing = BACK_EASING)
animate(transform = null, time = 5, color = "#ffffff", easing = ELASTIC_EASING)
-/proc/animate_wiggle_then_reset(var/atom/A, var/loops = 5, var/speed = 5, var/x_var = 3, var/y_var = 3)
+/proc/animate_wiggle_then_reset(atom/A, loops = 5, speed = 5, x_var = 3, y_var = 3)
if(!istype(A) || !loops || !speed)
return
animate(A, pixel_x = rand(-x_var, x_var), pixel_y = rand(-y_var, y_var), time = speed * 2,loop = loops, easing = rand(2,7))
animate(pixel_x = 0, pixel_y = 0, time = speed, easing = rand(2,7))
-/proc/animate_spin(var/atom/A, var/dir = "L", var/T = 1, var/looping = -1)
+/proc/animate_spin(atom/A, dir = "L", T = 1, looping = -1)
if(!istype(A))
return
@@ -180,7 +180,7 @@
animate(transform = matrix(M, turn, MATRIX_ROTATE | MATRIX_MODIFY), time = T, loop = looping)
animate(transform = matrix(M, turn, MATRIX_ROTATE | MATRIX_MODIFY), time = T, loop = looping)
-/proc/animate_shockwave(var/atom/A)
+/proc/animate_shockwave(atom/A)
if(!istype(A))
return
var/punchstr = rand(10, 20)
diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index 38176cd0981..34e7f3fda28 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -149,7 +149,7 @@ GLOBAL_PROTECT(log_end)
// A logging proc that only outputs after setup is done, to
// help devs test initialization stuff that happens a lot
-/proc/log_after_setup(var/message)
+/proc/log_after_setup(message)
if(SSticker && SSticker.current_state > GAME_STATE_SETTING_UP)
to_chat(world, "[message]")
log_world(message)
@@ -160,7 +160,7 @@ GLOBAL_PROTECT(log_end)
// Helper procs for building detailed log lines
-/proc/datum_info_line(var/datum/d)
+/proc/datum_info_line(datum/d)
if(!istype(d))
return
if(!istype(d, /mob))
@@ -168,7 +168,7 @@ GLOBAL_PROTECT(log_end)
var/mob/m = d
return "[m] ([m.ckey]) ([m.type])"
-/proc/atom_loc_line(var/atom/a)
+/proc/atom_loc_line(atom/a)
if(!istype(a))
return
var/turf/t = get_turf(a)
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index d76ffc005a0..63e527b59f2 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -51,7 +51,7 @@
// Like view but bypasses luminosity check
-/proc/hear(var/range, var/atom/source)
+/proc/hear(range, atom/source)
var/lum = source.luminosity
source.luminosity = 6
@@ -145,7 +145,7 @@
// It will keep doing this until it checks every content possible. This will fix any problems with mobs, that are inside objects,
// being unable to hear people due to being in a box within a bag.
-/proc/recursive_mob_check(var/atom/O, var/list/L = list(), var/recursion_limit = 3, var/client_check = 1, var/sight_check = 1, var/include_radio = 1)
+/proc/recursive_mob_check(atom/O, list/L = list(), recursion_limit = 3, client_check = 1, sight_check = 1, include_radio = 1)
//GLOB.debug_mob += O.contents.len
if(!recursion_limit)
@@ -174,7 +174,7 @@
// The old system would loop through lists for a total of 5000 per function call, in an empty server.
// This new system will loop at around 1000 in an empty server.
-/proc/get_mobs_in_view(var/R, var/atom/source, var/include_clientless = FALSE)
+/proc/get_mobs_in_view(R, atom/source, include_clientless = FALSE)
// Returns a list of mobs in range of R from source. Used in radio and say code.
var/turf/T = get_turf(source)
@@ -200,7 +200,7 @@
return hear
-/proc/get_mobs_in_radio_ranges(var/list/obj/item/radio/radios)
+/proc/get_mobs_in_radio_ranges(list/obj/item/radio/radios)
. = list()
// Returns a list of mobs who can hear any of the radios given in @radios
var/list/speaker_coverage = list()
@@ -263,7 +263,7 @@
return 0
return 1
-/proc/isInSight(var/atom/A, var/atom/B)
+/proc/isInSight(atom/A, atom/B)
var/turf/Aturf = get_turf(A)
var/turf/Bturf = get_turf(B)
@@ -293,7 +293,7 @@
if(AM.Move(get_step(T, direction)))
break
-/proc/get_mob_by_key(var/key)
+/proc/get_mob_by_key(key)
for(var/mob/M in GLOB.mob_list)
if(M.ckey == lowertext(key))
return M
@@ -339,16 +339,6 @@
O.screen_loc = screen_loc
return O
-/proc/Show2Group4Delay(obj/O, list/group, delay=0)
- if(!isobj(O)) return
- if(!group) group = GLOB.clients
- for(var/client/C in group)
- C.screen += O
- if(delay)
- spawn(delay)
- for(var/client/C in group)
- C.screen -= O
-
/proc/remove_images_from_clients(image/I, list/show_to)
for(var/client/C in show_to)
C.images -= I
@@ -402,7 +392,7 @@
src.dest_x = dest_x
src.dest_y = dest_y
-/proc/projectile_trajectory(var/src_x, var/src_y, var/rotation, var/angle, var/power)
+/proc/projectile_trajectory(src_x, src_y, rotation, angle, power)
// returns the destination (Vx,y) that a projectile shot at [src_x], [src_y], with an angle of [angle],
// rotated at [rotation] and with the power of [power]
@@ -420,7 +410,7 @@
return new /datum/projectile_data(src_x, src_y, time, distance, power_x, power_y, dest_x, dest_y)
-/proc/mobs_in_area(var/area/the_area, var/client_needed=0, var/moblist=GLOB.mob_list)
+/proc/mobs_in_area(area/the_area, client_needed=0, moblist=GLOB.mob_list)
var/list/mobs_found[0]
var/area/our_area = get_area(the_area)
for(var/mob/M in moblist)
@@ -431,7 +421,7 @@
mobs_found += M
return mobs_found
-/proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon)
+/proc/alone_in_area(area/the_area, mob/must_be_alone, check_type = /mob/living/carbon)
var/area/our_area = get_area(the_area)
for(var/C in GLOB.alive_mob_list)
if(!istype(C, check_type))
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index ee1530df81b..282ad53cd06 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -84,13 +84,13 @@
continue
if(!use_name)
- error("Loadout - Missing display name: [G]")
+ stack_trace("Loadout - Missing display name: [G]")
continue
if(!initial(G.cost))
- error("Loadout - Missing cost: [G]")
+ stack_trace("Loadout - Missing cost: [G]")
continue
if(!initial(G.path))
- error("Loadout - Missing path definition: [G]")
+ stack_trace("Loadout - Missing path definition: [G]")
continue
if(!GLOB.loadout_categories[use_category])
diff --git a/code/__HELPERS/heap.dm b/code/__HELPERS/heap.dm
index 50a11e71abb..c9ad037755f 100644
--- a/code/__HELPERS/heap.dm
+++ b/code/__HELPERS/heap.dm
@@ -33,7 +33,7 @@
Sink(1)
//Get a node up to its right position in the heap
-/datum/heap/proc/Swim(var/index)
+/datum/heap/proc/Swim(index)
var/parent = round(index * 0.5)
while(parent > 0 && (call(cmp)(L[index], L[parent]) > 0))
@@ -42,7 +42,7 @@
parent = round(index * 0.5)
//Get a node down to its right position in the heap
-/datum/heap/proc/Sink(var/index)
+/datum/heap/proc/Sink(index)
var/g_child = GetGreaterChild(index)
while(g_child > 0 && (call(cmp)(L[index], L[g_child]) < 0))
@@ -52,7 +52,7 @@
//Returns the greater (relative to the comparison proc) of a node children
//or 0 if there's no child
-/datum/heap/proc/GetGreaterChild(var/index)
+/datum/heap/proc/GetGreaterChild(index)
if(index * 2 > L.len)
return 0
diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm
index caa8291b4bb..90873b6309a 100644
--- a/code/__HELPERS/icon_smoothing.dm
+++ b/code/__HELPERS/icon_smoothing.dm
@@ -289,7 +289,7 @@
//Icon smoothing helpers
-/proc/smooth_zlevel(var/zlevel, now = FALSE)
+/proc/smooth_zlevel(zlevel, now = FALSE)
var/list/away_turfs = block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))
for(var/V in away_turfs)
var/turf/T = V
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index ef0f47b2f9c..78d9fb407bf 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -894,7 +894,7 @@ The _flatIcons list is a cache for generated icon files.
composite.Blend(icon(I.icon, I.icon_state, I.dir, 1), ICON_OVERLAY)
return composite
-/proc/adjust_brightness(var/color, var/value)
+/proc/adjust_brightness(color, value)
if(!color) return "#FFFFFF"
if(!value) return color
@@ -904,7 +904,7 @@ The _flatIcons list is a cache for generated icon files.
RGB[3] = clamp(RGB[3]+value,0,255)
return rgb(RGB[1],RGB[2],RGB[3])
-/proc/sort_atoms_by_layer(var/list/atoms)
+/proc/sort_atoms_by_layer(list/atoms)
// Comb sort icons based on levels
var/list/result = atoms.Copy()
var/gap = result.len
@@ -925,7 +925,7 @@ The _flatIcons list is a cache for generated icon files.
//Interface for using DrawBox() to draw 1 pixel on a coordinate.
//Returns the same icon specifed in the argument, but with the pixel drawn
-/proc/DrawPixel(var/icon/I,var/colour,var/drawX,var/drawY)
+/proc/DrawPixel(icon/I, colour, drawX, drawY)
if(!I)
return 0
var/Iwidth = I.Width()
@@ -938,7 +938,7 @@ The _flatIcons list is a cache for generated icon files.
return I
//Interface for easy drawing of one pixel on an atom.
-/atom/proc/DrawPixelOn(var/colour, var/drawX, var/drawY)
+/atom/proc/DrawPixelOn(colour, drawX, drawY)
var/icon/I = new(icon)
var/icon/J = DrawPixel(I, colour, drawX, drawY)
if(J) //Only set the icon if it succeeded, the icon without the pixel is 1000x better than a black square.
@@ -961,7 +961,7 @@ The _flatIcons list is a cache for generated icon files.
//Imagine removing pixels from the main icon that are covered by pixels from the mask icon.
//Standard behaviour is to cut pixels from the main icon that are covered by pixels from the mask icon unless passed mask_ready, see below.
-/proc/get_icon_difference(var/icon/main, var/icon/mask, var/mask_ready)
+/proc/get_icon_difference(icon/main, icon/mask, mask_ready)
/*You should skip prep if the mask is already sprited properly. This significantly improves performance by eliminating most of the realtime icon work.
e.g. A 'ready' mask is a mask where the part you want cut out is missing (no pixels, 0 alpha) from the sprite, and everything else is solid white.*/
diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm
index aab920f55fd..bf0d7ab2b61 100644
--- a/code/__HELPERS/lists.dm
+++ b/code/__HELPERS/lists.dm
@@ -39,7 +39,7 @@
//Returns a list in plain english as a string
-/proc/english_list(var/list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
+/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
var/total = input.len
if(!total)
return "[nothing_text]"
@@ -60,7 +60,7 @@
return "[output][and_text][input[index]]"
//Returns list element or null. Should prevent "index out of bounds" error.
-/proc/listgetindex(var/list/list,index)
+/proc/listgetindex(list/list, index)
if(istype(list) && list.len)
if(isnum(index))
if(InRange(index,1,list.len))
@@ -158,7 +158,7 @@
* If skiprep = 1, repeated elements are treated as one.
* If either of arguments is not a list, returns null
*/
-/proc/difflist(var/list/first, var/list/second, var/skiprep=0)
+/proc/difflist(list/first, list/second, skiprep=0)
if(!islist(first) || !islist(second))
return
var/list/result = new
@@ -176,7 +176,7 @@
* If skipref = 1, repeated elements are treated as one.
* If either of arguments is not a list, returns null
*/
-/proc/uniquemergelist(var/list/first, var/list/second, var/skiprep=0)
+/proc/uniquemergelist(list/first, list/second, skiprep=0)
if(!islist(first) || !islist(second))
return
var/list/result = new
@@ -236,7 +236,7 @@
return output
//Randomize: Return the list in a random order
-/proc/shuffle(var/list/L)
+/proc/shuffle(list/L)
if(!L)
return
L = L.Copy()
@@ -247,20 +247,20 @@
return L
//Return a list with no duplicate entries
-/proc/uniquelist(var/list/L)
+/proc/uniquelist(list/L)
. = list()
for(var/i in L)
. |= i
//Mergesort: divides up the list into halves to begin the sort
-/proc/sortKey(var/list/client/L, var/order = 1)
+/proc/sortKey(list/client/L, order = 1)
if(isnull(L) || L.len < 2)
return L
var/middle = L.len / 2 + 1
return mergeKey(sortKey(L.Copy(0,middle)), sortKey(L.Copy(middle)), order)
//Mergsort: does the actual sorting and returns the results back to sortAtom
-/proc/mergeKey(var/list/client/L, var/list/client/R, var/order = 1)
+/proc/mergeKey(list/client/L, list/client/R, order = 1)
var/Li=1
var/Ri=1
var/list/result = new()
@@ -277,7 +277,7 @@
return (result + R.Copy(Ri, 0))
//Mergesort: divides up the list into halves to begin the sort
-/proc/sortAtom(var/list/atom/L, var/order = 1)
+/proc/sortAtom(list/atom/L, order = 1)
listclearnulls(L)
if(isnull(L) || L.len < 2)
return L
@@ -285,7 +285,7 @@
return mergeAtoms(sortAtom(L.Copy(0,middle)), sortAtom(L.Copy(middle)), order)
//Mergsort: does the actual sorting and returns the results back to sortAtom
-/proc/mergeAtoms(var/list/atom/L, var/list/atom/R, var/order = 1)
+/proc/mergeAtoms(list/atom/L, list/atom/R, order = 1)
if(!L || !R) return 0
var/Li=1
var/Ri=1
@@ -306,7 +306,7 @@
//Mergesort: Specifically for record datums in a list.
-/proc/sortRecord(var/list/datum/data/record/L, var/field = "name", var/order = 1)
+/proc/sortRecord(list/datum/data/record/L, field = "name", order = 1)
if(isnull(L))
return list()
if(L.len < 2)
@@ -315,7 +315,7 @@
return mergeRecordLists(sortRecord(L.Copy(0, middle), field, order), sortRecord(L.Copy(middle), field, order), field, order)
//Mergsort: does the actual sorting and returns the results back to sortRecord
-/proc/mergeRecordLists(var/list/datum/data/record/L, var/list/datum/data/record/R, var/field = "name", var/order = 1)
+/proc/mergeRecordLists(list/datum/data/record/L, list/datum/data/record/R, field = "name", order = 1)
var/Li=1
var/Ri=1
var/list/result = new()
@@ -342,20 +342,20 @@
//Mergesort: any value in a list
-/proc/sortList(var/list/L)
+/proc/sortList(list/L)
if(L.len < 2)
return L
var/middle = L.len / 2 + 1 // Copy is first,second-1
return mergeLists(sortList(L.Copy(0,middle)), sortList(L.Copy(middle))) //second parameter null = to end of list
//Mergsorge: uses sortAssoc() but uses the var's name specifically. This should probably be using mergeAtom() instead
-/proc/sortNames(var/list/L)
+/proc/sortNames(list/L)
var/list/Q = new()
for(var/atom/x in L)
Q[x.name] = x
return sortAssoc(Q)
-/proc/mergeLists(var/list/L, var/list/R)
+/proc/mergeLists(list/L, list/R)
var/Li=1
var/Ri=1
var/list/result = new()
@@ -371,13 +371,13 @@
// List of lists, sorts by element[key] - for things like crew monitoring computer sorting records by name.
-/proc/sortByKey(var/list/L, var/key)
+/proc/sortByKey(list/L, key)
if(L.len < 2)
return L
var/middle = L.len / 2 + 1
return mergeKeyedLists(sortByKey(L.Copy(0, middle), key), sortByKey(L.Copy(middle), key), key)
-/proc/mergeKeyedLists(var/list/L, var/list/R, var/key)
+/proc/mergeKeyedLists(list/L, list/R, key)
var/Li=1
var/Ri=1
var/list/result = new()
@@ -396,13 +396,13 @@
//Mergesort: any value in a list, preserves key=value structure
-/proc/sortAssoc(var/list/L)
+/proc/sortAssoc(list/L)
if(L.len < 2)
return L
var/middle = L.len / 2 + 1 // Copy is first,second-1
return mergeAssoc(sortAssoc(L.Copy(0,middle)), sortAssoc(L.Copy(middle))) //second parameter null = to end of list
-/proc/mergeAssoc(var/list/L, var/list/R)
+/proc/mergeAssoc(list/L, list/R)
var/Li=1
var/Ri=1
var/list/result = new()
@@ -434,7 +434,7 @@
return r
// Returns the key based on the index
-/proc/get_key_by_index(var/list/L, var/index)
+/proc/get_key_by_index(list/L, index)
var/i = 1
for(var/key in L)
if(index == i)
@@ -442,7 +442,7 @@
i++
return null
-/proc/count_by_type(var/list/L, type)
+/proc/count_by_type(list/L, type)
var/i = 0
for(var/T in L)
if(istype(T, type))
@@ -450,7 +450,7 @@
return i
//Don't use this on lists larger than half a dozen or so
-/proc/insertion_sort_numeric_list_ascending(var/list/L)
+/proc/insertion_sort_numeric_list_ascending(list/L)
//log_world("ascending len input: [L.len]")
var/list/out = list(pop(L))
for(var/entry in L)
@@ -467,7 +467,7 @@
//log_world(" output: [out.len]")
return out
-/proc/insertion_sort_numeric_list_descending(var/list/L)
+/proc/insertion_sort_numeric_list_descending(list/L)
//log_world("descending len input: [L.len]")
var/list/out = insertion_sort_numeric_list_ascending(L)
//log_world(" output: [out.len]")
@@ -483,13 +483,13 @@
if(islist(.[i]))
.[i] = .(.[i])
-/proc/dd_sortedObjectList(var/list/L, var/cache=list())
+/proc/dd_sortedObjectList(list/L, list/cache = list())
if(L.len < 2)
return L
var/middle = L.len / 2 + 1 // Copy is first,second-1
return dd_mergeObjectList(dd_sortedObjectList(L.Copy(0,middle), cache), dd_sortedObjectList(L.Copy(middle), cache), cache) //second parameter null = to end of list
-/proc/dd_mergeObjectList(var/list/L, var/list/R, var/list/cache)
+/proc/dd_mergeObjectList(list/L, list/R, list/cache)
var/Li=1
var/Ri=1
var/list/result = new()
@@ -514,7 +514,7 @@
return (result + R.Copy(Ri, 0))
// Insert an object into a sorted list, preserving sortedness
-/proc/dd_insertObjectList(var/list/L, var/O)
+/proc/dd_insertObjectList(list/L, O)
var/min = 1
var/max = L.len
var/Oval = O:dd_SortValue()
@@ -658,7 +658,7 @@ proc/dd_sortedObjectList(list/incoming)
var/case_sensitive = 1
return dd_sortedtextlist(incoming, case_sensitive)
-/proc/subtypesof(var/path) //Returns a list containing all subtypes of the given path, but not the given path itself.
+/proc/subtypesof(path) //Returns a list containing all subtypes of the given path, but not the given path itself.
if(!path || !ispath(path))
CRASH("Invalid path, failed to fetch subtypes of \"[path]\".")
return (typesof(path) - path)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 841d42bf3ff..e836824ad3a 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -1,4 +1,4 @@
-/proc/GetOppositeDir(var/dir)
+/proc/GetOppositeDir(dir)
switch(dir)
if(NORTH) return SOUTH
if(SOUTH) return NORTH
@@ -46,7 +46,7 @@
return pick(valid_picks)
-/proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
+/proc/random_hair_style(gender, species = "Human", datum/robolimb/robohead)
var/h_style = "Bald"
var/list/valid_hairstyles = list()
for(var/hairstyle in GLOB.hair_styles_public_list)
@@ -75,7 +75,7 @@
return h_style
-/proc/random_facial_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead)
+/proc/random_facial_hair_style(gender, species = "Human", datum/robolimb/robohead)
var/f_style = "Shaved"
var/list/valid_facial_hairstyles = list()
for(var/facialhairstyle in GLOB.facial_hair_styles_list)
@@ -119,7 +119,7 @@
return ha_style
-/proc/random_marking_style(var/location = "body", species = "Human", var/datum/robolimb/robohead, var/body_accessory, var/alt_head)
+/proc/random_marking_style(location = "body", species = "Human", datum/robolimb/robohead, body_accessory, alt_head)
var/m_style = "None"
var/list/valid_markings = list()
for(var/marking in GLOB.marking_styles_list)
diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm
index d6c95256585..68acde69228 100644
--- a/code/__HELPERS/text.dm
+++ b/code/__HELPERS/text.dm
@@ -22,7 +22,7 @@
return html_encode(txt)
//Simply removes < and > and limits the length of the message
-/proc/strip_html_simple(var/t,var/limit=MAX_MESSAGE_LEN)
+/proc/strip_html_simple(t, limit=MAX_MESSAGE_LEN)
var/list/strip_chars = list("<",">")
t = copytext(t,1,limit)
for(var/char in strip_chars)
@@ -33,13 +33,13 @@
return t
//Removes a few problematic characters
-/proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#"))
+/proc/sanitize_simple(t, list/repl_chars = list("\n"="#","\t"="#"))
for(var/char in repl_chars)
t = replacetext(t, char, repl_chars[char])
return t
//Runs byond's sanitization proc along-side sanitize_simple
-/proc/sanitize(var/t,var/list/repl_chars = null)
+/proc/sanitize(t, list/repl_chars = null)
return html_encode(sanitize_simple(t,repl_chars))
// Gut ANYTHING that isnt alphanumeric, or brackets
@@ -54,7 +54,7 @@
//Runs sanitize and strip_html_simple
//I believe strip_html_simple() is required to run first to prevent '<' from displaying as '<' after sanitize() calls byond's html_encode()
-/proc/strip_html(var/t,var/limit=MAX_MESSAGE_LEN)
+/proc/strip_html(t, limit=MAX_MESSAGE_LEN)
return copytext((sanitize(strip_html_simple(t))),1,limit)
// Used to get a properly sanitized multiline input, of max_length
@@ -67,12 +67,12 @@
//Runs byond's sanitization proc along-side strip_html_simple
//I believe strip_html_simple() is required to run first to prevent '<' from displaying as '<' that html_encode() would cause
-/proc/adminscrub(var/t,var/limit=MAX_MESSAGE_LEN)
+/proc/adminscrub(t, limit=MAX_MESSAGE_LEN)
return copytext((html_encode(strip_html_simple(t))),1,limit)
//Returns null if there is any bad text in the string
-/proc/reject_bad_text(var/text, var/max_length=512)
+/proc/reject_bad_text(text, max_length=512)
if(length(text) > max_length) return //message too long
var/non_whitespace = 0
for(var/i=1, i<=length(text), i++)
@@ -106,7 +106,7 @@
return msg
//Filters out undesirable characters from names
-/proc/reject_bad_name(var/t_in, var/allow_numbers=0, var/max_length=MAX_NAME_LEN)
+/proc/reject_bad_name(t_in, allow_numbers=0, max_length=MAX_NAME_LEN)
// Decode so that names with characters like < are still rejected
t_in = html_decode(t_in)
if(!t_in || length(t_in) > max_length)
@@ -174,7 +174,7 @@
//checks text for html tags
//if tag is not in whitelist (var/list/paper_tag_whitelist in global.dm)
//relpaces < with <
-/proc/checkhtml(var/t)
+/proc/checkhtml(t)
t = sanitize_simple(t, list(""="."))
var/p = findtext(t,"<",1)
while(p) //going through all the tags
@@ -226,7 +226,7 @@
* Text modification
*/
// See bygex.dm
-/proc/replace_characters(var/t,var/list/repl_chars)
+/proc/replace_characters(t, list/repl_chars)
for(var/char in repl_chars)
t = replacetext(t, char, repl_chars[char])
return t
@@ -277,7 +277,7 @@
return trim_left(trim_right(text))
//Returns a string with the first element of the string capitalized.
-/proc/capitalize(var/t as text)
+/proc/capitalize(t as text)
return uppertext(copytext(t, 1, 2)) + copytext(t, 2)
//Centers text by adding spaces to either side of the string.
@@ -305,7 +305,7 @@
return copytext(message, 1, length + 1)
-/proc/stringmerge(var/text,var/compare,replace = "*")
+/proc/stringmerge(text, compare,replace = "*")
//This proc fills in all spaces with the "replace" var (* by default) with whatever
//is in the other string at the same spot (assuming it is not a replace char).
//This is used for fingerprints
@@ -326,7 +326,7 @@
return 0
return newtext
-/proc/stringpercent(var/text,character = "*")
+/proc/stringpercent(text, character = "*")
//This proc returns the number of chars of the string that is the character
//This is used for detective work to determine fingerprint completion.
if(!text || !character)
@@ -338,7 +338,7 @@
count++
return count
-/proc/reverse_text(var/text = "")
+/proc/reverse_text(text = "")
var/new_text = ""
for(var/i = length(text); i > 0; i--)
new_text += copytext(text, i, i+1)
@@ -347,7 +347,7 @@
//This proc strips html properly, but it's not lazy like the other procs.
//This means that it doesn't just remove < and > and call it a day.
//Also limit the size of the input, if specified.
-/proc/strip_html_properly(var/input, var/max_length = MAX_MESSAGE_LEN, allow_lines = 0)
+/proc/strip_html_properly(input, max_length = MAX_MESSAGE_LEN, allow_lines = 0)
if(!input)
return
var/opentag = 1 //These store the position of < and > respectively.
@@ -371,12 +371,12 @@
input = copytext(input,1,max_length)
return sanitize(input, allow_lines ? list("\t" = " ") : list("\n" = " ", "\t" = " "))
-/proc/trim_strip_html_properly(var/input, var/max_length = MAX_MESSAGE_LEN, allow_lines = 0)
+/proc/trim_strip_html_properly(input, max_length = MAX_MESSAGE_LEN, allow_lines = 0)
return trim(strip_html_properly(input, max_length, allow_lines))
//Used in preferences' SetFlavorText and human's set_flavor verb
//Previews a string of len or less length
-/proc/TextPreview(var/string,var/len=40)
+/proc/TextPreview(string, len=40)
if(length(string) <= len)
if(!length(string))
return "\[...\]"
@@ -386,14 +386,14 @@
return "[copytext_preserve_html(string, 1, 37)]..."
//alternative copytext() for encoded text, doesn't break html entities (" and other)
-/proc/copytext_preserve_html(var/text, var/first, var/last)
+/proc/copytext_preserve_html(text, first, last)
return html_encode(copytext(html_decode(text), first, last))
//Run sanitize(), but remove <, >, " first to prevent displaying them as > < &34; in some places, after html_encode().
//Best used for sanitize object names, window titles.
//If you have a problem with sanitize() in chat, when quotes and >, < are displayed as html entites -
//this is a problem of double-encode(when & becomes &), use sanitize() with encode=0, but not the sanitizeSafe()!
-/proc/sanitizeSafe(var/input, var/max_length = MAX_MESSAGE_LEN, var/encode = 1, var/trim = 1, var/extra = 1)
+/proc/sanitizeSafe(input, max_length = MAX_MESSAGE_LEN, encode = 1, trim = 1, extra = 1)
return sanitize(replace_characters(input, list(">"=" ","<"=" ", "\""="'")), max_length, encode, trim, extra)
@@ -513,6 +513,7 @@
text = replacetext(text, "\[cell\]", "
")
text = replacetext(text, "\[logo\]", "​ ")
text = replacetext(text, "\[time\]", "[station_time_timestamp()]") // TO DO
+ text = replacetext(text, "\[date\]", "[GLOB.current_date_string]")
if(!no_font)
if(P)
text = "[text]"
@@ -651,3 +652,22 @@
// return the split html object to the caller
return s
+
+/**
+ * Proc to generate a "rank colour" from a client
+ *
+ * This takes the client and looks at various factors in order, such as patreon status, staff rank, and more
+ * Arguments:
+ * * C - The client were looking up
+ */
+/proc/client2rankcolour(client/C)
+ // First check if end user is an admin
+ if(C.holder)
+ if(C.holder.rank in GLOB.rank_colour_map)
+ // Return their rank colour if they are in here
+ return GLOB.rank_colour_map[C.holder.rank]
+
+ // If they arent an admin, see if they are a patreon. Just accept any level
+ if(C.donator_level)
+ return "#e67e22" // Patreon orange
+ return null
diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm
index a5524d7c719..5f6e01e93ed 100644
--- a/code/__HELPERS/time.dm
+++ b/code/__HELPERS/time.dm
@@ -62,7 +62,7 @@
return time2text(station_time(time, TRUE), format)
/* Returns 1 if it is the selected month and day */
-/proc/isDay(var/month, var/day)
+/proc/isDay(month, day)
if(isnum(month) && isnum(day))
var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
@@ -94,13 +94,13 @@
return GLOB.month_names.Find(number)
//Take a value in seconds and returns a string of minutes and seconds in the format X minute(s) and X seconds.
-/proc/seconds_to_time(var/seconds as num)
+/proc/seconds_to_time(seconds as num)
var/numSeconds = seconds % 60
var/numMinutes = (seconds - numSeconds) / 60
return "[numMinutes] [numMinutes > 1 ? "minutes" : "minute"] and [numSeconds] seconds"
//Take a value in seconds and makes it display like a clock
-/proc/seconds_to_clock(var/seconds as num)
+/proc/seconds_to_clock(seconds as num)
return "[add_zero(num2text((seconds / 60) % 60), 2)]:[add_zero(num2text(seconds % 60), 2)]"
//Takes a value of time in deciseconds.
diff --git a/code/__HELPERS/traits.dm b/code/__HELPERS/traits.dm
index 6faff552ff5..74760fd22b4 100644
--- a/code/__HELPERS/traits.dm
+++ b/code/__HELPERS/traits.dm
@@ -152,6 +152,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_NOEXAMINE "no_examine"
#define TRAIT_NOPAIN "no_pain"
+/// Blowing kisses actually does damage to the victim
+#define TRAIT_KISS_OF_DEATH "kiss_of_death"
+
//
// common trait sources
#define TRAIT_GENERIC "generic"
diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm
index bf44f6a4bc9..b962907d043 100644
--- a/code/__HELPERS/type2type.dm
+++ b/code/__HELPERS/type2type.dm
@@ -146,7 +146,7 @@
return
//Converts an angle (degrees) into an ss13 direction
-/proc/angle2dir(var/degree)
+/proc/angle2dir(degree)
degree = ((degree+22.5)%365)
if(degree < 45) return NORTH
if(degree < 90) return NORTHEAST
@@ -170,7 +170,7 @@
//returns the north-zero clockwise angle in degrees, given a direction
-/proc/dir2angle(var/D)
+/proc/dir2angle(D)
switch(D)
if(NORTH) return 0
if(SOUTH) return 180
@@ -183,7 +183,7 @@
else return null
//Returns the angle in english
-/proc/angle2text(var/degree)
+/proc/angle2text(degree)
return dir2text(angle2dir(degree))
//Converts a blend_mode constant to one acceptable to icon.Blend()
@@ -281,7 +281,7 @@
if(3*hue < 2) return (a+(b-a)*((2/3)-hue)*6)
return a
-/proc/num2septext(var/theNum, var/sigFig = 7,var/sep=",") // default sigFig (1,000,000)
+/proc/num2septext(theNum, sigFig = 7, sep=",") // default sigFig (1,000,000)
var/finalNum = num2text(theNum, sigFig)
// Start from the end, or from the decimal point
@@ -323,7 +323,7 @@
. = max(0, min(255, 138.5177312231 * log(temp - 10) - 305.0447927307))
//Argument: Give this a space-separated string consisting of 6 numbers. Returns null if you don't
-/proc/text2matrix(var/matrixtext)
+/proc/text2matrix(matrixtext)
var/list/matrixtext_list = splittext(matrixtext, " ")
var/list/matrix_list = list()
for(var/item in matrixtext_list)
@@ -351,7 +351,7 @@
//The string is well, obviously the string being checked
//The datum is used as a source for var names, to check validity
//Otherwise every single word could technically be a variable!
-/proc/string2listofvars(var/t_string, var/datum/var_source)
+/proc/string2listofvars(t_string, datum/var_source)
if(!t_string || !var_source)
return list()
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index dcf08d93b5c..3056485d755 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -5,7 +5,7 @@
/* Get the direction of startObj relative to endObj.
* Return values: To the right, 1. Below, 2. To the left, 3. Above, 4. Not found adjacent in cardinal directions, 0.
*/
-/proc/getRelativeDirection(var/atom/movable/startObj, var/atom/movable/endObj)
+/proc/getRelativeDirection(atom/movable/startObj, atom/movable/endObj)
if(endObj.x == startObj.x + 1 && endObj.y == startObj.y)
return EAST
@@ -21,11 +21,11 @@
return 0
//Returns the middle-most value
-/proc/dd_range(var/low, var/high, var/num)
+/proc/dd_range(low, high, num)
return max(low,min(high,num))
//Returns whether or not A is the middle most value
-/proc/InRange(var/A, var/lower, var/upper)
+/proc/InRange(A, lower, upper)
if(A < lower) return 0
if(A > upper) return 0
return 1
@@ -152,7 +152,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
// Returns true if direction is blocked from loc
// Checks if doors are open
-/proc/DirBlocked(turf/loc,var/dir)
+/proc/DirBlocked(turf/loc, dir)
for(var/obj/structure/window/D in loc)
if(!D.density)
continue
@@ -240,7 +240,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
return 1
//Ensure the frequency is within bounds of what it should be sending/recieving at
-/proc/sanitize_frequency(var/f, var/low = PUBLIC_LOW_FREQ, var/high = PUBLIC_HIGH_FREQ)
+/proc/sanitize_frequency(f, low = PUBLIC_LOW_FREQ, high = PUBLIC_HIGH_FREQ)
f = round(f)
f = max(low, f)
f = min(high, f)
@@ -249,10 +249,10 @@ Turf and target are seperate in case you want to teleport some distance from a t
return f
//Turns 1479 into 147.9
-/proc/format_frequency(var/f)
+/proc/format_frequency(f)
return "[round(f / 10)].[f % 10]"
-/obj/proc/atmosanalyzer_scan(var/datum/gas_mixture/air_contents, mob/user, var/obj/target = src)
+/obj/proc/atmosanalyzer_scan(datum/gas_mixture/air_contents, mob/user, obj/target = src)
var/obj/icon = target
user.visible_message("[user] has used the analyzer on [target].", "You use the analyzer on [target].")
var/pressure = air_contents.return_pressure()
@@ -320,7 +320,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
return selected
-/proc/select_active_ai(var/mob/user)
+/proc/select_active_ai(mob/user)
var/list/ais = active_ais()
if(ais.len)
if(user) . = input(usr,"AI signals detected:", "AI selection") in ais
@@ -438,7 +438,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
return DisplayJoules(units * SSmachines.wait * 0.1 / GLOB.CELLRATE)
//Forces a variable to be posative
-/proc/modulus(var/M)
+/proc/modulus(M)
if(M >= 0)
return M
if(M < 0)
@@ -465,7 +465,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
// Returns the atom sitting on the turf.
// For example, using this on a disk, which is in a bag, on a mob, will return the mob because it's on the turf.
-/proc/get_atom_on_turf(var/atom/movable/M)
+/proc/get_atom_on_turf(atom/movable/M)
var/atom/loc = M
while(loc && loc.loc && !istype(loc.loc, /turf/))
loc = loc.loc
@@ -475,7 +475,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
Returns 1 if the chain up to the area contains the given typepath
0 otherwise
*/
-/atom/proc/is_found_within(var/typepath)
+/atom/proc/is_found_within(typepath)
var/atom/A = src
while(A.loc)
if(istype(A.loc, typepath))
@@ -491,7 +491,7 @@ Returns 1 if the chain up to the area contains the given typepath
// returns the turf located at the map edge in the specified direction relative to A
// used for mass driver
-/proc/get_edge_target_turf(var/atom/A, var/direction)
+/proc/get_edge_target_turf(atom/A, direction)
var/turf/target = locate(A.x, A.y, A.z)
if(!A || !target)
@@ -515,7 +515,7 @@ Returns 1 if the chain up to the area contains the given typepath
// result is bounded to map size
// note range is non-pythagorean
// used for disposal system
-/proc/get_ranged_target_turf(var/atom/A, var/direction, var/range)
+/proc/get_ranged_target_turf(atom/A, direction, range)
var/x = A.x
var/y = A.y
@@ -533,17 +533,17 @@ Returns 1 if the chain up to the area contains the given typepath
// returns turf relative to A offset in dx and dy tiles
// bound to map limits
-/proc/get_offset_target_turf(var/atom/A, var/dx, var/dy)
+/proc/get_offset_target_turf(atom/A, dx, dy)
var/x = min(world.maxx, max(1, A.x + dx))
var/y = min(world.maxy, max(1, A.y + dy))
return locate(x,y,A.z)
//Makes sure MIDDLE is between LOW and HIGH. If not, it adjusts it. Returns the adjusted value.
-/proc/between(var/low, var/middle, var/high)
+/proc/between(low, middle, high)
return max(min(middle, high), low)
//returns random gauss number
-/proc/GaussRand(var/sigma)
+/proc/GaussRand(sigma)
var/x,y,rsq
do
x=2*rand()-1
@@ -553,7 +553,7 @@ Returns 1 if the chain up to the area contains the given typepath
return sigma*y*sqrt(-2*log(rsq)/rsq)
//returns random gauss number, rounded to 'roundto'
-/proc/GaussRandRound(var/sigma,var/roundto)
+/proc/GaussRandRound(sigma, roundto)
return round(GaussRand(sigma),roundto)
//Will return the contents of an atom recursivly to a depth of 'searchDepth'
@@ -576,7 +576,7 @@ Returns 1 if the chain up to the area contains the given typepath
return weight
//Step-towards method of determining whether one atom can see another. Similar to viewers()
-/proc/can_see(var/atom/source, var/atom/target, var/length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate.
+/proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate.
var/turf/current = get_turf(source)
var/turf/target_turf = get_turf(target)
var/steps = 1
@@ -606,7 +606,7 @@ Returns 1 if the chain up to the area contains the given typepath
return 1
return 0
-/proc/get_step_towards2(var/atom/ref , var/atom/trg)
+/proc/get_step_towards2(atom/ref , atom/trg)
var/base_dir = get_dir(ref, get_step_towards(ref,trg))
var/turf/temp = get_step_towards(ref,trg)
@@ -636,7 +636,7 @@ Returns 1 if the chain up to the area contains the given typepath
//Takes: Anything that could possibly have variables and a varname to check.
//Returns: 1 if found, 0 if not.
-/proc/hasvar(var/datum/A, var/varname)
+/proc/hasvar(datum/A, varname)
if(A.vars.Find(lowertext(varname))) return 1
else return 0
@@ -653,7 +653,7 @@ Returns 1 if the chain up to the area contains the given typepath
//Takes: Area type as text string or as typepath OR an instance of the area.
//Returns: A list of all areas of that type in the world.
-/proc/get_areas(var/areatype)
+/proc/get_areas(areatype)
if(!areatype) return null
if(istext(areatype)) areatype = text2path(areatype)
if(isarea(areatype))
@@ -667,7 +667,7 @@ Returns 1 if the chain up to the area contains the given typepath
//Takes: Area type as text string or as typepath OR an instance of the area.
//Returns: A list of all turfs in areas of that type of that type in the world.
-/proc/get_area_turfs(var/areatype)
+/proc/get_area_turfs(areatype)
if(!areatype) return null
if(istext(areatype)) areatype = text2path(areatype)
if(isarea(areatype))
@@ -682,7 +682,7 @@ Returns 1 if the chain up to the area contains the given typepath
//Takes: Area type as text string or as typepath OR an instance of the area.
//Returns: A list of all atoms (objs, turfs, mobs) in areas of that type of that type in the world.
-/proc/get_area_all_atoms(var/areatype)
+/proc/get_area_all_atoms(areatype)
if(!areatype) return null
if(istext(areatype)) areatype = text2path(areatype)
if(isarea(areatype))
@@ -701,7 +701,7 @@ Returns 1 if the chain up to the area contains the given typepath
var/y_pos = null
var/z_pos = null
-/area/proc/move_contents_to(var/area/A, var/turftoleave=null, var/direction = null)
+/area/proc/move_contents_to(area/A, turftoleave=null, direction = null)
//Takes: Area. Optional: turf type to leave behind.
//Returns: Nothing.
//Notes: Attempts to move the contents of one area to another area.
@@ -840,7 +840,7 @@ Returns 1 if the chain up to the area contains the given typepath
-/proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0, var/atom/newloc = null)
+/proc/DuplicateObject(obj/original, perfectcopy = 0 , sameloc = 0, atom/newloc = null)
if(!original)
return null
@@ -867,7 +867,7 @@ Returns 1 if the chain up to the area contains the given typepath
O.update_icon()
return O
-/area/proc/copy_contents_to(var/area/A , var/platingRequired = 0 )
+/area/proc/copy_contents_to(area/A , platingRequired = 0 )
//Takes: Area. Optional: If it should copy to areas that don't have plating
//Returns: Nothing.
//Notes: Attempts to move the contents of one area to another area.
@@ -1096,7 +1096,7 @@ Returns 1 if the chain up to the area contains the given typepath
//centered = 0 counts from turf edge to edge
//centered = 1 counts from turf center to turf center
//of course mathematically this is just adding world.icon_size on again
-/proc/getPixelDistance(var/atom/A, var/atom/B, var/centered = 1)
+/proc/getPixelDistance(atom/A, atom/B, centered = 1)
if(!istype(A)||!istype(B))
return 0
. = bounds_dist(A, B) + sqrt((((A.pixel_x+B.pixel_x)**2) + ((A.pixel_y+B.pixel_y)**2)))
@@ -1186,7 +1186,7 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list(
return 1
return 0
-/proc/reverse_direction(var/dir)
+/proc/reverse_direction(dir)
switch(dir)
if(NORTH)
return SOUTH
@@ -1261,7 +1261,7 @@ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/mac
Standard way to write links -Sayu
*/
-/proc/topic_link(var/datum/D, var/arglist, var/content)
+/proc/topic_link(datum/D, arglist, content)
if(istype(arglist,/list))
arglist = list2params(arglist)
return "[content]"
@@ -1372,7 +1372,7 @@ Standard way to write links -Sayu
chance = max(chance - (initial_chance / steps), 0)
steps--
-/proc/get_random_colour(var/simple, var/lower, var/upper)
+/proc/get_random_colour(simple, lower, upper)
var/colour
if(simple)
colour = pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))
@@ -1384,7 +1384,7 @@ Standard way to write links -Sayu
colour += temp_col
return colour
-/proc/get_distant_turf(var/turf/T,var/direction,var/distance)
+/proc/get_distant_turf(turf/T, direction, distance)
if(!T || !direction || !distance) return
var/dest_x = T.x
@@ -1405,7 +1405,7 @@ Standard way to write links -Sayu
GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
//Version of view() which ignores darkness, because BYOND doesn't have it.
-/proc/dview(var/range = world.view, var/center, var/invis_flags = 0)
+/proc/dview(range = world.view, center, invis_flags = 0)
if(!center)
return
@@ -1574,7 +1574,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
//The y dimension of the icon file used in the image
// eg: center_image(I, 32,32)
// eg2: center_image(I, 96,96)
-/proc/center_image(var/image/I, x_dimension = 0, y_dimension = 0)
+/proc/center_image(image/I, x_dimension = 0, y_dimension = 0)
if(!I)
return
@@ -1729,7 +1729,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
chosen = matches[chosen]
return chosen
-/proc/make_types_fancy(var/list/types)
+/proc/make_types_fancy(list/types)
if(ispath(types))
types = list(types)
. = list()
@@ -1962,7 +1962,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
result += (1 << num)
return result
-/proc/pixel_shift_dir(var/dir, var/amount_x = 32, var/amount_y = 32) //Returns a list with pixel_shift values that will shift an object's icon one tile in the direction passed.
+/proc/pixel_shift_dir(dir, amount_x = 32, amount_y = 32) //Returns a list with pixel_shift values that will shift an object's icon one tile in the direction passed.
amount_x = min(max(0, amount_x), 32) //No less than 0, no greater than 32.
amount_y = min(max(0, amount_x), 32)
var/list/shift = list("x" = 0, "y" = 0)
@@ -2116,7 +2116,9 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
return "White Noise"
if(CHANNEL_AMBIENCE)
return "Ambience"
-
+ if(CHANNEL_ENGINE)
+ return "Engine Ambience"
+
/proc/slot_bitfield_to_slot(input_slot_flags) // Kill off this garbage ASAP; slot flags and clothing flags should be IDENTICAL. GOSH DARN IT. Doesn't work with ears or pockets, either.
switch(input_slot_flags)
if(SLOT_OCLOTHING)
diff --git a/code/_globalvars/lists/devil.dm b/code/_globalvars/lists/devil.dm
deleted file mode 100644
index 54528709573..00000000000
--- a/code/_globalvars/lists/devil.dm
+++ /dev/null
@@ -1,8 +0,0 @@
-//what could possibly go wrong
-GLOBAL_LIST_INIT(devil_machines, typecacheof(/obj/item/circuitboard, TRUE) - list(
- /obj/item/circuitboard/shuttle,
- /obj/item/circuitboard/swfdoor,
- /obj/item/circuitboard/olddoor,
- /obj/item/circuitboard/computer,
- /obj/item/circuitboard/machine
-))
diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm
index ebdf2017900..b5fd84ef6d6 100644
--- a/code/_globalvars/lists/misc.dm
+++ b/code/_globalvars/lists/misc.dm
@@ -54,4 +54,7 @@ GLOBAL_LIST_INIT(cooking_recipes, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN =
GLOBAL_LIST_INIT(cooking_ingredients, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list()))
GLOBAL_LIST_INIT(cooking_reagents, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list()))
+/// Associative list of admin rank to colour. Set in config/rank_colours.txt
+GLOBAL_LIST_EMPTY(rank_colour_map)
+
#define EGG_LAYING_MESSAGES list("lays an egg.", "squats down and croons.", "begins making a huge racket.", "begins clucking raucously.")
diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm
index cb8920f30ed..6d28489127a 100644
--- a/code/_globalvars/misc.dm
+++ b/code/_globalvars/misc.dm
@@ -92,7 +92,6 @@ GLOBAL_VAR(map_name) // Self explanatory
GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) // Station datacore, manifest, etc
GLOBAL_VAR_INIT(panic_bunker_enabled, FALSE) // Is the panic bunker enabled
-GLOBAL_VAR_INIT(pending_server_update, FALSE)
GLOBAL_LIST_EMPTY(ability_verbs) // Create-level abilities
GLOBAL_LIST_INIT(pipe_colors, list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE))
diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm
index 906b4b608c1..382303c1212 100644
--- a/code/_globalvars/traits.dm
+++ b/code/_globalvars/traits.dm
@@ -45,6 +45,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_DWARF" = TRAIT_DWARF,
"TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS,
"TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE,
+ "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH,
"TRAIT_COMIC_SANS" = TRAIT_COMIC_SANS,
"TRAIT_NOFINGERPRINTS" = TRAIT_NOFINGERPRINTS,
diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm
index 58cfdf477f2..f9096ad6492 100644
--- a/code/_onclick/adjacent.dm
+++ b/code/_onclick/adjacent.dm
@@ -10,11 +10,11 @@
Note that in all cases the neighbor is handled simply; this is usually the user's mob, in which case it is up to you
to check that the mob is not inside of something
*/
-/atom/proc/Adjacent(var/atom/neighbor) // basic inheritance, unused
+/atom/proc/Adjacent(atom/neighbor) // basic inheritance, unused
return 0
// Not a sane use of the function and (for now) indicative of an error elsewhere
-/area/Adjacent(var/atom/neighbor)
+/area/Adjacent(atom/neighbor)
CRASH("Call to /area/Adjacent(), unimplemented proc")
@@ -25,7 +25,7 @@
* If you are diagonally adjacent, ensure you can pass through at least one of the mutually adjacent square.
* Passing through in this case ignores anything with the LETPASSTHROW flag, such as tables, racks, and morgue trays.
*/
-/turf/Adjacent(var/atom/neighbor, var/atom/target = null)
+/turf/Adjacent(atom/neighbor, atom/target = null)
var/turf/T0 = get_turf(neighbor)
if(T0 == src)
return 1
@@ -63,7 +63,7 @@
Note: Multiple-tile objects are created when the bound_width and bound_height are creater than the tile size.
This is not used in stock /tg/station currently.
*/
-/atom/movable/Adjacent(var/atom/neighbor)
+/atom/movable/Adjacent(atom/neighbor)
if(neighbor == loc) return 1
if(!isturf(loc)) return 0
for(var/turf/T in locs)
@@ -72,7 +72,7 @@
return 0
// This is necessary for storage items not on your person.
-/obj/item/Adjacent(var/atom/neighbor, var/recurse = 1)
+/obj/item/Adjacent(atom/neighbor, recurse = 1)
if(neighbor == loc) return 1
if(istype(loc,/obj/item))
if(recurse > 0)
@@ -85,7 +85,7 @@
This is defined as any dense ON_BORDER object, or any dense object without LETPASSTHROW.
The border_only flag allows you to not objects (for source and destination squares)
*/
-/turf/proc/ClickCross(var/target_dir, var/border_only, var/target_atom = null)
+/turf/proc/ClickCross(target_dir, border_only, target_atom = null)
for(var/obj/O in src)
if( !O.density || O == target_atom || (O.pass_flags & LETPASSTHROW))
continue // LETPASSTHROW is used for anything you can click through
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 8467c6dcb75..77a4ae192f1 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -196,7 +196,7 @@
return FALSE
// Default behavior: ignore double clicks, consider them normal clicks instead
-/mob/proc/DblClickOn(var/atom/A, var/params)
+/mob/proc/DblClickOn(atom/A, params)
return
/*
@@ -209,7 +209,7 @@
proximity_flag is not currently passed to attack_hand, and is instead used
in human click code to allow glove touches only at melee range.
*/
-/mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag)
+/mob/proc/UnarmedAttack(atom/A, proximity_flag)
if(ismob(A))
changeNext_move(CLICK_CD_MELEE)
return
@@ -230,14 +230,14 @@
Used when you are handcuffed and click things.
Not currently used by anything but could easily be.
*/
-/mob/proc/RestrainedClickOn(var/atom/A)
+/mob/proc/RestrainedClickOn(atom/A)
return
/*
Middle click
Only used for swapping hands
*/
-/mob/proc/MiddleClickOn(var/atom/A)
+/mob/proc/MiddleClickOn(atom/A)
pointed(A)
return
@@ -285,7 +285,7 @@
// In case of use break glass
/*
-/atom/proc/MiddleClick(var/mob/M as mob)
+/atom/proc/MiddleClick(mob/M as mob)
return
*/
@@ -294,10 +294,10 @@
For most mobs, examine.
This is overridden in ai.dm
*/
-/mob/proc/ShiftClickOn(var/atom/A)
+/mob/proc/ShiftClickOn(atom/A)
A.ShiftClick(src)
return
-/atom/proc/ShiftClick(var/mob/user)
+/atom/proc/ShiftClick(mob/user)
if(user.client && get_turf(user.client.eye) == get_turf(user))
user.examinate(src)
return
@@ -306,7 +306,7 @@
Ctrl click
For most objects, pull
*/
-/mob/proc/CtrlClickOn(var/atom/A)
+/mob/proc/CtrlClickOn(atom/A)
A.CtrlClick(src)
return
@@ -320,7 +320,7 @@
Alt click
Unused except for AI
*/
-/mob/proc/AltClickOn(var/atom/A)
+/mob/proc/AltClickOn(atom/A)
A.AltClick(src)
return
@@ -331,36 +331,39 @@
else
..()
-/atom/proc/AltClick(var/mob/user)
+/atom/proc/AltClick(mob/user)
+ SEND_SIGNAL(src, COMSIG_CLICK_ALT, user)
var/turf/T = get_turf(src)
- if(T)
- if(user.TurfAdjacent(T))
- user.listed_turf = T
- user.client.statpanel = T.name
- // If we had a method to force a `Stat` update, it would go here
- else
- user.listed_turf = null
- return
+ if(T && (isturf(loc) || isturf(src)) && user.TurfAdjacent(T))
+ user.listed_turf = T
+ user.client.statpanel = T.name
-/mob/proc/TurfAdjacent(var/turf/T)
+/// Use this instead of [/mob/proc/AltClickOn] where you only want turf content listing without additional atom alt-click interaction
+/atom/proc/AltClickNoInteract(mob/user, atom/A)
+ var/turf/T = get_turf(A)
+ if(T && user.TurfAdjacent(T))
+ user.listed_turf = T
+ user.client.statpanel = T.name
+
+/mob/proc/TurfAdjacent(turf/T)
return T.Adjacent(src)
/*
Control+Shift/Alt+Shift click
Unused except for AI
*/
-/mob/proc/CtrlShiftClickOn(var/atom/A)
+/mob/proc/CtrlShiftClickOn(atom/A)
A.CtrlShiftClick(src)
return
-/atom/proc/CtrlShiftClick(var/mob/user)
+/atom/proc/CtrlShiftClick(mob/user)
return
-/mob/proc/AltShiftClickOn(var/atom/A)
+/mob/proc/AltShiftClickOn(atom/A)
A.AltShiftClick(src)
return
-/atom/proc/AltShiftClick(var/mob/user)
+/atom/proc/AltShiftClick(mob/user)
return
@@ -392,7 +395,7 @@
LE.fire()
// Simple helper to face what you clicked on, in case it should be needed in more than one place
-/mob/proc/face_atom(var/atom/A)
+/mob/proc/face_atom(atom/A)
if( stat || buckled || !A || !x || !y || !A.x || !A.y ) return
var/dx = A.x - x
var/dy = A.y - y
diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm
index 1136af3eae4..0336c809511 100644
--- a/code/_onclick/click_override.dm
+++ b/code/_onclick/click_override.dm
@@ -12,7 +12,7 @@
/datum/middleClickOverride/
-/datum/middleClickOverride/proc/onClick(var/atom/A, var/mob/living/user)
+/datum/middleClickOverride/proc/onClick(atom/A, mob/living/user)
user.middleClickOverride = null
return 1
/* Note, when making a new click override it is ABSOLUTELY VITAL that you set the source's clickOverride to null at some point if you don't want them to be stuck with it forever.
@@ -35,7 +35,7 @@
/datum/middleClickOverride/badminClicker
var/summon_path = /obj/item/reagent_containers/food/snacks/cookie
-/datum/middleClickOverride/badminClicker/onClick(var/atom/A, var/mob/living/user)
+/datum/middleClickOverride/badminClicker/onClick(atom/A, mob/living/user)
var/atom/movable/newObject = new summon_path
newObject.loc = get_turf(A)
to_chat(user, "You release the power you had stored up, summoning \a [newObject.name]! ")
diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm
index 58fd73656cb..91fe0c99bf7 100644
--- a/code/_onclick/hud/_defines.dm
+++ b/code/_onclick/hud/_defines.dm
@@ -22,7 +22,6 @@
//Middle left indicators
#define ui_lingchemdisplay "WEST:6,CENTER-1:15"
#define ui_lingstingdisplay "WEST:6,CENTER-3:11"
-#define ui_devilsouldisplay "WEST:6,CENTER-1:15"
//Lower center, persistant menu
#define ui_sstore1 "CENTER-5:10,SOUTH:5"
diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm
index 01940be1d8b..c408c1cd7b6 100644
--- a/code/_onclick/hud/blob_overmind.dm
+++ b/code/_onclick/hud/blob_overmind.dm
@@ -132,6 +132,8 @@
if(isovermind(usr))
var/mob/camera/blob/B = usr
B.split_consciousness()
+ if(B.split_used) // Destroys split proc if the split is succesfully used
+ qdel(src)
/datum/hud/blob_overmind/New(mob/user)
..()
@@ -194,6 +196,8 @@
using.screen_loc = ui_storage2
static_inventory += using
- using = new /obj/screen/blob/Split()
- using.screen_loc = ui_acti
- static_inventory += using
+ var/mob/camera/blob/B = user
+ if(!B.is_offspring) // Checks if the blob is an offspring, to not create split button if it is
+ using = new /obj/screen/blob/Split()
+ using.screen_loc = ui_acti
+ static_inventory += using
diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm
deleted file mode 100644
index 53f7265c6a4..00000000000
--- a/code/_onclick/hud/devil.dm
+++ /dev/null
@@ -1,87 +0,0 @@
-
-//Soul counter is stored with the humans, it does weird when you place it here apparently...
-
-
-/datum/hud/devil/New(mob/owner, ui_style = 'icons/mob/screen_midnight.dmi')
- ..()
-
- var/obj/screen/using
- var/obj/screen/inventory/inv_box
-
- using = new /obj/screen/drop()
- using.icon = ui_style
- using.screen_loc = ui_drop_throw
- static_inventory += using
-
- mymob.pullin = new /obj/screen/pull()
- mymob.pullin.icon = ui_style
- mymob.pullin.update_icon(mymob)
- mymob.pullin.screen_loc = ui_pull_resist
- static_inventory += mymob.pullin
-
- inv_box = new /obj/screen/inventory/hand()
- inv_box.name = "right hand"
- inv_box.icon = ui_style
- inv_box.icon_state = "hand_r"
- inv_box.screen_loc = ui_rhand
- inv_box.slot_id = slot_r_hand
- static_inventory += inv_box
-
- inv_box = new /obj/screen/inventory/hand()
- inv_box.name = "left hand"
- inv_box.icon = ui_style
- inv_box.icon_state = "hand_l"
- inv_box.screen_loc = ui_lhand
- inv_box.slot_id = slot_l_hand
- static_inventory += inv_box
-
- using = new /obj/screen/swap_hand()
- using.name = "hand"
- using.icon = ui_style
- using.icon_state = "swap_1"
- using.screen_loc = ui_swaphand1
- static_inventory += using
-
- using = new /obj/screen/swap_hand()
- using.name = "hand"
- using.icon = ui_style
- using.icon_state = "swap_2"
- using.screen_loc = ui_swaphand2
- static_inventory += using
-
- zone_select = new /obj/screen/zone_sel()
- zone_select.icon = ui_style
- zone_select.update_icon(mymob)
-
- lingchemdisplay = new /obj/screen/ling/chems()
- devilsouldisplay = new /obj/screen/devil/soul_counter
- infodisplay += devilsouldisplay
-
- for(var/obj/screen/inventory/inv in static_inventory)
- if(inv.slot_id)
- inv.hud = src
- inv_slots[inv.slot_id] = inv
- inv.update_icon()
-
-
-/datum/hud/devil/persistent_inventory_update()
- if(!mymob)
- return
- var/mob/living/carbon/true_devil/D = mymob
-
- if(hud_version != HUD_STYLE_NOHUD)
- if(D.r_hand)
- D.r_hand.screen_loc = ui_rhand
- D.client.screen += D.r_hand
- if(D.l_hand)
- D.l_hand.screen_loc = ui_lhand
- D.client.screen += D.l_hand
- else
- if(D.r_hand)
- D.r_hand.screen_loc = null
- if(D.l_hand)
- D.l_hand.screen_loc = null
-
-/mob/living/carbon/true_devil/create_mob_hud()
- if(client && !hud_used)
- hud_used = new /datum/hud/devil(src, ui_style2icon(client.prefs.UI_style))
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index c8d8a7d2290..0cfb6985b8e 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -27,8 +27,6 @@
var/obj/screen/move_intent
var/obj/screen/module_store_icon
- var/obj/screen/devil/soul_counter/devilsouldisplay
-
var/list/static_inventory = list() //the screen objects which are static
var/list/toggleable_inventory = list() //the screen objects which can be hidden
var/list/hotkeybuttons = list() //the buttons that can be used via hotkeys
@@ -89,7 +87,6 @@
alien_plasma_display = null
vampire_blood_display = null
nightvisionicon = null
- devilsouldisplay = null
QDEL_LIST_ASSOC_VAL(plane_masters)
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 5b4ce4c99e9..8f125079d6b 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -36,35 +36,6 @@
var/mob/living/carbon/U = usr
U.unset_sting()
-/obj/screen/devil
- invisibility = INVISIBILITY_ABSTRACT
-
-/obj/screen/devil/soul_counter
- icon = 'icons/mob/screen_gen.dmi'
- name = "souls owned"
- icon_state = "Devil-6"
- screen_loc = ui_devilsouldisplay
-
-/obj/screen/devil/soul_counter/proc/update_counter(souls = 0)
- invisibility = 0
- maptext = "[souls] "
- switch(souls)
- if(0,null)
- icon_state = "Devil-1"
- if(1,2)
- icon_state = "Devil-2"
- if(3 to 5)
- icon_state = "Devil-3"
- if(6 to 8)
- icon_state = "Devil-4"
- if(9 to INFINITY)
- icon_state = "Devil-5"
- else
- icon_state = "Devil-6"
-
-/obj/screen/devil/soul_counter/proc/clear()
- invisibility = INVISIBILITY_ABSTRACT
-
/obj/screen/ling/chems
name = "chemical storage"
icon_state = "power_display"
@@ -85,7 +56,7 @@
/datum/hud/human
var/hud_alpha = 255
-/datum/hud/human/New(mob/living/carbon/human/owner, var/ui_style = 'icons/mob/screen_white.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255)
+/datum/hud/human/New(mob/living/carbon/human/owner, ui_style = 'icons/mob/screen_white.dmi', ui_color = "#ffffff", ui_alpha = 255)
..()
owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness)
@@ -372,9 +343,6 @@
lingstingdisplay = new /obj/screen/ling/sting()
infodisplay += lingstingdisplay
- devilsouldisplay = new /obj/screen/devil/soul_counter
- infodisplay += devilsouldisplay
-
zone_select = new /obj/screen/zone_sel()
zone_select.color = ui_color
zone_select.icon = ui_style
diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm
index d5fb5cad4fa..e9b95cdd4fc 100644
--- a/code/_onclick/hud/parallax.dm
+++ b/code/_onclick/hud/parallax.dm
@@ -8,7 +8,7 @@
var/last_parallax_shift //world.time of last update
var/parallax_throttle = 0 //ds between updates
var/parallax_movedir = 0
- var/parallax_layers_max = 3
+ var/parallax_layers_max = 4
var/parallax_animate_timer
/datum/hud/proc/create_parallax()
@@ -21,6 +21,8 @@
C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_1(null, C.view)
C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_2(null, C.view)
C.parallax_layers_cached += new /obj/screen/parallax_layer/planet(null, C.view)
+ if(SSparallax.random_layer)
+ C.parallax_layers_cached += new SSparallax.random_layer
C.parallax_layers_cached += new /obj/screen/parallax_layer/layer_3(null, C.view)
C.parallax_layers = C.parallax_layers_cached.Copy()
@@ -44,12 +46,12 @@
switch(C.prefs.parallax)
if (PARALLAX_INSANE)
C.parallax_throttle = FALSE
- C.parallax_layers_max = 4
+ C.parallax_layers_max = 5
return TRUE
if (PARALLAX_MED)
C.parallax_throttle = PARALLAX_DELAY_MED
- C.parallax_layers_max = 2
+ C.parallax_layers_max = 3
return TRUE
if (PARALLAX_LOW)
@@ -60,8 +62,9 @@
if (PARALLAX_DISABLE)
return FALSE
+ //This is high parallax.
C.parallax_throttle = PARALLAX_DELAY_DEFAULT
- C.parallax_layers_max = 3
+ C.parallax_layers_max = 4
return TRUE
/datum/hud/proc/update_parallax_pref()
@@ -276,6 +279,21 @@
speed = 1.4
layer = 3
+/obj/screen/parallax_layer/random
+ blend_mode = BLEND_OVERLAY
+ speed = 3
+ layer = 3
+
+/obj/screen/parallax_layer/random/space_gas
+ icon_state = "space_gas"
+
+/obj/screen/parallax_layer/random/space_gas/New(view)
+ ..()
+ add_atom_colour(SSparallax.random_parallax_color, ADMIN_COLOUR_PRIORITY)
+
+/obj/screen/parallax_layer/random/asteroids
+ icon_state = "asteroids"
+
/obj/screen/parallax_layer/planet
icon_state = "planet"
blend_mode = BLEND_OVERLAY
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index 456d30c0059..1fe1c68522b 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -31,7 +31,7 @@
return FALSE
/obj/attackby(obj/item/I, mob/living/user, params)
- return ..() || (can_be_hit && I.attack_obj(src, user))
+ return ..() || (can_be_hit && I.attack_obj(src, user, params))
/mob/living/attackby(obj/item/I, mob/living/user, params)
user.changeNext_move(CLICK_CD_MELEE)
@@ -87,7 +87,7 @@
//the equivalent of the standard version of attack() but for object targets.
-/obj/item/proc/attack_obj(obj/O, mob/living/user)
+/obj/item/proc/attack_obj(obj/O, mob/living/user, params)
if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ)
return
if(flags & (NOBLUDGEON))
diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm
index 073fab88b34..8a23d228afc 100644
--- a/code/_onclick/observer.dm
+++ b/code/_onclick/observer.dm
@@ -1,4 +1,4 @@
-/mob/dead/observer/DblClickOn(var/atom/A, var/params)
+/mob/dead/observer/DblClickOn(atom/A, params)
if(client.click_intercept)
// Not doing a click intercept here, because otherwise we double-tap with the `ClickOn` proc.
// But we return here since we don't want to do regular dblclick handling
@@ -18,7 +18,7 @@
forceMove(get_turf(A))
update_parallax_contents()
-/mob/dead/observer/ClickOn(var/atom/A, var/params)
+/mob/dead/observer/ClickOn(atom/A, params)
if(client.click_intercept)
client.click_intercept.InterceptClickOn(src, params, A)
return
@@ -48,14 +48,14 @@
ShiftClickOn(A)
return
if(modifiers["alt"])
- AltClickOn(A)
+ AltClickNoInteract(src, A)
return
// You are responsible for checking config.ghost_interaction when you override this function
// Not all of them require checking, see below
A.attack_ghost(src)
// We don't need a fucking toggle.
-/mob/dead/observer/ShiftClickOn(var/atom/A)
+/mob/dead/observer/ShiftClickOn(atom/A)
examinate(A)
/atom/proc/attack_ghost(mob/user)
diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 3720f9bdb2e..b2338937ebc 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -28,11 +28,11 @@
return
/*
-/mob/living/carbon/human/RestrainedClickOn(var/atom/A) -- Handled by carbons
+/mob/living/carbon/human/RestrainedClickOn(atom/A) -- Handled by carbons
return
*/
-/mob/living/carbon/RestrainedClickOn(var/atom/A)
+/mob/living/carbon/RestrainedClickOn(atom/A)
return 0
/mob/living/carbon/human/RangedAttack(atom/A, params)
@@ -54,17 +54,17 @@
/*
Animals & All Unspecified
*/
-/mob/living/UnarmedAttack(var/atom/A)
+/mob/living/UnarmedAttack(atom/A)
A.attack_animal(src)
-/mob/living/simple_animal/hostile/UnarmedAttack(var/atom/A)
+/mob/living/simple_animal/hostile/UnarmedAttack(atom/A)
target = A
AttackingTarget()
/atom/proc/attack_animal(mob/user)
return
-/mob/living/RestrainedClickOn(var/atom/A)
+/mob/living/RestrainedClickOn(atom/A)
return
/*
@@ -109,5 +109,5 @@
return
// pAIs are not intended to interact with anything in the world
-/mob/living/silicon/pai/UnarmedAttack(var/atom/A)
+/mob/living/silicon/pai/UnarmedAttack(atom/A)
return
diff --git a/code/_onclick/overmind.dm b/code/_onclick/overmind.dm
index 419524c8711..40c60b99268 100644
--- a/code/_onclick/overmind.dm
+++ b/code/_onclick/overmind.dm
@@ -1,7 +1,7 @@
// Blob Overmind Controls
-/mob/camera/blob/ClickOn(var/atom/A, var/params) //Expand blob
+/mob/camera/blob/ClickOn(atom/A, params) //Expand blob
var/list/modifiers = params2list(params)
if(modifiers["middle"])
MiddleClickOn(A)
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index df9c8ea1fae..342af86c0b6 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -87,7 +87,7 @@
//stops TK grabs being equipped anywhere but into hands
-/obj/item/tk_grab/equipped(mob/user, var/slot)
+/obj/item/tk_grab/equipped(mob/user, slot)
if( (slot == slot_l_hand) || (slot== slot_r_hand) )
return
qdel(src)
@@ -151,7 +151,7 @@
if(!.)
return I == focus
-/obj/item/tk_grab/proc/focus_object(var/obj/target, var/mob/user)
+/obj/item/tk_grab/proc/focus_object(obj/target, mob/user)
if(!istype(target,/obj))
return//Cant throw non objects atm might let it do mobs later
if(target.anchored || !isturf(target.loc))
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index aa43133d111..3b39682efbf 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -925,3 +925,34 @@
runnable_modes[M] = probabilities[M.config_tag]
// to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]")
return runnable_modes
+
+/datum/configuration/proc/load_rank_colour_map()
+ var/list/lines = file2list("config/rank_colours.txt")
+
+ for(var/line in lines)
+ // Skip newlines
+ if(!length(line))
+ continue
+ // Skip comments
+ if(line[1] == "#")
+ continue
+
+ //Split the line at every " - "
+ var/list/split_holder = splittext(line, " - ")
+ if(!length(split_holder))
+ continue
+
+ // Rank is before the " - "
+ var/rank = split_holder[1]
+ if(!rank)
+ continue
+
+ // Color is after the " - "
+ var/colour = ""
+ if(length(split_holder) >= 2)
+ colour = split_holder[2]
+
+ if(rank && colour)
+ GLOB.rank_colour_map[rank] = colour
+ else
+ stack_trace("Invalid colour for rank '[rank]' in config/rank_colours.txt")
diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm
index 6b08efe7b38..324df11b8d1 100644
--- a/code/controllers/subsystem/air.dm
+++ b/code/controllers/subsystem/air.dm
@@ -283,7 +283,7 @@ SUBSYSTEM_DEF(air)
for(var/turf/simulated/S in T.atmos_adjacent_turfs)
add_to_active(S)
-/datum/controller/subsystem/air/proc/setup_allturfs(var/list/turfs_to_init = block(locate(1, 1, 1), locate(world.maxx, world.maxy, world.maxz)))
+/datum/controller/subsystem/air/proc/setup_allturfs(list/turfs_to_init = block(locate(1, 1, 1), locate(world.maxx, world.maxy, world.maxz)))
var/list/active_turfs = src.active_turfs
// Clear active turfs - faster than removing every single turf in the world
@@ -321,7 +321,7 @@ SUBSYSTEM_DEF(air)
ET.excited = 1
. += ET
-/datum/controller/subsystem/air/proc/setup_atmos_machinery(var/list/machines_to_init)
+/datum/controller/subsystem/air/proc/setup_atmos_machinery(list/machines_to_init)
var/watch = start_watch()
log_startup_progress("Initializing atmospherics machinery...")
var/count = _setup_atmos_machinery(machines_to_init)
@@ -329,7 +329,7 @@ SUBSYSTEM_DEF(air)
// this underscored variant is so that we can have a means of late initing
// atmos machinery without a loud announcement to the world
-/datum/controller/subsystem/air/proc/_setup_atmos_machinery(var/list/machines_to_init)
+/datum/controller/subsystem/air/proc/_setup_atmos_machinery(list/machines_to_init)
var/count = 0
for(var/obj/machinery/atmospherics/A in machines_to_init)
A.atmos_init()
@@ -345,7 +345,7 @@ SUBSYSTEM_DEF(air)
//this can't be done with setup_atmos_machinery() because
// all atmos machinery has to initalize before the first
// pipenet can be built.
-/datum/controller/subsystem/air/proc/setup_pipenets(var/list/pipes)
+/datum/controller/subsystem/air/proc/setup_pipenets(list/pipes)
var/watch = start_watch()
log_startup_progress("Initializing pipe networks...")
var/count = _setup_pipenets(pipes)
@@ -353,7 +353,7 @@ SUBSYSTEM_DEF(air)
// An underscored wrapper that exists for the same reason
// the machine init wrapper does
-/datum/controller/subsystem/air/proc/_setup_pipenets(var/list/pipes)
+/datum/controller/subsystem/air/proc/_setup_pipenets(list/pipes)
var/count = 0
for(var/obj/machinery/atmospherics/machine in pipes)
machine.build_network()
diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm
index 1512d8e6e70..acfb7444323 100644
--- a/code/controllers/subsystem/blackbox.dm
+++ b/code/controllers/subsystem/blackbox.dm
@@ -65,7 +65,7 @@ SUBSYSTEM_DEF(blackbox)
sqlversion = versions[FV.key]
var/datum/db_query/query_feedback_save = SSdbcore.NewQuery({"
- INSERT DELAYED IGNORE INTO [format_table_name("feedback")] (datetime, round_id, key_name, key_type, version, json)
+ INSERT IGNORE INTO [format_table_name("feedback")] (datetime, round_id, key_name, key_type, version, json)
VALUES (NOW(), :rid, :keyname, :keytype, :version, :json)"}, list(
"rid" = text2num(GLOB.round_id),
"keyname" = FV.key,
diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm
index 504f263247b..c7e18522392 100644
--- a/code/controllers/subsystem/jobs.dm
+++ b/code/controllers/subsystem/jobs.dm
@@ -29,7 +29,7 @@ SUBSYSTEM_DEF(jobs)
return
batch_update_player_exp(announce = FALSE) // Set this to true if you ever want to inform players about their EXP gains
-/datum/controller/subsystem/jobs/proc/SetupOccupations(var/list/faction = list("Station"))
+/datum/controller/subsystem/jobs/proc/SetupOccupations(list/faction = list("Station"))
occupations = list()
var/list/all_jobs = subtypesof(/datum/job)
if(!all_jobs.len)
@@ -47,7 +47,7 @@ SUBSYSTEM_DEF(jobs)
return 1
-/datum/controller/subsystem/jobs/proc/Debug(var/text)
+/datum/controller/subsystem/jobs/proc/Debug(text)
if(!GLOB.debug2)
return 0
job_debug.Add(text)
@@ -67,7 +67,7 @@ SUBSYSTEM_DEF(jobs)
/datum/controller/subsystem/jobs/proc/GetPlayerAltTitle(mob/new_player/player, rank)
return player.client.prefs.GetPlayerAltTitle(GetJob(rank))
-/datum/controller/subsystem/jobs/proc/AssignRole(var/mob/new_player/player, var/rank, var/latejoin = 0)
+/datum/controller/subsystem/jobs/proc/AssignRole(mob/new_player/player, rank, latejoin = 0)
Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]")
if(player && player.mind && rank)
var/datum/job/job = GetJob(rank)
@@ -110,7 +110,7 @@ SUBSYSTEM_DEF(jobs)
Debug("AR has failed, Player: [player], Rank: [rank]")
return 0
-/datum/controller/subsystem/jobs/proc/FreeRole(var/rank) //making additional slot on the fly
+/datum/controller/subsystem/jobs/proc/FreeRole(rank) //making additional slot on the fly
var/datum/job/job = GetJob(rank)
if(job && job.current_positions >= job.total_positions && job.total_positions != -1)
job.total_positions++
@@ -145,7 +145,7 @@ SUBSYSTEM_DEF(jobs)
candidates += player
return candidates
-/datum/controller/subsystem/jobs/proc/GiveRandomJob(var/mob/new_player/player)
+/datum/controller/subsystem/jobs/proc/GiveRandomJob(mob/new_player/player)
Debug("GRJ Giving random job, Player: [player]")
for(var/datum/job/job in shuffle(occupations))
if(!job)
@@ -229,7 +229,7 @@ SUBSYSTEM_DEF(jobs)
///This proc is called at the start of the level loop of DivideOccupations() and will cause head jobs to be checked before any other jobs of the same level
-/datum/controller/subsystem/jobs/proc/CheckHeadPositions(var/level)
+/datum/controller/subsystem/jobs/proc/CheckHeadPositions(level)
for(var/command_position in GLOB.command_positions)
var/datum/job/job = GetJob(command_position)
if(!job)
@@ -409,7 +409,7 @@ SUBSYSTEM_DEF(jobs)
log_debug("Dividing Occupations took [stop_watch(watch)]s")
return 1
-/datum/controller/subsystem/jobs/proc/AssignRank(var/mob/living/carbon/human/H, var/rank, var/joined_late = 0)
+/datum/controller/subsystem/jobs/proc/AssignRank(mob/living/carbon/human/H, rank, joined_late = 0)
if(!H)
return null
var/datum/job/job = GetJob(rank)
diff --git a/code/controllers/subsystem/parallax.dm b/code/controllers/subsystem/parallax.dm
index 1e3c8aca0d9..d0cfadae95d 100644
--- a/code/controllers/subsystem/parallax.dm
+++ b/code/controllers/subsystem/parallax.dm
@@ -1,19 +1,27 @@
SUBSYSTEM_DEF(parallax)
name = "Parallax"
wait = 2
- flags = SS_POST_FIRE_TIMING | SS_BACKGROUND
+ flags = SS_POST_FIRE_TIMING | SS_BACKGROUND | SS_NO_INIT
priority = FIRE_PRIORITY_PARALLAX
runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT
offline_implications = "Space parallax will no longer move around. No immediate action is needed."
var/list/currentrun
var/planet_x_offset = 128
var/planet_y_offset = 128
+ var/random_layer
+ var/random_parallax_color
-/datum/controller/subsystem/parallax/Initialize(timeofday)
+
+//These are cached per client so needs to be done asap so people joining at roundstart do not miss these.
+/datum/controller/subsystem/parallax/PreInit()
. = ..()
+ if(prob(70)) //70% chance to pick a special extra layer
+ random_layer = pick(/obj/screen/parallax_layer/random/space_gas, /obj/screen/parallax_layer/random/asteroids)
+ random_parallax_color = pick(COLOR_TEAL, COLOR_GREEN, COLOR_SILVER, COLOR_YELLOW, COLOR_CYAN, COLOR_ORANGE, COLOR_PURPLE) //Special color for random_layer1. Has to be done here so everyone sees the same color.
planet_y_offset = rand(100, 160)
planet_x_offset = rand(100, 160)
+
/datum/controller/subsystem/parallax/fire(resumed = 0)
if(!resumed)
src.currentrun = GLOB.clients.Copy()
diff --git a/code/controllers/subsystem/radio.dm b/code/controllers/subsystem/radio.dm
index 2cedc36c14e..533588173ba 100644
--- a/code/controllers/subsystem/radio.dm
+++ b/code/controllers/subsystem/radio.dm
@@ -26,7 +26,7 @@ SUBSYSTEM_DEF(radio)
var/list/datum/radio_frequency/frequencies = list()
// This is fucking disgusting and needs to die
-/datum/controller/subsystem/radio/proc/frequency_span_class(var/frequency)
+/datum/controller/subsystem/radio/proc/frequency_span_class(frequency)
// Antags!
if(frequency in ANTAG_FREQS)
return "syndradio"
@@ -62,7 +62,7 @@ SUBSYSTEM_DEF(radio)
return "radio"
-/datum/controller/subsystem/radio/proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null)
+/datum/controller/subsystem/radio/proc/add_object(obj/device as obj, new_frequency as num, filter = null as text|null)
var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text]
@@ -87,7 +87,7 @@ SUBSYSTEM_DEF(radio)
return 1
-/datum/controller/subsystem/radio/proc/return_frequency(var/new_frequency as num)
+/datum/controller/subsystem/radio/proc/return_frequency(new_frequency as num)
var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text]
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index a6918b665c7..e4f5a6d6ecf 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -125,14 +125,14 @@ SUBSYSTEM_DEF(ticker)
current_state = GAME_STATE_FINISHED
Master.SetRunLevel(RUNLEVEL_POSTGAME) // This shouldnt process more than once, but you never know
auto_toggle_ooc(TRUE) // Turn it on
-
declare_completion()
+ addtimer(CALLBACK(src, .proc/call_reboot), 5 SECONDS)
- spawn(50)
- if(mode.station_was_nuked)
- reboot_helper("Station destroyed by Nuclear Device.", "nuke")
- else
- reboot_helper("Round ended.", "proper completion")
+/datum/controller/subsystem/ticker/proc/call_reboot()
+ if(mode.station_was_nuked)
+ reboot_helper("Station destroyed by Nuclear Device.", "nuke")
+ else
+ reboot_helper("Round ended.", "proper completion")
/datum/controller/subsystem/ticker/proc/setup()
cultdat = setupcult()
diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm
index 2441d6521f8..24919f801f5 100644
--- a/code/controllers/subsystem/tickets/tickets.dm
+++ b/code/controllers/subsystem/tickets/tickets.dm
@@ -597,7 +597,7 @@ UI STUFF
else
usr.client.resolveAllAdminTickets()
-/datum/controller/subsystem/tickets/proc/takeTicket(var/index)
+/datum/controller/subsystem/tickets/proc/takeTicket(index)
if(assignStaffToTicket(usr.client, index))
if(span_class == "mentorhelp")
message_staff("[usr.client] / ([usr]) has taken [ticket_name] number [index]")
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index 4284097b392..346297d900f 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -184,7 +184,7 @@ SUBSYSTEM_DEF(vote)
return .
-/datum/controller/subsystem/vote/proc/submit_vote(var/ckey, var/vote)
+/datum/controller/subsystem/vote/proc/submit_vote(ckey, vote)
if(mode)
if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder)
return 0
@@ -197,7 +197,7 @@ SUBSYSTEM_DEF(vote)
return vote
return 0
-/datum/controller/subsystem/vote/proc/initiate_vote(var/vote_type, var/initiator_key)
+/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key)
if(!mode)
if(started_time != null && !check_rights(R_ADMIN))
var/next_allowed_time = (started_time + config.vote_delay)
@@ -280,7 +280,7 @@ SUBSYSTEM_DEF(vote)
return 1
return 0
-/datum/controller/subsystem/vote/proc/browse_to(var/client/C)
+/datum/controller/subsystem/vote/proc/browse_to(client/C)
if(!C)
return
var/admin = check_rights(R_ADMIN, 0, user = C.mob)
@@ -330,10 +330,10 @@ SUBSYSTEM_DEF(vote)
popup.set_content(dat)
popup.open()
-/datum/controller/subsystem/vote/proc/update_panel(var/client/C)
+/datum/controller/subsystem/vote/proc/update_panel(client/C)
C << output(url_encode(vote_html(C)), "vote.browser:update_vote_div")
-/datum/controller/subsystem/vote/proc/vote_html(var/client/C)
+/datum/controller/subsystem/vote/proc/vote_html(client/C)
. = ""
if(question)
. += "Vote: '[question]'"
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 8d02d4622cf..91a8f072ab7 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -17,7 +17,7 @@
var/button_icon_state = "default"
var/mob/owner
-/datum/action/New(var/Target)
+/datum/action/New(Target)
target = Target
button = new
button.linked_action = src
@@ -383,6 +383,9 @@
/datum/action/item_action/hands_free/activate
name = "Activate"
+/datum/action/item_action/hands_free/activate/always
+ check_flags = null
+
/datum/action/item_action/toggle_research_scanner
name = "Toggle Research Scanner"
button_icon_state = "scan_mode"
diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm
index a37d767542f..9fee24101d0 100644
--- a/code/datums/ai_laws.dm
+++ b/code/datums/ai_laws.dm
@@ -17,10 +17,6 @@
/datum/ai_law/zero/get_index()
return 0
-/datum/ai_law/sixsixsix/get_index()
- return 666
-
-
/datum/ai_laws
var/name = "Unknown Laws"
var/law_header = "Prime Directives"
@@ -31,11 +27,9 @@
var/list/datum/ai_law/inherent_laws = list()
var/list/datum/ai_law/supplied_laws = list()
var/list/datum/ai_law/ion/ion_laws = list()
- var/list/datum/ai_law/sixsixsix/devil_laws = list()
var/list/datum/ai_law/sorted_laws = list()
var/state_zeroth = 0
- var/list/state_devil = list()
var/list/state_ion = list()
var/list/state_inherent = list()
var/list/state_supplied = list()
@@ -68,9 +62,6 @@
for(var/ion_law in ion_laws)
sorted_laws += ion_law
- for(var/evil_law in devil_laws)
- sorted_laws += evil_law
-
var/index = 1
for(var/datum/ai_law/inherent_law in inherent_laws)
inherent_law.index = index++
@@ -81,7 +72,7 @@
if(istype(AL))
sorted_laws += AL
-/datum/ai_laws/proc/sync(var/mob/living/silicon/S, var/full_sync = 1)
+/datum/ai_laws/proc/sync(mob/living/silicon/S, full_sync = 1)
// Add directly to laws to avoid log-spam
S.sync_zeroth(zeroth_law, zeroth_law_borg)
@@ -101,7 +92,7 @@
S.laws.add_supplied_law(law.index, law.law)
-/mob/living/silicon/proc/sync_zeroth(var/datum/ai_law/zeroth_law, var/datum/ai_law/zeroth_law_borg)
+/mob/living/silicon/proc/sync_zeroth(datum/ai_law/zeroth_law, datum/ai_law/zeroth_law_borg)
if(!is_special_character(src) || mind.original != src)
if(zeroth_law_borg)
laws.set_zeroth_law(zeroth_law_borg.law)
@@ -110,14 +101,14 @@
else
laws.clear_zeroth_laws()
-/mob/living/silicon/ai/sync_zeroth(var/datum/ai_law/zeroth_law, var/datum/ai_law/zeroth_law_borg)
+/mob/living/silicon/ai/sync_zeroth(datum/ai_law/zeroth_law, datum/ai_law/zeroth_law_borg)
if(zeroth_law)
laws.set_zeroth_law(zeroth_law.law, zeroth_law_borg ? zeroth_law_borg.law : null)
/****************
* Add Laws *
****************/
-/datum/ai_laws/proc/set_zeroth_law(var/law, var/law_borg = null)
+/datum/ai_laws/proc/set_zeroth_law(law, law_borg = null)
if(!law)
return
@@ -128,22 +119,7 @@
zeroth_law_borg = null
sorted_laws.Cut()
-/datum/ai_laws/proc/set_sixsixsix_law(var/law)
- if(!law)
- return
-
- for(var/datum/ai_law/AL in devil_laws)
- if(AL.law == law)
- return
-
- var/new_law = new/datum/ai_law/sixsixsix(law)
- devil_laws += new_law
- if(state_devil.len < devil_laws.len)
- state_devil += 1
-
- sorted_laws.Cut()
-
-/datum/ai_laws/proc/add_ion_law(var/law)
+/datum/ai_laws/proc/add_ion_law(law)
if(!law)
return
@@ -158,7 +134,7 @@
sorted_laws.Cut()
-/datum/ai_laws/proc/add_inherent_law(var/law)
+/datum/ai_laws/proc/add_inherent_law(law)
if(!law)
return
@@ -173,7 +149,7 @@
sorted_laws.Cut()
-/datum/ai_laws/proc/add_supplied_law(var/number, var/law)
+/datum/ai_laws/proc/add_supplied_law(number, law)
if(!law)
return
@@ -200,31 +176,28 @@
/****************
* Remove Laws *
*****************/
-/datum/ai_laws/proc/delete_law(var/datum/ai_law/law)
+/datum/ai_laws/proc/delete_law(datum/ai_law/law)
if(istype(law))
law.delete_law(src)
-/datum/ai_law/proc/delete_law(var/datum/ai_laws/laws)
+/datum/ai_law/proc/delete_law(datum/ai_laws/laws)
-/datum/ai_law/zero/delete_law(var/datum/ai_laws/laws)
+/datum/ai_law/zero/delete_law(datum/ai_laws/laws)
laws.clear_zeroth_laws()
-/datum/ai_law/ion/delete_law(var/datum/ai_laws/laws)
+/datum/ai_law/ion/delete_law(datum/ai_laws/laws)
laws.internal_delete_law(laws.ion_laws, laws.state_ion, src)
-/datum/ai_law/sixsixsix/delete_law(var/datum/ai_laws/laws)
- laws.internal_delete_law(laws.devil_laws, laws.state_devil, src)
-
-/datum/ai_law/inherent/delete_law(var/datum/ai_laws/laws)
+/datum/ai_law/inherent/delete_law(datum/ai_laws/laws)
laws.internal_delete_law(laws.inherent_laws, laws.state_inherent, src)
-/datum/ai_law/supplied/delete_law(var/datum/ai_laws/laws)
+/datum/ai_law/supplied/delete_law(datum/ai_laws/laws)
var/index = laws.supplied_laws.Find(src)
if(index)
laws.supplied_laws[index] = ""
laws.state_supplied[index] = 1
-/datum/ai_laws/proc/internal_delete_law(var/list/datum/ai_law/laws, var/list/state, var/list/datum/ai_law/law)
+/datum/ai_laws/proc/internal_delete_law(list/datum/ai_law/laws, list/state, list/datum/ai_law/law)
var/index = laws.Find(law)
if(index)
laws -= law
@@ -239,10 +212,6 @@
zeroth_law = null
zeroth_law_borg = null
-/datum/ai_laws/proc/clear_sixsixsix_laws()
- devil_laws.Cut()
- sorted_laws.Cut()
-
/datum/ai_laws/proc/clear_ion_laws()
ion_laws.Cut()
sorted_laws.Cut()
@@ -255,7 +224,7 @@
supplied_laws.Cut()
sorted_laws.Cut()
-/datum/ai_laws/proc/show_laws(var/who)
+/datum/ai_laws/proc/show_laws(who)
sort_laws()
for(var/datum/ai_law/law in sorted_laws)
if(law == zeroth_law_borg)
@@ -271,25 +240,25 @@
/********
* Get *
********/
-/datum/ai_laws/proc/get_state_law(var/datum/ai_law/law)
+/datum/ai_laws/proc/get_state_law(datum/ai_law/law)
return law.get_state_law(src)
-/datum/ai_law/proc/get_state_law(var/datum/ai_laws/laws)
+/datum/ai_law/proc/get_state_law(datum/ai_laws/laws)
-/datum/ai_law/zero/get_state_law(var/datum/ai_laws/laws)
+/datum/ai_law/zero/get_state_law(datum/ai_laws/laws)
if(src == laws.zeroth_law)
return laws.state_zeroth
-/datum/ai_law/ion/get_state_law(var/datum/ai_laws/laws)
+/datum/ai_law/ion/get_state_law(datum/ai_laws/laws)
return laws.get_state_internal(laws.ion_laws, laws.state_ion, src)
-/datum/ai_law/inherent/get_state_law(var/datum/ai_laws/laws)
+/datum/ai_law/inherent/get_state_law(datum/ai_laws/laws)
return laws.get_state_internal(laws.inherent_laws, laws.state_inherent, src)
-/datum/ai_law/supplied/get_state_law(var/datum/ai_laws/laws)
+/datum/ai_law/supplied/get_state_law(datum/ai_laws/laws)
return laws.get_state_internal(laws.supplied_laws, laws.state_supplied, src)
-/datum/ai_laws/proc/get_state_internal(var/list/datum/ai_law/laws, var/list/state, var/list/datum/ai_law/law)
+/datum/ai_laws/proc/get_state_internal(list/datum/ai_law/laws, list/state, list/datum/ai_law/law)
var/index = laws.Find(law)
if(index)
return state[index]
@@ -298,25 +267,25 @@
/********
* Set *
********/
-/datum/ai_laws/proc/set_state_law(var/datum/ai_law/law, var/state)
+/datum/ai_laws/proc/set_state_law(datum/ai_law/law, state)
law.set_state_law(src, state)
-/datum/ai_law/proc/set_state_law(var/datum/ai_law/law, var/state)
+/datum/ai_law/proc/set_state_law(datum/ai_law/law, state)
-/datum/ai_law/zero/set_state_law(var/datum/ai_laws/laws, var/state)
+/datum/ai_law/zero/set_state_law(datum/ai_laws/laws, state)
if(src == laws.zeroth_law)
laws.state_zeroth = state
-/datum/ai_law/ion/set_state_law(var/datum/ai_laws/laws, var/state)
+/datum/ai_law/ion/set_state_law(datum/ai_laws/laws, state)
laws.set_state_law_internal(laws.ion_laws, laws.state_ion, src, state)
-/datum/ai_law/inherent/set_state_law(var/datum/ai_laws/laws, var/state)
+/datum/ai_law/inherent/set_state_law(datum/ai_laws/laws, state)
laws.set_state_law_internal(laws.inherent_laws, laws.state_inherent, src, state)
-/datum/ai_law/supplied/set_state_law(var/datum/ai_laws/laws, var/state)
+/datum/ai_law/supplied/set_state_law(datum/ai_laws/laws, state)
laws.set_state_law_internal(laws.supplied_laws, laws.state_supplied, src, state)
-/datum/ai_laws/proc/set_state_law_internal(var/list/datum/ai_law/laws, var/list/state, var/list/datum/ai_law/law, var/do_state)
+/datum/ai_laws/proc/set_state_law_internal(list/datum/ai_law/laws, list/state, list/datum/ai_law/law, do_state)
var/index = laws.Find(law)
if(index)
state[index] = do_state
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index 76be0b02a12..1e7f95b5780 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -16,7 +16,7 @@
var/title_buttons = ""
-/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null)
+/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null)
user = nuser
window_id = nwindow_id
@@ -101,7 +101,7 @@
[get_footer()]
"}
-/datum/browser/proc/open(var/use_onclose = 1)
+/datum/browser/proc/open(use_onclose = 1)
var/window_size = ""
if(width && height)
window_size = "size=[width]x[height];"
@@ -145,7 +145,7 @@
// Otherwise, the user mob's machine var will be reset directly.
//
-/proc/onclose(mob/user, windowid, var/atom/ref=null)
+/proc/onclose(mob/user, windowid, atom/ref=null)
if(!user || !user.client) return
var/param = "null"
if(ref)
@@ -161,7 +161,7 @@
// if a valid atom reference is supplied, call the atom's Topic() with "close=1"
// otherwise, just reset the client mob's machine var.
//
-/client/verb/windowclose(var/atomref as text)
+/client/verb/windowclose(atomref as text)
set hidden = 1 // hide this verb from the user's panel
set name = ".windowclose" // no autocomplete on cmd line
diff --git a/code/datums/cache/powermonitor.dm b/code/datums/cache/powermonitor.dm
index a11e9b76a41..31195303f3f 100644
--- a/code/datums/cache/powermonitor.dm
+++ b/code/datums/cache/powermonitor.dm
@@ -1,6 +1,6 @@
GLOBAL_DATUM_INIT(powermonitor_repository, /datum/repository/powermonitor, new())
-/datum/repository/powermonitor/proc/powermonitor_data(var/refresh = 0)
+/datum/repository/powermonitor/proc/powermonitor_data(refresh = 0)
var/pMonData[0]
var/datum/cache_entry/cache_entry = cache_data
diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm
index 876cf0c0507..ba5864ad0eb 100644
--- a/code/datums/components/decal.dm
+++ b/code/datums/components/decal.dm
@@ -71,5 +71,5 @@
if(strength >= cleanable)
qdel(src)
-/datum/component/decal/proc/examine(datum/source, mob/user, var/list/examine_list)
+/datum/component/decal/proc/examine(datum/source, mob/user, list/examine_list)
examine_list += description
diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm
index 5371384e781..38ee8ed6042 100644
--- a/code/datums/components/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -205,7 +205,7 @@
return amt
return FALSE
-/datum/component/material_container/proc/transer_amt_to(var/datum/component/material_container/T, amt, id)
+/datum/component/material_container/proc/transer_amt_to(datum/component/material_container/T, amt, id)
if((amt==0)||(!T)||(!id))
return FALSE
if(amt<0)
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index ccd0b4c66e5..b258a18b94c 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -345,7 +345,7 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
locked += L
return
-/proc/get_id_photo(mob/living/carbon/human/H, var/custom_job = null)
+/proc/get_id_photo(mob/living/carbon/human/H, custom_job = null)
var/icon/preview_icon = null
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
var/obj/item/organ/internal/eyes/eyes_organ = H.get_int_organ(/obj/item/organ/internal/eyes)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index dc6101630bf..675b59b965c 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -445,7 +445,7 @@
usr << browse(html, "window=variables[refid];size=475x650")
#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing )
-/proc/debug_variable(name, value, level, var/datum/DA = null, sanitize = TRUE)
+/proc/debug_variable(name, value, level, datum/DA = null, sanitize = TRUE)
var/header
if(DA)
if(islist(DA))
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index f167df70dac..132ddf6ff66 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -44,7 +44,7 @@ GLOBAL_LIST_INIT(advance_cures, list(
*/
-/datum/disease/advance/New(var/process = 1, var/datum/disease/advance/D)
+/datum/disease/advance/New(process = 1, datum/disease/advance/D)
if(!istype(D))
D = null
// Generate symptoms if we weren't given any.
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(advance_cures, list(
*/
// Mix a list of advance diseases and return the mixed result.
-/proc/Advance_Mix(var/list/D_list)
+/proc/Advance_Mix(list/D_list)
// to_chat(world, "Mixing!!!!")
diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm
index c1df095f9c2..0cf111358c9 100644
--- a/code/datums/diseases/advance/presets.dm
+++ b/code/datums/diseases/advance/presets.dm
@@ -1,6 +1,6 @@
// Cold
-/datum/disease/advance/cold/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/cold/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Cold"
symptoms = list(new/datum/symptom/sneeze)
@@ -9,7 +9,7 @@
// Flu
-/datum/disease/advance/flu/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/flu/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Flu"
symptoms = list(new/datum/symptom/cough)
@@ -18,7 +18,7 @@
// Voice Changing
-/datum/disease/advance/voice_change/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/voice_change/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Epiglottis Mutation"
symptoms = list(new/datum/symptom/voice_change)
@@ -27,7 +27,7 @@
// Toxin Filter
-/datum/disease/advance/heal/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/heal/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Liver Enhancer"
symptoms = list(new/datum/symptom/heal)
@@ -36,7 +36,7 @@
// Hullucigen
-/datum/disease/advance/hullucigen/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/hullucigen/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Reality Impairment"
symptoms = list(new/datum/symptom/hallucigen)
@@ -44,7 +44,7 @@
// Sensory Restoration
-/datum/disease/advance/sensory_restoration/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0)
+/datum/disease/advance/sensory_restoration/New(process = 1, datum/disease/advance/D, copy = 0)
if(!D)
name = "Reality Enhancer"
symptoms = list(new/datum/symptom/sensory_restoration)
diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm
index c3a64501759..a1f244c5566 100644
--- a/code/datums/diseases/advance/symptoms/shedding.dm
+++ b/code/datums/diseases/advance/symptoms/shedding.dm
@@ -31,20 +31,25 @@ BONUS
to_chat(M, "[pick("Your scalp itches.", "Your skin feels flakey.")]")
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
+ if(NO_HAIR in H.dna.species.species_traits)
+ return // Hair can't fall out if you don't have any
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
switch(A.stage)
if(3, 4)
if(!(head_organ.h_style == "Bald") && !(head_organ.h_style == "Balding Hair"))
to_chat(H, "Your hair starts to fall out in clumps...")
- spawn(50)
- head_organ.h_style = "Balding Hair"
- H.update_hair()
+ addtimer(CALLBACK(src, .proc/change_hair, H, head_organ, null, "Balding Hair"), 5 SECONDS)
if(5)
if(!(head_organ.f_style == "Shaved") || !(head_organ.h_style == "Bald"))
to_chat(H, "Your hair starts to fall out in clumps...")
- spawn(50)
- head_organ.f_style = "Shaved"
- head_organ.h_style = "Bald"
- H.update_hair()
- H.update_fhair()
- return
+ addtimer(CALLBACK(src, .proc/change_hair, H, head_organ, "Shaved", "Bald"), 5 SECONDS)
+
+/datum/symptom/shedding/proc/change_hair(mob/living/carbon/human/H, obj/item/organ/external/head/head_organ, f_style, h_style)
+ if(!H || !head_organ)
+ return
+ if(f_style)
+ head_organ.f_style = f_style
+ H.update_fhair()
+ if(h_style)
+ head_organ.h_style = h_style
+ H.update_hair()
diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm
index ef3b76652ea..af1e3376687 100644
--- a/code/datums/dog_fashion.dm
+++ b/code/datums/dog_fashion.dm
@@ -31,7 +31,7 @@
if(speak_emote)
D.speak_emote = speak_emote
-/datum/dog_fashion/proc/get_overlay(var/dir)
+/datum/dog_fashion/proc/get_overlay(dir)
if(icon_file && obj_icon_state)
var/image/corgI = image(icon_file, obj_icon_state, dir = dir)
corgI.alpha = obj_alpha
@@ -124,6 +124,10 @@
name = "Pyromancer REAL_NAME"
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "ONI SOMA!")
+/datum/dog_fashion/head/black_wizard
+ name = "Necromancer REAL_NAME"
+ speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
+
/datum/dog_fashion/head/cardborg
name = "Borgi"
speak = list("Ping!","Beep!","Woof!")
@@ -148,6 +152,8 @@
name = "Corgi Tech REAL_NAME"
desc = "The reason your yellow gloves have chew-marks."
+/datum/dog_fashion/head/softcap
+
/datum/dog_fashion/head/reindeer
name = "REAL_NAME the red-nosed Corgi"
emote_hear = list("lights the way!", "illuminates.", "yaps!")
@@ -208,3 +214,38 @@
/datum/dog_fashion/head/fried_vox_empty
name = "Colonel REAL_NAME"
desc = "Keep away from live vox."
+
+/datum/dog_fashion/head/HoS
+ name = "Head of Security REAL_NAME"
+ desc = "Probably better than the last HoS."
+
+/datum/dog_fashion/head/beret/sec
+ name = "Officer REAL_NAME"
+ desc = "Ever-loyal, ever-vigilant."
+
+/datum/dog_fashion/head/bowlerhat
+ name = "REAL_NAME"
+ desc = "A sophisticated city gent."
+
+/datum/dog_fashion/head/surgery
+ name = "Nurse-in-Training REAL_NAME"
+ desc = "The most adorable bed-side manner ever."
+
+/datum/dog_fashion/head/bucket
+ name = "REAL_NAME"
+ desc = "A janitor's best friend."
+
+/datum/dog_fashion/head/justice_wig
+ name = "Arbiter REAL_NAME"
+ desc = "Head of the High Court of Cute."
+
+/datum/dog_fashion/head/wizard/magus
+ name = "Battlemage REAL_NAME"
+
+/datum/dog_fashion/head/wizard/marisa
+ name = "Witch REAL_NAME"
+ desc = "Flying broom not included."
+
+/datum/dog_fashion/head/roman
+ name = "Imperator REAL_NAME"
+ desc = "For the Senate and the people of Rome!"
diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm
index 8eefe5efa0d..155bbaed8dc 100644
--- a/code/datums/helper_datums/construction_datum.dm
+++ b/code/datums/helper_datums/construction_datum.dm
@@ -217,7 +217,7 @@
text = replacetext(text,"{HOLDER}","[holder]")
return text
-/datum/construction/reversible2/custom_action(index, diff, used_atom, var/mob/user)
+/datum/construction/reversible2/custom_action(index, diff, used_atom, mob/user)
if(!..(index,used_atom,user))
return 0
diff --git a/code/datums/helper_datums/input.dm b/code/datums/helper_datums/input.dm
index 4c3dc6a1cf4..175a730b275 100644
--- a/code/datums/helper_datums/input.dm
+++ b/code/datums/helper_datums/input.dm
@@ -45,7 +45,7 @@
return result
// Callback function should take the result as the last argument
-/datum/async_input/proc/on_close(var/datum/callback/cb)
+/datum/async_input/proc/on_close(datum/callback/cb)
onCloseCb = cb
/datum/async_input/proc/show()
diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 4609075ddd7..49c38103d56 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -84,14 +84,12 @@
/datum/teleport/proc/playSpecials(atom/location,datum/effect_system/effect,sound)
if(location)
if(effect)
- spawn(-1)
- src = null
- effect.attach(location)
- effect.start()
+ src = null
+ effect.attach(location)
+ effect.start()
if(sound)
- spawn(-1)
- src = null
- playsound(location,sound,60,1)
+ src = null
+ playsound(location,sound,60,1)
return
//do the monkey dance
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index 50152c4873d..60fbb9c8194 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -21,7 +21,6 @@ GLOBAL_LIST_INIT(huds, list( \
ANTAG_HUD_VAMPIRE = new/datum/atom_hud/antag/hidden(),\
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),\
DATA_HUD_ABDUCTOR = new/datum/atom_hud/abductor(),\
- ANTAG_HUD_DEVIL = new/datum/atom_hud/antag/hidden(),\
ANTAG_HUD_EVENTMISC = new/datum/atom_hud/antag/hidden(),\
ANTAG_HUD_BLOB = new/datum/atom_hud/antag/hidden()\
))
diff --git a/code/datums/log_record.dm b/code/datums/log_record.dm
index 2a659477b47..cf437c86dbd 100644
--- a/code/datums/log_record.dm
+++ b/code/datums/log_record.dm
@@ -37,7 +37,7 @@
else
. = subject
-/datum/log_record/proc/get_health_string(var/mob/living/L)
+/datum/log_record/proc/get_health_string(mob/living/L)
var/OX = L.getOxyLoss() > 50 ? "[L.getOxyLoss()]" : L.getOxyLoss()
var/TX = L.getToxLoss() > 50 ? "[L.getToxLoss()]" : L.getToxLoss()
var/BU = L.getFireLoss() > 50 ? "[L.getFireLoss()]" : L.getFireLoss()
diff --git a/code/datums/looping_sounds/looping_sound.dm b/code/datums/looping_sounds/looping_sound.dm
index 5e019439bc4..33fb5595c24 100644
--- a/code/datums/looping_sounds/looping_sound.dm
+++ b/code/datums/looping_sounds/looping_sound.dm
@@ -31,6 +31,8 @@
var/falloff_exponent
var/muted = TRUE
var/falloff_distance
+ /// Channel of the audio, random otherwise
+ var/channel
/datum/looping_sound/New(list/_output_atoms = list(), start_immediately = FALSE, _direct = FALSE)
if(!mid_sounds)
@@ -75,14 +77,16 @@
var/list/atoms_cache = output_atoms
var/sound/S = sound(soundfile)
if(direct)
- S.channel = SSsounds.random_available_channel()
- S.volume = volume
+ S.channel = channel || SSsounds.random_available_channel()
for(var/i in 1 to atoms_cache.len)
var/atom/thing = atoms_cache[i]
if(direct)
+ if(ismob(thing))
+ var/mob/M = thing
+ S.volume = volume * (USER_VOLUME(M, channel) || 1)
SEND_SOUND(thing, S)
else
- playsound(thing, S, volume, vary, extra_range, falloff_exponent = falloff_exponent, falloff_distance = falloff_distance)
+ playsound(thing, S, volume, vary, extra_range, falloff_exponent = falloff_exponent, falloff_distance = falloff_distance, channel = channel)
/datum/looping_sound/proc/get_sound(looped, _mid_sounds)
if(!_mid_sounds)
diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm
index 280aa5fab60..432e2709335 100644
--- a/code/datums/looping_sounds/machinery_sounds.dm
+++ b/code/datums/looping_sounds/machinery_sounds.dm
@@ -16,3 +16,4 @@
falloff_exponent = 10
falloff_distance = 5
vary = TRUE
+ channel = CHANNEL_ENGINE
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 591a487598e..35e0053822d 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -55,10 +55,6 @@
var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state
var/datum/atom_hud/antag/antag_hud = null //this mind's antag HUD
var/datum/mindslaves/som //stands for slave or master...hush..
- var/datum/devilinfo/devilinfo //Information about the devil, if any.
- var/damnation_type = 0
- var/datum/mind/soulOwner //who owns the soul. Under normal circumstances, this will point to src
- var/hasSoul = TRUE
var/isholy = FALSE // is this person a chaplain or admin role allowed to use bibles
var/isblessed = FALSE // is this person blessed by a chaplain?
@@ -76,7 +72,6 @@
/datum/mind/New(new_key)
key = new_key
- soulOwner = src
/datum/mind/Destroy()
SSticker.minds -= src
@@ -88,7 +83,6 @@
antag_datums = null
current = null
original = null
- soulOwner = null
return ..()
/datum/mind/proc/transfer_to(mob/living/new_character)
@@ -314,22 +308,6 @@
. += _memory_edit_role_enabled(ROLE_ABDUCTOR)
-/datum/mind/proc/memory_edit_devil(mob/living/H)
- . = _memory_edit_header("devil", list("devilagents"))
- if(src in SSticker.mode.devils)
- if(!devilinfo)
- . += "No devilinfo found! Yell at a coder!"
- else if(!devilinfo.ascendable)
- . += "DEVIL|Ascendable Devil|sintouched|no"
- else
- . += "DEVIL|ASCENDABLE DEVIL|sintouched|no"
- else if(src in SSticker.mode.sintouched)
- . += "devil|Ascendable Devil|SINTOUCHED|no"
- else
- . += "devil|Ascendable Devil|sintouched|NO"
-
- . += _memory_edit_role_enabled(ROLE_DEVIL)
-
/datum/mind/proc/memory_edit_eventmisc(mob/living/H)
. = _memory_edit_header("event", list())
if(src in SSticker.mode.eventmiscs)
@@ -461,10 +439,6 @@
sections["shadowling"] = memory_edit_shadowling(H)
/** Abductors **/
sections["abductor"] = memory_edit_abductor(H)
- /** DEVIL ***/
- var/static/list/devils_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/carbon/true_devil, /mob/living/silicon/robot))
- if(is_type_in_typecache(current, devils_typecache))
- sections["devil"] = memory_edit_devil(H)
sections["eventmisc"] = memory_edit_eventmisc(H)
/** TRAITOR ***/
sections["traitor"] = memory_edit_traitor()
@@ -1104,76 +1078,6 @@
SSticker.mode.update_eventmisc_icons_added(src)
message_admins("[key_name_admin(usr)] has eventantag'ed [current].")
log_admin("[key_name(usr)] has eventantag'ed [current].")
- else if(href_list["devil"])
- switch(href_list["devil"])
- if("clear")
- if(src in SSticker.mode.devils)
- if(istype(current,/mob/living/carbon/true_devil/))
- to_chat(usr,"This cannot be used on true or arch-devils.")
- else
- SSticker.mode.devils -= src
- SSticker.mode.update_devil_icons_removed(src)
- special_role = null
- to_chat(current,"Your infernal link has been severed! You are no longer a devil!")
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/click/fireball/hellish)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/click/summon_contract)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork/greater)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork/ascended)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/conjure_item/violin)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_dancefloor)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/sintouch)
- RemoveSpell(/obj/effect/proc_holder/spell/targeted/sintouch/ascended)
- message_admins("[key_name_admin(usr)] has de-devil'ed [current].")
- if(issilicon(current))
- var/mob/living/silicon/S = current
- S.laws.clear_sixsixsix_laws()
- devilinfo = null
- log_admin("[key_name(usr)] has de-devil'ed [current].")
- else if(src in SSticker.mode.sintouched)
- SSticker.mode.sintouched -= src
- message_admins("[key_name_admin(usr)] has de-sintouch'ed [current].")
- log_admin("[key_name(usr)] has de-sintouch'ed [current].")
- if("devil")
- if(devilinfo)
- devilinfo.ascendable = FALSE
- message_admins("[key_name_admin(usr)] has made [current] unable to ascend as a devil.")
- log_admin("[key_name_admin(usr)] has made [current] unable to ascend as a devil.")
- return
- if(!ishuman(current) && !isrobot(current))
- to_chat(usr, "This only works on humans and cyborgs!")
- return
- SSticker.mode.devils += src
- special_role = "devil"
- SSticker.mode.update_devil_icons_added(src)
- SSticker.mode.finalize_devil(src, FALSE)
- SSticker.mode.forge_devil_objectives(src, 2)
- SSticker.mode.greet_devil(src)
- message_admins("[key_name_admin(usr)] has devil'ed [current].")
- log_admin("[key_name(usr)] has devil'ed [current].")
- if("ascendable_devil")
- if(devilinfo)
- devilinfo.ascendable = TRUE
- message_admins("[key_name_admin(usr)] has made [current] able to ascend as a devil.")
- log_admin("[key_name_admin(usr)] has made [current] able to ascend as a devil.")
- return
- if(!ishuman(current) && !isrobot(current))
- to_chat(usr, "This only works on humans and cyborgs!")
- return
- SSticker.mode.devils += src
- special_role = "devil"
- SSticker.mode.update_devil_icons_added(src)
- SSticker.mode.finalize_devil(src, TRUE)
- SSticker.mode.forge_devil_objectives(src, 2)
- SSticker.mode.greet_devil(src)
- message_admins("[key_name_admin(usr)] has devil'ed [current]. The devil has been marked as ascendable.")
- log_admin("[key_name(usr)] has devil'ed [current]. The devil has been marked as ascendable.")
- if("sintouched")
- var/mob/living/carbon/human/H = current
- H.influenceSin()
- message_admins("[key_name_admin(usr)] has sintouch'ed [current].")
- log_admin("[key_name(usr)] has sintouch'ed [current].")
else if(href_list["traitor"])
switch(href_list["traitor"])
@@ -1805,17 +1709,6 @@
var/obj/effect/proc_holder/spell/S = X
S.action.Grant(new_character)
-/datum/mind/proc/disrupt_spells(delay, list/exceptions = New())
- for(var/X in spell_list)
- var/obj/effect/proc_holder/spell/S = X
- for(var/type in exceptions)
- if(istype(S, type))
- continue
- S.charge_counter = delay
- spawn(0)
- S.start_recharge()
- S.updateButtonIcon()
-
/datum/mind/proc/get_ghost(even_if_they_cant_reenter)
for(var/mob/dead/observer/G in GLOB.dead_mob_list)
if(G.mind == src)
@@ -1891,18 +1784,6 @@
to_chat(current, "You seem to have forgotten the events of the past 10 minutes or so, and your head aches a bit as if someone beat it savagely with a stick.")
to_chat(current, "This means you don't remember who you were working for or what you were doing.")
-/datum/mind/proc/is_revivable() //Note, this ONLY checks the mind.
- if(damnation_type)
- return FALSE
- return TRUE
-
-// returns a mob to message to produce something visible for the target mind
-/datum/mind/proc/messageable_mob()
- if(!QDELETED(current) && current.client)
- return current
- else
- return get_ghost(even_if_they_cant_reenter = TRUE)
-
//Initialisation procs
/mob/proc/mind_initialize()
if(mind)
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index 1c5aba0f171..283b6951b9f 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -111,6 +111,8 @@
for(var/path in backpack_contents)
var/number = backpack_contents[path]
+ if(!number)
+ number = 1
for(var/i in 1 to number)
H.equip_or_collect(new path(H), slot_in_backpack)
diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 22d61c818ec..4448ef20655 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -3,7 +3,7 @@
/datum/outfit/admin/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
- if(!visualsOnly)
+ if(!visualsOnly && H.mind)
H.mind.assigned_role = name
H.job = name
@@ -627,6 +627,10 @@
/obj/item/implanter/death_alarm = 1,
)
+ implants = list(/obj/item/implant/mindshield,
+ /obj/item/implant/death_alarm
+ )
+
/datum/outfit/admin/solgov_rep/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
@@ -634,33 +638,43 @@
var/obj/item/card/id/I = H.wear_id
if(istype(I))
- apply_to_card(I, H, get_all_accesses(), name, "lifetimeid")
+ apply_to_card(I, H, get_all_centcom_access(), name, "lifetimeid")
+ I.assignment = "Solar Federation Representative"
/datum/outfit/admin/solgov
name = "Solar Federation Marine"
-
uniform = /obj/item/clothing/under/solgov
suit = /obj/item/clothing/suit/armor/bulletproof
back = /obj/item/storage/backpack/security
- belt = /obj/item/storage/belt/military/assault
- head = /obj/item/clothing/head/soft/solgov
- glasses = /obj/item/clothing/glasses/hud/security/night
+ belt = /obj/item/storage/belt/military/assault/marines/full
+ head = /obj/item/clothing/head/soft/solgov/marines
+ glasses = /obj/item/clothing/glasses/night
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
l_ear = /obj/item/radio/headset/ert
id = /obj/item/card/id
- l_hand = /obj/item/gun/projectile/automatic/ar
+ l_hand = /obj/item/gun/projectile/automatic/shotgun/bulldog
+ suit_store = /obj/item/gun/projectile/automatic/pistol/m1911
r_pocket = /obj/item/flashlight/seclite
pda = /obj/item/pda
backpack_contents = list(
/obj/item/storage/box/responseteam = 1,
- /obj/item/ammo_box/magazine/m556 = 3,
/obj/item/clothing/shoes/magboots = 1,
- /obj/item/gun/projectile/automatic/pistol/m1911 = 1,
- /obj/item/ammo_box/magazine/m45 = 2
+ /obj/item/whetstone = 1,
+ /obj/item/clothing/mask/gas/explorer/marines = 1,
+ /obj/item/reagent_containers/hypospray/autoinjector/survival = 1
)
- var/is_tsf_lieutenant = FALSE
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/arm/flash,
+ /obj/item/organ/internal/cyberimp/chest/nutriment,
+ /obj/item/organ/internal/cyberimp/eyes/hud/security
+ )
+ implants = list(/obj/item/implant/mindshield,
+ /obj/item/implant/death_alarm
+ )
+
+ var/is_solgov_lieutenant = FALSE
/datum/outfit/admin/solgov/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -668,31 +682,80 @@
if(visualsOnly)
return
- if(is_tsf_lieutenant)
+ if(is_solgov_lieutenant)
H.real_name = "Lieutenant [pick(GLOB.last_names)]"
else
H.real_name = "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(GLOB.last_names)]"
H.name = H.real_name
var/obj/item/card/id/I = H.wear_id
- if(istype(I))
- apply_to_card(I, H, get_all_accesses(), name, "lifetimeid")
+ I.assignment = name
+ if(istype(I) && is_solgov_lieutenant)
+ apply_to_card(I, H, get_centcom_access("Emergency Response Team Leader"), name, "lifetimeid")
+ else if(istype(I))
+ apply_to_card(I, H, get_centcom_access("Emergency Response Team Member"), name, "lifetimeid")
+ H.sec_hud_set_ID()
/datum/outfit/admin/solgov/lieutenant
name = "Solar Federation Lieutenant"
-
uniform = /obj/item/clothing/under/solgov/command
- head = /obj/item/clothing/head/soft/solgov/command
+ head = /obj/item/clothing/head/beret/solgov/command
+ glasses = /obj/item/clothing/glasses/night
back = /obj/item/storage/backpack/satchel
+ l_ear = /obj/item/radio/headset/ert/alt/commander
l_hand = null
+ belt = /obj/item/melee/baton/loaded
+ suit_store = /obj/item/gun/projectile/automatic/pistol/deagle
l_pocket = /obj/item/pinpointer/advpinpointer
backpack_contents = list(
/obj/item/storage/box/responseteam = 1,
- /obj/item/melee/classic_baton/telescopic = 1,
+ /obj/item/storage/box/handcuffs = 1,
/obj/item/clothing/shoes/magboots/advance = 1,
- /obj/item/gun/projectile/automatic/pistol/deagle = 1,
- /obj/item/ammo_box/magazine/m50 = 2
+ /obj/item/reagent_containers/hypospray/autoinjector/survival = 1,
+ /obj/item/clothing/mask/gas/explorer/marines = 1,
+ /obj/item/ammo_box/magazine/m50 = 3
)
- is_tsf_lieutenant = TRUE
+ is_solgov_lieutenant = TRUE
+
+/datum/outfit/admin/solgov/elite
+ name = "Solar Federation Specops Marine"
+ uniform = /obj/item/clothing/under/solgov/elite
+ head = /obj/item/clothing/head/soft/solgov/marines/elite
+ belt = /obj/item/storage/belt/military/assault/marines/elite/full
+ l_hand = /obj/item/gun/projectile/automatic/ar
+ backpack_contents = list(
+ /obj/item/storage/box/responseteam = 1,
+ /obj/item/clothing/shoes/magboots/advance = 1,
+ /obj/item/whetstone = 1,
+ /obj/item/clothing/mask/gas/explorer/marines = 1,
+ /obj/item/reagent_containers/hypospray/autoinjector/survival = 1
+ )
+ cybernetic_implants = list(
+ /obj/item/organ/internal/cyberimp/eyes/hud/security,
+ /obj/item/organ/internal/cyberimp/chest/nutriment,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
+ /obj/item/organ/internal/cyberimp/arm/flash,
+ /obj/item/organ/internal/eyes/cybernetic/shield
+ )
+/datum/outfit/admin/solgov/elite/lieutenant
+ name = "Solar Federation Specops Lieutenant"
+ uniform = /obj/item/clothing/under/solgov/command/elite
+ head = /obj/item/clothing/head/beret/solgov/command/elite
+ glasses = /obj/item/clothing/glasses/night
+ back = /obj/item/storage/backpack/satchel
+ belt = /obj/item/melee/baton/loaded
+ l_hand = null
+ suit_store = /obj/item/gun/projectile/automatic/pistol/deagle
+ l_pocket = /obj/item/pinpointer/advpinpointer
+ l_ear = /obj/item/radio/headset/ert/alt/commander
+ backpack_contents = list(
+ /obj/item/storage/box/responseteam = 1,
+ /obj/item/storage/box/handcuffs = 1,
+ /obj/item/clothing/shoes/magboots/advance = 1,
+ /obj/item/clothing/mask/gas/explorer/marines = 1,
+ /obj/item/reagent_containers/hypospray/autoinjector/survival = 1,
+ /obj/item/ammo_box/magazine/m50 = 3
+ )
+ is_solgov_lieutenant = TRUE
/datum/outfit/admin/sol_trader
name = "Sol Trader"
diff --git a/code/datums/pipe_datums.dm b/code/datums/pipe_datums.dm
index 8d3b0807f9c..8fd243850b3 100644
--- a/code/datums/pipe_datums.dm
+++ b/code/datums/pipe_datums.dm
@@ -370,13 +370,13 @@ GLOBAL_LIST_EMPTY(rpd_pipe_list) //Some pipes we don't want to be dispensable
pipe_id = PIPE_DISPOSALS_JUNCTION_LEFT
pipe_icon = "pipe-j2"
-/proc/get_pipe_name(var/pipe_id, var/pipe_type)
+/proc/get_pipe_name(pipe_id, pipe_type)
for(var/datum/pipes/P in GLOB.construction_pipe_list)
if(P.pipe_id == pipe_id && P.pipe_type == pipe_type)
return P.pipe_name
return "unknown pipe"
-/proc/get_pipe_icon(var/pipe_id)
+/proc/get_pipe_icon(pipe_id)
for(var/datum/pipes/P in GLOB.construction_pipe_list)
if(P.pipe_id == pipe_id)
return P.pipe_icon
diff --git a/code/datums/radio.dm b/code/datums/radio.dm
index efeebc7c973..79890350f20 100644
--- a/code/datums/radio.dm
+++ b/code/datums/radio.dm
@@ -3,7 +3,7 @@
var/frequency as num
var/list/obj/devices = list()
-/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as text|null, var/range = null as num|null)
+/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null)
var/turf/start_point
if(range)
start_point = get_turf(source)
@@ -19,7 +19,7 @@
send_to_filter(source, signal, next_filter, start_point, range)
//Sends a signal to all machines belonging to a given filter. Should be called by post_signal()
-/datum/radio_frequency/proc/send_to_filter(obj/source, datum/signal/signal, var/filter, var/turf/start_point = null, var/range = null)
+/datum/radio_frequency/proc/send_to_filter(obj/source, datum/signal/signal, filter, turf/start_point = null, range = null)
if(range && !start_point)
return
@@ -35,7 +35,7 @@
device.receive_signal(signal, TRANSMISSION_RADIO, frequency)
-/datum/radio_frequency/proc/add_listener(obj/device as obj, var/filter as text|null)
+/datum/radio_frequency/proc/add_listener(obj/device as obj, filter as text|null)
if(!filter)
filter = RADIO_DEFAULT
//log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]")
diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm
index 2143fb5ad5c..5110058674a 100644
--- a/code/datums/ruins/lavaland.dm
+++ b/code/datums/ruins/lavaland.dm
@@ -51,14 +51,6 @@
cost = 20
allow_duplicates = FALSE
-/datum/map_template/ruin/lavaland/syndicate_base
- name = "Syndicate Lava Base"
- id = "lava-base"
- description = "A secret base researching illegal bioweapons, it is closely guarded by an elite team of syndicate agents."
- suffix = "lavaland_surface_syndicate_base1.dmm"
- cost = 20
- allow_duplicates = FALSE
-
/datum/map_template/ruin/lavaland/free_golem
name = "Free Golem Ship"
id = "golem-ship"
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index c11eed424da..d05b932b5cc 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -258,6 +258,15 @@
always_place = TRUE
cost = 0
+/datum/map_template/ruin/space/syndicate_space_base
+ name = "Syndicate Space Base"
+ id = "syndie-space-base"
+ description = "A secret base researching illegal bioweapons, it is closely guarded by an elite team of syndicate agents."
+ suffix = "syndie_space_base.dmm"
+ cost = 0
+ always_place = TRUE
+ allow_duplicates = FALSE
+
/datum/map_template/ruin/space/syndiecakesfactory
id = "Syndiecakes Factory"
suffix = "syndiecakesfactory.dmm"
diff --git a/code/datums/soullink.dm b/code/datums/soullink.dm
deleted file mode 100644
index f5727f1d0d0..00000000000
--- a/code/datums/soullink.dm
+++ /dev/null
@@ -1,166 +0,0 @@
-/mob/living
- var/list/ownedSoullinks //soullinks we are the owner of
- var/list/sharedSoullinks //soullinks we are a/the sharer of
-
-/mob/living/Destroy()
- for(var/s in ownedSoullinks)
- var/datum/soullink/S = s
- S.ownerDies(FALSE)
- qdel(s) //If the owner is destroy()'d, the soullink is destroy()'d
- ownedSoullinks = null
- for(var/s in sharedSoullinks)
- var/datum/soullink/S = s
- S.sharerDies(FALSE)
- S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed
- sharedSoullinks = null
- return ..()
-
-//Keeps track of a Mob->Mob (potentially Player->Player) connection
-//Can be used to trigger actions on one party when events happen to another
-//Eg: shared deaths
-//Can be used to form a linked list of mob-hopping
-//Does NOT transfer with minds
-/datum/soullink
- var/mob/living/soulowner
- var/mob/living/soulsharer
- var/id //Optional ID, for tagging and finding specific instances
-
-/datum/soullink/Destroy()
- if(soulowner)
- LAZYREMOVE(soulowner.ownedSoullinks, src)
- soulowner = null
- if(soulsharer)
- LAZYREMOVE(soulsharer.sharedSoullinks, src)
- soulsharer = null
- return ..()
-
-/datum/soullink/proc/removeSoulsharer(mob/living/sharer)
- if(soulsharer == sharer)
- soulsharer = null
- LAZYREMOVE(sharer.sharedSoullinks, src)
-
-//Used to assign variables, called primarily by soullink()
-//Override this to create more unique soullinks (Eg: 1->Many relationships)
-//Return TRUE/FALSE to return the soullink/null in soullink()
-/datum/soullink/proc/parseArgs(mob/living/owner, mob/living/sharer)
- if(!owner || !sharer)
- return FALSE
- soulowner = owner
- soulsharer = sharer
- LAZYADD(owner.ownedSoullinks, src)
- LAZYADD(sharer.sharedSoullinks, src)
- return TRUE
-
-//Runs after /living death()
-//Override this for content
-/datum/soullink/proc/ownerDies(gibbed, mob/living/owner)
-
-//Runs after /living death()
-//Override this for content
-/datum/soullink/proc/sharerDies(gibbed, mob/living/owner)
-
-//Runs after /living update_revive()
-//Override this for content
-/datum/soullink/proc/ownerRevives(mob/living/owner)
-
-//Runs after /living update_revive()
-//Override this for content
-/datum/soullink/proc/sharerRevives(mob/living/owner)
-
-//Quick-use helper
-/proc/soullink(typepath, ...)
- var/datum/soullink/S = new typepath()
- if(S.parseArgs(arglist(args.Copy(2, 0))))
- return S
-
-
-
-/////////////////
-// MULTISHARER //
-/////////////////
-//Abstract soullink for use with 1 Owner -> Many Sharer setups
-/datum/soullink/multisharer
- var/list/soulsharers
-
-/datum/soullink/multisharer/parseArgs(mob/living/owner, list/sharers)
- if(!owner || !LAZYLEN(sharers))
- return FALSE
- soulowner = owner
- soulsharers = sharers
- LAZYADD(owner.ownedSoullinks, src)
- for(var/l in sharers)
- var/mob/living/L = l
- LAZYADD(L.sharedSoullinks, src)
- return TRUE
-
-/datum/soullink/multisharer/removeSoulsharer(mob/living/sharer)
- LAZYREMOVE(soulsharers, sharer)
-
-
-
-/////////////////
-// SHARED FATE //
-/////////////////
-//When the soulowner dies, the soulsharer dies, and vice versa
-//This is intended for two players(or AI) and two mobs
-
-/datum/soullink/sharedfate/ownerDies(gibbed, mob/living/owner)
- if(soulsharer)
- soulsharer.death(gibbed)
-
-/datum/soullink/sharedfate/sharerDies(gibbed, mob/living/sharer)
- if(soulowner)
- soulowner.death(gibbed)
-
-/////////////////
-// Demon Bind //
-/////////////////
-//When the soulowner dies, the soulsharer dies, but NOT vice versa
-//This is intended for two players(or AI) and two mobs
-
-/datum/soullink/oneway/ownerDies(gibbed, mob/living/owner)
- if(soulsharer)
- soulsharer.dust(FALSE)
-
-/datum/soullink/oneway/devilfriend
-
-/////////////////
-// SHARED BODY //
-/////////////////
-//When the soulsharer dies, they're placed in the soulowner, who remains alive
-//If the soulowner dies, the soulsharer is killed and placed into the soulowner (who is still dying)
-//This one is intended for one player moving between many mobs
-
-/datum/soullink/sharedbody/ownerDies(gibbed, mob/living/owner)
- if(soulowner && soulsharer)
- if(soulsharer.mind)
- soulsharer.mind.transfer_to(soulowner)
- soulsharer.death(gibbed)
-
-/datum/soullink/sharedbody/sharerDies(gibbed, mob/living/sharer)
- if(soulowner && soulsharer && soulsharer.mind)
- soulsharer.mind.transfer_to(soulowner)
-
-
-
-//////////////////////
-// REPLACEMENT POOL //
-//////////////////////
-//When the owner dies, one of the sharers is placed in the owner's body, fully healed
-//Sort of a "winner-stays-on" soullink
-//Gibbing ends it immediately
-
-/datum/soullink/multisharer/replacementpool/ownerDies(gibbed, mob/living/owner)
- if(LAZYLEN(soulsharers) && !gibbed) //let's not put them in some gibs
- var/list/souls = shuffle(soulsharers.Copy())
- for(var/l in souls)
- var/mob/living/L = l
- if(L.stat != DEAD && L.mind)
- L.mind.transfer_to(soulowner)
- soulowner.revive(TRUE, TRUE)
- L.death(FALSE)
-
-//Lose your claim to the throne!
-/datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer)
- removeSoulsharer(sharer)
-
diff --git a/code/datums/spell.dm b/code/datums/spell.dm
index d530c074a78..db668cd609a 100644
--- a/code/datums/spell.dm
+++ b/code/datums/spell.dm
@@ -38,7 +38,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
spell.remove_ranged_ability(spell.ranged_ability_user)
return ..()
-/obj/effect/proc_holder/proc/add_ranged_ability(mob/user, var/msg)
+/obj/effect/proc_holder/proc/add_ranged_ability(mob/user, msg)
if(!user || !user.client)
return
if(user.ranged_ability && user.ranged_ability != src)
@@ -61,7 +61,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
if(C && ranged_mousepointer && C.mouse_pointer_icon == ranged_mousepointer)
C.mouse_pointer_icon = initial(C.mouse_pointer_icon)
-/obj/effect/proc_holder/proc/remove_ranged_ability(mob/user, var/msg)
+/obj/effect/proc_holder/proc/remove_ranged_ability(mob/user, msg)
if(!user || (user.ranged_ability && user.ranged_ability != src)) //To avoid removing the wrong ability
return
user.ranged_ability = null
diff --git a/code/datums/spells/area_teleport.dm b/code/datums/spells/area_teleport.dm
index 5986da3a412..b931bd9840f 100644
--- a/code/datums/spells/area_teleport.dm
+++ b/code/datums/spells/area_teleport.dm
@@ -11,7 +11,7 @@
/obj/effect/proc_holder/spell/targeted/area_teleport/perform(list/targets, recharge = 1, mob/living/user = usr)
var/thearea = before_cast(targets)
- if(!thearea || !cast_check(TRUE, FALSE, user))
+ if(!thearea || !cast_check(FALSE, FALSE, user))
revert_cast()
return
invocation(thearea)
diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm
index 4c15353e6c4..be716536aff 100644
--- a/code/datums/spells/conjure.dm
+++ b/code/datums/spells/conjure.dm
@@ -44,9 +44,7 @@
summoned_object.admin_spawned = TRUE
if(summon_lifespan)
- spawn(summon_lifespan)
- if(summoned_object)
- qdel(summoned_object)
+ QDEL_IN(summoned_object, summon_lifespan)
else
switch(charge_type)
if("recharge")
diff --git a/code/datums/spells/construct_spells.dm b/code/datums/spells/construct_spells.dm
index afc91f922ab..57dd43ad38c 100644
--- a/code/datums/spells/construct_spells.dm
+++ b/code/datums/spells/construct_spells.dm
@@ -49,7 +49,7 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone
name = "Summon Soulstone"
- desc = "This spell reaches into Nar'Sie's realm, summoning one of the legendary fragments across time and space"
+ desc = "This spell reaches into Redspace, summoning one of the legendary fragments across time and space"
action_icon_state = "summonsoulstone"
action_background_icon_state = "bg_cult"
school = "conjuration"
@@ -68,7 +68,7 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/pylon
name = "Cult Pylon"
- desc = "This spell conjures a fragile crystal from Nar'Sie's realm. Makes for a convenient light source."
+ desc = "This spell conjures a fragile crystal from Redspace. Makes for a convenient light source."
action_icon_state = "pylon"
action_background_icon_state = "bg_cult"
school = "conjuration"
@@ -118,7 +118,12 @@
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/do_jaunt(mob/living/target)
target.set_light(0)
..()
- target.set_light(2, 3, l_color = SSticker.cultdat ? SSticker.cultdat.construct_glow : LIGHT_COLOR_BLOOD_MAGIC)
+ if(isconstruct(target))
+ var/mob/living/simple_animal/hostile/construct/C = target
+ if(C.holy)
+ C.set_light(3, 5, LIGHT_COLOR_DARK_BLUE)
+ else
+ C.set_light(2, 3, l_color = SSticker.cultdat ? SSticker.cultdat.construct_glow : LIGHT_COLOR_BLOOD_MAGIC)
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_steam(mobloc)
return
diff --git a/code/datums/spells/devil.dm b/code/datums/spells/devil.dm
deleted file mode 100644
index f9e075bdf81..00000000000
--- a/code/datums/spells/devil.dm
+++ /dev/null
@@ -1,248 +0,0 @@
-/obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork
- name = "Summon Pitchfork"
- desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork."
- item_type = /obj/item/twohanded/pitchfork/demonic
- action_icon_state = "pitchfork"
- action_background_icon_state = "bg_demon"
-
-/obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork/greater
- item_type = /obj/item/twohanded/pitchfork/demonic/greater
-
-/obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork/ascended
- item_type = /obj/item/twohanded/pitchfork/demonic/ascended
-
-/obj/effect/proc_holder/spell/targeted/conjure_item/violin
- item_type = /obj/item/instrument/violin/golden
- desc = "A devil's instrument of choice. Use this to summon/unsummon your golden violin."
- invocation_type = "whisper"
- invocation = "I ain't have this much fun since Georgia."
- action_icon_state = "golden_violin"
- name = "Summon golden violin"
- action_background_icon_state = "bg_demon"
-
-
-/obj/effect/proc_holder/spell/targeted/click/summon_contract
- name = "Summon infernal contract"
- desc = "Skip making a contract by hand, just do it by magic."
- invocation_type = "whisper"
- invocation = "Just sign on the dotted line."
- selection_activated_message = "You prepare a detailed contract. Click on a target to summon the contract in his hands."
- selection_deactivated_message = "You archive the contract for later use."
- include_user = FALSE
- range = 5
- auto_target_single = FALSE // Prevent an accidental contract from summoning
- click_radius = -1 // Precision clicking required
- allowed_type = /mob/living/carbon
- clothes_req = FALSE
- school = "conjuration"
- charge_max = 150
- cooldown_min = 10
- action_icon_state = "spell_default"
- action_background_icon_state = "bg_demon"
-
-/obj/effect/proc_holder/spell/targeted/click/summon_contract/cast(list/targets, mob/user = usr)
- for(var/target in targets)
- var/mob/living/carbon/C = target
- if(C.mind && user.mind)
- if(C.stat == DEAD)
- if(user.drop_item())
- var/obj/item/paper/contract/infernal/revive/contract = new(user.loc, C.mind, user.mind)
- user.put_in_hands(contract)
- else
- var/obj/item/paper/contract/infernal/contract
- var/contractTypeName = input(user, "What type of contract?") in list (CONTRACT_POWER, CONTRACT_WEALTH, CONTRACT_PRESTIGE, CONTRACT_MAGIC, CONTRACT_KNOWLEDGE, CONTRACT_FRIENDSHIP) //TODO: Refactor this to be less boilerplate-y
- switch(contractTypeName)
- if(CONTRACT_POWER)
- contract = new /obj/item/paper/contract/infernal/power(C.loc, C.mind, user.mind)
- if(CONTRACT_WEALTH)
- contract = new /obj/item/paper/contract/infernal/wealth(C.loc, C.mind, user.mind)
- if(CONTRACT_PRESTIGE)
- contract = new /obj/item/paper/contract/infernal/prestige(C.loc, C.mind, user.mind)
- if(CONTRACT_MAGIC)
- contract = new /obj/item/paper/contract/infernal/magic(C.loc, C.mind, user.mind)
- if(CONTRACT_KNOWLEDGE)
- contract = new /obj/item/paper/contract/infernal/knowledge(C.loc, C.mind, user.mind)
- if(CONTRACT_FRIENDSHIP)
- contract = new /obj/item/paper/contract/infernal/friendship(C.loc, C.mind, user.mind)
- C.put_in_hands(contract)
- else
- to_chat(user,"[C] seems to not be sentient. You are unable to summon a contract for them.")
-
-
-/obj/effect/proc_holder/spell/targeted/click/fireball/hellish
- name = "Hellfire"
- desc = "This spell launches hellfire at the target."
- school = "evocation"
- charge_max = 80
- clothes_req = FALSE
- invocation = "Your very soul will catch fire!"
- invocation_type = "shout"
- fireball_type = /obj/item/projectile/magic/fireball/infernal
- action_background_icon_state = "bg_demon"
-
-/obj/effect/proc_holder/spell/targeted/click/fireball/hellish/cast(list/targets, mob/living/user = usr)
- add_attack_logs(user, targets, "has fired a Hellfire ball", ATKLOG_FEW)
- .=..()
-
-
-/obj/effect/proc_holder/spell/targeted/infernal_jaunt
- name = "Infernal Jaunt"
- desc = "Use hellfire to phase out of existence."
- charge_max = 200
- clothes_req = FALSE
- selection_type = "range"
- range = -1
- cooldown_min = 0
- overlay = null
- include_user = TRUE
- action_icon_state = "jaunt"
- action_background_icon_state = "bg_demon"
-
-/obj/effect/proc_holder/spell/targeted/infernal_jaunt/cast(list/targets, mob/living/user = usr)
- if(istype(user))
- if(istype(user.loc, /obj/effect/dummy/slaughter))
- var/continuing = 0
- if(istype(get_area(user), /area/shuttle)) // Can always phase in in a shuttle.
- continuing = TRUE
- else
- for(var/mob/living/C in orange(2, get_turf(user.loc))) //Can also phase in when nearby a potential buyer.
- if (C.mind && C.mind.soulOwner == C.mind)
- continuing = TRUE
- break
- if(continuing)
- to_chat(user,"You are now phasing in.")
- if(do_mob(user,user,150))
- user.infernalphasein()
- else
- to_chat(user,"You can only re-appear near a potential signer or on a shuttle.")
- revert_cast()
- return ..()
- else
- user.notransform = TRUE
- user.fakefire()
- to_chat(user,"You begin to phase back into sinful flames.")
- if(do_mob(user,user,150))
- user.infernalphaseout()
- else
- to_chat(user,"You must remain still while exiting.")
- user.ExtinguishMob()
- start_recharge()
- return
- revert_cast()
-
-
-/mob/living/proc/infernalphaseout()
- dust_animation()
- visible_message("[src] disappears in a flashfire!")
- playsound(get_turf(src), 'sound/misc/enter_blood.ogg', 100, 1, -1)
- var/obj/effect/dummy/slaughter/s_holder = new(loc)
- ExtinguishMob()
- forceMove(s_holder)
- holder = s_holder
- notransform = FALSE
- fakefireextinguish()
-
-/mob/living/proc/infernalphasein()
- if(notransform)
- to_chat(src,"You're too busy to jaunt in.")
- return 0
- fakefire()
- forceMove(get_turf(src))
- visible_message("[src] appears in a firey blaze!")
- playsound(get_turf(src), 'sound/misc/exit_blood.ogg', 100, 1, -1)
- spawn(15)
- fakefireextinguish(TRUE)
-
-/obj/effect/proc_holder/spell/targeted/sintouch
- name = "Sin Touch"
- desc = "Subtly encourage someone to sin."
- charge_max = 1800
- clothes_req = FALSE
- selection_type = "range"
- range = 2
- cooldown_min = 0
- overlay = null
- include_user = FALSE
- action_icon_state = "sintouch"
- action_background_icon_state = "bg_demon"
- random_target = TRUE
- random_target_priority = TARGET_RANDOM
- max_targets = 3
- invocation = "TASTE SIN AND INDULGE!!"
- invocation_type = "shout"
-
-/obj/effect/proc_holder/spell/targeted/sintouch/ascended
- name = "Greater sin touch"
- charge_max = 100
- range = 7
- max_targets = 10
-
-/obj/effect/proc_holder/spell/targeted/sintouch/cast(list/targets, mob/living/user = usr)
- for(var/mob/living/carbon/human/H in targets)
- if(!H.mind)
- continue
- for(var/datum/objective/sintouched/A in H.mind.objectives)
- continue
- H.influenceSin()
- H.Weaken(2)
- H.Stun(2)
-
-/obj/effect/proc_holder/spell/targeted/summon_dancefloor
- name = "Summon Dancefloor"
- desc = "When what a Devil really needs is funk."
- include_user = TRUE
- range = -1
- clothes_req = FALSE
-
- school = "conjuration"
- charge_max = 10
- cooldown_min = 50 //5 seconds, so the smoke can't be spammed
- action_icon_state = "funk"
- action_background_icon_state = "bg_demon"
-
- var/list/dancefloor_turfs
- var/list/dancefloor_turfs_types
- var/dancefloor_exists = FALSE
-// var/datum/effect_system/smoke_spread/transparent/dancefloor_devil/smoke
-
-
-/obj/effect/proc_holder/spell/targeted/summon_dancefloor/cast(list/targets, mob/user = usr)
- LAZYINITLIST(dancefloor_turfs)
- LAZYINITLIST(dancefloor_turfs_types)
-
-/*
- if(!smoke)
- smoke = new()
- smoke.set_up(0, get_turf(user))
- smoke.start()
-*/
-
- if(dancefloor_exists)
- dancefloor_exists = FALSE
- for(var/i in 1 to dancefloor_turfs.len)
- var/turf/T = dancefloor_turfs[i]
- T.ChangeTurf(dancefloor_turfs_types[i])
- else
- var/list/funky_turfs = RANGE_TURFS(1, user)
- for(var/turf/T in funky_turfs)
- if(T.density)
- to_chat(user, "You're too close to a wall.")
- return
- dancefloor_exists = TRUE
- var/i = 1
- dancefloor_turfs.len = funky_turfs.len
- dancefloor_turfs_types.len = funky_turfs.len
- for(var/t in funky_turfs)
- var/turf/T = t
- dancefloor_turfs[i] = T
- dancefloor_turfs_types[i] = T.type
- T.ChangeTurf((i % 2 == 0) ? /turf/simulated/floor/light/colour_cycle/dancefloor_a : /turf/simulated/floor/light/colour_cycle/dancefloor_b)
- i++
-
-/*
-/datum/effect_system/smoke_spread/transparent/dancefloor_devil
- effect_type = /obj/effect/particle_effect/smoke/transparent/dancefloor_devil
-
-/obj/effect/particle_effect/smoke/transparent/dancefloor_devil
- lifetime = 2
-*/
diff --git a/code/datums/spells/devil_boons.dm b/code/datums/spells/devil_boons.dm
deleted file mode 100644
index 5746fd9c2d2..00000000000
--- a/code/datums/spells/devil_boons.dm
+++ /dev/null
@@ -1,73 +0,0 @@
-/obj/effect/proc_holder/spell/targeted/summon_wealth
- name = "Summon wealth"
- desc = "The reward for selling your soul."
- invocation_type = "none"
- include_user = 1
- range = -1
- clothes_req = 0
- school = "conjuration"
- charge_max = 100
- cooldown_min = 10
- action_icon_state = "moneybag"
-
-
-/obj/effect/proc_holder/spell/targeted/summon_wealth/cast(list/targets, mob/user = usr)
- for(var/mob/living/carbon/C in targets)
- if(user.drop_item())
- var/obj/item = pick(
- new /obj/item/coin/gold(user.loc),
- new /obj/item/coin/diamond(user.loc),
- new /obj/item/coin/silver(user.loc),
- new /obj/item/stack/sheet/mineral/gold(user.loc),
- new /obj/item/stack/sheet/mineral/silver(user.loc),
- new /obj/item/stack/sheet/mineral/diamond(user.loc),
- new /obj/item/stack/spacecash/c1000(user.loc))
- C.put_in_hands(item)
-
-/obj/effect/proc_holder/spell/targeted/view_range
- name = "Distant vision"
- desc = "The reward for selling your soul."
- invocation_type = "none"
- include_user = 1
- range = -1
- clothes_req = 0
- charge_max = 50
- cooldown_min = 10
- action_icon_state = "camera_jump"
- var/ranges = list(7,8,9,10/*,11,12*/)
-
-/obj/effect/proc_holder/spell/targeted/view_range/cast(list/targets, mob/user = usr)
- for(var/mob/C in targets)
- if(!C.client)
- continue
- C.client.view = input("Select view range:", "Range", 4) in ranges
-
-/obj/effect/proc_holder/spell/targeted/summon_friend
- name = "Summon Friend"
- desc = "The reward for selling your soul."
- invocation_type = "none"
- include_user = 1
- range = -1
- clothes_req = 0
- charge_max = 50
- cooldown_min = 10
- action_icon_state = "sacredflame"
- var/mob/living/friend
- var/obj/effect/mob_spawn/human/demonic_friend/friendShell
-
-/obj/effect/proc_holder/spell/targeted/summon_friend/cast(list/targets, mob/user = usr)
- if(!QDELETED(friend))
- to_chat(friend, "Your master has deemed you a poor friend. Your durance in hell will now resume.")
- to_chat(user, "You banish your friend back to whence [friend.p_they()] came.")
- friend.dust()
- qdel(friendShell)
- return
- if(!QDELETED(friendShell))
- qdel(friendShell)
- return
- for(var/C in targets)
- var/mob/living/L = C
- friendShell = new /obj/effect/mob_spawn/human/demonic_friend(L.loc, L.mind, src)
-
-/obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket/robeless
- clothes_req = FALSE
diff --git a/code/datums/spells/knock.dm b/code/datums/spells/knock.dm
index e4c652ae1d3..072bbf244e2 100644
--- a/code/datums/spells/knock.dm
+++ b/code/datums/spells/knock.dm
@@ -16,19 +16,23 @@
/obj/effect/proc_holder/spell/aoe_turf/knock/cast(list/targets, mob/user = usr)
for(var/turf/T in targets)
for(var/obj/machinery/door/door in T.contents)
- spawn(1)
- if(istype(door,/obj/machinery/door/airlock/hatch/gamma))
- return
- if(istype(door,/obj/machinery/door/airlock))
- var/obj/machinery/door/airlock/A = door
- A.unlock(1) //forced because it's magic!
- door.open()
+ INVOKE_ASYNC(src, .proc/try_open_airlock, door)
for(var/obj/structure/closet/C in T.contents)
- spawn(1)
- if(istype(C, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = C
- SC.locked = 0
- C.open()
+ INVOKE_ASYNC(src, .proc/try_open_closet, C)
+
+/obj/effect/proc_holder/spell/aoe_turf/knock/proc/try_open_airlock(obj/machinery/door/door)
+ if(istype(door, /obj/machinery/door/airlock/hatch/gamma))
+ return
+ if(istype(door, /obj/machinery/door/airlock))
+ var/obj/machinery/door/airlock/A = door
+ A.unlock(TRUE) //forced because it's magic!
+ door.open()
+
+/obj/effect/proc_holder/spell/aoe_turf/knock/proc/try_open_closet(obj/structure/closet/C)
+ if(istype(C, /obj/structure/closet/secure_closet))
+ var/obj/structure/closet/secure_closet/SC = C
+ SC.locked = FALSE
+ C.open()
/obj/effect/proc_holder/spell/aoe_turf/knock/greater
name = "Greater Knock"
diff --git a/code/datums/spells/shapeshift.dm b/code/datums/spells/shapeshift.dm
index 7b72b5a42c4..1095457278f 100644
--- a/code/datums/spells/shapeshift.dm
+++ b/code/datums/spells/shapeshift.dm
@@ -73,14 +73,22 @@
/obj/effect/proc_holder/spell/targeted/shapeshift/dragon
name = "Dragon Form"
- desc = "Take on the shape a lesser ash drake."
- invocation = "RAAAAAAAAWR!"
+ desc = "Take on the shape a lesser ash drake after a short delay."
+ invocation = "*scream"
shapeshift_type = /mob/living/simple_animal/hostile/megafauna/dragon/lesser
current_shapes = list(/mob/living/simple_animal/hostile/megafauna/dragon/lesser)
current_casters = list()
possible_shapes = list(/mob/living/simple_animal/hostile/megafauna/dragon/lesser)
+/obj/effect/proc_holder/spell/targeted/shapeshift/dragon/Shapeshift(mob/living/caster)
+ caster.visible_message("[caster] screams in agony as bones and claws erupt out of their flesh!",
+ "You begin channeling the transformation.")
+ if(!do_after(caster, 5 SECONDS, FALSE, caster))
+ to_chat(caster, "You lose concentration of the spell!")
+ return
+ return ..()
+
/obj/effect/proc_holder/spell/targeted/shapeshift/bats
name = "Bat Form"
desc = "Take on the shape of a swarm of bats."
diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm
index a954f72cb13..acaeeb41487 100644
--- a/code/datums/spells/wizard.dm
+++ b/code/datums/spells/wizard.dm
@@ -374,7 +374,7 @@
for(var/am in thrownatoms)
var/atom/movable/AM = am
- if(AM == user || AM.anchored)
+ if(AM == user || AM.anchored || AM.move_resist == INFINITY)
continue
throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm
index 2580b1c9935..fa392b4082e 100644
--- a/code/datums/status_effects/status_effect.dm
+++ b/code/datums/status_effects/status_effect.dm
@@ -67,6 +67,9 @@
owner = null
qdel(src)
+/datum/status_effect/proc/before_remove() //! Called before being removed; returning FALSE will cancel removal
+ return TRUE
+
/datum/status_effect/proc/refresh()
var/original_duration = initial(duration)
if(original_duration == -1)
@@ -118,12 +121,13 @@
S1 = new effect(arguments)
. = S1
-/mob/living/proc/remove_status_effect(effect) //removes all of a given status effect from this mob, returning TRUE if at least one was removed
+/mob/living/proc/remove_status_effect(effect, ...) //removes all of a given status effect from this mob, returning TRUE if at least one was removed
. = FALSE
+ var/list/arguments = args.Copy(2)
if(status_effects)
var/datum/status_effect/S1 = effect
for(var/datum/status_effect/S in status_effects)
- if(initial(S1.id) == S.id)
+ if(initial(S1.id) == S.id && S.before_remove(arguments))
qdel(S)
. = TRUE
@@ -205,6 +209,8 @@
if(stacks >= stack_threshold && !threshold_crossed) //threshold_crossed check prevents threshold effect from occuring if changing from above threshold to still above threshold
threshold_crossed = TRUE
on_threshold_cross()
+ if(consumed_on_threshold)
+ return
else if(stacks < stack_threshold && threshold_crossed)
threshold_crossed = FALSE //resets threshold effect if we fall below threshold so threshold effect can trigger again
on_threshold_drop()
@@ -220,8 +226,9 @@
qdel(src) //deletes status if stacks fall under one
/datum/status_effect/stacking/on_creation(mob/living/new_owner, stacks_to_apply)
- ..()
- add_stacks(stacks_to_apply)
+ . = ..()
+ if(.)
+ add_stacks(stacks_to_apply)
/datum/status_effect/stacking/on_apply()
if(!can_have_status())
@@ -246,3 +253,22 @@
owner.underlays -= status_underlay
QDEL_NULL(status_overlay)
return ..()
+
+/// Status effect from multiple sources, when all sources are removed, so is the effect
+/datum/status_effect/grouped
+ status_type = STATUS_EFFECT_MULTIPLE //! Adds itself to sources and destroys itself if one exists already, there are never multiple
+ var/list/sources = list()
+
+/datum/status_effect/grouped/on_creation(mob/living/new_owner, source)
+ var/datum/status_effect/grouped/existing = new_owner.has_status_effect(type)
+ if(existing)
+ existing.sources |= source
+ qdel(src)
+ return FALSE
+ else
+ sources |= source
+ return ..()
+
+/datum/status_effect/grouped/before_remove(source)
+ sources -= source
+ return !length(sources)
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 6a25e22b985..3a856a8d130 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -18,7 +18,7 @@
GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY_ENGINEER,SUPPLY_MEDICAL,SUPPLY_SCIENCE,SUPPLY_ORGANIC,SUPPLY_MATERIALS,SUPPLY_MISC,SUPPLY_VEND))
-/proc/get_supply_group_name(var/cat)
+/proc/get_supply_group_name(cat)
switch(cat)
if(SUPPLY_EMERGENCY)
return "Emergency"
diff --git a/code/datums/tgs_event_handler.dm b/code/datums/tgs_event_handler.dm
index df140ad6ff6..9dd5b624115 100644
--- a/code/datums/tgs_event_handler.dm
+++ b/code/datums/tgs_event_handler.dm
@@ -1,39 +1,53 @@
+/// Will our restart be slower?
+GLOBAL_VAR_INIT(slower_restart, FALSE)
+
+/proc/server_announce_global(announcement_text)
+ to_chat(world, "\[Server] [announcement_text]")
+
+/proc/server_announce_adminonly(announcement_text)
+ to_chat(GLOB.admins, "\[Server] \[Admin] [announcement_text]")
+
/datum/tgs_event_handler/impl
var/datum/timedevent/reattach_timer
+
/datum/tgs_event_handler/impl/HandleEvent(event_code, ...)
switch(event_code)
if(TGS_EVENT_REBOOT_MODE_CHANGE)
var/list/reboot_mode_lookup = list ("[TGS_REBOOT_MODE_NORMAL]" = "be normal", "[TGS_REBOOT_MODE_SHUTDOWN]" = "shutdown the server", "[TGS_REBOOT_MODE_RESTART]" = "hard restart the server")
var/old_reboot_mode = args[2]
var/new_reboot_mode = args[3]
- message_admins("\[Server]\[Info] Reboot will no longer [reboot_mode_lookup["[old_reboot_mode]"]], it will instead [reboot_mode_lookup["[new_reboot_mode]"]]")
+ if(new_reboot_mode == TGS_REBOOT_MODE_SHUTDOWN)
+ GLOB.slower_restart = TRUE
+ else
+ GLOB.slower_restart = FALSE
+ server_announce_adminonly("\[Info] Reboot will no longer [reboot_mode_lookup["[old_reboot_mode]"]], it will instead [reboot_mode_lookup["[new_reboot_mode]"]]")
if(TGS_EVENT_PORT_SWAP)
- message_admins("\[Server]\[Info] Changing port from [world.port] to [args[2]]")
+ server_announce_adminonly("\[Info] Changing port from [world.port] to [args[2]]")
if(TGS_EVENT_INSTANCE_RENAMED)
- message_admins("\[Server]\[Info] Instance renamed to from [world.TgsInstanceName()] to [args[2]]")
+ server_announce_adminonly("\[Info] Instance renamed to from [world.TgsInstanceName()] to [args[2]]")
if(TGS_EVENT_COMPILE_START)
- message_admins("\[Server]\[Info] Code deployment started, new game version incoming next round...")
+ server_announce_adminonly("\[Info] Code deployment started, new game version incoming next round...")
if(TGS_EVENT_COMPILE_CANCELLED)
- message_admins("\[Server]\[Warning] Code deployment cancelled!")
+ server_announce_adminonly("\[Warning] Code deployment cancelled! Consult a maintainer/host to see if this was intentional!")
if(TGS_EVENT_COMPILE_FAILURE)
- message_admins("\[Server]\[Error] Code deployment failed! Inform a maintainer/host immediately!")
+ server_announce_adminonly("\[Error] Code deployment failed! Inform a maintainer/host immediately!")
if(TGS_EVENT_DEPLOYMENT_COMPLETE)
- message_admins("\[Server]\[Info] Code deployment complete!")
- to_chat(world, "Server updated, changes will be applied on the next round...")
+ server_announce_adminonly("\[Info] Code deployment complete!")
+ server_announce_global("Server update complete. Changes will be applied on the next round.")
if(TGS_EVENT_WATCHDOG_DETACH)
- message_admins("\[Server]\[Info] Server manager restarting...")
+ server_announce_adminonly("\[Info] Server manager restarting...")
reattach_timer = addtimer(CALLBACK(src, .proc/LateOnReattach), 1 MINUTES, TIMER_STOPPABLE)
if(TGS_EVENT_WATCHDOG_REATTACH)
var/datum/tgs_version/old_version = world.TgsVersion()
var/datum/tgs_version/new_version = args[2]
if(!old_version.Equals(new_version))
- message_admins("\[Server]\[Info] Manager back online. TGS has been updated to v[new_version.deprefixed_parameter]")
+ server_announce_adminonly("\[Info] Server manager back online. TGS has been updated to v[new_version.deprefixed_parameter]")
else
- message_admins("\[Server]\[Info] Manager back online")
+ server_announce_adminonly("\[Info] Server manager back online")
if(reattach_timer)
deltimer(reattach_timer)
reattach_timer = null
/datum/tgs_event_handler/impl/proc/LateOnReattach()
- message_admins("\[Server]\[Warning] TGS hasn't notified us of it coming back for a full minute! Is there a problem?")
+ server_announce_adminonly("\[Warning] TGS hasn't notified us of it coming back for a full minute! Is there a problem?")
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 8175f4353cc..61c1e8df625 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -1,6 +1,6 @@
GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
-/proc/get_uplink_items(var/job = null)
+/proc/get_uplink_items(job = null)
var/list/uplink_items = list()
var/list/sales_items = list()
var/newreference = 1
@@ -82,7 +82,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
var/refund_path = null // Alternative path for refunds, in case the item purchased isn't what is actually refunded (ie: holoparasites).
var/refund_amount // specified refund amount in case there needs to be a TC penalty for refunds.
-/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/uplink/U)
+/datum/uplink_item/proc/spawn_item(turf/loc, obj/item/uplink/U)
if(hijack_only && !(usr.mind.special_role == SPECIAL_ROLE_NUKEOPS))//nukies get items that regular traitors only get with hijack. If a hijack-only item is not for nukies, then exclude it via the gamemode list.
if(!(locate(/datum/objective/hijack) in usr.mind.objectives))
@@ -103,7 +103,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = replacetext(initial(temp.desc), "\n", " ")
return desc
-/datum/uplink_item/proc/buy(var/obj/item/uplink/hidden/U, var/mob/user)
+/datum/uplink_item/proc/buy(obj/item/uplink/hidden/U, mob/user)
if(!istype(U))
return 0
@@ -952,6 +952,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/toy/carpplushie/dehy_carp
cost = 2
+/datum/uplink_item/stealthy_weapons/combat_plus
+ name = "Combat Gloves Plus"
+ desc = "Combat gloves with installed nanochips that teach you Krav Maga when worn, great as a cheap backup weapon. Warning, the nanochips will override any other fighting styles such as CQC."
+ reference = "CGP"
+ item = /obj/item/clothing/gloves/color/black/krav_maga/combat
+ cost = 5
+ gamemodes = list(/datum/game_mode/nuclear)
+
// GRENADES AND EXPLOSIVES
/datum/uplink_item/explosives
diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm
index a02ee54d6fa..b62f0f8763b 100644
--- a/code/defines/procs/announce.dm
+++ b/code/defines/procs/announce.dm
@@ -14,37 +14,37 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event
var/admin_announcement = 0 // Admin announcements are received regardless of being in range of a radio, unless you're in the lobby to prevent metagaming
var/language = "Galactic Common"
-/datum/announcement/New(var/do_log = 0, var/new_sound = null, var/do_newscast = 0)
+/datum/announcement/New(do_log = 0, new_sound = null, do_newscast = 0)
sound = new_sound
log = do_log
newscast = do_newscast
-/datum/announcement/minor/New(var/do_log = 0, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
+/datum/announcement/minor/New(do_log = 0, new_sound = sound('sound/misc/notice2.ogg'), do_newscast = 0)
..(do_log, new_sound, do_newscast)
title = "Attention"
announcement_type = "Minor Announcement"
-/datum/announcement/priority/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
+/datum/announcement/priority/New(do_log = 1, new_sound = sound('sound/misc/notice2.ogg'), do_newscast = 0)
..(do_log, new_sound, do_newscast)
title = "Priority Announcement"
announcement_type = "Priority Announcement"
-/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
+/datum/announcement/priority/command/New(do_log = 1, new_sound = sound('sound/misc/notice2.ogg'), do_newscast = 0)
..(do_log, new_sound, do_newscast)
admin_announcement = 1
title = "[command_name()] Update"
announcement_type = "[command_name()] Update"
-/datum/announcement/priority/command/event/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
+/datum/announcement/priority/command/event/New(do_log = 1, new_sound = sound('sound/misc/notice2.ogg'), do_newscast = 0)
..(do_log, new_sound, do_newscast)
admin_announcement = 0
-/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
+/datum/announcement/priority/security/New(do_log = 1, new_sound = sound('sound/misc/notice2.ogg'), do_newscast = 0)
..(do_log, new_sound, do_newscast)
title = "Security Announcement"
announcement_type = "Security Announcement"
-/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, var/from, var/msg_language)
+/datum/announcement/proc/Announce(message as text, new_title = "", new_sound = null, do_newscast = newscast, msg_sanitized = 0, from, msg_language)
if(!message)
return
@@ -76,7 +76,7 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event
Sound(message_sound, combined_receivers[1] + combined_receivers[2])
Log(message, message_title)
-/datum/announcement/proc/Get_Receivers(var/datum/language/message_language)
+/datum/announcement/proc/Get_Receivers(datum/language/message_language)
var/list/receivers = list()
var/list/garbled_receivers = list()
@@ -161,7 +161,7 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event
news.can_be_redacted = 0
announce_newscaster_news(news)
-/datum/announcement/proc/Sound(var/message_sound, var/receivers)
+/datum/announcement/proc/Sound(message_sound, receivers)
if(!message_sound)
return
for(var/mob/M in receivers)
@@ -172,6 +172,6 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event
log_game("[key_name(usr)] has made \a [announcement_type]: [message_title] - [message] - [announcer]")
message_admins("[key_name_admin(usr)] has made \a [announcement_type].", 1)
-/proc/GetNameAndAssignmentFromId(var/obj/item/card/id/I)
+/proc/GetNameAndAssignmentFromId(obj/item/card/id/I)
// Format currently matches that of newscaster feeds: Registered Name (Assigned Rank)
return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name
diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm
index 7c0dc4de7f8..c0f7716557e 100644
--- a/code/defines/procs/radio.dm
+++ b/code/defines/procs/radio.dm
@@ -3,7 +3,7 @@
#define TELECOMMS_RECEPTION_RECEIVER 2
#define TELECOMMS_RECEPTION_BOTH 3
-/proc/get_frequency_name(var/display_freq)
+/proc/get_frequency_name(display_freq)
var/freq_text
// the name of the channel
diff --git a/code/defines/procs/records.dm b/code/defines/procs/records.dm
index a74680ec578..277dae36f1a 100644
--- a/code/defines/procs/records.dm
+++ b/code/defines/procs/records.dm
@@ -25,7 +25,7 @@
qdel(dummy)
return G
-/proc/CreateSecurityRecord(var/name as text, var/id as text)
+/proc/CreateSecurityRecord(name as text, id as text)
var/datum/data/record/R = new /datum/data/record()
R.fields["name"] = name
R.fields["id"] = id
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index d2485e24357..6565779e14b 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -375,7 +375,7 @@
#define ENVIRON 3
*/
-/area/proc/powered(var/chan) // return true if the area has power to given channel
+/area/proc/powered(chan) // return true if the area has power to given channel
if(!requires_power)
return 1
@@ -405,7 +405,7 @@
SEND_SIGNAL(src, COMSIG_AREA_POWER_CHANGE)
updateicon()
-/area/proc/usage(var/chan)
+/area/proc/usage(chan)
var/used = 0
switch(chan)
if(LIGHT)
@@ -439,7 +439,7 @@
used_light = 0
used_environ = 0
-/area/proc/use_power(var/amount, var/chan)
+/area/proc/use_power(amount, chan)
switch(chan)
if(EQUIP)
used_equip += amount
@@ -448,7 +448,7 @@
if(ENVIRON)
used_environ += amount
-/area/proc/use_battery_power(var/amount, var/chan)
+/area/proc/use_battery_power(amount, chan)
switch(chan)
if(EQUIP)
used_equip += amount
@@ -488,14 +488,14 @@
else if(L && L.client && !(L.client.prefs.sound & SOUND_BUZZ))
L.client.ambience_playing = FALSE
-/area/proc/gravitychange(var/gravitystate = 0, var/area/A)
+/area/proc/gravitychange(gravitystate = 0, area/A)
A.has_gravity = gravitystate
if(gravitystate)
for(var/mob/living/carbon/human/M in A)
thunk(M)
-/area/proc/thunk(var/mob/living/carbon/human/M)
+/area/proc/thunk(mob/living/carbon/human/M)
if(istype(M,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to.
if(istype(M.shoes, /obj/item/clothing/shoes/magboots) && (M.shoes.flags & NOSLIP))
return
diff --git a/code/game/area/areas/depot-areas.dm b/code/game/area/areas/depot-areas.dm
index fa667e73bfa..ec1ba64deec 100644
--- a/code/game/area/areas/depot-areas.dm
+++ b/code/game/area/areas/depot-areas.dm
@@ -314,7 +314,7 @@
for(var/obj/machinery/computer/syndicate_depot/C in src)
C.security_lockout = FALSE
-/area/syndicate_depot/core/proc/set_emergency_access(var/openaccess)
+/area/syndicate_depot/core/proc/set_emergency_access(openaccess)
for(var/obj/machinery/door/airlock/A in src)
if(istype(A, /obj/machinery/door/airlock/hatch/syndicate/vault))
continue
diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm
index 534ea820006..c267bbeffae 100644
--- a/code/game/area/areas/ruins/lavaland.dm
+++ b/code/game/area/areas/ruins/lavaland.dm
@@ -37,45 +37,6 @@
/area/ruin/powered/seedvault
icon_state = "dk_yellow"
-/area/ruin/unpowered/syndicate_lava_base
- name = "Secret Base"
- icon_state = "dk_yellow"
- ambientsounds = HIGHSEC_SOUNDS
- report_alerts = FALSE
- hide_attacklogs = TRUE
-
-/area/ruin/unpowered/syndicate_lava_base/engineering
- name = "Syndicate Lavaland Engineering"
-
-/area/ruin/unpowered/syndicate_lava_base/medbay
- name = "Syndicate Lavaland Medbay"
-
-/area/ruin/unpowered/syndicate_lava_base/arrivals
- name = "Syndicate Lavaland Arrivals"
-
-/area/ruin/unpowered/syndicate_lava_base/bar
- name = "Syndicate Lavaland Bar"
-
-/area/ruin/unpowered/syndicate_lava_base/main
- name = "Syndicate Lavaland Primary Hallway"
-
-/area/ruin/unpowered/syndicate_lava_base/cargo
- name = "Syndicate Lavaland Cargo Bay"
-
-/area/ruin/unpowered/syndicate_lava_base/chemistry
- name = "Syndicate Lavaland Chemistry"
-
-/area/ruin/unpowered/syndicate_lava_base/virology
- name = "Syndicate Lavaland Virology"
-
-/area/ruin/unpowered/syndicate_lava_base/testlab
- name = "Syndicate Lavaland Experimentation Lab"
-
-/area/ruin/unpowered/syndicate_lava_base/dormitories
- name = "Syndicate Lavaland Dormitories"
-
-/area/ruin/unpowered/syndicate_lava_base/telecomms
- name = "Syndicate Lavaland Telecommunications"
//Xeno Nest
diff --git a/code/game/area/areas/ruins/syndicate_space_base.dm b/code/game/area/areas/ruins/syndicate_space_base.dm
new file mode 100644
index 00000000000..f26eb56fa86
--- /dev/null
+++ b/code/game/area/areas/ruins/syndicate_space_base.dm
@@ -0,0 +1,50 @@
+/area/ruin/unpowered/syndicate_space_base
+ name = "Secret Base"
+ icon_state = "dk_yellow"
+ ambientsounds = HIGHSEC_SOUNDS
+ report_alerts = FALSE
+ hide_attacklogs = TRUE
+
+/area/ruin/unpowered/syndicate_space_base/engineering
+ name = "Syndicate Space Base Engineering"
+ icon_state = "engine"
+
+/area/ruin/unpowered/syndicate_space_base/medbay
+ name = "Syndicate Space Base Medbay"
+ icon_state = "medbay2"
+
+/area/ruin/unpowered/syndicate_space_base/arrivals
+ name = "Syndicate Space Base Arrivals"
+ icon_state = "teleporter"
+
+
+/area/ruin/unpowered/syndicate_space_base/bar
+ name = "Syndicate Space Base Bar"
+ icon_state = "bar"
+
+/area/ruin/unpowered/syndicate_space_base/main
+ name = "Syndicate Space Base Primary Hallway"
+
+/area/ruin/unpowered/syndicate_space_base/cargo
+ name = "Syndicate Space Base Cargo Bay"
+ icon_state = "storage"
+
+/area/ruin/unpowered/syndicate_space_base/chemistry
+ name = "Syndicate Space Base Chemistry"
+ icon_state = "chem"
+
+/area/ruin/unpowered/syndicate_space_base/virology
+ name = "Syndicate Space Base Virology"
+ icon_state = "virology"
+
+/area/ruin/unpowered/syndicate_space_base/testlab
+ name = "Syndicate Space Base Experimentation Lab"
+ icon_state = "toxtest"
+
+/area/ruin/unpowered/syndicate_space_base/dormitories
+ name = "Syndicate Space Base Dormitories"
+ icon_state = "dorms"
+
+/area/ruin/unpowered/syndicate_space_base/telecomms
+ name = "Syndicate Space Base Telecommunications"
+ icon_state = "tcomsatcham"
diff --git a/code/game/area/ss13_areas.dm b/code/game/area/ss13_areas.dm
index 736a6d84447..36b3461bd6f 100644
--- a/code/game/area/ss13_areas.dm
+++ b/code/game/area/ss13_areas.dm
@@ -1108,7 +1108,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/engine/equipmentstorage
- name = "\improper Engineering Equipment Storage"
+ name = "Engineering Equipment Storage"
icon_state = "storage"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
@@ -1260,7 +1260,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/medical/biostorage
- name = "\improper Medical Storage"
+ name = "Medical Storage"
icon_state = "medbaysecstorage"
/area/medical/reception
@@ -1285,19 +1285,19 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "patientsward"
/area/medical/patient_a
- name = "\improper Isolation A"
+ name = "Isolation A"
icon_state = "medbayisoa"
/area/medical/patient_b
- name = "\improper Isolation B"
+ name = "Isolation B"
icon_state = "medbayisob"
/area/medical/patient_c
- name = "\improper Isolation C"
+ name = "Isolation C"
icon_state = "medbayisoc"
/area/medical/iso_access
- name = "\improper Isolation Access"
+ name = "Isolation Access"
icon_state = "medbayisoaccess"
/area/medical/cmo
@@ -1305,15 +1305,15 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "CMO"
/area/medical/cmostore
- name = "\improper Medical Secondary Storage"
+ name = "Medical Secondary Storage"
icon_state = "medbaysecstorage"
/area/medical/robotics
- name = "\improper Robotics"
+ name = "Robotics"
icon_state = "medresearch"
/area/medical/research
- name = "\improper Medical Research"
+ name = "Medical Research"
icon_state = "medresearch"
/area/medical/research_shuttle_dock
@@ -1321,7 +1321,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "medresearch"
/area/medical/virology
- name = "\improper Virology"
+ name = "Virology"
icon_state = "virology"
/area/medical/virology/lab
@@ -1336,7 +1336,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/medical/chemistry
- name = "\improper Chemistry"
+ name = "Chemistry"
icon_state = "chem"
/area/medical/surgery
@@ -1344,19 +1344,19 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "surgery"
/area/medical/surgery1
- name = "\improper Surgery 1"
+ name = "Surgery 1"
icon_state = "surgery1"
/area/medical/surgery2
- name = "\improper Surgery 2"
+ name = "Surgery 2"
icon_state = "surgery2"
/area/medical/surgeryobs
- name = "\improper Surgery Observation"
+ name = "Surgery Observation"
icon_state = "surgery"
/area/medical/cryo
- name = "\improper Cryogenics"
+ name = "Cryogenics"
icon_state = "cryo"
/area/medical/exam_room
@@ -1376,7 +1376,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "exam_room"
/area/medical/paramedic
- name = "\improper Paramedic"
+ name = "Paramedic"
icon_state = "medbay"
//Security
@@ -1441,22 +1441,22 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "brig"
/area/security/execution
- name = "\improper Execution"
+ name = "Execution"
icon_state = "execution"
can_get_auto_cryod = FALSE
/area/security/processing
- name = "\improper Prisoner Processing"
+ name = "Prisoner Processing"
icon_state = "prisonerprocessing"
can_get_auto_cryod = FALSE
/area/security/interrogation
- name = "\improper Interrogation"
+ name = "Interrogation"
icon_state = "interrogation"
can_get_auto_cryod = FALSE
/area/security/seceqstorage
- name = "\improper Security Equipment Storage"
+ name = "Security Equipment Storage"
icon_state = "securityequipmentstorage"
/area/security/interrogationhallway
@@ -1469,7 +1469,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
sound_environment = SOUND_AREA_LARGE_ENCLOSED
/area/security/interrogationobs
- name = "\improper Interrogation Observation"
+ name = "Interrogation Observation"
icon_state = "security"
can_get_auto_cryod = FALSE
@@ -1530,11 +1530,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "nuke_storage"
/area/security/customs
- name = "\improper Customs"
+ name = "Customs"
icon_state = "checkpoint1"
/area/security/customs2
- name = "\improper Customs"
+ name = "Customs"
icon_state = "security"
/area/security/checkpoint
@@ -1601,7 +1601,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "mining"
/area/quartermaster/miningstorage
- name = "\improper Mining Storage"
+ name = "Mining Storage"
icon_state = "green"
/area/quartermaster/mechbay
@@ -1614,7 +1614,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/hydroponics
- name = "\improper Hydroponics"
+ name = "Hydroponics"
icon_state = "hydro"
sound_environment = SOUND_AREA_STANDARD_STATION
@@ -1629,7 +1629,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
sound_environment = SOUND_AREA_STANDARD_STATION
/area/toxins/lab
- name = "\improper Research and Development"
+ name = "Research and Development"
icon_state = "toxlab"
/area/toxins/hallway
@@ -1650,7 +1650,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
xenobiology_compatible = TRUE
/area/toxins/xenobiology/xenoflora_storage
- name = "\improper Xenoflora Storage"
+ name = "Xenoflora Storage"
icon_state = "toxlab"
/area/toxins/xenobiology/xenoflora
@@ -1658,7 +1658,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "toxlab"
/area/toxins/storage
- name = "\improper Toxins Storage"
+ name = "Toxins Storage"
icon_state = "toxstorage"
/area/toxins/test_area
@@ -1671,7 +1671,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "toxmix"
/area/toxins/launch
- name = "Toxins Launch Room"
+ name = "\improper Toxins Launch Room"
icon_state = "toxlaunch"
/area/toxins/misc_lab
@@ -1739,7 +1739,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "auxstorage"
/area/storage/office
- name = "\improper Office Supplies"
+ name = "Office Supplies"
icon_state = "office_supplies"
// ENGIE OUTPOST
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 73cbcb3f7b0..583daa7ade3 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -132,7 +132,7 @@
// Used in shuttle movement and AI eye stuff.
// Primarily used to notify objects being moved by a shuttle/bluespace fuckup.
-/atom/movable/proc/setLoc(var/T, var/teleported=0)
+/atom/movable/proc/setLoc(T, teleported=0)
loc = T
/atom/movable/Move(atom/newloc, direct = 0, movetime)
@@ -308,7 +308,7 @@
//Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting
//Mobs should return 1 if they should be able to move of their own volition, see client/Move() in mob_movement.dm
//movement_dir == 0 when stopping or any dir when trying to move
-/atom/movable/proc/Process_Spacemove(var/movement_dir = 0)
+/atom/movable/proc/Process_Spacemove(movement_dir = 0)
if(has_gravity(src))
return 1
diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm
index 3692f725361..284b130f803 100644
--- a/code/game/data_huds.dm
+++ b/code/game/data_huds.dm
@@ -181,11 +181,18 @@
var/dead = stat == DEAD || HAS_TRAIT(src, TRAIT_FAKEDEATH)
// To the right of health bar
if(dead)
- var/revivable = timeofdeath && (round(world.time - timeofdeath) < DEFIB_TIME_LIMIT)
+ var/mob/dead/observer/ghost = get_ghost(TRUE)
+ var/revivable
+ if(ghost && !ghost.can_reenter_corpse) // DNR or AntagHUD
+ revivable = FALSE
+ else if(timeofdeath && (round(world.time - timeofdeath) < DEFIB_TIME_LIMIT))
+ revivable = TRUE
+
if(revivable)
holder.icon_state = "hudflatline"
else
holder.icon_state = "huddead"
+
else if(HAS_TRAIT(src, TRAIT_XENO_HOST))
holder.icon_state = "hudxeno"
else if(B && B.controlling)
diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index b0323825c70..2dfe4d660c9 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(assigned_mutation_blocks, new(DNA_SE_LENGTH))
// Used to determine what each block means (admin hax and species stuff on /vg/, mostly)
GLOBAL_LIST_INIT(assigned_blocks, new(DNA_SE_LENGTH))
+/// Assoc list. Key = type of the mutation, value = the mutation
GLOBAL_LIST_EMPTY(dna_mutations)
GLOBAL_LIST_EMPTY(good_blocks)
diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm
index d82e652dbb7..8da02df0806 100644
--- a/code/game/dna/dna2_domutcheck.dm
+++ b/code/game/dna/dna2_domutcheck.dm
@@ -3,7 +3,8 @@
// M: Mob to mess with
// flags: See below, bitfield.
/proc/domutcheck(mob/living/M, flags = 0)
- for(var/datum/mutation/mutation in GLOB.dna_mutations)
+ for(var/mutation_type in GLOB.dna_mutations)
+ var/datum/mutation/mutation = GLOB.dna_mutations[mutation_type]
if(!M || !M.dna)
return
if(!mutation.block)
@@ -32,7 +33,7 @@
var/mutation_active = M.dna.GetSEState(mutation.block)
// Sanity checks, don't skip.
- if(!mutation.can_activate(M, flags) && mutation_active)
+ if(mutation_active && !mutation.can_activate(M, flags))
//testing("[M] - Failed to activate [gene.name] (can_activate fail).")
return FALSE
@@ -46,11 +47,7 @@
if(mutation_active)
//testing("[gene.name] activated!")
mutation.activate(M)
- if(M)
- M.active_mutations |= mutation.type
// If Gene is NOT active:
else
//testing("[gene.name] deactivated!")
mutation.deactivate(M)
- if(M)
- M.active_mutations -= mutation.type
diff --git a/code/game/dna/mutations/_mutations.dm b/code/game/dna/mutations/_mutations.dm
index a9718394066..8ed4022c5be 100644
--- a/code/game/dna/mutations/_mutations.dm
+++ b/code/game/dna/mutations/_mutations.dm
@@ -31,7 +31,9 @@
// Called when the gene activates. Do your magic here.
/datum/mutation/proc/activate(mob/living/M)
+ SHOULD_CALL_PARENT(TRUE)
M.gene_stability -= instability
+ M.active_mutations |= type // |= is probably not required but just in case
for(var/thing in traits_to_add)
ADD_TRAIT(M, thing, GENETIC_MUTATION)
if(length(activation_messages))
@@ -42,7 +44,9 @@
// Called when the gene deactivates. Undo your magic here.
// Only called when the block is deactivated.
/datum/mutation/proc/deactivate(mob/living/M)
+ SHOULD_CALL_PARENT(TRUE)
M.gene_stability += instability
+ M.active_mutations -= type
for(var/thing in traits_to_add)
REMOVE_TRAIT(M, thing, GENETIC_MUTATION)
if(length(deactivation_messages))
diff --git a/code/game/dna/mutations/monkey.dm b/code/game/dna/mutations/monkey.dm
index 4ebe366bfb7..c9e91179527 100644
--- a/code/game/dna/mutations/monkey.dm
+++ b/code/game/dna/mutations/monkey.dm
@@ -9,6 +9,7 @@
return ishuman(M)
/datum/mutation/monkey/activate(mob/living/carbon/human/H)
+ ..()
if(!istype(H))
return
if(issmall(H))
@@ -42,6 +43,7 @@
return H
/datum/mutation/monkey/deactivate(mob/living/carbon/human/H)
+ ..()
if(!istype(H))
return
if(!issmall(H))
diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
index a1c04e93d46..60d854a7832 100644
--- a/code/game/gamemodes/blob/blob.dm
+++ b/code/game/gamemodes/blob/blob.dm
@@ -63,7 +63,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
return candidates
-/datum/game_mode/blob/proc/blobize(var/mob/living/carbon/human/blob)
+/datum/game_mode/blob/proc/blobize(mob/living/carbon/human/blob)
var/datum/mind/blobmind = blob.mind
if(!istype(blobmind))
return 0
@@ -79,7 +79,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
burst_blob(blobmind)
return 1
-/datum/game_mode/blob/proc/make_blobs(var/count)
+/datum/game_mode/blob/proc/make_blobs(count)
var/list/candidates = get_blob_candidates()
var/mob/living/carbon/human/blob = null
count=min(count, candidates.len)
@@ -97,16 +97,17 @@ GLOBAL_LIST_EMPTY(blob_nodes)
to_chat(world, "You must kill it all while minimizing the damage to the station.")
-/datum/game_mode/blob/proc/greet_blob(var/datum/mind/blob)
+/datum/game_mode/blob/proc/greet_blob(datum/mind/blob)
to_chat(blob.current, "You are infected by the Blob!")
to_chat(blob.current, "Your body is ready to give spawn to a new blob core which will eat this station.")
to_chat(blob.current, "Find a good location to spawn the core and then take control and overwhelm the station!")
to_chat(blob.current, "When you have found a location, wait until you spawn; this will happen automatically and you cannot speed up the process.")
to_chat(blob.current, "If you go outside of the station level, or in space, then you will die; make sure your location has lots of ground to cover.")
+ to_chat(blob.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Blob)")
SEND_SOUND(blob.current, sound('sound/magic/mutate.ogg'))
return
-/datum/game_mode/blob/proc/show_message(var/message)
+/datum/game_mode/blob/proc/show_message(message)
for(var/datum/mind/blob in infected_crew)
to_chat(blob.current, message)
@@ -114,7 +115,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
for(var/datum/mind/blob in infected_crew)
burst_blob(blob)
-/datum/game_mode/blob/proc/burst_blob(var/datum/mind/blob, var/warned=0)
+/datum/game_mode/blob/proc/burst_blob(datum/mind/blob, warned=0)
var/client/blob_client = null
var/turf/location = null
@@ -190,7 +191,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
return ..()
-/datum/game_mode/blob/proc/stage(var/stage)
+/datum/game_mode/blob/proc/stage(stage)
switch(stage)
if(0)
send_intercept(1)
diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm
index 93b84dbb54d..670c9ea8aa4 100644
--- a/code/game/gamemodes/blob/blob_report.dm
+++ b/code/game/gamemodes/blob/blob_report.dm
@@ -1,4 +1,4 @@
-/datum/game_mode/blob/proc/send_intercept(var/report = 1)
+/datum/game_mode/blob/proc/send_intercept(report = 1)
var/intercepttext = ""
var/interceptname = ""
switch(report)
@@ -89,7 +89,7 @@
else if(istype(O, /obj/machinery))
src.mach += 1
-/datum/station_state/proc/score(var/datum/station_state/result)
+/datum/station_state/proc/score(datum/station_state/result)
if(!result) return 0
var/output = 0
output += (result.floor / max(floor,1))
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index cdc8caaaf74..14603c1681a 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -20,7 +20,7 @@
fire_damage = 3
var/mob/camera/blob/overmind = null
-/mob/living/simple_animal/hostile/blob/proc/adjustcolors(var/a_color)
+/mob/living/simple_animal/hostile/blob/proc/adjustcolors(a_color)
if(a_color)
color = a_color
@@ -69,7 +69,7 @@
return 1
return ..()
-/mob/living/simple_animal/hostile/blob/blobspore/New(loc, var/obj/structure/blob/factory/linked_node)
+/mob/living/simple_animal/hostile/blob/blobspore/New(loc, obj/structure/blob/factory/linked_node)
if(istype(linked_node))
factory = linked_node
factory.spores += src
@@ -103,7 +103,7 @@
icon = H.icon
speak_emote = list("groans")
icon_state = "zombie2_s"
- if(head_organ)
+ if(head_organ && !(NO_HAIR in H.dna.species.species_traits))
head_organ.h_style = null
H.update_hair()
human_overlays = H.overlays
@@ -149,7 +149,7 @@
adjustcolors(overmind?.blob_reagent_datum?.complementary_color)
-/mob/living/simple_animal/hostile/blob/blobspore/adjustcolors(var/a_color)
+/mob/living/simple_animal/hostile/blob/blobspore/adjustcolors(a_color)
color = a_color
if(is_zombie)
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index bd86b7ff1fc..b4a9bf3c3e8 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -27,7 +27,7 @@
point_rate = new_rate
-/obj/structure/blob/core/adjustcolors(var/a_color)
+/obj/structure/blob/core/adjustcolors(a_color)
overlays.Cut()
color = null
var/image/I = new('icons/mob/blob.dmi', "blob")
@@ -117,13 +117,13 @@
if(C && !QDELETED(src))
var/mob/camera/blob/B = new(loc)
+ B.is_offspring = is_offspring
B.key = C.key
B.blob_core = src
overmind = B
color = overmind.blob_reagent_datum.color
if(B.mind && !B.mind.special_role)
B.mind.make_Overmind()
- B.is_offspring = is_offspring
/obj/structure/blob/core/proc/lateblobtimer()
addtimer(CALLBACK(src, .proc/lateblobcheck), 50)
diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm
index 90982d70e2b..0023328b463 100644
--- a/code/game/gamemodes/blob/blobs/node.dm
+++ b/code/game/gamemodes/blob/blobs/node.dm
@@ -11,7 +11,7 @@
GLOB.blob_nodes += src
START_PROCESSING(SSobj, src)
-/obj/structure/blob/node/adjustcolors(var/a_color)
+/obj/structure/blob/node/adjustcolors(a_color)
overlays.Cut()
color = null
var/image/I = new('icons/mob/blob.dmi', "blob")
diff --git a/code/game/gamemodes/blob/blobs/storage.dm b/code/game/gamemodes/blob/blobs/storage.dm
index b9052b3601a..ced60709575 100644
--- a/code/game/gamemodes/blob/blobs/storage.dm
+++ b/code/game/gamemodes/blob/blobs/storage.dm
@@ -11,6 +11,6 @@
overmind.max_blob_points -= 50
..()
-/obj/structure/blob/storage/proc/update_max_blob_points(var/new_point_increase)
+/obj/structure/blob/storage/proc/update_max_blob_points(new_point_increase)
if(overmind)
overmind.max_blob_points += new_point_increase
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index 7e60aeee6bf..e5da77c8196 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -55,13 +55,13 @@
if(blob_core && hud_used)
hud_used.blobhealthdisplay.maptext = "[round(blob_core.obj_integrity)] "
-/mob/camera/blob/proc/add_points(var/points)
+/mob/camera/blob/proc/add_points(points)
if(points != 0)
blob_points = clamp(blob_points + points, 0, max_blob_points)
if(hud_used)
hud_used.blobpwrdisplay.maptext = "[round(src.blob_points)] "
-/mob/camera/blob/say(var/message)
+/mob/camera/blob/say(message)
if(!message)
return
@@ -105,7 +105,7 @@
stat(null, "Core Health: [blob_core.obj_integrity]")
stat(null, "Power Stored: [blob_points]/[max_blob_points]")
-/mob/camera/blob/Move(var/NewLoc, var/Dir = 0)
+/mob/camera/blob/Move(NewLoc, Dir = 0)
var/obj/structure/blob/B = locate() in range("3x3", NewLoc)
if(B)
loc = NewLoc
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 40cde4ad9db..6ed1bc1aef8 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -1,6 +1,6 @@
// Point controlling procs
-/mob/camera/blob/proc/can_buy(var/cost = 15)
+/mob/camera/blob/proc/can_buy(cost = 15)
if(blob_points < cost)
to_chat(src, "You cannot afford this!")
return 0
@@ -50,7 +50,7 @@
var/turf/T = get_turf(src)
create_shield(T)
-/mob/camera/blob/proc/create_shield(var/turf/T)
+/mob/camera/blob/proc/create_shield(turf/T)
var/obj/structure/blob/B = locate(/obj/structure/blob) in T
var/obj/structure/blob/shield/S = locate(/obj/structure/blob/shield) in T
@@ -283,7 +283,7 @@
var/turf/T = get_turf(src)
remove_blob(T)
-/mob/camera/blob/proc/remove_blob(var/turf/T)
+/mob/camera/blob/proc/remove_blob(turf/T)
var/obj/structure/blob/B = locate(/obj/structure/blob) in T
if(!T)
@@ -312,7 +312,7 @@
var/turf/T = get_turf(src)
expand_blob(T)
-/mob/camera/blob/proc/expand_blob(var/turf/T)
+/mob/camera/blob/proc/expand_blob(turf/T)
if(!T)
return
@@ -350,7 +350,7 @@
var/turf/T = get_turf(src)
rally_spores(T)
-/mob/camera/blob/proc/rally_spores(var/turf/T)
+/mob/camera/blob/proc/rally_spores(turf/T)
to_chat(src, "You rally your spores.")
var/list/surrounding_turfs = block(locate(T.x - 1, T.y - 1, T.z), locate(T.x + 1, T.y + 1, T.z))
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index 2864854a1e9..b1c5ffde619 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -73,7 +73,7 @@
health_timestamp = world.time + 10 // 1 seconds
-/obj/structure/blob/proc/Pulse(var/pulse = 0, var/origin_dir = 0, var/a_color)//Todo: Fix spaceblob expand
+/obj/structure/blob/proc/Pulse(pulse = 0, origin_dir = 0, a_color)//Todo: Fix spaceblob expand
RegenHealth()
if(run_action())//If we can do something here then we dont need to pulse more
@@ -110,7 +110,7 @@
if(iswallturf(loc))
loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it
-/obj/structure/blob/proc/expand(var/turf/T = null, var/prob = 1, var/a_color)
+/obj/structure/blob/proc/expand(turf/T = null, prob = 1, a_color)
if(prob && !prob(obj_integrity))
return
if(istype(T, /turf/space) && prob(75)) return
@@ -139,7 +139,7 @@
A.blob_act(src)
return 1
-/obj/structure/blob/Crossed(var/mob/living/L, oldloc)
+/obj/structure/blob/Crossed(mob/living/L, oldloc)
..()
L.blob_act(src)
@@ -188,7 +188,7 @@
if(. && obj_integrity > 0)
update_icon()
-/obj/structure/blob/proc/change_to(var/type)
+/obj/structure/blob/proc/change_to(type)
if(!ispath(type))
error("[type] is an invalid type for the blob.")
var/obj/structure/blob/B = new type(src.loc)
@@ -198,7 +198,7 @@
B.adjustcolors(color)
qdel(src)
-/obj/structure/blob/proc/adjustcolors(var/a_color)
+/obj/structure/blob/proc/adjustcolors(a_color)
if(a_color)
color = a_color
return
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 7d074e869e7..01f87d3b758 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -147,6 +147,7 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","E
for(var/datum/objective/objective in changeling.objectives)
to_chat(changeling.current, "Objective #[obj_count]: [objective.explanation_text]")
obj_count++
+ to_chat(changeling.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Changeling)")
return
/datum/game_mode/proc/remove_changeling(datum/mind/changeling_mind)
diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/game/gamemodes/changeling/changeling_power.dm
index dc5c0f9f90c..47f83b4618b 100644
--- a/code/game/gamemodes/changeling/changeling_power.dm
+++ b/code/game/gamemodes/changeling/changeling_power.dm
@@ -25,7 +25,7 @@ if you override it, MAKE SURE you call parent or it will not be usable
the same goes for Remove(). if you override Remove(), call parent or else your power wont be removed on respec
*/
-/datum/action/changeling/proc/on_purchase(var/mob/user)
+/datum/action/changeling/proc/on_purchase(mob/user)
if(needs_button)
Grant(user)
@@ -46,18 +46,18 @@ the same goes for Remove(). if you override Remove(), call parent or else your p
sting_feedback(user, target)
take_chemical_cost(c)
-/datum/action/changeling/proc/sting_action(var/mob/user, var/mob/target)
+/datum/action/changeling/proc/sting_action(mob/user, mob/target)
return 0
-/datum/action/changeling/proc/sting_feedback(var/mob/user, var/mob/target)
+/datum/action/changeling/proc/sting_feedback(mob/user, mob/target)
return 0
-/datum/action/changeling/proc/take_chemical_cost(var/datum/changeling/changeling)
+/datum/action/changeling/proc/take_chemical_cost(datum/changeling/changeling)
changeling.chem_charges -= chemical_cost
changeling.geneticdamage += genetic_damage
//Fairly important to remember to return 1 on success >.<
-/datum/action/changeling/proc/can_sting(var/mob/user, var/mob/target)
+/datum/action/changeling/proc/can_sting(mob/user, mob/target)
if(!ishuman(user)) //typecast everything from mob to carbon from this point onwards
return 0
if(req_human && (!ishuman(user) || issmall(user)))
@@ -82,7 +82,7 @@ the same goes for Remove(). if you override Remove(), call parent or else your p
return 1
//used in /mob/Stat()
-/datum/action/changeling/proc/can_be_used_by(var/mob/user)
+/datum/action/changeling/proc/can_be_used_by(mob/user)
if(!ishuman(user))
return 0
if(req_human && !ishuman(user))
@@ -90,7 +90,7 @@ the same goes for Remove(). if you override Remove(), call parent or else your p
return 1
// Transform the target to the chosen dna. Used in transform.dm and tiny_prick.dm (handy for changes since it's the same thing done twice)
-/datum/action/changeling/proc/transform_dna(var/mob/living/carbon/human/H, var/datum/dna/D)
+/datum/action/changeling/proc/transform_dna(mob/living/carbon/human/H, datum/dna/D)
if(!D)
return
diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm
index 8485f8f0540..c07e8ac083b 100644
--- a/code/game/gamemodes/changeling/evolution_menu.dm
+++ b/code/game/gamemodes/changeling/evolution_menu.dm
@@ -84,7 +84,7 @@
view_mode = new_view_mode
return TRUE
-/datum/changeling/proc/purchasePower(var/mob/living/carbon/user, var/sting_name)
+/datum/changeling/proc/purchasePower(mob/living/carbon/user, sting_name)
var/datum/action/changeling/thepower = null
var/list/all_powers = init_subtypes(/datum/action/changeling)
@@ -122,7 +122,7 @@
return TRUE
//Reselect powers
-/datum/changeling/proc/lingRespec(var/mob/user)
+/datum/changeling/proc/lingRespec(mob/user)
if(!ishuman(user) || issmall(user))
to_chat(user, "We can't remove our evolutions in this form!")
return FALSE
@@ -136,7 +136,7 @@
to_chat(user, "You lack the power to readapt your evolutions!")
return FALSE
-/mob/proc/make_changeling(var/get_free_powers = TRUE)
+/mob/proc/make_changeling(get_free_powers = TRUE)
if(!mind)
return
if(!ishuman(src))
@@ -170,7 +170,7 @@
return 1
//Used to dump the languages from the changeling datum into the actual mob.
-/mob/proc/changeling_update_languages(var/updated_languages)
+/mob/proc/changeling_update_languages(updated_languages)
for(var/datum/language/L in updated_languages)
add_language("L.name")
@@ -190,7 +190,7 @@
chem_recharge_slowdown = initial(chem_recharge_slowdown)
mimicing = ""
-/mob/proc/remove_changeling_powers(var/keep_free_powers=0)
+/mob/proc/remove_changeling_powers(keep_free_powers=0)
if(ishuman(src))
if(mind && mind.changeling)
digitalcamo = 0
diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm
index bae3f75ce6b..33c0501c7d5 100644
--- a/code/game/gamemodes/changeling/powers/absorb.dm
+++ b/code/game/gamemodes/changeling/powers/absorb.dm
@@ -27,7 +27,7 @@
var/mob/living/carbon/target = G.affecting
return changeling.can_absorb_dna(user,target)
-/datum/action/changeling/absorbDNA/sting_action(var/mob/user)
+/datum/action/changeling/absorbDNA/sting_action(mob/user)
var/datum/changeling/changeling = user.mind.changeling
var/obj/item/grab/G = user.get_active_hand()
var/mob/living/carbon/human/target = G.affecting
@@ -101,7 +101,7 @@
return 1
//Absorbs the target DNA.
-/datum/changeling/proc/absorb_dna(mob/living/carbon/T, var/mob/user)
+/datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user)
T.dna.real_name = T.real_name //Set this again, just to be sure that it's properly set.
var/datum/dna/new_dna = T.dna.Clone()
//Steal all of their languages!
@@ -113,7 +113,7 @@
absorbedcount++
store_dna(new_dna, user)
-/datum/changeling/proc/store_dna(var/datum/dna/new_dna, var/mob/user)
+/datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user)
for(var/datum/objective/escape/escape_with_identity/E in user.mind.objectives)
if(E.target_real_name == new_dna.real_name)
protected_dna |= new_dna
diff --git a/code/game/gamemodes/changeling/powers/digitalcamo.dm b/code/game/gamemodes/changeling/powers/digitalcamo.dm
index d50a2afe5c7..29385d33636 100644
--- a/code/game/gamemodes/changeling/powers/digitalcamo.dm
+++ b/code/game/gamemodes/changeling/powers/digitalcamo.dm
@@ -6,7 +6,7 @@
dna_cost = 1
//Prevents AIs tracking you but makes you easily detectable to the human-eye.
-/datum/action/changeling/digitalcamo/sting_action(var/mob/user)
+/datum/action/changeling/digitalcamo/sting_action(mob/user)
if(user.digitalcamo)
to_chat(user, "We return to normal.")
diff --git a/code/game/gamemodes/changeling/powers/epinephrine.dm b/code/game/gamemodes/changeling/powers/epinephrine.dm
index 758e9215ed8..ef22de10ce4 100644
--- a/code/game/gamemodes/changeling/powers/epinephrine.dm
+++ b/code/game/gamemodes/changeling/powers/epinephrine.dm
@@ -9,7 +9,7 @@
req_stat = UNCONSCIOUS
//Recover from stuns.
-/datum/action/changeling/epinephrine/sting_action(var/mob/living/user)
+/datum/action/changeling/epinephrine/sting_action(mob/living/user)
if(user.lying)
to_chat(user, "We arise.")
diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/game/gamemodes/changeling/powers/fakedeath.dm
index 343a8e1e1c7..b29dd5f8ac6 100644
--- a/code/game/gamemodes/changeling/powers/fakedeath.dm
+++ b/code/game/gamemodes/changeling/powers/fakedeath.dm
@@ -9,7 +9,7 @@
max_genetic_damage = 100
//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay.
-/datum/action/changeling/fakedeath/sting_action(var/mob/living/user)
+/datum/action/changeling/fakedeath/sting_action(mob/living/user)
to_chat(user, "We begin our stasis, preparing energy to arise once more.")
if(user.stat != DEAD)
@@ -30,7 +30,7 @@
var/datum/action/changeling/revive/R = new
R.Grant(user)
-/datum/action/changeling/fakedeath/can_sting(var/mob/user)
+/datum/action/changeling/fakedeath/can_sting(mob/user)
if(HAS_TRAIT(user, TRAIT_FAKEDEATH))
to_chat(user, "We are already regenerating.")
return
diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm
index 6ed396c0cba..99cb6164aa6 100644
--- a/code/game/gamemodes/changeling/powers/fleshmend.dm
+++ b/code/game/gamemodes/changeling/powers/fleshmend.dm
@@ -25,7 +25,7 @@
recent_uses = max(1, recent_uses - (1 / healing_ticks))
//Starts healing you every second for 10 seconds. Can be used whilst unconscious.
-/datum/action/changeling/fleshmend/sting_action(var/mob/living/user)
+/datum/action/changeling/fleshmend/sting_action(mob/living/user)
to_chat(user, "We begin to heal rapidly.")
if(recent_uses > 1)
to_chat(user, "Our healing's effectiveness is reduced \
diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/game/gamemodes/changeling/powers/hivemind.dm
index 6506f25263c..f67b222189d 100644
--- a/code/game/gamemodes/changeling/powers/hivemind.dm
+++ b/code/game/gamemodes/changeling/powers/hivemind.dm
@@ -7,7 +7,7 @@
chemical_cost = -1
needs_button = FALSE
-/datum/action/changeling/hivemind_comms/on_purchase(var/mob/user)
+/datum/action/changeling/hivemind_comms/on_purchase(mob/user)
..()
var/datum/changeling/changeling=user.mind.changeling
changeling.changeling_speak = 1
diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm
index fd00afab30a..bc413fae216 100644
--- a/code/game/gamemodes/changeling/powers/humanform.dm
+++ b/code/game/gamemodes/changeling/powers/humanform.dm
@@ -8,7 +8,7 @@
max_genetic_damage = 3
//Transform into a human.
-/datum/action/changeling/humanform/sting_action(var/mob/living/carbon/human/user)
+/datum/action/changeling/humanform/sting_action(mob/living/carbon/human/user)
var/datum/changeling/changeling = user.mind.changeling
var/list/names = list()
for(var/datum/dna/DNA in (changeling.absorbed_dna+changeling.protected_dna))
diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm
index c492c47f9c6..9622cb4f48e 100644
--- a/code/game/gamemodes/changeling/powers/lesserform.dm
+++ b/code/game/gamemodes/changeling/powers/lesserform.dm
@@ -9,7 +9,7 @@
req_human = 1
//Transform into a monkey.
-/datum/action/changeling/lesserform/sting_action(var/mob/living/carbon/human/user)
+/datum/action/changeling/lesserform/sting_action(mob/living/carbon/human/user)
var/datum/changeling/changeling = user.mind.changeling
if(!user)
return 0
diff --git a/code/game/gamemodes/changeling/powers/mimic_voice.dm b/code/game/gamemodes/changeling/powers/mimic_voice.dm
index bcbe91a3cb6..cddb369963a 100644
--- a/code/game/gamemodes/changeling/powers/mimic_voice.dm
+++ b/code/game/gamemodes/changeling/powers/mimic_voice.dm
@@ -9,7 +9,7 @@
// Fake Voice
-/datum/action/changeling/mimicvoice/sting_action(var/mob/user)
+/datum/action/changeling/mimicvoice/sting_action(mob/user)
var/datum/changeling/changeling=user.mind.changeling
if(changeling.mimicing)
changeling.mimicing = ""
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index fb2d19e7d0b..420628a0198 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -21,7 +21,7 @@
var/weapon_type
var/weapon_name_simple
-/datum/action/changeling/weapon/try_to_sting(var/mob/user, var/mob/target)
+/datum/action/changeling/weapon/try_to_sting(mob/user, mob/target)
if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh
qdel(user.l_hand)
if(!silent)
@@ -36,7 +36,7 @@
return
..(user, target)
-/datum/action/changeling/weapon/sting_action(var/mob/user)
+/datum/action/changeling/weapon/sting_action(mob/user)
if(!user.drop_item())
to_chat(user, "The [user.get_active_hand()] is stuck to your hand, you cannot grow a [weapon_name_simple] over it!")
return
@@ -60,7 +60,7 @@
var/recharge_slowdown = 0
var/blood_on_castoff = 0
-/datum/action/changeling/suit/try_to_sting(var/mob/user, var/mob/target)
+/datum/action/changeling/suit/try_to_sting(mob/user, mob/target)
var/datum/changeling/changeling = user.mind.changeling
if(!ishuman(user) || !changeling)
return
@@ -84,7 +84,7 @@
return
..(H, target)
-/datum/action/changeling/suit/sting_action(var/mob/living/carbon/human/user)
+/datum/action/changeling/suit/sting_action(mob/living/carbon/human/user)
if(!user.unEquip(user.wear_suit))
to_chat(user, "\the [user.wear_suit] is stuck to your body, you cannot grow a [suit_name_simple] over it!")
return
@@ -358,7 +358,7 @@
weapon_type = /obj/item/shield/changeling
weapon_name_simple = "shield"
-/datum/action/changeling/weapon/shield/sting_action(var/mob/user)
+/datum/action/changeling/weapon/shield/sting_action(mob/user)
var/datum/changeling/changeling = user.mind.changeling //So we can read the absorbedcount.
if(!changeling)
return
diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm
index 914a73fa7b4..bc0ff435b38 100644
--- a/code/game/gamemodes/changeling/powers/panacea.dm
+++ b/code/game/gamemodes/changeling/powers/panacea.dm
@@ -8,7 +8,7 @@
req_stat = UNCONSCIOUS
//Heals the things that the other regenerative abilities don't.
-/datum/action/changeling/panacea/sting_action(var/mob/user)
+/datum/action/changeling/panacea/sting_action(mob/user)
to_chat(user, "We cleanse impurities from our form.")
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index 13b3877b9bb..8ebe5ba48d8 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -6,7 +6,7 @@
always_keep = 1
//Revive from regenerative stasis
-/datum/action/changeling/revive/sting_action(var/mob/living/carbon/user)
+/datum/action/changeling/revive/sting_action(mob/living/carbon/user)
user.setToxLoss(0, FALSE)
user.setOxyLoss(0, FALSE)
user.setCloneLoss(0, FALSE)
diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm
index 9678a71bc72..b7d021a10d6 100644
--- a/code/game/gamemodes/changeling/powers/shriek.dm
+++ b/code/game/gamemodes/changeling/powers/shriek.dm
@@ -8,7 +8,7 @@
req_human = 1
//A flashy ability, good for crowd control and sowing chaos.
-/datum/action/changeling/resonant_shriek/sting_action(var/mob/user)
+/datum/action/changeling/resonant_shriek/sting_action(mob/user)
for(var/mob/living/M in get_mobs_in_view(4, user))
if(iscarbon(M))
if(ishuman(M))
@@ -41,7 +41,7 @@
dna_cost = 1
//A flashy ability, good for crowd control and sewing chaos.
-/datum/action/changeling/dissonant_shriek/sting_action(var/mob/user)
+/datum/action/changeling/dissonant_shriek/sting_action(mob/user)
for(var/obj/machinery/light/L in range(5, usr))
L.on = 1
L.break_light_tube()
diff --git a/code/game/gamemodes/changeling/powers/spiders.dm b/code/game/gamemodes/changeling/powers/spiders.dm
index 5577007a155..4139928dc3c 100644
--- a/code/game/gamemodes/changeling/powers/spiders.dm
+++ b/code/game/gamemodes/changeling/powers/spiders.dm
@@ -8,7 +8,7 @@
req_dna = 5
//Makes some spiderlings. Good for setting traps and causing general trouble.
-/datum/action/changeling/spiders/sting_action(var/mob/user)
+/datum/action/changeling/spiders/sting_action(mob/user)
for(var/i=0, i<2, i++)
var/obj/structure/spider/spiderling/S = new(user.loc)
S.grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/hunter
diff --git a/code/game/gamemodes/changeling/powers/strained_muscles.dm b/code/game/gamemodes/changeling/powers/strained_muscles.dm
index 038cf76331c..a89daed095f 100644
--- a/code/game/gamemodes/changeling/powers/strained_muscles.dm
+++ b/code/game/gamemodes/changeling/powers/strained_muscles.dm
@@ -12,7 +12,7 @@
var/stacks = 0 //Increments every 5 seconds; damage increases over time
var/enabled = 0 //Whether or not you are a hedgehog
-/datum/action/changeling/strained_muscles/sting_action(var/mob/living/carbon/user)
+/datum/action/changeling/strained_muscles/sting_action(mob/living/carbon/user)
enabled = !enabled
if(enabled)
to_chat(user, "Our muscles tense and strengthen.")
diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm
index 4c44b97f47e..b155cccf5db 100644
--- a/code/game/gamemodes/changeling/powers/swap_form.dm
+++ b/code/game/gamemodes/changeling/powers/swap_form.dm
@@ -7,7 +7,7 @@
dna_cost = 1
req_human = 1 //Monkeys can't grab
-/datum/action/changeling/swap_form/can_sting(var/mob/living/carbon/user)
+/datum/action/changeling/swap_form/can_sting(mob/living/carbon/user)
if(!..())
return
var/obj/item/grab/G = user.get_active_hand()
@@ -29,7 +29,7 @@
return
return 1
-/datum/action/changeling/swap_form/sting_action(var/mob/living/carbon/user)
+/datum/action/changeling/swap_form/sting_action(mob/living/carbon/user)
var/obj/item/grab/G = user.get_active_hand()
var/mob/living/carbon/human/target = G.affecting
var/datum/changeling/changeling = user.mind.changeling
diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm
index 95432db9424..14d93439510 100644
--- a/code/game/gamemodes/changeling/powers/tiny_prick.dm
+++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm
@@ -37,7 +37,7 @@
if(mind && mind.changeling && mind.changeling.chosen_sting)
mind.changeling.chosen_sting.unset_sting(src)
-/datum/action/changeling/sting/can_sting(var/mob/user, var/mob/target)
+/datum/action/changeling/sting/can_sting(mob/user, mob/target)
if(!..())
return
if(!user.mind.changeling.chosen_sting)
@@ -57,7 +57,7 @@
return
return 1
-/datum/action/changeling/sting/sting_feedback(var/mob/user, var/mob/target)
+/datum/action/changeling/sting/sting_feedback(mob/user, mob/target)
if(!target)
return
to_chat(user, "We stealthily sting [target.name].")
@@ -91,10 +91,10 @@
return
..()
-/datum/action/changeling/sting/transformation/can_sting(var/mob/user, var/mob/target)
+/datum/action/changeling/sting/transformation/can_sting(mob/user, mob/target)
if(!..())
return
- if(HAS_TRAIT(target, TRAIT_HUSK) || (!ishuman(target)))
+ if(HAS_TRAIT(target, TRAIT_HUSK) || !ishuman(target) || (NOTRANSSTING in target.dna.species.species_traits))
to_chat(user, "Our sting appears ineffective against its DNA.")
return FALSE
if(ishuman(target))
@@ -104,7 +104,7 @@
return FALSE
return TRUE
-/datum/action/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target)
+/datum/action/changeling/sting/transformation/sting_action(mob/user, mob/target)
add_attack_logs(user, target, "Transformation sting (changeling) (new identity is [selected_dna.real_name])")
if(issmall(target))
to_chat(user, "Our genes cry out as we sting [target.name]!")
@@ -129,11 +129,11 @@
chemical_cost = 25
dna_cost = 0
-/datum/action/changeling/sting/extract_dna/can_sting(var/mob/user, var/mob/target)
+/datum/action/changeling/sting/extract_dna/can_sting(mob/user, mob/target)
if(..())
return user.mind.changeling.can_absorb_dna(user, target)
-/datum/action/changeling/sting/extract_dna/sting_action(var/mob/user, var/mob/living/carbon/human/target)
+/datum/action/changeling/sting/extract_dna/sting_action(mob/user, mob/living/carbon/human/target)
add_attack_logs(user, target, "Extraction sting (changeling)")
if(!(user.mind.changeling.has_dna(target.dna)))
user.mind.changeling.absorb_dna(target, user)
@@ -149,7 +149,7 @@
chemical_cost = 20
dna_cost = 2
-/datum/action/changeling/sting/mute/sting_action(var/mob/user, var/mob/living/carbon/target)
+/datum/action/changeling/sting/mute/sting_action(mob/user, mob/living/carbon/target)
add_attack_logs(user, target, "Mute sting (changeling)")
target.AdjustSilence(30)
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
@@ -164,7 +164,7 @@
chemical_cost = 25
dna_cost = 1
-/datum/action/changeling/sting/blind/sting_action(var/mob/living/user, var/mob/living/target)
+/datum/action/changeling/sting/blind/sting_action(mob/living/user, mob/living/target)
add_attack_logs(user, target, "Blind sting (changeling)")
to_chat(target, "Your eyes burn horrifically!")
target.become_nearsighted(EYE_DAMAGE)
@@ -182,7 +182,7 @@
chemical_cost = 10
dna_cost = 1
-/datum/action/changeling/sting/LSD/sting_action(var/mob/user, var/mob/living/carbon/target)
+/datum/action/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target)
add_attack_logs(user, target, "LSD sting (changeling)")
spawn(rand(300,600))
if(target)
@@ -199,7 +199,7 @@
chemical_cost = 15
dna_cost = 2
-/datum/action/changeling/sting/cryo/sting_action(var/mob/user, var/mob/target)
+/datum/action/changeling/sting/cryo/sting_action(mob/user, mob/target)
add_attack_logs(user, target, "Cryo sting (changeling)")
if(target.reagents)
target.reagents.add_reagent("frostoil", 30)
diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm
index f486195b8db..3aaed08b965 100644
--- a/code/game/gamemodes/changeling/powers/transform.dm
+++ b/code/game/gamemodes/changeling/powers/transform.dm
@@ -9,7 +9,7 @@
max_genetic_damage = 3
//Change our DNA to that of somebody we've absorbed.
-/datum/action/changeling/transform/sting_action(var/mob/living/carbon/human/user)
+/datum/action/changeling/transform/sting_action(mob/living/carbon/human/user)
var/datum/changeling/changeling = user.mind.changeling
var/datum/dna/chosen_dna = changeling.select_dna("Select the target DNA: ", "Target DNA")
@@ -23,7 +23,7 @@
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
return 1
-/datum/changeling/proc/select_dna(var/prompt, var/title)
+/datum/changeling/proc/select_dna(prompt, title)
var/list/names = list()
for(var/datum/dna/DNA in (absorbed_dna+protected_dna))
names += "[DNA.real_name]"
diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm
index 2583fd693d3..c1b4f6a98d5 100644
--- a/code/game/gamemodes/cult/blood_magic.dm
+++ b/code/game/gamemodes/cult/blood_magic.dm
@@ -249,7 +249,7 @@
/datum/action/innate/cult/blood_spell/horror/Destroy()
var/obj/effect/proc_holder/horror/destroy = PH
. = ..()
- if(destroy && !QDELETED(destroy))
+ if(!QDELETED(destroy))
QDEL_NULL(destroy)
/datum/action/innate/cult/blood_spell/horror/Activate()
@@ -264,7 +264,7 @@
/obj/effect/proc_holder/horror/Destroy()
var/datum/action/innate/cult/blood_spell/AA = attached_action
. = ..()
- if(AA && !QDELETED(AA))
+ if(!QDELETED(AA))
QDEL_NULL(AA)
/obj/effect/proc_holder/horror/proc/toggle(mob/user)
@@ -464,9 +464,15 @@
var/list/potential_runes = list()
var/list/teleportnames = list()
var/list/duplicaterunecount = list()
+ var/atom/movable/teleportee
if(!iscultist(target) || !proximity)
to_chat(user, "You can only teleport adjacent cultists with this spell!")
return
+ if(user != target) // So that the teleport effect shows on the correct mob
+ teleportee = target
+ else
+ teleportee = user
+
for(var/R in GLOB.teleport_runes)
var/obj/effect/rune/teleport/T = R
var/resultkey = T.listkey
@@ -487,16 +493,15 @@
log_game("Teleport spell failed - user in away mission")
return
- var/mob/living/L = target
var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
- if(!src || QDELETED(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune)
+ if(QDELETED(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune)
return
uses--
- var/turf/origin = get_turf(user)
+ var/turf/origin = get_turf(teleportee)
var/turf/destination = get_turf(actual_selected_rune)
- INVOKE_ASYNC(actual_selected_rune, /obj/effect/rune/.proc/teleport_effect, user, origin, destination)
+ INVOKE_ASYNC(actual_selected_rune, /obj/effect/rune/.proc/teleport_effect, teleportee, origin, destination)
if(is_mining_level(user.z) && !is_mining_level(destination.z)) //No effect if you stay on lavaland
actual_selected_rune.handle_portal("lava")
@@ -510,7 +515,7 @@
target.visible_message("Dust flows from [user]'s hand, and [target] disappears in a flash of red light!", \
"You suddenly find yourself somewhere else!")
destination.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.")
- L.forceMove(destination)
+ teleportee.forceMove(destination)
return ..()
//Shackles
@@ -658,7 +663,7 @@
/obj/item/melee/blood_magic/empower/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(proximity_flag)
- //Shielded suit
+ // Shielded suit
if(istype(target, /obj/item/clothing/suit/hooded/cultrobes/cult_shield))
var/obj/item/clothing/suit/hooded/cultrobes/cult_shield/C = target
if(C.current_charges < 3)
@@ -672,7 +677,7 @@
to_chat(user, "[target] is already at full charge!")
return
- //Plasteel to runed metal
+ // Veil Shifter
else if(istype(target, /obj/item/cult_shift))
var/obj/item/cult_shift/S = target
if(S.uses < 4)
@@ -846,39 +851,6 @@
var/list/options = list("Blood Orb (50)", "Blood Recharge (75)", "Blood Spear (150)", "Blood Bolt Barrage (300)")
var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options
switch(choice)
- if("Blood Spear (150)")
- if(uses < BLOOD_SPEAR_COST)
- to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.")
- else
- uses -= BLOOD_SPEAR_COST
- var/turf/T = get_turf(user)
- qdel(src)
- var/datum/action/innate/cult/spear/S = new(user)
- var/obj/item/twohanded/cult_spear/rite = new(T)
- S.Grant(user, rite)
- rite.spear_act = S
- if(user.put_in_hands(rite))
- to_chat(user, "A [rite.name] appears in your hand!")
- else
- user.visible_message("A [rite.name] appears at [user]'s feet!", \
- "A [rite.name] materializes at your feet.")
-
- if("Blood Bolt Barrage (300)")
- if(uses < BLOOD_BARRAGE_COST)
- to_chat(user, "You need [BLOOD_BARRAGE_COST] charges to perform this rite.")
- else
- var/obj/rite = new /obj/item/gun/projectile/shotgun/boltaction/enchanted/arcane_barrage/blood()
- uses -= BLOOD_BARRAGE_COST
- qdel(src)
- user.swap_hand()
- user.drop_item()
- if(user.put_in_hands(rite))
- to_chat(user, "Both of your hands glow with power!")
- else
- to_chat(user, "You need a free hand for this rite!")
- uses += BLOOD_BARRAGE_COST // Refund the charges
- qdel(rite)
-
if("Blood Orb (50)")
if(uses < BLOOD_ORB_COST)
to_chat(user, "You need [BLOOD_ORB_COST] charges to perform this rite.")
@@ -898,7 +870,7 @@
if(user.put_in_hands(rite))
to_chat(user, "A [rite.name] appears in your hand!")
else
- user.visible_message("A [rite.name] appears at [user]'s feet!", \
+ user.visible_message("A [rite.name] appears at [user]'s feet!",
"A [rite.name] materializes at your feet.")
if("Blood Recharge (75)")
@@ -914,3 +886,36 @@
to_chat(user, "You need a free hand for this rite!")
uses += BLOOD_RECHARGE_COST // Refund the charges
qdel(rite)
+
+ if("Blood Spear (150)")
+ if(uses < BLOOD_SPEAR_COST)
+ to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.")
+ else
+ uses -= BLOOD_SPEAR_COST
+ var/turf/T = get_turf(user)
+ qdel(src)
+ var/datum/action/innate/cult/spear/S = new(user)
+ var/obj/item/twohanded/cult_spear/rite = new(T)
+ S.Grant(user, rite)
+ rite.spear_act = S
+ if(user.put_in_hands(rite))
+ to_chat(user, "A [rite.name] appears in your hand!")
+ else
+ user.visible_message("A [rite.name] appears at [user]'s feet!",
+ "A [rite.name] materializes at your feet.")
+
+ if("Blood Bolt Barrage (300)")
+ if(uses < BLOOD_BARRAGE_COST)
+ to_chat(user, "You need [BLOOD_BARRAGE_COST] charges to perform this rite.")
+ else
+ var/obj/rite = new /obj/item/gun/projectile/shotgun/boltaction/enchanted/arcane_barrage/blood()
+ uses -= BLOOD_BARRAGE_COST
+ qdel(src)
+ user.swap_hand()
+ user.drop_item()
+ if(user.put_in_hands(rite))
+ to_chat(user, "Both of your hands glow with power!")
+ else
+ to_chat(user, "You need a free hand for this rite!")
+ uses += BLOOD_BARRAGE_COST // Refund the charges
+ qdel(rite)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 04c9e13b605..fb15a380c60 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -85,6 +85,9 @@ GLOBAL_LIST_EMPTY(all_cults)
to_chat(cult_mind.current, CULT_GREETING)
equip_cultist(cult_mind.current)
cult_mind.current.faction |= "cult"
+ var/datum/objective/servecult/obj = new
+ obj.owner = cult_mind
+ cult_mind.objectives += obj
if(cult_mind.assigned_role == "Clown")
to_chat(cult_mind.current, "A dark power has allowed you to overcome your clownish nature, letting you wield weapons without harming yourself.")
@@ -96,54 +99,11 @@ GLOBAL_LIST_EMPTY(all_cults)
add_cult_actions(cult_mind)
update_cult_icons_added(cult_mind)
cult_objs.study(cult_mind.current)
+ to_chat(cult_mind.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Cultist)")
cult_threshold_check()
addtimer(CALLBACK(src, .proc/cult_threshold_check), 2 MINUTES) // Check again in 2 minutes for latejoiners
..()
-/**
- * Decides at the start of the round how many conversions are needed to rise/ascend.
- *
- * The number is decided by (Percentage * (Players - Cultists)), so for example at 110 players it would be 11 conversions for rise. (0.1 * (110 - 4))
- * These values change based on population because 20 cultists are MUCH more powerful if there's only 50 players, compared to 120.
- *
- * Below 100 players, [CULT_RISEN_LOW] and [CULT_ASCENDANT_LOW] are used.
- * Above 100 players, [CULT_RISEN_HIGH] and [CULT_ASCENDANT_HIGH] are used.
- */
-/datum/game_mode/proc/cult_threshold_check()
- var/players = length(GLOB.player_list)
- var/cultists = get_cultists() // Don't count the starting cultists towards the number of needed conversions
- if(players >= CULT_POPULATION_THRESHOLD)
- // Highpop
- ascend_percent = CULT_ASCENDANT_HIGH
- rise_number = round(CULT_RISEN_HIGH * (players - cultists))
- ascend_number = round(CULT_ASCENDANT_HIGH * (players - cultists))
- else
- // Lowpop
- ascend_percent = CULT_ASCENDANT_LOW
- rise_number = round(CULT_RISEN_LOW * (players - cultists))
- ascend_number = round(CULT_ASCENDANT_LOW * (players - cultists))
-
-/**
- * Returns the current number of cultists and constructs.
- *
- * Returns the number of cultists and constructs in a list ([1] = Cultists, [2] = Constructs), or as one combined number.
- *
- * * separate - Should the number be returned in two separate values (Humans and Constructs) or as one?
- */
-/datum/game_mode/proc/get_cultists(separate = FALSE)
- var/cultists = 0
- var/constructs = 0
- for(var/I in cult)
- var/datum/mind/M = I
- if(ishuman(M.current) && !M.current.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST))
- cultists++
- else if(isconstruct(M.current))
- constructs++
- if(separate)
- return list(cultists, constructs)
- else
- return cultists + constructs
-
/datum/game_mode/proc/equip_cultist(mob/living/carbon/human/H, metal = TRUE)
if(!istype(H))
return
@@ -207,8 +167,84 @@ GLOBAL_LIST_EMPTY(all_cults)
ascend(cult_mind.current)
check_cult_size()
cult_objs.study(cult_mind.current)
+ to_chat(cult_mind.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Cultist)")
return TRUE
+/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = TRUE, remove_gear = FALSE)
+ if(!(cult_mind in cult)) // Not actually a cultist in the first place
+ return
+
+ var/mob/cultist = cult_mind.current
+ cult -= cult_mind
+ cultist.faction -= "cult"
+ cult_mind.special_role = null
+ for(var/datum/objective/servecult/S in cult_mind.objectives)
+ cult_mind.objectives -= S
+ qdel(S)
+ for(var/datum/action/innate/cult/C in cultist.actions)
+ qdel(C)
+ update_cult_icons_removed(cult_mind)
+
+ if(ishuman(cultist))
+ var/mob/living/carbon/human/H = cultist
+ REMOVE_TRAIT(H, CULT_EYES, null)
+ H.change_eye_color(H.original_eye_color, FALSE)
+ H.update_eyes()
+ H.remove_overlay(HALO_LAYER)
+ H.update_body()
+ if(remove_gear) // No flagellants robe for non-cultists
+ for(var/I in H.contents)
+ if(is_type_in_list(I, CULT_CLOTHING))
+ H.unEquip(I)
+ check_cult_size()
+ if(show_message)
+ cultist.visible_message("[cultist] looks like [cultist.p_they()] just reverted to [cultist.p_their()] old faith!",
+ "An unfamiliar white light flashes through your mind, cleansing the taint of [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "Nar'Sie"] and the memories of your time as their servant with it.")
+
+
+/**
+ * Decides at the start of the round how many conversions are needed to rise/ascend.
+ *
+ * The number is decided by (Percentage * (Players - Cultists)), so for example at 110 players it would be 11 conversions for rise. (0.1 * (110 - 4))
+ * These values change based on population because 20 cultists are MUCH more powerful if there's only 50 players, compared to 120.
+ *
+ * Below 100 players, [CULT_RISEN_LOW] and [CULT_ASCENDANT_LOW] are used.
+ * Above 100 players, [CULT_RISEN_HIGH] and [CULT_ASCENDANT_HIGH] are used.
+ */
+/datum/game_mode/proc/cult_threshold_check()
+ var/players = length(GLOB.player_list)
+ var/cultists = get_cultists() // Don't count the starting cultists towards the number of needed conversions
+ if(players >= CULT_POPULATION_THRESHOLD)
+ // Highpop
+ ascend_percent = CULT_ASCENDANT_HIGH
+ rise_number = round(CULT_RISEN_HIGH * (players - cultists))
+ ascend_number = round(CULT_ASCENDANT_HIGH * (players - cultists))
+ else
+ // Lowpop
+ ascend_percent = CULT_ASCENDANT_LOW
+ rise_number = round(CULT_RISEN_LOW * (players - cultists))
+ ascend_number = round(CULT_ASCENDANT_LOW * (players - cultists))
+
+/**
+ * Returns the current number of cultists and constructs.
+ *
+ * Returns the number of cultists and constructs in a list ([1] = Cultists, [2] = Constructs), or as one combined number.
+ *
+ * * separate - Should the number be returned as a list with two separate values (Humans and Constructs) or as one number.
+ */
+/datum/game_mode/proc/get_cultists(separate = FALSE)
+ var/cultists = 0
+ var/constructs = 0
+ for(var/I in cult)
+ var/datum/mind/M = I
+ if(ishuman(M.current) && !M.current.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST))
+ cultists++
+ else if(isconstruct(M.current))
+ constructs++
+ if(separate)
+ return list(cultists, constructs)
+ else
+ return cultists + constructs
/datum/game_mode/proc/check_cult_size()
if(cult_ascendant)
@@ -238,6 +274,8 @@ GLOBAL_LIST_EMPTY(all_cults)
/datum/game_mode/proc/rise(cultist)
if(ishuman(cultist) && iscultist(cultist))
var/mob/living/carbon/human/H = cultist
+ if(!H.original_eye_color)
+ H.original_eye_color = H.get_eye_color()
H.change_eye_color(BLOODCULT_EYE, FALSE)
H.update_eyes()
ADD_TRAIT(H, CULT_EYES, CULT_TRAIT)
@@ -249,29 +287,6 @@ GLOBAL_LIST_EMPTY(all_cults)
new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir)
H.update_halo_layer()
-
-/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = TRUE)
- if(cult_mind in cult)
- var/mob/cultist = cult_mind.current
- cult -= cult_mind
- cultist.faction -= "cult"
- cult_mind.special_role = null
- for(var/datum/action/innate/cult/C in cultist.actions)
- qdel(C)
- update_cult_icons_removed(cult_mind)
-
- if(ishuman(cultist))
- var/mob/living/carbon/human/H = cultist
- REMOVE_TRAIT(H, CULT_EYES, null)
- H.change_eye_color(H.original_eye_color, FALSE)
- H.update_eyes()
- H.remove_overlay(HALO_LAYER)
- H.update_body()
- check_cult_size()
- if(show_message)
- cultist.visible_message("[cultist] looks like [cultist.p_they()] just reverted to [cultist.p_their()] old faith!",
- "An unfamiliar white light flashes through your mind, cleansing the taint of [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "Nar'Sie"] and the memories of your time as their servant with it.")
-
/datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind)
var/datum/atom_hud/antag/culthud = GLOB.huds[ANTAG_HUD_CULT]
if(cult_mind.current)
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index ca1938a76ea..24ffbb96ce3 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -316,7 +316,8 @@
var/mob/living/carbon/C = user
if(C.pulling)
var/atom/movable/pulled = C.pulling
- pulled.forceMove(T)
+ var/turf/turf_behind = get_turf(get_step(T, turn(C.dir, 180)))
+ pulled.forceMove(turf_behind)
. = pulled
/obj/item/cult_shift/attack_self(mob/user)
@@ -324,7 +325,7 @@
to_chat(user, "[src] is dull and unmoving in your hands.")
return
if(!iscultist(user))
- user.unEquip(src, 1)
+ user.unEquip(src, TRUE)
step(src, pick(GLOB.alldirs))
to_chat(user, "[src] flickers out of your hands, too eager to move!")
return
@@ -332,36 +333,31 @@
var/outer_tele_radius = 9
var/mob/living/carbon/C = user
- var/turf/mobloc = get_turf(C)
- var/list/turfs = new/list()
- for(var/turf/T in range(user, outer_tele_radius))
+ var/list/turfs = list()
+ for(var/turf/T in orange(user, outer_tele_radius))
if(!is_teleport_allowed(T.z))
break
- if(get_dir(C, T) != C.dir)
+ if(get_dir(C, T) != C.dir) // This seems like a very bad way to do this
continue
- if(T == mobloc)
- continue
- if(istype(T, /turf/space))
+ if(isspaceturf(T))
continue
if(T.x > world.maxx-outer_tele_radius || T.x < outer_tele_radius)
continue //putting them at the edge is dumb
if(T.y > world.maxy-outer_tele_radius || T.y < outer_tele_radius)
continue
-
turfs += T
- if(turfs)
+ if(length(turfs))
uses--
+ var/turf/mobloc = get_turf(C)
var/turf/destination = pick(turfs)
if(uses <= 0)
- icon_state ="shifter_drained"
- playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
+ icon_state = "shifter_drained"
+ playsound(src, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, C.dir)
- var/atom/movable/pulled = handle_teleport_grab(destination, C)
+ handle_teleport_grab(destination, C)
C.forceMove(destination)
- if(pulled)
- C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull
new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir)
playsound(destination, 'sound/effects/phasein.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm
index 4565e66ff29..ca8921b7534 100644
--- a/code/game/gamemodes/cult/cult_objectives.dm
+++ b/code/game/gamemodes/cult/cult_objectives.dm
@@ -133,13 +133,13 @@
for(var/mob/living/carbon/human/H in GLOB.player_list)
if(is_admin_level(H.z)) //We can't sacrifice people that are on the centcom z-level
continue
- if(H.mind && !is_convertable_to_cult(H.mind) && (H.stat != DEAD) && (H.mind.offstation_role != TRUE))
+ if(H.mind && !iscultist(H) && !is_convertable_to_cult(H.mind) && (H.stat != DEAD) && !H.mind.offstation_role)
target_candidates += H.mind
if(!length(target_candidates)) //There are no living unconvertables on the station. Looking for a Sacrifice Target among the ordinary crewmembers
for(var/mob/living/carbon/human/H in GLOB.player_list)
if(is_admin_level(H.z)) //We can't sacrifice people that are on the centcom z-level
continue
- if(H.mind && !iscultist(H) && (H.stat != DEAD) && (H.mind.offstation_role != TRUE))
+ if(H.mind && !iscultist(H) && (H.stat != DEAD) && !H.mind.offstation_role) // Same checks, but add them even if they could be converted
target_candidates += H.mind
if(length(target_candidates))
target = pick(target_candidates)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 5211b82ea44..47a53ef89c6 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -84,6 +84,10 @@
/obj/item/melee/cultblade/dagger/proc/can_scribe(mob/living/user)
if(!src || !user || loc != user || user.incapacitated())
return FALSE
+ if(drawing_rune)
+ to_chat(user, "You're already drawing a rune!")
+ return FALSE
+
var/turf/T = get_turf(user)
if(isspaceturf(T))
return FALSE
@@ -135,12 +139,12 @@
to_chat(user, "The veil is not weak enough here to summon a cultist, you must be on station!")
return
- var/old_color = user.color // we'll temporarily redden the user for better feedback to fellow cultists. Store this to revert them back.
+ var/old_color = user.color // we'll temporarily redden the user for better feedback to fellow cultists. Store this to revert them back.
if(narsie_rune)
if(!narsie_rune_check(user, A))
return // don't do shit
var/list/summon_areas = gamemode.cult_objs.obj_summon.summon_spots
- if(!(A in summon_areas)) // Check again to make sure they didn't move
+ if(!(A in summon_areas)) // Check again to make sure they didn't move
to_chat(user, "The ritual can only begin where the veil is weak - in [english_list(summon_areas)]!")
return
GLOB.command_announcement.Announce("Figments from an eldritch god are being summoned into the [A.map_name] from an unknown dimension. Disrupt the ritual at all costs, before the station is destroyed! Space law and SOP are suspended. The entire crew must kill cultists on sight.", "Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg')
@@ -148,7 +152,7 @@
var/turf/T = I
var/obj/machinery/shield/cult/narsie/N = new(T)
shields |= N
- user.color = "red"
+ user.color = COLOR_RED
// Draw the rune
var/mob/living/carbon/human/H = user
@@ -161,12 +165,14 @@
user.visible_message(others_message,
"You slice open your body and begin drawing a sigil of [SSticker.cultdat.entity_title3].")
+ drawing_rune = TRUE // Only one at a time
var/scribe_successful = do_after(user, initial(rune.scribe_delay) * scribe_multiplier, target = runeturf)
for(var/V in shields) // Only used for the 'Tear Veil' rune
var/obj/machinery/shield/S = V
if(S && !QDELETED(S))
qdel(S)
user.color = old_color
+ drawing_rune = FALSE
if(!scribe_successful)
return
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 4c98a3c59d3..272076e1f67 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -263,6 +263,8 @@ structure_check() searches for nearby cultist structures required for the invoca
var/turf/T = get_turf(src)
for(var/mob/living/M in T)
if(!iscultist(M) || (M.mind && is_sacrifice_target(M.mind)))
+ if(isconstruct(M)) // No offering constructs please
+ continue
offer_targets += M
// Offering a head/brain
@@ -418,6 +420,8 @@ structure_check() searches for nearby cultist structures required for the invoca
/obj/effect/rune/teleport/Destroy()
GLOB.teleport_runes -= src
+ QDEL_NULL(inner_portal)
+ QDEL_NULL(outer_portal)
return ..()
/obj/effect/rune/teleport/invoke(list/invokers)
@@ -452,7 +456,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
- if(!src || !Adjacent(user) || QDELETED(src) || user.incapacitated() || !actual_selected_rune)
+ if(QDELETED(src) || QDELETED(actual_selected_rune) ||!Adjacent(user) || user.incapacitated())
fail_invoke()
return
@@ -685,7 +689,7 @@ structure_check() searches for nearby cultist structures required for the invoca
cultists[M.current.real_name] = M.current
var/input = input(user, "Who do you wish to call to [src]?", "Acolytes") as null|anything in cultists
var/mob/living/cultist_to_summon = cultists[input]
- if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated())
+ if(QDELETED(src) || !Adjacent(user) || user.incapacitated())
return
if(!cultist_to_summon)
log_game("Summon Cultist rune failed - no target")
@@ -882,6 +886,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/mob/living/carbon/human/new_human = new(T)
new_human.real_name = ghost_to_spawn.real_name
new_human.key = ghost_to_spawn.key
+ new_human.gender = ghost_to_spawn.gender
new_human.alpha = 150 //Makes them translucent
new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor
new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts, also lets you see actual ghosts
@@ -999,7 +1004,7 @@ structure_check() searches for nearby cultist structures required for the invoca
//BEGIN THE SUMMONING
gamemode.cult_objs.succesful_summon()
used = TRUE
- color = rgb(255, 0, 0)
+ color = COLOR_RED
..()
SEND_SOUND(world, sound('sound/effects/dimensional_rend.ogg'))
to_chat(world, "The veil... is... TORN!!!--")
diff --git a/code/game/gamemodes/devil/contracts/friend.dm b/code/game/gamemodes/devil/contracts/friend.dm
deleted file mode 100644
index 8838dc8a371..00000000000
--- a/code/game/gamemodes/devil/contracts/friend.dm
+++ /dev/null
@@ -1,54 +0,0 @@
-/obj/effect/mob_spawn/human/demonic_friend
- name = "Essence of friendship"
- desc = "Oh boy! Oh boy! A friend!"
- mob_name = "Demonic friend"
- icon = 'icons/obj/cardboard_cutout.dmi'
- icon_state = "cutout_basic"
- outfit = /datum/outfit/demonic_friend
- death = FALSE
- roundstart = FALSE
- random = TRUE
- id_job = "SuperFriend"
- id_access = "assistant"
- var/obj/effect/proc_holder/spell/targeted/summon_friend/spell
- var/datum/mind/owner
- assignedrole = "SuperFriend"
-
-/obj/effect/mob_spawn/human/demonic_friend/Initialize(mapload, datum/mind/owner_mind, obj/effect/proc_holder/spell/targeted/summon_friend/summoning_spell)
- . = ..()
- owner = owner_mind
- description = "Be someone's loyal friend/slave. If they die, you die as well." //best I could think of in the moment, not sure how this role plays in practise, have never seen it.
- flavour_text = "You have been given a reprieve from your eternity of torment, to be [owner.name]'s friend for [owner.p_their()] short mortal coil. Be aware that if you do not live up to [owner.name]'s expectations, [owner.p_they()] can send you back to hell with a single thought. [owner.name]'s death will also return you to hell."
- var/area/A = get_area(src)
- if(!mapload && A)
- notify_ghosts("\A friendship shell has been completed in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = TRUE)
- objectives = "Be [owner.name]'s friend, and keep [owner.name] alive, so you don't get sent back to hell."
- spell = summoning_spell
-
-
-/obj/effect/mob_spawn/human/demonic_friend/special(mob/living/L)
- if(!QDELETED(owner.current) && owner.current.stat != DEAD)
- L.real_name = "[owner.name]'s best friend"
- L.name = L.real_name
- soullink(/datum/soullink/oneway/devilfriend, owner.current, L)
- spell.friend = L
- spell.charge_counter = spell.charge_max
- L.mind.hasSoul = FALSE
- var/mob/living/carbon/human/H = L
- var/obj/item/worn = H.wear_id
- var/obj/item/card/id/id = worn.GetID()
- id.registered_name = L.real_name
- id.update_label()
- to_chat(owner.current, "Your friend has arrived!")
- else
- to_chat(L, "Your owner is already dead! You will soon perish.")
- addtimer(CALLBACK(L, /mob.proc/dust), 150) //Give em a few seconds as a mercy.
-
-/datum/outfit/demonic_friend
- name = "Demonic Friend"
- uniform = /obj/item/clothing/under/assistantformal
- shoes = /obj/item/clothing/shoes/laceup
- r_pocket = /obj/item/radio/off
- back = /obj/item/storage/backpack
- implants = list(/obj/item/implant/mindshield) //No revolutionaries, he's MY friend.
- id = /obj/item/card/id
diff --git a/code/game/gamemodes/devil/devil.dm b/code/game/gamemodes/devil/devil.dm
deleted file mode 100644
index 06933891ba6..00000000000
--- a/code/game/gamemodes/devil/devil.dm
+++ /dev/null
@@ -1,48 +0,0 @@
-GLOBAL_LIST_INIT(whiteness, list(
- /obj/item/clothing/under/color/white = 2,
- /obj/item/clothing/under/rank/bartender = 1,
- /obj/item/clothing/under/rank/chef = 1,
- /obj/item/clothing/under/rank/chief_engineer = 1,
- /obj/item/clothing/under/rank/scientist = 1,
- /obj/item/clothing/under/rank/chemist = 1,
- /obj/item/clothing/under/rank/chief_medical_officer = 1,
- /obj/item/clothing/under/rank/geneticist = 1,
- /obj/item/clothing/under/rank/virologist = 1,
- /obj/item/clothing/under/rank/nursesuit = 1,
- /obj/item/clothing/under/rank/medical = 1,
- /obj/item/clothing/under/rank/psych = 1,
- /obj/item/clothing/under/rank/orderly = 1,
- /obj/item/clothing/under/rank/security/brigphys = 1,
- /obj/item/clothing/under/rank/internalaffairs = 1,
- /obj/item/clothing/under/rank/ntrep = 1,
- /obj/item/clothing/under/det = 1,
- /obj/item/clothing/under/wedding/bride_white = 1,
- /obj/item/clothing/under/mafia/white = 1,
- /obj/item/clothing/under/noble_clothes = 1,
- /obj/item/clothing/under/sl_suit = 1,
- /obj/item/clothing/under/burial = 1
-))
-
-
-
-/mob/living/proc/check_devil_bane_multiplier(obj/item/weapon, mob/living/attacker)
- switch(mind.devilinfo.bane)
- if(BANE_WHITECLOTHES)
- if(istype(attacker, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = attacker
- if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under))
- var/obj/item/clothing/under/U = H.w_uniform
- if(GLOB.whiteness[U.type])
- src.visible_message("[src] seems to have been harmed by the purity of [attacker]'s clothes.", "Unsullied white clothing is disrupting your form.")
- return GLOB.whiteness[U.type] + 1
- if(BANE_TOOLBOX)
- if(istype(weapon,/obj/item/storage/toolbox))
- src.visible_message("The [weapon] seems unusually robust this time.", "The [weapon] is your unmaking!")
- return 2.5 // Will take four hits with a normal toolbox.
- if(BANE_HARVEST)
- if(istype(weapon,/obj/item/reagent_containers/food/snacks/grown/) || istype(weapon,/obj/item/grown))
- src.visible_message("The spirits of the harvest aid in the exorcism.", "The harvest spirits are harming you.")
- src.Weaken(2)
- qdel(weapon)
- return 2
- return 1
diff --git a/code/game/gamemodes/devil/devil_agent/devil_agent.dm b/code/game/gamemodes/devil/devil_agent/devil_agent.dm
deleted file mode 100644
index e9a1d998a7a..00000000000
--- a/code/game/gamemodes/devil/devil_agent/devil_agent.dm
+++ /dev/null
@@ -1,38 +0,0 @@
-/datum/game_mode/devil/devil_agents
- name = "Devil Agents"
- config_tag = "devilagents"
- required_players = 25
- required_enemies = 3
- recommended_enemies = 8
-
- traitors_possible = 10 //hard limit on traitors if scaling is turned off
- num_modifier = 4
- objective_count = 2
-
- var/list/target_list = list()
- var/list/late_joining_list = list()
- minimum_devils = 3
-
-/datum/game_mode/devil/devil_agents/post_setup()
- var/i = 0
- for(var/datum/mind/devil in devils)
- i++
- if(i + 1 > devils.len)
- i = 0
- target_list[devil] = devils[i + 1]
- ..()
-
-/datum/game_mode/devil/devil_agents/forge_devil_objectives(datum/mind/devil_mind, quantity)
- ..(devil_mind, quantity - give_outsell_objective(devil_mind))
-
-/datum/game_mode/devil/devil_agents/proc/give_outsell_objective(datum/mind/devil)
- //If you override this method, have it return the number of objectives added.
- if(target_list.len && target_list[devil]) // Is a double agent
- var/datum/mind/target_mind = target_list[devil]
- var/datum/objective/devil/outsell/outsellobjective = new
- outsellobjective.owner = devil
- outsellobjective.target = target_mind
- outsellobjective.update_explanation_text()
- devil.objectives += outsellobjective
- return 1
- return 0
diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm
deleted file mode 100644
index 3ea91343f6b..00000000000
--- a/code/game/gamemodes/devil/devil_game_mode.dm
+++ /dev/null
@@ -1,67 +0,0 @@
-/datum/game_mode/devil
- name = "devil"
- config_tag = "devil"
- protected_jobs = list("Security Officer", "Warden", "Detective", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate",
- "Internal Affairs Agent", "Librarian", "Chaplain", "Head of Security", "Captain", "Brig Physician",
- "Nanotrasen Navy Officer", "Special Operations Officer", "AI", "Cyborg")
- required_players = 2
- required_enemies = 1
- recommended_enemies = 4
-
- var/traitors_possible = 4 //hard limit on devils if scaling is turned off
- var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual.
- var/objective_count = 2
- var/minimum_devils = 1
- var/devil_scale_coefficient = 10
-
-/datum/game_mode/devil/announce()
- to_chat(world, {"The current game mode is - Devil! )
- Devils: Purchase souls and tempt the crew to sin!
- Crew: Resist the lure of sin and remain pure!"})
-
-/datum/game_mode/devil/pre_setup()
-
- if(config.protect_roles_from_antagonist)
- restricted_jobs += protected_jobs
-
- var/list/possible_devils = get_players_for_role(ROLE_DEVIL)
- var/num_devils = 0
- if(!possible_devils.len)
- return 0
- if(config.traitor_scaling)
- num_devils = max(1, round((num_players())/(devil_scale_coefficient))+1)
- else
- num_devils = max(1, min(num_players(), traitors_possible))
-
-
- for(var/j = 0, j < num_devils, j++)
- if (!possible_devils.len)
- break
- var/datum/mind/devil = pick(possible_devils)
- devils += devil
- devil.special_role = ROLE_DEVIL
- devil.restricted_roles = restricted_jobs
-
- log_game("[devil.key] (ckey) has been selected as a [config_tag]")
- possible_devils.Remove(devil)
-
- if(devils.len < required_enemies)
- return 0
- return 1
-
-
-/datum/game_mode/devil/post_setup()
- for(var/datum/mind/devil in devils)
- spawn(rand(10, 100))
- finalize_devil(devil, TRUE)
- spawn(100)
- forge_devil_objectives(devil, objective_count) //This has to be in a separate loop, as we need devil names to be generated before we give objectives in devil agent.
- devil.devilinfo.announce_laws(devil.current)
- var/obj_count = 1
- to_chat(devil.current, " Your current objectives:")
- for(var/datum/objective/objective in devil.objectives)
- to_chat(devil.current, "Objective #[obj_count]: [objective.explanation_text]")
- obj_count++
- modePlayer += devils
- ..()
- return 1
diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/game/gamemodes/devil/devilinfo.dm
deleted file mode 100644
index 6a7646d5e2e..00000000000
--- a/code/game/gamemodes/devil/devilinfo.dm
+++ /dev/null
@@ -1,559 +0,0 @@
-#define BLOOD_THRESHOLD 3 //How many souls are needed per stage.
-#define TRUE_THRESHOLD 7
-#define ARCH_THRESHOLD 12
-
-#define BASIC_DEVIL 0
-#define BLOOD_LIZARD 1
-#define TRUE_DEVIL 2
-#define ARCH_DEVIL 3
-
-#define LOSS_PER_DEATH 2
-
-#define SOULVALUE (soulsOwned.len-reviveNumber)
-
-#define DEVILRESURRECTTIME 600
-
-GLOBAL_LIST_EMPTY(allDevils)
-GLOBAL_LIST_INIT(lawlorify, list (
- LORE = list(
- OBLIGATION_FOOD = "This devil seems to always offer it's victims food before slaughtering them.",
- OBLIGATION_FIDDLE = "This devil will never turn down a musical challenge.",
- OBLIGATION_DANCEOFF = "This devil will never turn down a dance off.",
- OBLIGATION_GREET = "This devil seems to only be able to converse with people it knows the name of.",
- OBLIGATION_PRESENCEKNOWN = "This devil seems to be unable to attack from stealth.",
- OBLIGATION_SAYNAME = "He will always chant his name upon killing someone.",
- OBLIGATION_ANNOUNCEKILL = "This devil always loudly announces his kills for the world to hear.",
- OBLIGATION_ANSWERTONAME = "This devil always responds to his truename.",
- BANE_SILVER = "Silver seems to gravely injure this devil.",
- BANE_SALT = "Throwing salt at this devil will hinder his ability to use infernal powers temporarily.",
- BANE_LIGHT = "Bright flashes will disorient the devil, likely causing him to flee.",
- BANE_IRON = "Cold iron will slowly injure him, until he can purge it from his system.",
- BANE_WHITECLOTHES = "Wearing clean white clothing will help ward off this devil.",
- BANE_HARVEST = "Presenting the labors of a harvest will disrupt the devil.",
- BANE_TOOLBOX = "That which holds the means of creation also holds the means of the devil's undoing.",
- BAN_HURTWOMAN = "This devil seems to prefer hunting men.",
- BAN_CHAPEL = "This devil avoids holy ground.",
- BAN_HURTPRIEST = "The anointed clergy appear to be immune to his powers.",
- BAN_AVOIDWATER = "The devil seems to have some sort of aversion to water, though it does not appear to harm him.",
- BAN_STRIKEUNCONCIOUS = "This devil only shows interest in those who are awake.",
- BAN_HURTLIZARD = "This devil will not strike an Unathi first.",
- BAN_HURTANIMAL = "This devil avoids hurting animals.",
- BANISH_WATER = "To banish the devil, you must infuse it's body with holy water.",
- BANISH_COFFIN = "This devil will return to life if it's remains are not placed within a coffin.",
- BANISH_FORMALDYHIDE = "To banish the devil, you must inject it's lifeless body with embalming fluid.",
- BANISH_RUNES = "This devil will resurrect after death, unless it's remains are within a rune.",
- BANISH_CANDLES = "A large number of nearby lit candles will prevent it from resurrecting.",
- BANISH_DESTRUCTION = "It's corpse must be utterly destroyed to prevent resurrection.",
- BANISH_FUNERAL_GARB = "If clad in funeral garments, this devil will be unable to resurrect. Should the clothes not fit, lay them gently on top of the devil's corpse."
- ),
- LAW = list(
- OBLIGATION_FOOD = "When not acting in self defense, you must always offer your victim food before harming them.",
- OBLIGATION_FIDDLE = "When not in immediate danger, if you are challenged to a musical duel, you must accept it. You are not obligated to duel the same person twice.",
- OBLIGATION_DANCEOFF = "When not in immediate danger, if you are challenged to a dance off, you must accept it. You are not obligated to face off with the same person twice.",
- OBLIGATION_GREET = "You must always greet other people by their last name before talking with them.",
- OBLIGATION_PRESENCEKNOWN = "You must always make your presence known before attacking.",
- OBLIGATION_SAYNAME = "You must always say your true name after you kill someone.",
- OBLIGATION_ANNOUNCEKILL = "Upon killing someone, you must make your deed known to all within earshot, over comms if reasonably possible.",
- OBLIGATION_ANSWERTONAME = "If you are not under attack, you must always respond to your true name.",
- BAN_HURTWOMAN = "You must never harm a female outside of self defense.",
- BAN_CHAPEL = "You must never attempt to enter the chapel.",
- BAN_HURTPRIEST = "You must never attack a priest.",
- BAN_AVOIDWATER = "You must never willingly touch a wet surface.",
- BAN_STRIKEUNCONCIOUS = "You must never strike an unconscious person.",
- BAN_HURTLIZARD = "You must never harm an Unathi outside of self defense.",
- BAN_HURTANIMAL = "You must never harm a non-sentient creature or robot outside of self defense.",
- BANE_SILVER = "Silver, in all of it's forms shall be your downfall.",
- BANE_SALT = "Salt will disrupt your magical abilities.",
- BANE_LIGHT = "Blinding lights will prevent you from using offensive powers for a time.",
- BANE_IRON = "Cold wrought iron shall act as poison to you.",
- BANE_WHITECLOTHES = "Those clad in pristine white garments will strike you true.",
- BANE_HARVEST = "The fruits of the harvest shall be your downfall.",
- BANE_TOOLBOX = "Toolboxes are bad news for you, for some reason.",
- BANISH_WATER = "If your corpse is filled with holy water, you will be unable to resurrect.",
- BANISH_COFFIN = "If your corpse is in a coffin, you will be unable to resurrect.",
- BANISH_FORMALDYHIDE = "If your corpse is embalmed, you will be unable to resurrect.",
- BANISH_RUNES = "If your corpse is placed within a rune, you will be unable to resurrect.",
- BANISH_CANDLES = "If your corpse is near lit candles, you will be unable to resurrect.",
- BANISH_DESTRUCTION = "If your corpse is destroyed, you will be unable to resurrect.",
- BANISH_FUNERAL_GARB = "If your corpse is clad in funeral garments, you will be unable to resurrect."
- )
- ))
-
-/datum/devilinfo
- var/datum/mind/owner = null
- var/obligation
- var/ban
- var/bane
- var/banish
- var/truename
- var/list/datum/mind/soulsOwned = new
- var/datum/dna/humanform = null
- var/reviveNumber = 0
- var/form = BASIC_DEVIL
- var/exists = 0
- var/static/list/dont_remove_spells = list(
- /obj/effect/proc_holder/spell/targeted/click/summon_contract,
- /obj/effect/proc_holder/spell/targeted/conjure_item/violin,
- /obj/effect/proc_holder/spell/targeted/summon_dancefloor)
- var/ascendable = FALSE
-
-/datum/devilinfo/New()
- ..()
- dont_remove_spells = typecacheof(dont_remove_spells)
-
-/proc/randomDevilInfo(name = randomDevilName())
- var/datum/devilinfo/devil = new
- devil.truename = name
- devil.bane = randomdevilbane()
- devil.obligation = randomdevilobligation()
- devil.ban = randomdevilban()
- devil.banish = randomdevilbanish()
- return devil
-
-/proc/devilInfo(name, saveDetails = 0)
- if(GLOB.allDevils[lowertext(name)])
- return GLOB.allDevils[lowertext(name)]
- else
- var/datum/devilinfo/devil = randomDevilInfo(name)
- GLOB.allDevils[lowertext(name)] = devil
- devil.exists = saveDetails
- return devil
-
-
-
-/proc/randomDevilName()
- var/preTitle = ""
- var/title = ""
- var/mainName = ""
- var/suffix = ""
- if(prob(65))
- if(prob(35))
- preTitle = pick("Dark ", "Hellish ", "Fiery ", "Sinful ", "Blood ")
- title = pick("Lord ", "Fallen Prelate ", "Count ", "Viscount ", "Vizier ", "Elder ", "Adept ")
- var/probability = 100
- mainName = pick("Hal", "Ve", "Odr", "Neit", "Ci", "Quon", "Mya", "Folth", "Wren", "Gyer", "Geyr", "Hil", "Niet", "Twou", "Hu", "Don")
- while(prob(probability))
- mainName += pick("hal", "ve", "odr", "neit", "ca", "quon", "mya", "folth", "wren", "gyer", "geyr", "hil", "niet", "twoe", "phi", "coa")
- probability -= 20
- if(prob(40))
- suffix = pick(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.")
- return preTitle + title + mainName + suffix
-
-/proc/randomdevilobligation()
- return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_DANCEOFF, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME)
-
-/proc/randomdevilban()
- return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL)
-
-/proc/randomdevilbane()
- return pick(BANE_SALT, BANE_LIGHT, BANE_IRON, BANE_WHITECLOTHES, BANE_SILVER, BANE_HARVEST, BANE_TOOLBOX)
-
-/proc/randomdevilbanish()
- return pick(BANISH_WATER, BANISH_COFFIN, BANISH_FORMALDYHIDE, BANISH_RUNES, BANISH_CANDLES, BANISH_DESTRUCTION, BANISH_FUNERAL_GARB)
-
-/datum/devilinfo/proc/link_with_mob(mob/living/L)
- if(istype(L, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = L
- humanform = H.dna.Clone()
- owner = L.mind
- give_base_spells(1)
-
-/datum/devilinfo/proc/add_soul(datum/mind/soul)
- if(soulsOwned.Find(soul))
- return
- soulsOwned += soul
- owner.current.set_nutrition(NUTRITION_LEVEL_FULL)
- to_chat(owner.current, "You feel satiated as you received a new soul.")
- update_hud()
- switch(SOULVALUE)
- if(0)
- to_chat(owner.current, "Your hellish powers have been restored.")
- give_base_spells()
- if(BLOOD_THRESHOLD)
- to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.")
- sleep(50)
- increase_blood_lizard()
- if(TRUE_THRESHOLD)
- to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.")
- sleep(50)
- increase_true_devil()
- if(ARCH_THRESHOLD)
- arch_devil_prelude()
- increase_arch_devil()
-
-/datum/devilinfo/proc/remove_soul(datum/mind/soul)
- if(soulsOwned.Remove(soul))
- to_chat(owner.current, "You feel as though a soul has slipped from your grasp.")
- check_regression()
- update_hud()
-
-/datum/devilinfo/proc/check_regression()
- if(form == ARCH_DEVIL)
- return //arch devil can't regress
- //Yes, fallthrough behavior is intended, so I can't use a switch statement.
- if(form == TRUE_DEVIL && SOULVALUE < TRUE_THRESHOLD)
- regress_blood_lizard()
- if(form == BLOOD_LIZARD && SOULVALUE < BLOOD_THRESHOLD)
- regress_humanoid()
- if(SOULVALUE < 0)
- remove_spells()
- to_chat(owner.current, "As punishment for your failures, all of your powers except contract creation have been revoked.")
-
-/datum/devilinfo/proc/regress_humanoid()
- to_chat(owner.current, "Your powers weaken, have more contracts be signed to regain power.")
- if(istype(owner.current, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = owner.current
- if(humanform)
- H.set_species(humanform.species)
- H.dna = humanform.Clone()
- H.sync_organ_dna(assimilate = 0)
- else
- H.set_species(/datum/species/human)
- // TODO: Add some appearance randomization here or something
- humanform = H.dna.Clone()
- H.regenerate_icons()
- else
- owner.current.color = ""
- give_base_spells()
- if(istype(owner.current.loc, /obj/effect/dummy/slaughter))
- owner.current.forceMove(get_turf(owner.current))//Fixes dying while jaunted leaving you permajaunted.
- form = BASIC_DEVIL
-
-/datum/devilinfo/proc/regress_blood_lizard()
- var/mob/living/carbon/true_devil/D = owner.current
- to_chat(D, "Your powers weaken, have more contracts be signed to regain power.")
- D.oldform.loc = D.loc
- owner.transfer_to(D.oldform)
- D.oldform.status_flags &= ~GODMODE
- give_lizard_spells()
- qdel(D)
- form = BLOOD_LIZARD
- update_hud()
-
-
-/datum/devilinfo/proc/increase_blood_lizard()
- if(ishuman(owner.current))
- var/mob/living/carbon/human/H = owner.current
- var/list/language_temp = H.languages.Copy()
- H.set_species(/datum/species/unathi)
- H.languages = language_temp
- H.underwear = "Nude"
- H.undershirt = "Nude"
- H.socks = "Nude"
- H.change_skin_color(80, 16, 16) //A deep red
- H.regenerate_icons()
- else //Did the devil get hit by a staff of transmutation?
- owner.current.color = "#501010"
- give_lizard_spells()
- form = BLOOD_LIZARD
-
-
-
-/datum/devilinfo/proc/increase_true_devil()
- var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(owner.current.loc, owner.current)
- A.faction |= "hell"
- // Put the old body in stasis
- owner.current.status_flags |= GODMODE
- owner.current.loc = A
- A.oldform = owner.current
- owner.transfer_to(A)
- A.set_name()
- give_true_spells()
- form = TRUE_DEVIL
- update_hud()
-
-/datum/devilinfo/proc/arch_devil_prelude()
- if(!ascendable)
- return
- var/mob/living/carbon/true_devil/D = owner.current
- to_chat(D, "You feel as though your form is about to ascend.")
- sleep(50)
- if(!D)
- return
- D.visible_message("[D]'s skin begins to erupt with spikes.", \
- "Your flesh begins creating a shield around yourself.")
- sleep(100)
- if(!D)
- return
- D.visible_message("The horns on [D]'s head slowly grow and elongate.", \
- "Your body continues to mutate. Your telepathic abilities grow.")
- sleep(90)
- if(!D)
- return
- D.visible_message("[D]'s body begins to violently stretch and contort.", \
- "You begin to rend apart the final barriers to ultimate power.")
- sleep(40)
- if(!D)
- return
- to_chat(D, "Yes!")
- sleep(10)
- if(!D)
- return
- to_chat(D, "YES!!")
- sleep(10)
- if(!D)
- return
- to_chat(D, "YE--")
- sleep(1)
- if(!D)
- return
- to_chat(world, "SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!")
- SEND_SOUND(world, sound('sound/hallucinations/veryfar_noise.ogg'))
- sleep(50)
- if(!SSticker.mode.devil_ascended)
- SSshuttle.emergency.request(null, 0.3)
- SSticker.mode.devil_ascended++
-
-/datum/devilinfo/proc/increase_arch_devil()
- if(!ascendable)
- return
- var/mob/living/carbon/true_devil/D = owner.current
- if(!istype(D))
- return
- give_arch_spells()
- D.convert_to_archdevil()
- if(istype(D.loc, /obj/effect/dummy/slaughter))
- D.forceMove(get_turf(D))
- var/area/A = get_area(owner.current)
- if(A)
- notify_ghosts("An arch devil has ascended in [A.name]. Reach out to the devil to start climbing the infernal corporate ladder.", title = "Arch Devil Ascended", source = owner.current, action = NOTIFY_ATTACK)
- form = ARCH_DEVIL
-
-/datum/devilinfo/proc/remove_spells()
- for(var/X in owner.spell_list)
- var/obj/effect/proc_holder/spell/S = X
- if(!is_type_in_typecache(S, dont_remove_spells))
- owner.RemoveSpell(S)
-
-/datum/devilinfo/proc/give_summon_contract()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/click/summon_contract(null))
-
-
-/datum/devilinfo/proc/give_base_spells(give_summon_contract = 0)
- remove_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/click/fireball/hellish(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork(null))
- if(give_summon_contract)
- give_summon_contract()
- if(obligation == OBLIGATION_FIDDLE)
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null))
- if(obligation == OBLIGATION_DANCEOFF)
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_dancefloor(null))
-
-/datum/devilinfo/proc/give_lizard_spells()
- remove_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/click/fireball/hellish(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null))
-
-/datum/devilinfo/proc/give_true_spells()
- remove_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork/greater(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/click/fireball/hellish(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null))
-
-/datum/devilinfo/proc/give_arch_spells()
- remove_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/pitchfork/ascended(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null))
-
-/datum/devilinfo/proc/beginResurrectionCheck(mob/living/body)
- if(owner.current != body)
- body = owner.current
- if(SOULVALUE > 0)
- to_chat(owner.current, "Your body has been damaged to the point that you may no longer use it. At the cost of some of your power, you will return to life soon.")
- addtimer(CALLBACK(src, "activateResurrection", body), DEVILRESURRECTTIME)
- else
- to_chat(owner.messageable_mob(), "Your hellish powers are too weak to resurrect yourself.")
-
-/datum/devilinfo/proc/activateResurrection(mob/living/body)
- if(QDELETED(body) || body.stat == DEAD)
- if(SOULVALUE > 0)
- if(check_banishment(body))
- to_chat(owner.messageable_mob(), "Unfortunately, the mortals have finished a ritual that prevents your resurrection.")
- return -1
- else
- to_chat(owner.messageable_mob(), "WE LIVE AGAIN!")
- return hellish_resurrection(body)
- else
- to_chat(owner.messageable_mob(), "Unfortunately, the power that stemmed from your contracts has been extinguished. You no longer have enough power to resurrect.")
- return -1
- else
- to_chat(owner.current, "You seem to have resurrected without your hellish powers.")
-
-/datum/devilinfo/proc/check_banishment(mob/living/body)
- switch(banish)
- if(BANISH_WATER)
- if(!QDELETED(body) && iscarbon(body))
- var/mob/living/carbon/H = body
- return H.reagents.has_reagent("holy water")
- return 0
- if(BANISH_COFFIN)
- return (!QDELETED(body) && istype(body.loc, /obj/structure/closet/coffin))
- if(BANISH_FORMALDYHIDE)
- if(!QDELETED(body) && iscarbon(body))
- var/mob/living/carbon/H = body
- return H.reagents.has_reagent("formaldehyde")
- return 0
- if(BANISH_RUNES)
- if(!QDELETED(body))
- for(var/obj/effect/decal/cleanable/crayon/R in range(0,body))
- if (R.name == "rune")
- return 1
- return 0
- if(BANISH_CANDLES)
- if(!QDELETED(body))
- var/count = 0
- for(var/obj/item/candle/C in range(1,body))
- count += C.lit
- if(count>=4)
- return 1
- return 0
- if(BANISH_DESTRUCTION)
- if(!QDELETED(body))
- return 0
- return 1
- if(BANISH_FUNERAL_GARB)
- if(!QDELETED(body) && iscarbon(body))
- var/mob/living/carbon/human/H = body
- if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/burial))
- return 1
- return 0
- else
- for(var/obj/item/clothing/under/burial/B in range(0,body))
- if(B.loc == get_turf(B)) //Make sure it's not in someone's inventory or something.
- return 1
- return 0
-
-/datum/devilinfo/proc/hellish_resurrection(mob/living/body)
- message_admins("[owner.name] (true name is: [truename]) is resurrecting using hellish energy.")
- if(SOULVALUE <= ARCH_THRESHOLD && ascendable) // once ascended, arch devils do not go down in power by any means.
- reviveNumber += LOSS_PER_DEATH
- update_hud()
- if(!QDELETED(body))
- body.revive()
- if(!body.client)
- var/mob/dead/observer/O = owner.get_ghost()
- O.reenter_corpse()
- if(istype(body.loc, /obj/effect/dummy/slaughter))
- body.forceMove(get_turf(body))//Fixes dying while jaunted leaving you permajaunted.
- if(istype(body, /mob/living/carbon/true_devil))
- var/mob/living/carbon/true_devil/D = body
- if(D.oldform)
- D.oldform.revive() // Heal the old body too, so the devil doesn't resurrect, then immediately regress into a dead body.
- if(body.stat == DEAD) // Not sure why this would happen
- create_new_body()
- else if(GLOB.blobstart.len > 0)
- // teleport the body so repeated beatdowns aren't an option)
- body.forceMove(get_turf(pick(GLOB.blobstart)))
- // give them the devil lawyer outfit in case they got stripped
- if(ishuman(body))
- var/mob/living/carbon/human/H = body
- H.equipOutfit(/datum/outfit/devil_lawyer)
- else
- create_new_body()
- check_regression()
-
-/datum/devilinfo/proc/create_new_body()
- if(GLOB.blobstart.len > 0)
- var/turf/targetturf = get_turf(pick(GLOB.blobstart))
- var/mob/currentMob = owner.current
- if(QDELETED(currentMob))
- currentMob = owner.get_ghost()
- if(!currentMob)
- message_admins("[owner.name]'s devil resurrection failed due to client logoff. Aborting.")
- return -1
- if(currentMob.mind != owner)
- message_admins("[owner.name]'s devil resurrection failed due to becoming a new mob. Aborting.")
- return -1
- var/mob/living/carbon/human/H = new /mob/living/carbon/human(targetturf)
- owner.transfer_to(H)
- if(isobserver(currentMob))
- var/mob/dead/observer/O = currentMob
- O.reenter_corpse()
- if(humanform)
- H.set_species(humanform.species)
- H.dna = humanform.Clone()
-
- H.dna.UpdateSE()
- H.dna.UpdateUI()
-
- H.sync_organ_dna(1) // It's literally a fresh body as you can get, so all organs properly belong to it
- H.UpdateAppearance()
- else
- // gibbed cyborg or similar - create a randomized "humanform" appearance
- H.scramble_appearance()
- humanform = H.dna.Clone()
-
-
- H.equipOutfit(/datum/outfit/devil_lawyer)
- give_base_spells(TRUE)
- if(SOULVALUE >= BLOOD_THRESHOLD)
- increase_blood_lizard()
- if(SOULVALUE >= TRUE_THRESHOLD) //Yes, BOTH this and the above if statement are to run if soulpower is high enough.
- increase_true_devil()
- if(SOULVALUE >= ARCH_THRESHOLD && ascendable)
- increase_arch_devil()
- else
- throw EXCEPTION("Unable to find a blobstart landmark for hellish resurrection")
-
-/datum/devilinfo/proc/update_hud()
- if(istype(owner.current, /mob/living/carbon))
- var/mob/living/C = owner.current
- if(C.hud_used && C.hud_used.devilsouldisplay)
- C.hud_used.devilsouldisplay.update_counter(SOULVALUE)
-
-// SECTION: Messages and explanations
-
-/datum/devilinfo/proc/announce_laws(mob/living/owner)
- to_chat(owner, "You remember your link to the infernal. You are [truename], an agent of hell, a devil. And you were sent to the plane of creation for a reason. A greater purpose. Convince the crew to sin, and embroiden Hell's grasp.")
- to_chat(owner, "However, your infernal form is not without weaknesses.")
- to_chat(owner, "You may not use violence to coerce someone into selling their soul.")
- to_chat(owner, "You may not directly and knowingly physically harm a devil, other than yourself.")
- to_chat(owner,GLOB.lawlorify[LAW][bane])
- to_chat(owner,GLOB.lawlorify[LAW][ban])
- to_chat(owner,GLOB.lawlorify[LAW][obligation])
- to_chat(owner,GLOB.lawlorify[LAW][banish])
- to_chat(owner, "
Remember, the crew can research your weaknesses if they find out your devil name. ")
-
-
-#undef BLOOD_THRESHOLD
-#undef TRUE_THRESHOLD
-#undef ARCH_THRESHOLD
-#undef BASIC_DEVIL
-#undef BLOOD_LIZARD
-#undef TRUE_DEVIL
-#undef ARCH_DEVIL
-#undef LOSS_PER_DEATH
-#undef SOULVALUE
-#undef DEVILRESURRECTTIME
-
-/datum/outfit/devil_lawyer
- name = "Devil Lawyer"
- uniform = /obj/item/clothing/under/lawyer/black
- shoes = /obj/item/clothing/shoes/laceup
- back = /obj/item/storage/backpack
- l_hand = /obj/item/storage/briefcase
- l_pocket = /obj/item/pen
- l_ear = /obj/item/radio/headset
-
- id = /obj/item/card/id
-
-/datum/outfit/devil_lawyer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- var/obj/item/card/id/W = H.wear_id
- if(!istype(W) || W.assignment) // either doesn't have a card, or the card is already written to
- return
- var/name_to_use = H.real_name
- if(H.mind && H.mind.devilinfo)
- // Having hell create an ID for you causes its risks
- name_to_use = H.mind.devilinfo.truename
-
- W.name = "[name_to_use]'s ID Card (Lawyer)"
- W.registered_name = name_to_use
- W.assignment = "Lawyer"
- W.rank = W.assignment
- W.age = H.age
- W.sex = capitalize(H.gender)
- W.access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_EXTERNAL_AIRLOCKS)
- W.photo = get_id_photo(H)
diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm
deleted file mode 100644
index 7e9f054faea..00000000000
--- a/code/game/gamemodes/devil/game_mode.dm
+++ /dev/null
@@ -1,94 +0,0 @@
-/datum/game_mode
- var/list/datum/mind/sintouched = list()
- var/list/datum/mind/devils = list()
- var/devil_ascended = 0 // Number of arch devils on station
-
-/datum/game_mode/proc/auto_declare_completion_sintouched()
- var/text = ""
- if(sintouched.len)
- text += " The sintouched were:"
- var/list/sintouchedUnique = uniqueList(sintouched)
- for(var/S in sintouchedUnique)
- var/datum/mind/sintouched_mind = S
- text += printplayer(sintouched_mind)
- text += printobjectives(sintouched_mind)
- text += " "
- text += " "
- to_chat(world,text)
-
-/datum/game_mode/proc/auto_declare_completion_devils()
- var/text = ""
- if(devils.len)
- text += " The devils were:"
- for(var/D in devils)
- var/datum/mind/devil = D
- text += printplayer(devil)
- text += printdevilinfo(devil)
- text += printobjectives(devil)
- text += " "
- text += " "
- to_chat(world,text)
-
-
-/datum/game_mode/proc/finalize_devil(datum/mind/devil_mind, ascendable = FALSE)
- var/trueName= randomDevilName()
- devil_mind.devilinfo = devilInfo(trueName, 1)
- devil_mind.devilinfo.ascendable = ascendable
- devil_mind.store_memory("Your diabolical true name is [devil_mind.devilinfo.truename] [GLOB.lawlorify[LAW][devil_mind.devilinfo.ban]] You may not use violence to coerce someone into selling their soul. You may not directly and knowingly physically harm a devil, other than yourself. [GLOB.lawlorify[LAW][devil_mind.devilinfo.bane]] [GLOB.lawlorify[LAW][devil_mind.devilinfo.obligation]] [GLOB.lawlorify[LAW][devil_mind.devilinfo.banish]] ")
- devil_mind.devilinfo.link_with_mob(devil_mind.current)
- if(devil_mind.assigned_role == "Clown")
- to_chat(devil_mind.current, "Your infernal nature allows you to wield weapons without harming yourself.")
- devil_mind.current.dna.SetSEState(GLOB.clumsyblock, FALSE)
- singlemutcheck(devil_mind.current, GLOB.clumsyblock, MUTCHK_FORCED)
- var/datum/action/innate/toggle_clumsy/A = new
- A.Grant(devil_mind.current)
- spawn(10)
- devil_mind.devilinfo.update_hud()
- if(issilicon(devil_mind.current))
- var/mob/living/silicon/S = devil_mind.current
- S.laws.set_sixsixsix_law("You may not use violence to coerce someone into selling their soul.")
- S.laws.set_sixsixsix_law("You may not directly and knowingly physically harm a devil, other than yourself.")
- S.laws.set_sixsixsix_law("[GLOB.lawlorify[LAW][devil_mind.devilinfo.ban]]")
- S.laws.set_sixsixsix_law("[GLOB.lawlorify[LAW][devil_mind.devilinfo.obligation]]")
- S.laws.set_sixsixsix_law("Accomplish your objectives at all costs.")
-
-// unsure about the second "quantity" arg and how it fits with the antag refactor
-/datum/game_mode/proc/forge_devil_objectives(datum/mind/devil_mind, quantity)
- var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target)
- for(var/i = 1 to quantity)
- var/type = pick(validtypes)
- var/datum/objective/devil/objective = new type(null)
- objective.owner = devil_mind
- devil_mind.objectives += objective
- if(!istype(objective, /datum/objective/devil/buy_target))
- validtypes -= type //prevent duplicate objectives, EXCEPT for buy_target.
- else
- objective.find_target()
-
-/datum/game_mode/proc/greet_devil(datum/mind/devil_mind)
- if(!devil_mind.devilinfo)
- return
- devil_mind.devilinfo.announce_laws(devil_mind.current)
- devil_mind.announce_objectives()
-
-
-/datum/game_mode/proc/printdevilinfo(datum/mind/ply)
- if(!ply.devilinfo)
- return "Target is not a devil."
- var/text = "The devil's true name is: [ply.devilinfo.truename]"
- text += "The devil's bans were:"
- text += " [GLOB.lawlorify[LORE][ply.devilinfo.ban]]"
- text += " [GLOB.lawlorify[LORE][ply.devilinfo.bane]]"
- text += " [GLOB.lawlorify[LORE][ply.devilinfo.obligation]]"
- text += " [GLOB.lawlorify[LORE][ply.devilinfo.banish]]"
- return text
-
-/datum/game_mode/proc/update_devil_icons_added(datum/mind/devil_mind)
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_DEVIL]
- hud.join_hud(devil_mind.current)
- set_antag_hud(devil_mind.current, "huddevil")
-
-/datum/game_mode/proc/update_devil_icons_removed(datum/mind/devil_mind)
- var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_DEVIL]
- hud.leave_hud(devil_mind.current)
- set_antag_hud(devil_mind.current, null)
diff --git a/code/game/gamemodes/devil/imp/imp.dm b/code/game/gamemodes/devil/imp/imp.dm
deleted file mode 100644
index e863eaf1f6a..00000000000
--- a/code/game/gamemodes/devil/imp/imp.dm
+++ /dev/null
@@ -1,54 +0,0 @@
-//////////////////The Monster
-
-/mob/living/simple_animal/imp
- name = "imp"
- real_name = "imp"
- desc = "A large, menacing creature covered in armored black scales."
- speak_emote = list("cackles")
- emote_hear = list("cackles","screeches")
- response_help = "thinks better of touching"
- response_disarm = "flails at"
- response_harm = "punches"
- icon = 'icons/mob/mob.dmi'
- icon_state = "imp"
- icon_living = "imp"
- speed = 1
- a_intent = INTENT_HARM
- stop_automated_movement = 1
- status_flags = CANPUSH
- attack_sound = 'sound/misc/demon_attack1.ogg'
- atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
- minbodytemp = 250 //Weak to cold
- maxbodytemp = INFINITY
- faction = list("hell")
- attacktext = "wildly tears into"
- maxHealth = 200
- health = 200
- healable = 0
- environment_smash = 1
- melee_damage_lower = 10
- melee_damage_upper = 15
- see_in_dark = 8
- lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
- var/boost
- var/playstyle_string = "You are an imp, a mischevious creature from hell. You are the lowest rank on the hellish totem pole \
- Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \
- of intentionally harming a fellow devil."
-
-/mob/living/simple_animal/imp/New()
- ..()
- boost = world.time + 60
-
-/mob/living/simple_animal/imp/Life()
- ..()
- if(boost[src] screams in agony as it sublimates into a sulfurous smoke.")
- ghostize()
- qdel(src)
diff --git a/code/game/gamemodes/devil/objectives.dm b/code/game/gamemodes/devil/objectives.dm
deleted file mode 100644
index 04d0217b599..00000000000
--- a/code/game/gamemodes/devil/objectives.dm
+++ /dev/null
@@ -1,109 +0,0 @@
-/datum/objective/devil
-
-/datum/objective/devil/soulquantity
- explanation_text = "You shouldn't see this text. Error:DEVIL1"
- target_amount = 4
-
-/datum/objective/devil/soulquantity/New()
- target_amount = pick(6, 7, 8)
- update_explanation_text()
-
-/datum/objective/devil/proc/update_explanation_text()
- //Intentionally empty
-
-/datum/objective/devil/soulquantity/update_explanation_text()
- explanation_text = "Purchase, and retain control over at least [target_amount] souls."
-
-/datum/objective/devil/soulquantity/check_completion()
- var/count = 0
- for(var/S in owner.devilinfo.soulsOwned)
- var/datum/mind/L = S
- if(L.soulOwner == owner)
- count++
- return count >= target_amount
-
-
-
-/datum/objective/devil/soulquality
- explanation_text = "You shouldn't see this text. Error:DEVIL2"
- var/contractType
- var/contractName
-
-/datum/objective/devil/soulquality/New()
- contractType = pick(CONTRACT_POWER, CONTRACT_WEALTH, CONTRACT_PRESTIGE, CONTRACT_MAGIC, CONTRACT_REVIVE, CONTRACT_KNOWLEDGE)
- target_amount = pick(1, 2)
- switch(contractType)
- if(CONTRACT_POWER)
- contractName = "for power"
- if(CONTRACT_WEALTH)
- contractName = "for wealth"
- if(CONTRACT_PRESTIGE)
- contractName = "for prestige"
- if(CONTRACT_MAGIC)
- contractName = "for magic"
- if(CONTRACT_REVIVE)
- contractName = "of revival"
- if(CONTRACT_KNOWLEDGE)
- contractName = "for knowledge"
- update_explanation_text()
-
-/datum/objective/devil/soulquality/update_explanation_text()
- explanation_text = "Have mortals sign at least [target_amount] contracts [contractName]."
-
-/datum/objective/devil/soulquality/check_completion()
- var/count = 0
- for(var/S in owner.devilinfo.soulsOwned)
- var/datum/mind/L = S
- if(L.soulOwner != L && L.damnation_type == contractType)
- count++
- return count >= target_amount
-
-
-
-/datum/objective/devil/sintouch
- explanation_text = "You shouldn't see this text. Error:DEVIL3"
-
-/datum/objective/devil/sintouch/New()
- target_amount = pick(4, 5)
- explanation_text = "Ensure at least [target_amount] mortals are sintouched."
-
-/datum/objective/devil/sintouch/check_completion()
- return target_amount <= SSticker.mode.sintouched.len
-
-
-
-/datum/objective/devil/buy_target
- explanation_text = "You shouldn't see this text. Error:DEVIL4"
-
-/datum/objective/devil/buy_target/New()
- find_target()
- update_explanation_text()
-
-/datum/objective/devil/buy_target/update_explanation_text()
- if(target)
- explanation_text = "Purchase and retain the soul of [target.name], the [target.assigned_role]."
- else
- explanation_text = "Free objective."
-
-/datum/objective/devil/buy_target/check_completion()
- return target.soulOwner == owner
-
-
-/datum/objective/devil/outsell
- explanation_text = "You shouldn't see this text. Error:DEVIL5"
-
-/datum/objective/devil/outsell/update_explanation_text()
- explanation_text = "Purchase and retain control over more souls than [target.devilinfo.truename], known to mortals as [target.name], the [target.assigned_role]."
-
-/datum/objective/devil/outsell/check_completion()
- var/selfcount = 0
- for(var/S in owner.devilinfo.soulsOwned)
- var/datum/mind/L = S
- if(L.soulOwner == owner)
- selfcount++
- var/targetcount = 0
- for(var/S in target.devilinfo.soulsOwned)
- var/datum/mind/L = S
- if(L.soulOwner == target)
- targetcount++
- return selfcount > targetcount
diff --git a/code/game/gamemodes/devil/true_devil/_true_devil.dm b/code/game/gamemodes/devil/true_devil/_true_devil.dm
deleted file mode 100644
index 197524c0e38..00000000000
--- a/code/game/gamemodes/devil/true_devil/_true_devil.dm
+++ /dev/null
@@ -1,218 +0,0 @@
-#define DEVIL_R_HAND_LAYER 1
-#define DEVIL_L_HAND_LAYER 2
-#define DEVIL_TOTAL_LAYERS 2
-
-// This is used primarily for having hands.
-/mob/living/carbon/true_devil
- name = "True Devil"
- desc = "A pile of infernal energy, taking a vaguely humanoid form."
- icon = 'icons/mob/32x64.dmi'
- icon_state = "true_devil"
- gender = NEUTER
- health = 350
- maxHealth = 350
- ventcrawler = FALSE
- density = TRUE
- pass_flags = 0
- var/ascended = FALSE
- sight = (SEE_TURFS | SEE_OBJS)
- status_flags = CANPUSH
- universal_understand = TRUE
- universal_speak = TRUE //The devil speaks all languages meme
- var/mob/living/oldform
- var/list/devil_overlays[DEVIL_TOTAL_LAYERS]
-
-/mob/living/carbon/true_devil/New(loc, mob/living/carbon/dna_source)
- dna = dna_source.dna.Clone()
- var/obj/item/organ/internal/brain/B = new(src)
- var/obj/item/organ/internal/ears/E = new(src)
- B.insert()
- E.insert()
- ..()
-
-// inventory system could use some love
-/mob/living/carbon/true_devil/put_in_hands(obj/item/W)
- if(!W)
- return 0
- if(put_in_active_hand(W))
- return TRUE
- else if(put_in_inactive_hand(W))
- return TRUE
- else
- ..()
-
-/mob/living/carbon/true_devil/proc/convert_to_archdevil()
- maxHealth = 5000 // not an IMPOSSIBLE amount, but still near impossible.
- ascended = TRUE
- health = maxHealth
- icon_state = "arch_devil"
-
-/mob/living/carbon/true_devil/proc/set_name()
- name = mind.devilinfo.truename
- real_name = name
-
-/mob/living/carbon/true_devil/Login()
- ..()
- if(mind.devilinfo)
- mind.devilinfo.announce_laws(src)
- mind.announce_objectives()
-
-
-/mob/living/carbon/true_devil/death(gibbed)
- . = ..(gibbed)
- drop_l_hand()
- drop_r_hand()
-
-
-/mob/living/carbon/true_devil/examine(mob/user)
- var/msg = "*---------*\nThis is [bicon(src)] [src]!\n"
-
- //Left hand items
- if(l_hand && !(l_hand.flags & ABSTRACT))
- if(l_hand.blood_DNA)
- msg += "It is holding [bicon(l_hand)] [l_hand.gender == PLURAL? "some" : "a"] blood-stained [l_hand.name] in its left hand!\n"
- else
- msg += "It is holding [bicon(l_hand)] \a [l_hand] in its left hand.\n"
-
- //Right hand items
- if(r_hand && !(r_hand.flags & ABSTRACT))
- if(r_hand.blood_DNA)
- msg += "It is holding [bicon(r_hand)] [r_hand.gender == PLURAL? "some" : "a"] blood-stained [r_hand.name] in its right hand!\n"
- else
- msg += "It is holding [bicon(r_hand)] \a [r_hand] in its right hand.\n"
-
- //Braindead
- if(!client && stat != DEAD)
- msg += "The devil seems to be in deep contemplation.\n"
-
- //Damaged
- if(stat == DEAD)
- msg += "The hellfire seems to have been extinguished, for now at least.\n"
- else if(health < (maxHealth/10))
- msg += "You can see hellfire inside of it's gaping wounds.\n"
- else if(health < (maxHealth/2))
- msg += "You can see hellfire inside of it's wounds.\n"
- msg += "*---------*"
- . = list(msg)
-
-
-/mob/living/carbon/true_devil/IsAdvancedToolUser()
- return TRUE
-
-/mob/living/carbon/true_devil/assess_threat()
- return 666
-
-/mob/living/carbon/true_devil/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0)
- if(mind && has_bane(BANE_LIGHT))
- mind.disrupt_spells(-500)
- return ..() //flashes don't stop devils UNLESS it's their bane.
-
-
-/mob/living/carbon/true_devil/attacked_by(obj/item/I, mob/living/user, def_zone)
- var/weakness = check_weakness(I, user)
- apply_damage(I.force * weakness, I.damtype, def_zone)
- var/message_verb = ""
- if(I.attack_verb && I.attack_verb.len)
- message_verb = "[pick(I.attack_verb)]"
- else if(I.force)
- message_verb = "attacked"
-
- var/attack_message = "[src] has been [message_verb] with [I]."
- if(user)
- user.do_attack_animation(src)
- if(user in viewers(src, null))
- attack_message = "[user] has [message_verb] [src] with [I]!"
- if(message_verb)
- visible_message("[attack_message]",
- "[attack_message]")
- return TRUE
-
-/mob/living/carbon/true_devil/UnarmedAttack(atom/A, proximity)
- if(!ishuman(A))
- // `attack_hand` on mobs assumes the attacker is a human
- // I am the worst
- A.attack_hand(src)
- // If the devil wants to actually attack, they have the pitchfork.
-
-
-/mob/living/carbon/true_devil/Process_Spacemove(movement_dir = 0)
- return TRUE
-
-/mob/living/carbon/true_devil/singularity_act()
- if(ascended)
- return 0
- return ..()
-
-/mob/living/carbon/true_devil/attack_ghost(mob/dead/observer/user as mob)
- if(ascended || user.mind.soulOwner == src.mind)
- var/mob/living/simple_animal/imp/S = new(get_turf(loc))
- S.key = user.key
- S.mind.assigned_role = "MODE"
- S.mind.special_role = "Imp"
- var/datum/objective/newobjective = new
- newobjective.explanation_text = "Try to get a promotion to a higher infernal rank."
- S.mind.objectives += newobjective
- to_chat(S,S.playstyle_string)
- to_chat(S,"Objective #1: [newobjective.explanation_text]")
- return
- else
- return ..()
-
-/mob/living/carbon/true_devil/resist_fire()
- //They're immune to fire.
-
-/mob/living/carbon/true_devil/attack_hand(mob/living/carbon/human/M)
- if(..())
- switch(M.a_intent)
- if(INTENT_HARM)
- var/damage = rand(1, 5)
- playsound(loc, "punch", 25, 1, -1)
- visible_message("[M] has punched [src]!", \
- "[M] has punched [src]!")
- adjustBruteLoss(damage)
- add_attack_logs(M, src, "attacked")
- updatehealth()
- if(INTENT_DISARM)
- if(!lying && !ascended) //No stealing the arch devil's pitchfork.
- if(prob(5))
- // Weaken knocks people over
- // Paralyse knocks people out
- // It's Paralyse for parity though
- // Weaken(2)
- Paralyse(2)
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
- add_attack_logs(M, src, "pushed")
- visible_message("[M] has pushed down [src]!", \
- "[M] has pushed down [src]!")
- else
- if(prob(25))
- drop_item()
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
- visible_message("[M] has disarmed [src]!", \
- "[M] has disarmed [src]!")
- else
- playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
- visible_message("[M] has attempted to disarm [src]!")
-
-/mob/living/carbon/true_devil/handle_breathing()
- // devils do not need to breathe
-
-/mob/living/carbon/true_devil/is_literate()
- return TRUE
-
-/mob/living/carbon/true_devil/ex_act(severity, ex_target)
- if(!ascended)
- var/b_loss
- switch (severity)
- if (1)
- b_loss = 500
- if (2)
- b_loss = 150
- if(3)
- b_loss = 30
- if(has_bane(BANE_LIGHT))
- b_loss *=2
- adjustBruteLoss(b_loss)
- return ..()
-
-#undef DEVIL_TOTAL_LAYERS
diff --git a/code/game/gamemodes/devil/true_devil/inventory.dm b/code/game/gamemodes/devil/true_devil/inventory.dm
deleted file mode 100644
index 7b6d6fb3013..00000000000
--- a/code/game/gamemodes/devil/true_devil/inventory.dm
+++ /dev/null
@@ -1,50 +0,0 @@
-/mob/living/carbon/true_devil/unEquip(obj/item/I, force, silent = FALSE)
- if(..())
- update_inv_r_hand()
- update_inv_l_hand()
- return 1
- return 0
-
-/mob/living/carbon/true_devil/update_inv_r_hand()
- ..()
- if(r_hand)
- var/t_state = r_hand.item_state
- if(!t_state)
- t_state = r_hand.icon_state
-
- var/image/I = image("icon" = r_hand.righthand_file, "icon_state" = "[t_state]")
- I = center_image(I, r_hand.inhand_x_dimension, r_hand.inhand_y_dimension)
- devil_overlays[DEVIL_R_HAND_LAYER] = I
- else
- devil_overlays[DEVIL_R_HAND_LAYER] = null
- update_icons()
-
-
-/mob/living/carbon/true_devil/update_inv_l_hand()
- ..()
- if(l_hand)
- var/t_state = l_hand.item_state
- if(!t_state)
- t_state = l_hand.icon_state
-
- var/image/I = image("icon" = l_hand.lefthand_file, "icon_state" = "[t_state]")
- I = center_image(I, l_hand.inhand_x_dimension, l_hand.inhand_y_dimension)
- devil_overlays[DEVIL_L_HAND_LAYER] = I
- else
- devil_overlays[DEVIL_L_HAND_LAYER] = null
- update_icons()
-
-/mob/living/carbon/true_devil/proc/remove_overlay(cache_index)
- if(devil_overlays[cache_index])
- overlays -= devil_overlays[cache_index]
- devil_overlays[cache_index] = null
-
-
-/mob/living/carbon/true_devil/proc/apply_overlay(cache_index)
- var/image/I = devil_overlays[cache_index]
- if(I)
- if(I in overlays)
- return
- var/list/new_overlays = overlays.Copy()
- new_overlays += I
- overlays = new_overlays
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 4f150975322..343f8bf27ae 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -227,7 +227,7 @@
/datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere.
return 0
-/datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=0)
+/datum/game_mode/proc/get_players_for_role(role, override_jobbans=0)
var/list/players = list()
var/list/candidates = list()
//var/list/drafted = list()
@@ -276,10 +276,10 @@
// Less if there are not enough valid players in the game entirely to make recommended_enemies.
-/datum/game_mode/proc/latespawn(var/mob)
+/datum/game_mode/proc/latespawn(mob)
/*
-/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/player)
+/datum/game_mode/proc/check_player_role_pref(role, mob/player)
if(player.preferences.be_special & role)
return 1
return 0
@@ -406,7 +406,7 @@
to_chat(M, msg)
//Announces objectives/generic antag text.
-/proc/show_generic_antag_text(var/datum/mind/player)
+/proc/show_generic_antag_text(datum/mind/player)
if(player.current)
to_chat(player.current, "You are an antagonist! Within the rules, \
try to act as an opposing force to the crew. Further RP and try to make sure \
@@ -415,7 +415,7 @@
Think through your actions and make the roleplay immersive! Please remember all \
rules aside from those without explicit exceptions apply to antagonists.")
-/proc/show_objectives(var/datum/mind/player)
+/proc/show_objectives(datum/mind/player)
if(!player || !player.current) return
var/obj_count = 1
@@ -424,7 +424,7 @@
to_chat(player.current, "Objective #[obj_count]: [objective.explanation_text]")
obj_count++
-/proc/get_roletext(var/role)
+/proc/get_roletext(role)
return role
/proc/get_nuke_code()
diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm
index 54faf90fef8..a579a90273c 100644
--- a/code/game/gamemodes/heist/heist.dm
+++ b/code/game/gamemodes/heist/heist.dm
@@ -83,7 +83,7 @@ GLOBAL_LIST_EMPTY(cortical_stacks) //Stacks for 'leave nobody behind' objective.
return ..()
-/datum/game_mode/proc/create_vox(var/datum/mind/newraider)
+/datum/game_mode/proc/create_vox(datum/mind/newraider)
var/sounds = rand(2,8)
var/i = 0
@@ -175,12 +175,13 @@ GLOBAL_LIST_EMPTY(cortical_stacks) //Stacks for 'leave nobody behind' objective.
return objs
-/datum/game_mode/proc/greet_vox(var/datum/mind/raider)
+/datum/game_mode/proc/greet_vox(datum/mind/raider)
to_chat(raider.current, "You are a Vox Raider, fresh from the Shoal!")
to_chat(raider.current, "The Vox are a race of cunning, sharp-eyed nomadic raiders and traders endemic to the frontier and much of the unexplored galaxy. You and the crew have come to the [station_name()] for plunder, trade or both.")
to_chat(raider.current, "Vox are cowardly and will flee from larger groups, but corner one or find them en masse and they are vicious.")
to_chat(raider.current, "Use :V to voxtalk, :H to talk on your encrypted channel, and don't forget to turn on your nitrogen internals!")
to_chat(raider.current, "Choose to accomplish your objectives by either raiding the crew and taking what you need, or by attempting to trade with them.")
+ to_chat(raider.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Vox_Raider)")
spawn(25)
show_objectives(raider)
diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm
index acee798e96c..aaf5dd1eea7 100644
--- a/code/game/gamemodes/intercept_report.dm
+++ b/code/game/gamemodes/intercept_report.dm
@@ -55,7 +55,7 @@
)
-/datum/intercept_text/proc/build(var/mode_type, datum/mind/correct_person)
+/datum/intercept_text/proc/build(mode_type, datum/mind/correct_person)
switch(mode_type)
if("revolution")
src.text = ""
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 69d37bf1ce6..e299f0c97c2 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -331,7 +331,8 @@
to_chat(L, "The blast wave from [src] tears you atom from atom!")
L.dust()
to_chat(world, "The AI cleansed the station of life with the doomsday device!")
- SSticker.force_ending = 1
+ SSticker.force_ending = TRUE
+ SSticker.mode.station_was_nuked = TRUE
//AI Turret Upgrade: Increases the health and damage of all turrets.
/datum/AI_Module/large/upgrade_turrets
@@ -785,4 +786,3 @@
/datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI)
if(AI.builtInCamera)
QDEL_NULL(AI.builtInCamera)
-
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index 7c5d350436b..d156c97266b 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -18,11 +18,11 @@ GLOBAL_LIST_INIT(meteors_ops, list(/obj/effect/meteor/goreops)) //Meaty Ops
///////////////////////////////
//Meteor spawning global procs
///////////////////////////////
-/proc/spawn_meteors(var/number = 10, var/list/meteortypes)
+/proc/spawn_meteors(number = 10, list/meteortypes)
for(var/i = 0; i < number; i++)
spawn_meteor(meteortypes)
-/proc/spawn_meteor(var/list/meteortypes)
+/proc/spawn_meteor(list/meteortypes)
var/turf/pickedstart
var/turf/pickedgoal
var/max_i = 10//number of tries to spawn meteor.
@@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(meteors_ops, list(/obj/effect/meteor/goreops)) //Meaty Ops
/obj/effect/meteor/CanPass(atom/movable/mover, turf/target, height=0)
return istype(mover, /obj/effect/meteor) ? 1 : ..()
-/obj/effect/meteor/proc/ram_turf(var/turf/T)
+/obj/effect/meteor/proc/ram_turf(turf/T)
//first bust whatever is in the turf
for(var/atom/A in T)
if(A != src)
@@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(meteors_ops, list(/obj/effect/meteor/goreops)) //Meaty Ops
var/obj/item/O = new meteordrop(get_turf(src))
O.throw_at(dest, 5, 10)
-/obj/effect/meteor/proc/meteor_effect(var/sound=1)
+/obj/effect/meteor/proc/meteor_effect(sound=1)
if(sound)
var/sound/meteor_sound = sound(meteorsound)
var/random_frequency = get_rand_frequency()
diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm
index 60de5ba4238..6587907cdbd 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction.dm
@@ -158,6 +158,7 @@
to_chat(abductor.current, "You are an agent of [team_name]!")
to_chat(abductor.current, "With the help of your teammate, kidnap and experiment on station crew members!")
to_chat(abductor.current, "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve.")
+ to_chat(abductor.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Abductor)")
abductor.announce_objectives()
@@ -170,6 +171,7 @@
to_chat(abductor.current, "You are a scientist of [team_name]!")
to_chat(abductor.current, "With the help of your teammate, kidnap and experiment on station crew members!")
to_chat(abductor.current, "Use your tool and ship consoles to support the agent and retrieve human specimens.")
+ to_chat(abductor.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Abductor)")
abductor.announce_objectives()
diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm
index 53c550daf01..021c4e09f06 100644
--- a/code/game/gamemodes/miniantags/abduction/gland.dm
+++ b/code/game/gamemodes/miniantags/abduction/gland.dm
@@ -68,7 +68,7 @@
active_mind_control = FALSE
update_gland_hud()
-/obj/item/organ/internal/heart/gland/remove(var/mob/living/carbon/M, special = 0)
+/obj/item/organ/internal/heart/gland/remove(mob/living/carbon/M, special = 0)
active = 0
if(initial(uses) == 1)
uses = initial(uses)
@@ -77,7 +77,7 @@
clear_mind_control()
. = ..()
-/obj/item/organ/internal/heart/gland/insert(var/mob/living/carbon/M, special = 0)
+/obj/item/organ/internal/heart/gland/insert(mob/living/carbon/M, special = 0)
..()
if(special != 2 && uses) // Special 2 means abductor surgery
Start()
diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm
index 750473b1dfa..0342c1d4707 100644
--- a/code/game/gamemodes/miniantags/borer/borer.dm
+++ b/code/game/gamemodes/miniantags/borer/borer.dm
@@ -25,7 +25,7 @@
if(M.mind && isobserver(M))
to_chat(M, "Thought-speech, [src] -> [B.truename]: [message]")
-/mob/living/captive_brain/say_understands(var/mob/other, var/datum/language/speaking = null)
+/mob/living/captive_brain/say_understands(mob/other, datum/language/speaking = null)
var/mob/living/simple_animal/borer/B = loc
if(!istype(B))
log_runtime(EXCEPTION("Trapped mind found without a borer!"), src)
@@ -114,12 +114,12 @@
var/datum/action/innate/borer/freeze_victim/freeze_victim_action = new
var/datum/action/innate/borer/torment/torment_action = new
-/mob/living/simple_animal/borer/New(atom/newloc, var/gen=1)
+/mob/living/simple_animal/borer/New(atom/newloc, gen=1)
..(newloc)
remove_from_all_data_huds()
generation = gen
add_language("Cortical Link")
- notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK)
+ notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, role = ROLE_BORER)
real_name = "Cortical Borer [rand(1000,9999)]"
truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]"
GrantBorerActions()
@@ -151,7 +151,7 @@
if(client.statpanel == "Status")
stat("Chemicals", chemicals)
-/mob/living/simple_animal/borer/say(var/message)
+/mob/living/simple_animal/borer/say(message)
var/list/message_pieces = parse_languages(message)
for(var/datum/multilingual_say_piece/S in message_pieces)
if(!istype(S.speaking, /datum/language/corticalborer) && loc == host && !talk_inside_host)
@@ -823,7 +823,7 @@
/mob/living/simple_animal/borer/can_use_vents()
return
-/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
+/mob/living/simple_animal/borer/proc/transfer_personality(client/candidate)
if(!candidate || !candidate.mob)
return
@@ -837,6 +837,7 @@
to_chat(src, "You are a brain slug that worms its way into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, your host and your eventual spawn safe and warm.")
to_chat(src, "Sugar nullifies your abilities, avoid it at all costs!")
to_chat(src, "You can speak to your fellow borers by prefixing your messages with ':bo'. Check out your Borer tab to see your abilities.")
+ to_chat(src, "For more information, check the wiki page: ([config.wikiurl]/index.php/Cortical_Borer)")
/proc/create_borer_mind(key)
var/datum/mind/M = new /datum/mind(key)
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index e2747ebb532..9711f2c0bfa 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -21,7 +21,7 @@
roundstart = FALSE
important_info = "Follow your objectives, do not make the station inhospitable or try and kill crew."
flavour_text = "You are a swarmer, a weapon of a long dead civilization. Until further orders from your original masters are received, you must continue to consume and replicate."
- description = {" Your goal is to create more of yourself by consuming the station. Clicking on any object will try to consume it, either deconstructing it into its components, destroying it, or integrating any materials it has into you if successful. Ctrl-Clicking on a mob will attempt to remove it from the area and place it in a safe environment for storage.
+ description = {"Your goal is to create more of yourself by consuming the station. Clicking on any object will try to consume it, either deconstructing it into its components, destroying it, or integrating any materials it has into you if successful. Ctrl-Clicking on a mob will attempt to remove it from the area and place it in a safe environment for storage.
Objectives:
1. Consume resources and replicate until there are no more resources left.
2. Ensure that this location is fit for invasion at a later date; do not perform actions that would render it dangerous or inhospitable.
@@ -63,12 +63,10 @@
mob_biotypes = MOB_ROBOTIC
health = 40
maxHealth = 40
- status_flags = CANPUSH
icon_state = "swarmer"
icon_living = "swarmer"
icon_dead = "swarmer_unactivated"
- icon_gib = null
- wander = 0
+ wander = FALSE
harm_intent_damage = 5
minbodytemp = 0
maxbodytemp = 500
@@ -86,22 +84,22 @@
friendly = "pinches"
speed = 0
a_intent = INTENT_HARM
- can_change_intents = 0
+ can_change_intents = FALSE
faction = list("swarmer")
AIStatus = AI_OFF
pass_flags = PASSTABLE
+ flags_2 = RAD_PROTECT_CONTENTS_2 | RAD_NO_CONTAMINATE_2
mob_size = MOB_SIZE_SMALL
ventcrawler = VENTCRAWLER_ALWAYS
- ranged = 1
+ ranged = TRUE
projectiletype = /obj/item/projectile/beam/disabler
ranged_cooldown_time = 20
projectilesound = 'sound/weapons/taser2.ogg'
loot = list(/obj/effect/decal/cleanable/robot_debris, /obj/item/stack/ore/bluespace_crystal)
- del_on_death = 1
+ del_on_death = TRUE
deathmessage = "explodes with a sharp pop!"
light_color = LIGHT_COLOR_CYAN
- universal_speak = 0
- universal_understand = 0
+ universal_understand = FALSE
var/resources = 0 //Resource points, generated by consuming metal/glass
var/max_resources = 100
@@ -114,6 +112,7 @@
to_chat(src, "1. Consume resources and replicate until there are no more resources left.")
to_chat(src, "2. Ensure that the station is fit for invasion at a later date, do not perform actions that would render it dangerous or inhospitable.")
to_chat(src, "3. Biological and sentient resources will be harvested at a later date, do not harm them.")
+ to_chat(src, "For more information, check the wiki page: ([config.wikiurl]/index.php/Swarmer)")
/mob/living/simple_animal/hostile/swarmer/New()
..()
@@ -489,7 +488,7 @@
changeNext_move(CLICK_CD_MELEE)
target.ex_act(EXPLODE_LIGHT)
-/mob/living/simple_animal/hostile/swarmer/proc/DisperseTarget(var/mob/living/target)
+/mob/living/simple_animal/hostile/swarmer/proc/DisperseTarget(mob/living/target)
if(target == src)
return
@@ -605,7 +604,7 @@
max_integrity = 10
density = FALSE
-/obj/structure/swarmer/trap/Crossed(var/atom/movable/AM, oldloc)
+/obj/structure/swarmer/trap/Crossed(atom/movable/AM, oldloc)
if(isliving(AM))
var/mob/living/L = AM
if(!istype(L, /mob/living/simple_animal/hostile/swarmer))
diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm
index b0194c53f33..db33bc355a8 100644
--- a/code/game/gamemodes/miniantags/guardian/guardian.dm
+++ b/code/game/gamemodes/miniantags/guardian/guardian.dm
@@ -250,10 +250,9 @@
var/name_list = list("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces")
/obj/item/guardiancreator/attack_self(mob/living/user)
- for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.alive_mob_list)
- if(G.summoner == user)
- to_chat(user, "You already have a [mob_name]!")
- return
+ if(has_guardian(user))
+ to_chat(user, "You already have a [mob_name]!")
+ return
if(user.mind && (user.mind.changeling || user.mind.vampire))
to_chat(user, "[ling_failure]")
return
@@ -285,6 +284,10 @@
if(candidates.len)
theghost = pick(candidates)
+ if(has_guardian(user))
+ to_chat(user, "You already have a [mob_name]!")
+ used = FALSE
+ return
spawn_guardian(user, theghost.key, guardian_type)
else
to_chat(user, "[failure_message]")
@@ -295,6 +298,13 @@
if(used)
. += "[used_message]"
+/obj/item/guardiancreator/proc/has_guardian(mob/living/user)
+ for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.alive_mob_list)
+ if(G.summoner == user)
+ return TRUE
+ return FALSE
+
+
/obj/item/guardiancreator/proc/spawn_guardian(mob/living/user, key, guardian_type)
var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch
switch(guardian_type)
@@ -333,6 +343,7 @@
to_chat(G, "You are capable of manifesting or recalling to your master with verbs in the Guardian tab. You will also find a verb to communicate with them privately there.")
to_chat(G, "While personally invincible, you will die if [user.real_name] does, and any damage dealt to you will have a portion passed on to them as you feed upon them to sustain yourself.")
to_chat(G, "[G.playstyle_string]")
+ to_chat(G, "For more information, check the wiki page: ([config.wikiurl]/index.php/Guardian)")
G.faction = user.faction
var/color = pick(color_list)
diff --git a/code/game/gamemodes/miniantags/guardian/types/bomb.dm b/code/game/gamemodes/miniantags/guardian/types/bomb.dm
index cf709cb1767..67b99d91968 100644
--- a/code/game/gamemodes/miniantags/guardian/types/bomb.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/bomb.dm
@@ -42,7 +42,7 @@
var/mob/living/spawner
-/obj/item/guardian_bomb/proc/disguise(var/obj/A)
+/obj/item/guardian_bomb/proc/disguise(obj/A)
A.forceMove(src)
stored_obj = A
opacity = A.opacity
@@ -60,7 +60,7 @@
to_chat(spawner, "Failure! Your trap on [stored_obj] didn't catch anyone this time.")
qdel(src)
-/obj/item/guardian_bomb/proc/detonate(var/mob/living/user)
+/obj/item/guardian_bomb/proc/detonate(mob/living/user)
if(!istype(user))
return
to_chat(user, "The [src] was boobytrapped!")
diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm
index a122351a4bb..6e3627f2684 100644
--- a/code/game/gamemodes/miniantags/morph/morph.dm
+++ b/code/game/gamemodes/miniantags/morph/morph.dm
@@ -152,7 +152,7 @@
/mob/living/simple_animal/hostile/morph/LoseAggro()
vision_range = initial(vision_range)
-/mob/living/simple_animal/hostile/morph/AIShouldSleep(var/list/possible_targets)
+/mob/living/simple_animal/hostile/morph/AIShouldSleep(list/possible_targets)
. = ..()
if(.)
var/list/things = list()
diff --git a/code/game/gamemodes/miniantags/morph/morph_event.dm b/code/game/gamemodes/miniantags/morph/morph_event.dm
index dd1a198f6f8..f24166b1381 100644
--- a/code/game/gamemodes/miniantags/morph/morph_event.dm
+++ b/code/game/gamemodes/miniantags/morph/morph_event.dm
@@ -26,6 +26,7 @@
player_mind.special_role = SPECIAL_ROLE_MORPH
SSticker.mode.traitors |= player_mind
to_chat(S, S.playstyle_string)
+ to_chat(S, "For more information, check the wiki page: ([config.wikiurl]/index.php/Morph)")
SEND_SOUND(S, sound('sound/magic/mutate.ogg'))
message_admins("[key_of_morph] has been made into morph by an event.")
log_game("[key_of_morph] was spawned as a morph by an event.")
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index fb46533b817..9373861798e 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -168,7 +168,7 @@
to_chat(src, "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.")
to_chat(src, "To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.")
to_chat(src, "You do not remember anything of your past lives, nor will you remember anything about this one after your death.")
- to_chat(src, "Be sure to read the wiki page at http://www.paradisestation.org/wiki/index.php/Revenant to learn more.")
+ to_chat(src, "For more information, check the wiki page: ([config.wikiurl]/index.php/Revenant)")
var/datum/objective/revenant/objective = new
objective.owner = mind
mind.objectives += objective
diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm
index fc49a534f2c..0c4bfc48f33 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm
@@ -1,5 +1,5 @@
///Harvest
-/mob/living/simple_animal/revenant/ClickOn(var/atom/A, var/params) //Copypaste from ghost code - revenants can't interact with the world directly.
+/mob/living/simple_animal/revenant/ClickOn(atom/A, params) //Copypaste from ghost code - revenants can't interact with the world directly.
if(client.click_intercept)
client.click_intercept.InterceptClickOn(src, params, A)
diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm
index 6871e87c3ba..40f6ac3398c 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm
@@ -4,7 +4,7 @@
var/key_of_revenant
-/datum/event/revenant/proc/get_revenant(var/end_if_fail = 0)
+/datum/event/revenant/proc/get_revenant(end_if_fail = 0)
var/deadMobs = 0
for(var/mob/M in GLOB.dead_mob_list)
deadMobs++
diff --git a/code/game/gamemodes/miniantags/sintouched/objectives.dm b/code/game/gamemodes/miniantags/sintouched/objectives.dm
deleted file mode 100644
index 04e0e3266f0..00000000000
--- a/code/game/gamemodes/miniantags/sintouched/objectives.dm
+++ /dev/null
@@ -1,34 +0,0 @@
-/datum/objective/sintouched
- completed = 1
-
-/* NO ERP OBJECTIVE FOR YOU.
-/datum/objective/sintouched/lust
- dangerrating = 3 // it's not AS dangerous.
-
-/datum/objective/sintouched/lust/New()
- var/mob/dead/D = pick(dead_mob_list)
- if(prob(50) && D)
- explanation_text = "You know that [D] has perished.... and you think [D] is kinda cute. Make sure everyone knows how HOT [D]'s lifeless body is."
- else
- explanation_text = "Go get married, then immediately cheat on your new spouse." */
-
-/datum/objective/sintouched/gluttony
- explanation_text = "Food is delicious, so delicious you can't let it be wasted on other people."
-
-/datum/objective/sintouched/greed
- explanation_text = "You want MORE, more money, more wealth, more riches. Go get it, but don't hurt people for it."
-
-/datum/objective/sintouched/sloth
- explanation_text = "You just get tired randomly. Go take a nap at a time that would inconvenience other people."
-
-/datum/objective/sintouched/wrath
- explanation_text = "What have your coworkers ever done for you? Don't offer to help them in any matter, and refuse if asked."
-
-/datum/objective/sintouched/envy
- explanation_text = "Why should you be stuck with your rank? Show everyone you can do other jobs too, and don't let anyone stop you, least of all because you have no training."
-
-/datum/objective/sintouched/pride
- explanation_text = "You are the BEST thing on the station. Make sure everyone knows it."
-
-/datum/objective/sintouched/acedia
- explanation_text = "Angels, devils, good, evil... who cares? Just ignore any hellish threats and do your job."
diff --git a/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm b/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm
index ed0a4a908ed..f5311010707 100644
--- a/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm
+++ b/code/game/gamemodes/miniantags/slaughter/bloodcrawl.dm
@@ -2,7 +2,7 @@
#define BLOODCRAWL 1
#define BLOODCRAWL_EAT 2
-/mob/living/proc/phaseout(var/obj/effect/decal/cleanable/B)
+/mob/living/proc/phaseout(obj/effect/decal/cleanable/B)
if(iscarbon(src))
var/mob/living/carbon/C = src
@@ -105,7 +105,7 @@
icon = 'icons/effects/blood.dmi'
flags = NODROP|ABSTRACT
-/mob/living/proc/phasein(var/obj/effect/decal/cleanable/B)
+/mob/living/proc/phasein(obj/effect/decal/cleanable/B)
if(notransform)
to_chat(src, "Finish eating first!")
diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm
index b488e0a826c..88ce7fbff99 100644
--- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm
+++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm
@@ -92,6 +92,7 @@
mind.objectives += fluffObjective
to_chat(src, "Objective #[1]: [objective.explanation_text]")
to_chat(src, "Objective #[2]: [fluffObjective.explanation_text]")
+ to_chat(src, "For more information, check the wiki page: ([config.wikiurl]/index.php/Slaughter_Demon)")
/obj/effect/decal/cleanable/blood/innards
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index a1dbbf35644..9540efe8f89 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -186,7 +186,7 @@
M.regenerate_icons()
M.update_body()
-/datum/game_mode/proc/prepare_syndicate_leader(var/datum/mind/synd_mind, var/nuke_code)
+/datum/game_mode/proc/prepare_syndicate_leader(datum/mind/synd_mind, nuke_code)
var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord")
synd_mind.current.real_name = "[syndicate_name()] Team [leader_title]"
to_chat(synd_mind.current, "You are the Syndicate leader for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.")
@@ -219,7 +219,7 @@
else
nuke_code = "code will be provided later"
-/datum/game_mode/proc/update_syndicate_id(var/datum/mind/synd_mind, is_leader = FALSE)
+/datum/game_mode/proc/update_syndicate_id(datum/mind/synd_mind, is_leader = FALSE)
var/list/found_ids = synd_mind.current.search_contents_for(/obj/item/card/id)
if(LAZYLEN(found_ids))
@@ -231,13 +231,13 @@
else
message_admins("Warning: Operative [key_name_admin(synd_mind.current)] spawned without an ID card!")
-/datum/game_mode/proc/forge_syndicate_objectives(var/datum/mind/syndicate)
+/datum/game_mode/proc/forge_syndicate_objectives(datum/mind/syndicate)
var/datum/objective/nuclear/syndobj = new
syndobj.owner = syndicate
syndicate.objectives += syndobj
-/datum/game_mode/proc/greet_syndicate(var/datum/mind/syndicate, var/you_are=1)
+/datum/game_mode/proc/greet_syndicate(datum/mind/syndicate, you_are=1)
SEND_SOUND(syndicate.current, sound('sound/ambience/antag/ops.ogg'))
if(you_are)
to_chat(syndicate.current, "You are a [syndicate_name()] agent!")
@@ -245,6 +245,7 @@
for(var/datum/objective/objective in syndicate.objectives)
to_chat(syndicate.current, "Objective #[obj_count]: [objective.explanation_text]")
obj_count++
+ to_chat(syndicate.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Nuclear_Agent)")
return
@@ -418,7 +419,7 @@
to_chat(world, text)
return 1
-/proc/nukelastname(var/mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea. Also praise Urist for copypasta ho.
+/proc/nukelastname(mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea. Also praise Urist for copypasta ho.
var/randomname = pick(GLOB.last_names)
var/newname = sanitize(copytext(input(M,"You are the nuke operative [pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord")]. Please choose a last name for your family.", "Name change",randomname),1,MAX_NAME_LEN))
@@ -452,10 +453,9 @@
for(var/obj/machinery/nuclearbomb/nuke in GLOB.machines)
if(nuke.r_code == "Nope") continue
- var/turf/T = get_turf(nuke)
- var/area/A = T.loc
+ var/area/A = get_area(nuke)
- var/list/thousand_penalty = list(/area/wizard_station, /area/solar, /area)
+ var/list/thousand_penalty = list(/area/solar)
var/list/fiftythousand_penalty = list(/area/security/main, /area/security/brig, /area/security/armoury, /area/security/checkpoint2)
if(is_type_in_list(A, thousand_penalty))
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index a1aa14dd92b..ffbc8f0bc6c 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -4,11 +4,6 @@
#define NUKE_SEALANT_OPEN 3
#define NUKE_UNWRENCHED 4
#define NUKE_MOBILE 5
-#define NUKE_CORE_EVERYTHING_FINE 6
-#define NUKE_CORE_PANEL_EXPOSED 7
-#define NUKE_CORE_PANEL_UNWELDED 8
-#define NUKE_CORE_FULLY_EXPOSED 9
-
GLOBAL_VAR(bomb_set)
@@ -20,7 +15,7 @@ GLOBAL_VAR(bomb_set)
density = 1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
anchored = TRUE
- var/extended = FALSE
+ var/extended = TRUE
var/lighthack = FALSE
var/timeleft = 120
var/timing = FALSE
@@ -31,16 +26,11 @@ GLOBAL_VAR(bomb_set)
var/safety = TRUE
var/obj/item/disk/nuclear/auth = null
var/removal_stage = NUKE_INTACT
- var/obj/item/nuke_core/plutonium/core = null
var/lastentered
var/is_syndicate = FALSE
use_power = NO_POWER_USE
var/previous_level = ""
var/datum/wires/nuclearbomb/wires = null
- ///The same state removal stage is, until someone opens the panel of the nuke. This way. we can have someone open the front of the nuke, while keep track of where in the world we are on the anchoring bolts.
- var/anchor_stage = NUKE_INTACT
- ///This is so we can check if the internal components are sealed up propperly, when the outer hatch is closed.
- var/core_stage = NUKE_CORE_EVERYTHING_FINE
/obj/machinery/nuclearbomb/syndicate
is_syndicate = TRUE
@@ -49,19 +39,16 @@ GLOBAL_VAR(bomb_set)
extended = FALSE
anchored = FALSE
-/obj/machinery/nuclearbomb/Initialize()
- . = ..()
+/obj/machinery/nuclearbomb/New()
+ ..()
r_code = rand(10000, 99999.0) // Creates a random code upon object spawn.
wires = new/datum/wires/nuclearbomb(src)
previous_level = get_security_level()
GLOB.poi_list |= src
- core = new /obj/item/nuke_core/plutonium(src)
- STOP_PROCESSING(SSobj, core) //Let us not irradiate the vault by default.
/obj/machinery/nuclearbomb/Destroy()
SStgui.close_uis(wires)
QDEL_NULL(wires)
- QDEL_NULL(core)
GLOB.poi_list.Remove(src)
return ..()
@@ -86,41 +73,16 @@ GLOBAL_VAR(bomb_set)
else
to_chat(user, "You need to deploy [src] first.")
return
- if(istype(O, /obj/item/stack/sheet/mineral/titanium) && removal_stage == NUKE_CORE_FULLY_EXPOSED)
- if(do_after(user, 20, target = src))
- var/obj/item/stack/S = O
- if(!loc || !S || S.get_amount() < 5)
- return
- S.use(5)
- user.visible_message("[user] repairs [src]'s inner core plate.", "You repair [src]'s inner core plate. The radiation is contained.")
- removal_stage = NUKE_CORE_PANEL_UNWELDED
- if(core)
- STOP_PROCESSING(SSobj, core)
- return
- if(istype(O, /obj/item/stack/sheet/metal) && removal_stage == NUKE_CORE_PANEL_EXPOSED)
- var/obj/item/stack/S = O
- if(do_after(user, 20, target = src))
- if(!loc || !S || S.get_amount() < 5)
- return
- S.use(5)
- user.visible_message("[user] repairs [src]'s outer core plate.", "You repair [src]'s outer core plate.")
- removal_stage = NUKE_CORE_EVERYTHING_FINE
- return
- if(istype(O, /obj/item/nuke_core/plutonium) && removal_stage == NUKE_CORE_FULLY_EXPOSED)
- if(do_after(user, 20, target = src))
- if(!user.unEquip(O))
- to_chat(user, "The [O] is stuck to your hand!")
- return
- user.visible_message("[user] puts [O] back in [src].", "You put [O] back in [src].")
- O.forceMove(src)
- core = O
-
else if(istype(O, /obj/item/disk/plantgene))
to_chat(user, "You try to plant the disk, but despite rooting around, it won't fit! After you branch out to read the instructions, you find out where the problem stems from. You've been bamboo-zled, this isn't a nuclear disk at all!")
return
return ..()
/obj/machinery/nuclearbomb/crowbar_act(mob/user, obj/item/I)
+ if(!anchored)
+ return
+ if(removal_stage != NUKE_UNWRENCHED && removal_stage != NUKE_COVER_OFF)
+ return
. = TRUE
if(!I.tool_use_check(user, 0))
return
@@ -128,25 +90,9 @@ GLOBAL_VAR(bomb_set)
user.visible_message("[user] starts forcing open the bolt covers on [src].", "You start forcing open the anchoring bolt covers with [I]...")
if(!I.use_tool(src, user, 15, volume = I.tool_volume) || removal_stage != NUKE_COVER_OFF)
return
- user.visible_message("[user] forces open the bolt covers on [src].", ">You force open the bolt covers.")
+ user.visible_message("[user] forces open the bolt covers on [src].", "You force open the bolt covers.")
removal_stage = NUKE_COVER_OPEN
- if(removal_stage == NUKE_CORE_EVERYTHING_FINE)
- user.visible_message("[user] starts removing [src]'s outer core plate...", "You start removing [src]'s outer plate...")
- if(!I.use_tool(src, user, 40, volume = I.tool_volume) || removal_stage != NUKE_CORE_EVERYTHING_FINE)
- return
- user.visible_message("[user] finishes removing [src]'s outer core plate.", "You finish removing [src]'s outer core plate.")
- new /obj/item/stack/sheet/metal(loc, 5)
- removal_stage = NUKE_CORE_PANEL_EXPOSED
- if(removal_stage == NUKE_CORE_PANEL_UNWELDED)
- user.visible_message("[user] starts removing [src]'s inner core plate...", "You start removing [src]'s inner plate...")
- if(!I.use_tool(src, user, 80, volume = I.tool_volume) || removal_stage != NUKE_CORE_PANEL_UNWELDED)
- return
- user.visible_message("[user] finishes removing [src]'s inner core plate.", "You remove [src]'s inner core plate. You can see the core's green glow!")
- removal_stage = NUKE_CORE_FULLY_EXPOSED
- new /obj/item/stack/sheet/mineral/titanium(loc, 5)
- if(core)
- START_PROCESSING(SSobj, core)
- if(removal_stage == NUKE_UNWRENCHED)
+ else
user.visible_message("[user] begins lifting [src] off of the anchors.", "You begin lifting the device off the anchors...")
if(!I.use_tool(src, user, 80, volume = I.tool_volume) || removal_stage != NUKE_UNWRENCHED)
return
@@ -180,19 +126,15 @@ GLOBAL_VAR(bomb_set)
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
- if(auth || (istype(I, /obj/item/screwdriver/nuke)))
+ if(auth)
if(!panel_open)
panel_open = TRUE
overlays += image(icon, "npanel_open")
to_chat(user, "You unscrew the control panel of [src].")
- anchor_stage = removal_stage
- removal_stage = core_stage
else
panel_open = FALSE
overlays -= image(icon, "npanel_open")
to_chat(user, "You screw the control panel of [src] back on.")
- core_stage = removal_stage
- removal_stage = anchor_stage
else
if(!panel_open)
to_chat(user, "[src] emits a buzzing noise, the panel staying locked in.")
@@ -200,8 +142,6 @@ GLOBAL_VAR(bomb_set)
panel_open = FALSE
overlays -= image(icon, "npanel_open")
to_chat(user, "You screw the control panel of [src] back on.")
- core_stage = removal_stage
- removal_stage = anchor_stage
flick("nuclearbombc", src)
/obj/machinery/nuclearbomb/wirecutter_act(mob/user, obj/item/I)
@@ -214,6 +154,8 @@ GLOBAL_VAR(bomb_set)
/obj/machinery/nuclearbomb/welder_act(mob/user, obj/item/I)
. = TRUE
+ if(removal_stage != NUKE_INTACT && removal_stage != NUKE_COVER_OPEN)
+ return
if(!I.tool_use_check(user, 0))
return
if(removal_stage == NUKE_INTACT)
@@ -225,19 +167,7 @@ GLOBAL_VAR(bomb_set)
visible_message("[user] cuts through the bolt covers on [src].",\
"You cut through the bolt cover.")
removal_stage = NUKE_COVER_OFF
- if(removal_stage == NUKE_CORE_PANEL_UNWELDED)
- user.visible_message("[user] starts welding [src]'s inner core plate...", "You start welding [src]'s inner core plate...")
- if(!I.use_tool(src, user, 40, 5, volume = I.tool_volume) || removal_stage != NUKE_CORE_PANEL_UNWELDED)
- return
- user.visible_message("[user] finishes welding [src]'s inner core plate...", "You finish welding [src]'s inner core plate...")
- removal_stage = NUKE_CORE_PANEL_EXPOSED
- else if(removal_stage == NUKE_CORE_PANEL_EXPOSED)
- user.visible_message("[user] starts unwelding [src]'s inner core plate...", "You start unwelding [src]'s inner core plate...")
- if(!I.use_tool(src, user, 40, 5, volume = I.tool_volume) || removal_stage != NUKE_CORE_PANEL_EXPOSED)
- return
- user.visible_message("[user] finishes unwelding [src]'s inner core plate...", "You finish unwelding [src]'s inner core plate...")
- removal_stage = NUKE_CORE_PANEL_UNWELDED
- if(removal_stage == NUKE_COVER_OPEN)
+ else if(removal_stage == NUKE_COVER_OPEN)
visible_message("[user] starts cutting apart the anchoring system sealant on [src].",\
"You start cutting apart the anchoring system's sealant with [I]...",\
"You hear welding.")
@@ -252,18 +182,7 @@ GLOBAL_VAR(bomb_set)
/obj/machinery/nuclearbomb/attack_hand(mob/user as mob)
if(panel_open)
- if(removal_stage == NUKE_CORE_FULLY_EXPOSED && core)
- if(timing) //removing the core is less risk then cutting wires, and doesnt take long, so we should not let crew do it while the nuke is armed. You can however get to it, without the special screwdriver, if you put the NAD in.
- to_chat(user, "The [core] won't budge, metal clamps keep it in!")
- return
- user.visible_message("[user] starts to pull [core] out of the [src]!", "You start to pull [core] out of the [src]!")
- if(do_after(user, 50, target = src))
- user.visible_message("[user] pulls [core] out of the [src]!", "You pull [core] out of the [src]! Might want to put it somewhere safe.")
- core.forceMove(loc)
- core = null
-
- else
- wires.Interact(user)
+ wires.Interact(user)
else
ui_interact(user)
@@ -296,7 +215,7 @@ GLOBAL_VAR(bomb_set)
data["codemsg"] = "-----"
return data
-/obj/machinery/nuclearbomb/proc/is_auth(var/mob/user)
+/obj/machinery/nuclearbomb/proc/is_auth(mob/user)
if(auth)
return TRUE
else if(user.can_admin_interact())
@@ -389,9 +308,6 @@ GLOBAL_VAR(bomb_set)
if(safety)
to_chat(usr, "The safety is still on.")
return
- if(!core)
- to_chat(usr, "The [src]'s screen blinks red! There is no plutonium core in the [src]!")
- return
timing = !(timing)
if(timing)
if(!lighthack)
@@ -443,8 +359,9 @@ GLOBAL_VAR(bomb_set)
var/off_station = 0
var/turf/bomb_location = get_turf(src)
+ var/area/A = get_area(src)
if( bomb_location && is_station_level(bomb_location.z) )
- if( (bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)) )
+ if( (bomb_location.x < (128 - NUKERANGE)) || (bomb_location.x > (128 + NUKERANGE)) || (bomb_location.y < (128 - NUKERANGE)) || (bomb_location.y > (128 + NUKERANGE)) && (!(A in GLOB.the_station_areas)))
off_station = 1
else
off_station = 2
@@ -467,7 +384,7 @@ GLOBAL_VAR(bomb_set)
else
to_chat(world, "The station was destoyed by the nuclear blast!")
- SSticker.mode.station_was_nuked = (off_station<2) //offstation==1 is a draw. the station becomes irradiated and needs to be evacuated.
+ SSticker.mode.station_was_nuked = (off_station < 2) //offstation==1 is a draw. the station becomes irradiated and needs to be evacuated.
//kinda shit but I couldn't get permission to do what I wanted to do.
if(!SSticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is
@@ -554,7 +471,3 @@ GLOBAL_VAR(bomb_set)
#undef NUKE_SEALANT_OPEN
#undef NUKE_UNWRENCHED
#undef NUKE_MOBILE
-#undef NUKE_CORE_EVERYTHING_FINE
-#undef NUKE_CORE_PANEL_EXPOSED
-#undef NUKE_CORE_PANEL_UNWELDED
-#undef NUKE_CORE_FULLY_EXPOSED
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index a6e8a9a557e..2efad59ba39 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -262,11 +262,13 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
/datum/objective/block/check_completion()
if(!istype(owner.current, /mob/living/silicon))
- return 0
+ return FALSE
+ if(SSticker.mode.station_was_nuked)
+ return TRUE
if(SSshuttle.emergency.mode < SHUTTLE_ENDGAME)
- return 0
+ return FALSE
if(!owner.current)
- return 0
+ return FALSE
var/area/A = SSshuttle.emergency.areaInstance
@@ -276,9 +278,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
if(player.mind && player.stat != DEAD)
if(get_area(player) == A)
- return 0 // If there are any other organic mobs on the shuttle, you failed the objective.
+ return FALSE // If there are any other organic mobs on the shuttle, you failed the objective.
- return 1
+ return TRUE
/datum/objective/escape
explanation_text = "Escape on the shuttle or an escape pod alive and free."
@@ -451,7 +453,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
/datum/objective/steal/exchange
martyr_compatible = 0
-/datum/objective/steal/exchange/proc/set_faction(var/faction,var/otheragent)
+/datum/objective/steal/exchange/proc/set_faction(faction, otheragent)
target = otheragent
var/datum/theft_objective/unique/targetinfo
if(faction == "red")
@@ -462,7 +464,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
steal_target = targetinfo
/datum/objective/steal/exchange/backstab
-/datum/objective/steal/exchange/backstab/set_faction(var/faction)
+/datum/objective/steal/exchange/backstab/set_faction(faction)
var/datum/theft_objective/unique/targetinfo
if(faction == "red")
targetinfo = new /datum/theft_objective/unique/docs_red
@@ -497,7 +499,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
/datum/objective/absorb
-/datum/objective/absorb/proc/gen_amount_goal(var/lowbound = 4, var/highbound = 6)
+/datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6)
target_amount = rand (lowbound,highbound)
if(SSticker)
var/n_p = 1 //autowin
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index c8a9d39e555..a89f12f06ce 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -110,6 +110,7 @@
to_chat(rev_mind.current, "Objective #[obj_count]: [objective.explanation_text]")
rev_mind.special_role = SPECIAL_ROLE_HEAD_REV
obj_count++
+ to_chat(rev_mind.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Revolution)")
/////////////////////////////////////////////////////////////////////////////////
//This are equips the rev heads with their gear, and makes the clown not clumsy//
diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm
index 75825a12259..d749f8ef553 100644
--- a/code/game/gamemodes/setupgame.dm
+++ b/code/game/gamemodes/setupgame.dm
@@ -1,4 +1,4 @@
-/proc/getAssignedBlock(var/name,var/list/blocksLeft, var/activity_bounds=DNA_DEFAULT_BOUNDS, var/good=0)
+/proc/getAssignedBlock(name, list/blocksLeft, activity_bounds=DNA_DEFAULT_BOUNDS, good=0)
if(blocksLeft.len==0)
warning("[name]: No more blocks left to assign!")
return 0
@@ -114,18 +114,21 @@
if(G.block)
if(G.block in blocks_assigned)
warning("DNA2: Gene [G.name] trying to use already-assigned block [G.block] (used by [english_list(blocks_assigned[G.block])])")
- GLOB.dna_mutations.Add(G)
+ GLOB.dna_mutations[mutation_type] = G
var/list/assignedToBlock[0]
if(blocks_assigned[G.block])
- assignedToBlock=blocks_assigned[G.block]
+ assignedToBlock = blocks_assigned[G.block]
assignedToBlock.Add(G.name)
- blocks_assigned[G.block]=assignedToBlock
+ blocks_assigned[G.block] = assignedToBlock
//testing("DNA2: Gene [G.name] assigned to block [G.block].")
+ else
+ qdel(G)
// I WILL HAVE A LIST OF MUTATIONS THAT MATCHES THE RANDOMIZED BLOCKS GODDAMNIT!
for(var/block in 1 to DNA_SE_LENGTH)
var/name = GLOB.assigned_blocks[block]
- for(var/datum/mutation/mutation in GLOB.dna_mutations)
+ for(var/mutation_type in GLOB.dna_mutations)
+ var/datum/mutation/mutation = GLOB.dna_mutations[mutation_type]
if(mutation.name == name || mutation.block == block)
if(mutation.block in GLOB.assigned_mutation_blocks)
warning("DNA2: Mutation [mutation.name] trying to add to already assigned gene block list (used by [english_list(GLOB.assigned_mutation_blocks[block])])")
diff --git a/code/game/gamemodes/shadowling/ascendant_shadowling.dm b/code/game/gamemodes/shadowling/ascendant_shadowling.dm
index 9eeadeaba0f..e4f6f7de4ab 100644
--- a/code/game/gamemodes/shadowling/ascendant_shadowling.dm
+++ b/code/game/gamemodes/shadowling/ascendant_shadowling.dm
@@ -38,7 +38,7 @@
icon_state = "NurnKal"
icon_living = "NurnKal"
-/mob/living/simple_animal/ascendant_shadowling/Process_Spacemove(var/movement_dir = 0)
+/mob/living/simple_animal/ascendant_shadowling/Process_Spacemove(movement_dir = 0)
return 1 //copypasta from carp code
/mob/living/simple_animal/ascendant_shadowling/ex_act(severity)
@@ -47,7 +47,7 @@
/mob/living/simple_animal/ascendant_shadowling/singularity_act()
return 0 //Well hi, fellow god! How are you today?
-/mob/living/simple_animal/ascendant_shadowling/proc/announce(var/text, var/size = 4, var/new_sound = null)
+/mob/living/simple_animal/ascendant_shadowling/proc/announce(text, size = 4, new_sound = null)
var/message = "\"[text]\""
for(var/mob/M in GLOB.player_list)
if(!isnewplayer(M) && M.client)
diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm
index 2ed440f366d..67109419040 100644
--- a/code/game/gamemodes/shadowling/shadowling.dm
+++ b/code/game/gamemodes/shadowling/shadowling.dm
@@ -55,15 +55,15 @@ Made by Xhuis
var/victory_warning_announced = FALSE
var/thrall_ratio = 1
-/proc/is_thrall(var/mob/living/M)
+/proc/is_thrall(mob/living/M)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.shadowling_thralls)
-/proc/is_shadow_or_thrall(var/mob/living/M)
+/proc/is_shadow_or_thrall(mob/living/M)
return istype(M) && M.mind && SSticker && SSticker.mode && ((M.mind in SSticker.mode.shadowling_thralls) || (M.mind in SSticker.mode.shadows))
-/proc/is_shadow(var/mob/living/M)
+/proc/is_shadow(mob/living/M)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.shadows)
@@ -122,15 +122,14 @@ Made by Xhuis
//give_shadowling_abilities(shadow)
..()
-/datum/game_mode/proc/greet_shadow(var/datum/mind/shadow)
+/datum/game_mode/proc/greet_shadow(datum/mind/shadow)
to_chat(shadow.current, "Currently, you are disguised as an employee aboard [world.name].")
to_chat(shadow.current, "In your limited state, you have two abilities: Hatch and Shadowling Hivemind (:8).")
to_chat(shadow.current, "Any other shadowlings are your allies. You must assist them as they shall assist you.")
- to_chat(shadow.current, "If you are new to shadowling, or want to read about abilities, check the wiki page at https://www.paradisestation.org/wiki/index.php/Shadowling ")
+ to_chat(shadow.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Shadowling)")
-
-/datum/game_mode/proc/process_shadow_objectives(var/datum/mind/shadow_mind)
+/datum/game_mode/proc/process_shadow_objectives(datum/mind/shadow_mind)
var/objective = "enthrall" //may be devour later, but for now it seems murderbone-y
if(objective == "enthrall")
@@ -140,7 +139,7 @@ Made by Xhuis
to_chat(shadow_mind.current, "Objective #1: [objective_explanation] ")
-/datum/game_mode/proc/finalize_shadowling(var/datum/mind/shadow_mind)
+/datum/game_mode/proc/finalize_shadowling(datum/mind/shadow_mind)
var/mob/living/carbon/human/S = shadow_mind.current
shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_hatch(null))
spawn(0)
@@ -169,6 +168,7 @@ Made by Xhuis
to_chat(new_thrall_mind.current, "Your body has been irreversibly altered. The attentive can see this - you may conceal it by wearing a mask.")
to_chat(new_thrall_mind.current, "Though not nearly as powerful as your masters, you possess some weak powers. These can be found in the Thrall Abilities tab.")
to_chat(new_thrall_mind.current, "You may communicate with your allies by speaking in the Shadowling Hivemind (:8).")
+ to_chat(new_thrall_mind.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Shadowling)")
if(jobban_isbanned(new_thrall_mind.current, ROLE_SHADOWLING) || jobban_isbanned(new_thrall_mind.current, ROLE_SYNDICATE))
replace_jobbanned_player(new_thrall_mind.current, ROLE_SHADOWLING)
if(!victory_warning_announced && (length(shadowling_thralls) >= warning_threshold))//are the slings very close to winning?
@@ -176,7 +176,7 @@ Made by Xhuis
GLOB.command_announcement.Announce("Large concentration of psychic bluespace energy detected by long-ranged scanners. Shadowling ascension event imminent. Prevent it at all costs!", "Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg')
return 1
-/datum/game_mode/proc/remove_thrall(datum/mind/thrall_mind, var/kill = 0)
+/datum/game_mode/proc/remove_thrall(datum/mind/thrall_mind, kill = 0)
if(!istype(thrall_mind) || !(thrall_mind in shadowling_thralls) || !isliving(thrall_mind.current))
return 0 //If there is no mind, the mind isn't a thrall, or the mind's mob isn't alive, return
shadowling_thralls.Remove(thrall_mind)
diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index 5d7f6c269e8..4d93a601e9d 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -1,6 +1,6 @@
#define EMPOWERED_THRALL_LIMIT 5
-/obj/effect/proc_holder/spell/proc/shadowling_check(var/mob/living/carbon/human/H)
+/obj/effect/proc_holder/spell/proc/shadowling_check(mob/living/carbon/human/H)
if(!H || !istype(H))
return
if(H.incorporeal_move == 1)
@@ -80,10 +80,12 @@
var/blacklisted_lights = list(/obj/item/flashlight/flare, /obj/item/flashlight/slime)
action_icon_state = "veil"
-/obj/effect/proc_holder/spell/aoe_turf/veil/cast(list/targets, mob/user = usr)
+/obj/effect/proc_holder/spell/aoe_turf/veil/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/aoe_turf/veil/cast(list/targets, mob/user = usr)
to_chat(user, "You silently disable all nearby lights.")
for(var/obj/structure/glowshroom/G in orange(2, user)) //Why the fuck was this in the loop below?
G.visible_message("[G] withers away!")
@@ -103,10 +105,12 @@
include_user = 1
action_icon_state = "shadow_walk"
-/obj/effect/proc_holder/spell/targeted/shadow_walk/cast(list/targets, mob/user = usr)
+/obj/effect/proc_holder/spell/targeted/shadow_walk/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/targeted/shadow_walk/cast(list/targets, mob/user = usr)
for(var/mob/living/target in targets)
playsound(user.loc, 'sound/effects/bamf.ogg', 50, 1)
target.visible_message("[target] vanishes in a puff of black mist!", "You enter the space between worlds as a passageway.")
@@ -176,10 +180,12 @@
clothes_req = 0
action_icon_state = "icy_veins"
-/obj/effect/proc_holder/spell/aoe_turf/flashfreeze/cast(list/targets, mob/user = usr)
+/obj/effect/proc_holder/spell/aoe_turf/flashfreeze/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/aoe_turf/flashfreeze/cast(list/targets, mob/user = usr)
to_chat(user, "You freeze the nearby air.")
playsound(user.loc, 'sound/effects/ghost2.ogg', 50, 1)
@@ -215,8 +221,11 @@
selection_deactivated_message = "Your mind relaxes."
allowed_type = /mob/living/carbon/human
-/obj/effect/proc_holder/spell/targeted/click/enthrall/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE)
- if(enthralling || !shadowling_check(user))
+/obj/effect/proc_holder/spell/targeted/click/enthrall/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
+ if(enthralling)
+ to_chat(user, "You're already enthralling someone!")
+ return FALSE
+ if(!shadowling_check(user))
return FALSE
return ..()
@@ -311,10 +320,12 @@
var/reviveThrallAcquired
action_icon_state = "collective_mind"
-/obj/effect/proc_holder/spell/targeted/collective_mind/cast(list/targets, mob/user = usr)
+/obj/effect/proc_holder/spell/targeted/collective_mind/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/targeted/collective_mind/cast(list/targets, mob/user = usr)
for(var/mob/living/target in targets)
var/thralls = 0
var/victory_threshold = SSticker.mode.required_thralls
@@ -386,10 +397,12 @@
include_user = 1
action_icon_state = "black_smoke"
-/obj/effect/proc_holder/spell/targeted/blindness_smoke/cast(list/targets, mob/user = usr) //Extremely hacky
+/obj/effect/proc_holder/spell/targeted/blindness_smoke/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/targeted/blindness_smoke/cast(list/targets, mob/user = usr) //Extremely hacky
for(var/mob/living/target in targets)
target.visible_message("[target] suddenly bends over and coughs out a cloud of black smoke, which begins to spread rapidly!")
to_chat(target, "You regurgitate a vast cloud of blinding smoke.")
@@ -435,10 +448,12 @@
clothes_req = 0
action_icon_state = "screech"
-/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech/cast(list/targets, mob/user = usr)
+/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech/cast(list/targets, mob/user = usr)
user.audible_message("[user] lets out a horrible scream!")
playsound(user.loc, 'sound/effects/screech.ogg', 100, 1)
@@ -472,11 +487,12 @@
clothes_req = FALSE
action_icon_state = "null_charge"
-/obj/effect/proc_holder/spell/aoe_turf/null_charge/cast(mob/user = usr)
+/obj/effect/proc_holder/spell/aoe_turf/null_charge/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
- charge_counter = charge_max
- return
+ return FALSE
+ return ..()
+/obj/effect/proc_holder/spell/aoe_turf/null_charge/cast(mob/user = usr)
var/list/local_objs = view(1, user)
var/obj/machinery/power/apc/target_apc
for(var/object in local_objs)
@@ -532,7 +548,7 @@
selection_deactivated_message = "Your mind relaxes."
allowed_type = /mob/living/carbon/human
-/obj/effect/proc_holder/spell/targeted/click/reviveThrall/can_cast(mob/user = usr)
+/obj/effect/proc_holder/spell/targeted/click/reviveThrall/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
return FALSE
return ..()
@@ -622,9 +638,12 @@
action_icon_state = "extend_shuttle"
var/global/extendlimit = 0
-/obj/effect/proc_holder/spell/targeted/click/shadowling_extend_shuttle/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE)
+/obj/effect/proc_holder/spell/targeted/click/shadowling_extend_shuttle/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
if(!shadowling_check(user))
return FALSE
+ return ..()
+
+/obj/effect/proc_holder/spell/targeted/click/shadowling_extend_shuttle/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE)
if(extendlimit == 1)
if(show_message)
to_chat(user, "Shuttle was already delayed.")
diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
index 9fb234a27ff..4007ce3c77a 100644
--- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
@@ -122,10 +122,13 @@ GLOBAL_LIST_INIT(possibleShadowlingNames, list("U'ruan", "Y`shej", "Nex", "Hel-u
include_user = 1
action_icon_state = "ascend"
+/obj/effect/proc_holder/spell/targeted/shadowling_ascend/cast_check(charge_check = TRUE, start_recharge = TRUE, mob/living/user = usr)
+ if(!shadowling_check(user))
+ return FALSE
+ return ..()
+
/obj/effect/proc_holder/spell/targeted/shadowling_ascend/cast(list/targets, mob/user = usr)
var/mob/living/carbon/human/H = user
- if(!shadowling_check(H))
- return
for(H in targets)
var/hatch_or_no = alert(H,"It is time to ascend. Are you sure about this?",,"Yes","No")
switch(hatch_or_no)
diff --git a/code/game/gamemodes/steal_items.dm b/code/game/gamemodes/steal_items.dm
index 1b1a222cd9e..2ea71edc2cd 100644
--- a/code/game/gamemodes/steal_items.dm
+++ b/code/game/gamemodes/steal_items.dm
@@ -15,7 +15,7 @@
/// Do we have a special item we give to somewhen when they get this objective?
var/special_equipment = null
-/datum/theft_objective/proc/check_completion(var/datum/mind/owner)
+/datum/theft_objective/proc/check_completion(datum/mind/owner)
if(!owner.current)
return 0
if(!isliving(owner.current))
@@ -64,7 +64,7 @@
typepath = /obj/item/aicard
location_override = "AI Satellite. An intellicard for transportation can be found in Tech Storage, Science Department or manufactured"
-/datum/theft_objective/ai/check_special_completion(var/obj/item/aicard/C)
+/datum/theft_objective/ai/check_special_completion(obj/item/aicard/C)
if(..())
for(var/mob/living/silicon/ai/A in C)
if(istype(A, /mob/living/silicon/ai) && A.stat != 2) //See if any AI's are alive inside that card.
@@ -168,7 +168,7 @@
required_amount=rand(lower,upper)*step
name = "[required_amount] [name]"
-/datum/theft_objective/number/check_completion(var/datum/mind/owner)
+/datum/theft_objective/number/check_completion(datum/mind/owner)
if(!owner.current)
return 0
if(!isliving(owner.current))
@@ -180,7 +180,7 @@
found_amount += getAmountStolen(I)
return found_amount >= required_amount
-/datum/theft_objective/number/proc/getAmountStolen(var/obj/item/I)
+/datum/theft_objective/number/proc/getAmountStolen(obj/item/I)
return I:amount
/datum/theft_objective/unique
diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm
index 56f31a173be..6c116ab53f2 100644
--- a/code/game/gamemodes/vampire/vampire.dm
+++ b/code/game/gamemodes/vampire/vampire.dm
@@ -135,7 +135,7 @@
to_chat(world, text)
return 1
-/datum/game_mode/proc/forge_vampire_objectives(var/datum/mind/vampire)
+/datum/game_mode/proc/forge_vampire_objectives(datum/mind/vampire)
//Objectives are traitor objectives plus blood objectives
var/datum/objective/blood/blood_objective = new
@@ -172,7 +172,7 @@
return
vampire_mob.make_vampire()
-/datum/game_mode/proc/greet_vampire(var/datum/mind/vampire, var/you_are=1)
+/datum/game_mode/proc/greet_vampire(datum/mind/vampire, you_are=1)
var/dat
if(you_are)
SEND_SOUND(vampire.current, sound('sound/ambience/antag/vampalert.ogg'))
@@ -193,8 +193,8 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
for(var/datum/objective/objective in vampire.objectives)
to_chat(vampire.current, "Objective #[obj_count]: [objective.explanation_text]")
obj_count++
+ to_chat(vampire.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Vampire)")
return
-
/datum/vampire
var/bloodtotal = 0 // CHANGE TO ZERO WHEN PLAYTESTING HAPPENS
var/bloodusable = 0 // CHANGE TO ZERO WHEN PLAYTESTING HAPPENS
@@ -220,6 +220,10 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
/obj/effect/proc_holder/spell/vampire/targetted/enthrall = 300,
/datum/vampire_passive/full = 500)
+/datum/vampire/proc/adjust_nullification(base, extra)
+ // First hit should give full nullification, while subsequent hits increase the value slower
+ nullified = max(nullified + extra, base)
+
/datum/vampire/New(gend = FEMALE)
gender = gend
@@ -248,7 +252,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
qdel(ability)
owner.update_sight() // Life updates conditionally, so we need to update sight here in case the vamp loses his vision based powers. Maybe one day refactor to be more OOP and on the vampire's ability datum.
-/datum/vampire/proc/update_owner(var/mob/living/carbon/human/current) //Called when a vampire gets cloned. This updates vampire.owner to the new body.
+/datum/vampire/proc/update_owner(mob/living/carbon/human/current) //Called when a vampire gets cloned. This updates vampire.owner to the new body.
if(current.mind && current.mind.vampire && current.mind.vampire.owner && (current.mind.vampire.owner != current))
current.mind.vampire.owner = current
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index db245cd0d25..4e06cb02df1 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -564,7 +564,7 @@
H.raise_vampire(user)
-/mob/living/carbon/human/proc/raise_vampire(var/mob/M)
+/mob/living/carbon/human/proc/raise_vampire(mob/M)
if(!istype(M))
log_debug("human/proc/raise_vampire called with invalid argument.")
return
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index ee9fd069a76..af83abba66b 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -147,7 +147,7 @@
var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
var/spawn_amt_left = 20
-/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc)
+/obj/effect/rend/New(loc, spawn_type, spawn_amt, desc)
..()
src.spawn_path = spawn_type
src.spawn_amt_left = spawn_amt
@@ -352,7 +352,7 @@ GLOBAL_LIST_EMPTY(multiverse)
to_chat(user, "[src] is recharging! Keep in mind it shares a cooldown with the swords wielded by your copies.")
-/obj/item/multisword/proc/spawn_copy(var/client/C, var/turf/T, mob/user)
+/obj/item/multisword/proc/spawn_copy(client/C, turf/T, mob/user)
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
if(duplicate_self)
user.client.prefs.copy_to(M)
@@ -398,7 +398,7 @@ GLOBAL_LIST_EMPTY(multiverse)
M.mind.special_role = SPECIAL_ROLE_MULTIVERSE
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] protect the station.")
-/obj/item/multisword/proc/equip_copy(var/mob/living/carbon/human/M)
+/obj/item/multisword/proc/equip_copy(mob/living/carbon/human/M)
var/obj/item/multisword/sword = new sword_type
sword.assigned = assigned
diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm
index f2d0e6eb81a..409a1801e40 100644
--- a/code/game/gamemodes/wizard/godhand.dm
+++ b/code/game/gamemodes/wizard/godhand.dm
@@ -13,7 +13,7 @@
throw_range = 0
throw_speed = 0
-/obj/item/melee/touch_attack/New(var/spell)
+/obj/item/melee/touch_attack/New(spell)
attached_spell = spell
..()
diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm
index 0c2475edd41..d50a6200764 100644
--- a/code/game/gamemodes/wizard/raginmages.dm
+++ b/code/game/gamemodes/wizard/raginmages.dm
@@ -16,7 +16,7 @@
to_chat(world, "The current game mode is - Ragin' Mages!")
to_chat(world, "The Space Wizard Federation is pissed, crew must help defeat all the Space Wizards invading the station!")
-/datum/game_mode/wizard/raginmages/greet_wizard(var/datum/mind/wizard, var/you_are=1)
+/datum/game_mode/wizard/raginmages/greet_wizard(datum/mind/wizard, you_are=1)
if(you_are)
to_chat(wizard.current, "You are the Space Wizard!")
to_chat(wizard.current, "The Space Wizard Federation has given you the following tasks:")
@@ -85,7 +85,7 @@
return ..()
// To silence all struggles within the wizard's lair
-/datum/game_mode/wizard/raginmages/proc/end_squabble(var/area/wizard_station/A)
+/datum/game_mode/wizard/raginmages/proc/end_squabble(area/wizard_station/A)
if(!istype(A)) return // You could probably do mean things with this otherwise
var/list/marked_for_death = list()
for(var/mob/living/L in A) // To hit non-wizard griefers
@@ -143,7 +143,7 @@
// ripped from -tg-'s wizcode, because whee lets make a very general proc for a very specific gamemode
// This probably wouldn't do half bad as a proc in __HELPERS
// Lemme know if this causes species to mess up spectacularly or anything
-/datum/game_mode/wizard/raginmages/proc/makeBody(var/mob/dead/observer/G)
+/datum/game_mode/wizard/raginmages/proc/makeBody(mob/dead/observer/G)
if(!G || !G.key)
return // Let's not steal someone's soul here
var/mob/living/carbon/human/new_character = new(pick(GLOB.latejoin))
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index cd7c5d21546..c065502cc58 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -323,6 +323,7 @@
var/mob/living/simple_animal/hostile/construct/C = new picked_class(shell.loc)
C.init_construct(shade, src, shell)
to_chat(C, C.playstyle_string)
+ to_chat(C, "For more information, check the wiki page: ([config.wikiurl]/index.php/Construct)")
else
to_chat(user, "Creation failed!: The soul stone is empty! Go kill someone!")
@@ -339,13 +340,11 @@
if(shade.mind)
shade.mind.transfer_to(src)
if(SS.purified)
- set_light(3, 5, LIGHT_COLOR_DARK_BLUE)
- name = "Holy [name]"
- real_name = "Holy [real_name]"
-
+ make_holy()
// Replace regular soulstone summoning with purified soulstones
- RemoveSpell(/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone)
- AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/holy)
+ if(is_type_in_list(/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone, mob_spell_list))
+ RemoveSpell(/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone)
+ AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/holy)
else if(iscultist(src)) // Re-grant cult actions, lost in the transfer
var/datum/action/innate/cult/comm/CC = new
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 88ee4cc393d..c22a26181ad 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -88,7 +88,7 @@
if(!S)
S = new spell_type()
var/dat =""
- dat += "[initial(S.name)]"
+ dat += "[name]"
if(S.charge_type == "recharge")
dat += " Cooldown:[S.charge_max/10]"
dat += " Cost:[cost] "
@@ -227,6 +227,25 @@
log_name = "TS"
category = "Defensive"
+/datum/spellbook_entry/sacred_flame
+ name = "Sacred Flame and Fire Immunity"
+ spell_type = /obj/effect/proc_holder/spell/targeted/sacred_flame
+ cost = 1
+ log_name = "SF"
+ category = "Defensive"
+
+/datum/spellbook_entry/sacred_flame/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, obj/effect/proc_holder/spell/newspell)
+ to_chat(user, "You feel fireproof.")
+ ADD_TRAIT(user, TRAIT_RESISTHEAT, MAGIC_TRAIT)
+ ADD_TRAIT(user, TRAIT_RESISTHIGHPRESSURE, MAGIC_TRAIT)
+ return ..()
+
+/datum/spellbook_entry/sacred_flame/Refund(mob/living/carbon/human/user, obj/item/spellbook/book)
+ to_chat(user, "You no longer feel fireproof.")
+ REMOVE_TRAIT(user, TRAIT_RESISTHEAT, MAGIC_TRAIT)
+ REMOVE_TRAIT(user, TRAIT_RESISTHIGHPRESSURE, MAGIC_TRAIT)
+ return ..()
+
//Mobility
/datum/spellbook_entry/knock
name = "Knock"
@@ -357,10 +376,14 @@
name = "Buy Item"
refundable = 0
buy_word = "Summon"
+ var/spawn_on_floor = FALSE
var/item_path = null
/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user, obj/item/spellbook/book)
- user.put_in_hands(new item_path)
+ if(spawn_on_floor == FALSE)
+ user.put_in_hands(new item_path)
+ else
+ new item_path(user.loc)
SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, log_name)
return 1
@@ -406,6 +429,30 @@
log_name = "WA"
category = "Artefacts"
+/datum/spellbook_entry/item/cursed_heart
+ name = "Cursed Heart"
+ desc = "A heart that has been empowered with magic to heal the user. The user must ensure the heart is manually beaten or their blood circulation will suffer, but every beat heals their injuries. It must beat every 6 seconds. Not reccomended for first time wizards."
+ item_path = /obj/item/organ/internal/heart/cursed/wizard
+ log_name = "CH"
+ cost = 1
+ category = "Artefacts"
+
+/datum/spellbook_entry/item/voice_of_god
+ name = "Voice of God"
+ desc = "A magical vocal cord that can be used to yell out with the voice of a god, be it to harm, help, or confuse the target."
+ item_path = /obj/item/organ/internal/vocal_cords/colossus/wizard
+ log_name = "VG"
+ category = "Artefacts"
+
+/datum/spellbook_entry/item/warp_cubes
+ name = "Warp Cubes"
+ desc = "Two magic cubes, that when they are twisted in hand, teleports the user to the location of the other cube instantly. Great for silently teleporting to a fixed location, or teleporting you to an appretnance, or vice versa. Do not leave on the wizard den, it will not work."
+ item_path = /obj/item/warp_cube/red
+ log_name = "WC"
+ cost = 1
+ spawn_on_floor = TRUE // breaks if spawned in hand
+ category = "Artefacts"
+
//Weapons and Armors
/datum/spellbook_entry/item/battlemage
name = "Battlemage Armour"
@@ -437,6 +484,21 @@
log_name = "SI"
category = "Weapons and Armors"
+/datum/spellbook_entry/item/spell_blade //Yes spellblade is technicaly a staff, but you can melee with it and it is not called a staff so I am putting it here
+ name = "Spellblade"
+ desc = "A magical sword that is quite good at slashing people, but is even better at shooting magical projectiles that can potentialy delimb at range."
+ item_path = /obj/item/gun/magic/staff/spellblade
+ log_name = "SB"
+ category = "Weapons and Armors"
+
+/datum/spellbook_entry/item/meat_hook
+ name = "Meat hook"
+ desc = "An enchanted hook, that can be used to hook people, hurt them, and bring them right to you. Quite bulky, works well as a belt though."
+ item_path = /obj/item/gun/magic/hook
+ cost = 1
+ log_name = "MH"
+ category = "Weapons and Armors"
+
//Staves
/datum/spellbook_entry/item/staffdoor
name = "Staff of Door Creation"
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index c21640d8466..d076afbaadb 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -77,7 +77,7 @@
wizhud.leave_hud(wiz_mind.current)
set_antag_hud(wiz_mind.current, null)
-/datum/game_mode/proc/forge_wizard_objectives(var/datum/mind/wizard)
+/datum/game_mode/proc/forge_wizard_objectives(datum/mind/wizard)
var/datum/objective/wizchaos/wiz_objective = new
wiz_objective.owner = wizard
wizard.objectives += wiz_objective
@@ -98,7 +98,7 @@
if(wizard_mob.mind)
wizard_mob.mind.name = newname
-/datum/game_mode/proc/greet_wizard(var/datum/mind/wizard, var/you_are=1)
+/datum/game_mode/proc/greet_wizard(datum/mind/wizard, you_are=1)
addtimer(CALLBACK(wizard.current, /mob/.proc/playsound_local, null, 'sound/ambience/antag/ragesmages.ogg', 100, 0), 30)
if(you_are)
to_chat(wizard.current, "You are the Space Wizard!")
@@ -108,6 +108,7 @@
for(var/datum/objective/objective in wizard.objectives)
to_chat(wizard.current, "Objective #[obj_count]: [objective.explanation_text]")
obj_count++
+ to_chat(wizard.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Wizard)")
return
/*/datum/game_mode/proc/learn_basic_spells(mob/living/carbon/human/wizard_mob)
@@ -198,7 +199,7 @@
finished = 1
return 1
-/datum/game_mode/wizard/declare_completion(var/ragin = 0)
+/datum/game_mode/wizard/declare_completion(ragin = 0)
if(finished && !ragin)
SSticker.mode_result = "wizard loss - wizard killed"
to_chat(world, " The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!")
diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm
index ac533f0b7ef..f2b28fea297 100644
--- a/code/game/jobs/access.dm
+++ b/code/game/jobs/access.dm
@@ -54,7 +54,7 @@
L = list()
return check_access_list(L)
-/obj/proc/check_access_list(var/list/L)
+/obj/proc/check_access_list(list/L)
generate_req_lists()
if(!L)
@@ -63,7 +63,7 @@
return 0
return has_access(req_access, req_one_access, L)
-/proc/has_access(var/list/req_access, var/list/req_one_access, var/list/accesses)
+/proc/has_access(list/req_access, list/req_one_access, list/accesses)
for(var/req in req_access)
if(!(req in accesses)) //doesn't have this access
return 0
@@ -400,6 +400,9 @@
/proc/get_all_centcom_jobs()
return list("VIP Guest","Custodian","Thunderdome Overseer","Emergency Response Team Member","Emergency Response Team Leader","Intel Officer","Medical Officer","Death Commando","Research Officer","Deathsquad Officer","Special Operations Officer","Nanotrasen Navy Representative","Nanotrasen Navy Officer","Nanotrasen Navy Captain","Supreme Commander")
+/proc/get_all_solgov_jobs()
+ return list("Solar Federation Lieutenant","Solar Federation Specops Lieutenant","Solar Federation Marine","Solar Federation Specops Marine","Solar Federation Representative","Sol Trader")
+
//gets the actual job rank (ignoring alt titles)
//this is used solely for sechuds
/obj/proc/GetJobRealName()
@@ -424,26 +427,8 @@
return "Unknown"
-//gets the alt title, failing that the actual job rank
-//this is unused
-// THEN WHY IS IT STILL HERE?? -AA07, 2020-07-31
-/obj/proc/sdsdsd() //GetJobDisplayName
- if(!istype(src, /obj/item/pda) && !istype(src,/obj/item/card/id))
- return
- var/assignment
- if(istype(src, /obj/item/pda))
- if(src:id)
- assignment = src:id:assignment
- else if(istype(src, /obj/item/card/id))
- assignment = src:assignment
-
- if(assignment)
- return assignment
-
- return "Unknown"
-
-/proc/GetIdCard(var/mob/living/carbon/human/H)
+/proc/GetIdCard(mob/living/carbon/human/H)
if(H.wear_id)
var/id = H.wear_id.GetID()
if(id)
@@ -452,7 +437,7 @@
var/obj/item/I = H.get_active_hand()
return I.GetID()
-/proc/FindNameFromID(var/mob/living/carbon/human/H)
+/proc/FindNameFromID(mob/living/carbon/human/H)
ASSERT(istype(H))
var/obj/item/card/id/C = H.get_active_hand()
if( istype(C) || istype(C, /obj/item/pda) )
@@ -499,12 +484,18 @@
var/job_icons = get_all_job_icons()
var/centcom = get_all_centcom_jobs()
+ var/solgov = get_all_solgov_jobs()
if(assignmentName in centcom) //Return with the NT logo if it is a Centcom job
return "Centcom"
if(rankName in centcom)
return "Centcom"
+ if(assignmentName in solgov) //Return with the SolGov logo if it is a SolGov job
+ return "solgov"
+ if(rankName in solgov)
+ return "solgov"
+
if(assignmentName in job_icons) //Check if the job has a hud icon
return assignmentName
if(rankName in job_icons)
diff --git a/code/game/jobs/job_exp.dm b/code/game/jobs/job_exp.dm
index 0e281606124..b30fbac02c4 100644
--- a/code/game/jobs/job_exp.dm
+++ b/code/game/jobs/job_exp.dm
@@ -85,7 +85,7 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list(
src << browse(msg, "window=Player_playtime_check")
-/datum/admins/proc/cmd_mentor_show_exp_panel(var/client/C)
+/datum/admins/proc/cmd_mentor_show_exp_panel(client/C)
if(!C)
to_chat(usr, "ERROR: Client not found.")
return
@@ -197,10 +197,10 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list(
return_text += ""
return return_text
-/client/proc/get_exp_type(var/etype)
+/client/proc/get_exp_type(etype)
return get_exp_format(get_exp_type_num(etype))
-/client/proc/get_exp_type_num(var/etype)
+/client/proc/get_exp_type_num(etype)
var/list/play_records = params2list(prefs.exp)
return text2num(play_records[etype])
@@ -216,7 +216,7 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list(
return result_text.Join("")
-/proc/get_exp_format(var/expnum)
+/proc/get_exp_format(expnum)
if(expnum > 60)
return num2text(round(expnum / 60)) + "h"
else if(expnum > 0)
diff --git a/code/game/jobs/job_objective.dm b/code/game/jobs/job_objective.dm
index 660d1830f0a..8eaf9e09b39 100644
--- a/code/game/jobs/job_objective.dm
+++ b/code/game/jobs/job_objective.dm
@@ -1,7 +1,7 @@
/datum/mind/var/list/job_objectives = list()
#define FINDJOBTASK_DEFAULT_NEW 1 // Make a new task of this type if one can't be found.
-/datum/mind/proc/findJobTask(var/typepath, var/options = 0)
+/datum/mind/proc/findJobTask(typepath, options = 0)
var/datum/job_objective/task = locate(typepath) in job_objectives
if(!istype(task,typepath))
if(options & FINDJOBTASK_DEFAULT_NEW)
@@ -18,7 +18,7 @@
var/units_requested = INFINITY
var/completion_payment = 0 // Credits paid to owner when completed
-/datum/job_objective/New(var/datum/mind/new_owner)
+/datum/job_objective/New(datum/mind/new_owner)
owner = new_owner
owner.job_objectives += src
@@ -27,7 +27,7 @@
var/desc = "Placeholder Objective"
return desc
-/datum/job_objective/proc/unit_completed(var/count=1)
+/datum/job_objective/proc/unit_completed(count=1)
units_completed += count
/datum/job_objective/proc/is_completed()
diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm
index 2f8e426e030..e0e817f76ef 100644
--- a/code/game/jobs/jobs.dm
+++ b/code/game/jobs/jobs.dm
@@ -105,7 +105,7 @@ GLOBAL_LIST_INIT(whitelisted_positions, list(
))
-/proc/guest_jobbans(var/job)
+/proc/guest_jobbans(job)
return (job in GLOB.whitelisted_positions)
/proc/get_job_datums()
@@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(whitelisted_positions, list(
return occupations
-/proc/get_alternate_titles(var/job)
+/proc/get_alternate_titles(job)
var/list/jobs = get_job_datums()
var/list/titles = list()
diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm
index fe835c4dc8d..af80e7474a4 100644
--- a/code/game/jobs/whitelist.dm
+++ b/code/game/jobs/whitelist.dm
@@ -13,13 +13,13 @@ GLOBAL_LIST_EMPTY(whitelist)
if(!GLOB.whitelist.len)
GLOB.whitelist = null
/*
-/proc/check_whitelist(mob/M, var/rank)
+/proc/check_whitelist(mob/M, rank)
if(!whitelist)
return 0
return ("[M.ckey]" in whitelist)
*/
-/proc/is_job_whitelisted(mob/M, var/rank)
+/proc/is_job_whitelisted(mob/M, rank)
if(guest_jobbans(rank))
if(!config.usewhitelist)
return TRUE
@@ -68,7 +68,7 @@ GLOBAL_LIST_EMPTY(alien_whitelist)
GLOB.alien_whitelist = splittext(text, "\n")
//todo: admin aliens
-/proc/is_alien_whitelisted(mob/M, var/species)
+/proc/is_alien_whitelisted(mob/M, species)
if(!config.usealienwhitelist)
return TRUE
if(config.disable_karma)
diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm
index 1f626f0656b..41612fb870b 100644
--- a/code/game/machinery/Beacon.dm
+++ b/code/game/machinery/Beacon.dm
@@ -39,7 +39,7 @@
destroy_beacon()
return ..()
-/obj/machinery/bluespace_beacon/hide(var/intact)
+/obj/machinery/bluespace_beacon/hide(intact)
invisibility = intact ? INVISIBILITY_MAXIMUM : 0
update_icon()
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index eaa1120ab04..45cd917c39b 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -27,7 +27,7 @@
disabled = TRUE
update_icon()
-/obj/machinery/ai_slipper/proc/setState(var/enabled, var/uses)
+/obj/machinery/ai_slipper/proc/setState(enabled, uses)
disabled = disabled
uses = uses
power_change()
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 8a800e9a29f..c148ca6e68f 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -37,12 +37,13 @@
var/list/recipiecache = list()
var/list/categories = list("Tools", "Electronics", "Construction", "Communication", "Security", "Machinery", "Medical", "Miscellaneous", "Dinnerware", "Imported")
+ var/board_type = /obj/item/circuitboard/autolathe
/obj/machinery/autolathe/New()
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), _show_on_examine=TRUE, _after_insert=CALLBACK(src, .proc/AfterMaterialInsert))
..()
component_parts = list()
- component_parts += new /obj/item/circuitboard/autolathe(null)
+ component_parts += new board_type(null)
component_parts += new /obj/item/stock_parts/matter_bin(null)
component_parts += new /obj/item/stock_parts/matter_bin(null)
component_parts += new /obj/item/stock_parts/matter_bin(null)
@@ -57,7 +58,7 @@
/obj/machinery/autolathe/upgraded/New()
..()
component_parts = list()
- component_parts += new /obj/item/circuitboard/autolathe(null)
+ component_parts += new board_type(null)
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
@@ -288,6 +289,8 @@
return ..()
/obj/machinery/autolathe/crowbar_act(mob/user, obj/item/I)
+ if(!panel_open)
+ return
if(!I.use_tool(src, user, 0, volume = 0))
return
. = TRUE
@@ -491,3 +494,13 @@
/obj/machinery/autolathe/proc/check_disabled_callback()
if(!wires.is_cut(WIRE_AUTOLATHE_DISABLE))
disabled = FALSE
+
+/obj/machinery/autolathe/syndicate
+ name = "syndicate autolathe"
+ board_type = /obj/item/circuitboard/autolathe/syndi
+
+/obj/machinery/autolathe/syndicate/New()
+ ..()
+ if(files)
+ QDEL_NULL(files)
+ files = new /datum/research/autolathe/syndicate(src)
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 9d7b73b2bcc..32b9b381887 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -24,7 +24,7 @@
/obj/machinery/button/indestructible
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
-/obj/machinery/driver_button/New(turf/loc, var/w_dir=null)
+/obj/machinery/driver_button/New(turf/loc, w_dir=null)
..()
switch(w_dir)
if(NORTH)
@@ -81,7 +81,7 @@
return ..()
-/obj/machinery/driver_button/multitool_menu(var/mob/user, var/obj/item/multitool/P)
+/obj/machinery/driver_button/multitool_menu(mob/user, obj/item/multitool/P)
return {"
- ID Tag: [format_tag("ID Tag","id_tag","set_id")]
@@ -147,7 +147,7 @@
icon_state = "launcherbtt"
active = 0
-/obj/machinery/driver_button/multitool_topic(var/mob/user,var/list/href_list,var/obj/O)
+/obj/machinery/driver_button/multitool_topic(mob/user, list/href_list, obj/O)
..()
if("toggle_logic" in href_list)
logic_connect = !logic_connect
diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm
index 1c247b23c03..b67357fead3 100644
--- a/code/game/machinery/camera/tracking.dm
+++ b/code/game/machinery/camera/tracking.dm
@@ -33,7 +33,7 @@
return T
-/mob/living/silicon/ai/proc/ai_camera_list(var/camera in get_camera_list())
+/mob/living/silicon/ai/proc/ai_camera_list(camera in get_camera_list())
set category = "AI Commands"
set name = "Show Camera List"
@@ -160,7 +160,7 @@
ai_actual_track(target)
-/mob/living/silicon/ai/proc/ai_cancel_tracking(var/forced = 0)
+/mob/living/silicon/ai/proc/ai_cancel_tracking(forced = 0)
if(!cameraFollow)
return
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index d1dc6f7ac68..e8d5cfcf437 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -210,12 +210,6 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
if(radio_announce)
Radio.autosay(message, name, "Medical", list(z))
-/obj/machinery/clonepod/proc/spooky_devil_flavor()
- playsound(loc, pick('sound/goonstation/voice/male_scream.ogg', 'sound/goonstation/voice/female_scream.ogg'), 100, 1)
- mess = TRUE
- update_icon()
- connected_message("If you keep trying to steal from me, you'll end up with me.")
-
//Start growing a human clone in the pod!
/obj/machinery/clonepod/proc/growclone(datum/dna2/record/R)
if(mess || attempting || panel_open || stat & (NOPOWER|BROKEN))
@@ -225,11 +219,6 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
return 0
if(clonemind.current && clonemind.current.stat != DEAD) //mind is associated with a non-dead body
return 0
- if(clonemind.damnation_type)
- spooky_devil_flavor()
- return 0
- if(!clonemind.is_revivable()) //Other reasons for being unrevivable
- return 0
if(clonemind.active) //somebody is using that mind
if(ckey(clonemind.key) != R.ckey )
return 0
@@ -331,7 +320,7 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
connected_message("Clone Ejected: Loss of power.")
else if((occupant) && (occupant.loc == src))
- if((occupant.stat == DEAD) || (occupant.suiciding) || (occupant.mind && !occupant.mind.is_revivable())) //Autoeject corpses and suiciding dudes.
+ if((occupant.stat == DEAD) || (occupant.suiciding)) //Autoeject corpses and suiciding dudes.
announce_radio_message("The cloning of [occupant] has been aborted due to unrecoverable tissue failure.")
go_out()
connected_message("Clone Rejected: Deceased.")
@@ -441,7 +430,7 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
/obj/machinery/clonepod/emag_act(user)
malfunction()
-/obj/machinery/clonepod/proc/update_clone_antag(var/mob/living/carbon/human/H)
+/obj/machinery/clonepod/proc/update_clone_antag(mob/living/carbon/human/H)
// Check to see if the clone's mind is an antagonist of any kind and handle them accordingly to make sure they get their spells, HUD/whatever else back.
if((H.mind in SSticker.mode:revolutionaries) || (H.mind in SSticker.mode:head_revolutionaries))
SSticker.mode.update_rev_icons_added() //So the icon actually appears
diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm
index 4141af84ca1..73ef22b3616 100644
--- a/code/game/machinery/computer/HolodeckControl.dm
+++ b/code/game/machinery/computer/HolodeckControl.dm
@@ -12,11 +12,11 @@
light_color = LIGHT_COLOR_CYAN
-/obj/machinery/computer/HolodeckControl/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/HolodeckControl/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/HolodeckControl/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/HolodeckControl/attack_hand(mob/user as mob)
if(..())
return 1
@@ -159,7 +159,7 @@
updateUsrDialog()
return
-/obj/machinery/computer/HolodeckControl/attackby(var/obj/item/D as obj, var/mob/user as mob, params)
+/obj/machinery/computer/HolodeckControl/attackby(obj/item/D as obj, mob/user as mob, params)
return
/obj/machinery/computer/HolodeckControl/emag_act(user as mob)
@@ -221,7 +221,7 @@
T.ex_act(3)
T.hotspot_expose(1000,500,1)
-/obj/machinery/computer/HolodeckControl/proc/derez(var/obj/obj , var/silent = 1)
+/obj/machinery/computer/HolodeckControl/proc/derez(obj/obj , silent = 1)
holographic_items.Remove(obj)
if(obj == null)
@@ -237,14 +237,14 @@
visible_message("The [oldobj.name] fades away!")
qdel(obj)
-/obj/machinery/computer/HolodeckControl/proc/checkInteg(var/area/A)
+/obj/machinery/computer/HolodeckControl/proc/checkInteg(area/A)
for(var/turf/T in A)
if(istype(T, /turf/space))
return 0
return 1
-/obj/machinery/computer/HolodeckControl/proc/togglePower(var/toggleOn = 0)
+/obj/machinery/computer/HolodeckControl/proc/togglePower(toggleOn = 0)
if(toggleOn)
var/area/targetsource = locate(/area/holodeck/source_emptycourt)
@@ -269,7 +269,7 @@
active = 0
-/obj/machinery/computer/HolodeckControl/proc/loadProgram(var/area/A)
+/obj/machinery/computer/HolodeckControl/proc/loadProgram(area/A)
if(world.time < (last_change + 25))
if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index b1fef7a1b23..8afa3fbb429 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -21,10 +21,10 @@
else
return ..()
-/obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/aifixer/attack_ai(mob/user as mob)
ui_interact(user)
-/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/aifixer/attack_hand(mob/user as mob)
ui_interact(user)
/obj/machinery/computer/aifixer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
@@ -107,7 +107,7 @@
else
overlays += image(icon,"ai-fixer-empty",overlay_layer)
-/obj/machinery/computer/aifixer/transfer_ai(var/interaction, var/mob/user, var/mob/living/silicon/ai/AI, var/obj/item/aicard/card)
+/obj/machinery/computer/aifixer/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card)
if(!..())
return
//Downloading AI from card to terminal.
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index edb554acab0..391a137749a 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -21,7 +21,7 @@
Reset()
-/obj/machinery/computer/arcade/proc/prizevend(var/score)
+/obj/machinery/computer/arcade/proc/prizevend(score)
if(!contents.len)
var/prize_amount
if(score)
@@ -907,7 +907,7 @@
//Add Random/Specific crewmember
-/obj/machinery/computer/arcade/orion_trail/proc/add_crewmember(var/specific = "")
+/obj/machinery/computer/arcade/orion_trail/proc/add_crewmember(specific = "")
var/newcrew = ""
if(specific)
newcrew = specific
@@ -923,7 +923,7 @@
//Remove Random/Specific crewmember
-/obj/machinery/computer/arcade/orion_trail/proc/remove_crewmember(var/specific = "", var/dont_remove = "")
+/obj/machinery/computer/arcade/orion_trail/proc/remove_crewmember(specific = "", dont_remove = "")
var/list/safe2remove = settlers
var/removed = ""
if(dont_remove)
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index a5898d87a4c..db28dd16dc6 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -28,7 +28,7 @@
/obj/machinery/air_sensor/update_icon()
icon_state = "gsensor[on]"
-/obj/machinery/air_sensor/multitool_menu(var/mob/user, var/obj/item/multitool/P)
+/obj/machinery/air_sensor/multitool_menu(mob/user, obj/item/multitool/P)
return {"
Main
"}
-/obj/machinery/air_sensor/multitool_topic(var/mob/user, var/list/href_list, var/obj/O)
+/obj/machinery/air_sensor/multitool_topic(mob/user, list/href_list, obj/O)
. = ..()
if(.)
return .
@@ -65,7 +65,7 @@
visible_message("You hear a quite click as the [src]'s floor bolts raise", "You hear a quite click")
return TRUE
-/obj/machinery/air_sensor/attackby(var/obj/item/W as obj, var/mob/user as mob)
+/obj/machinery/air_sensor/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/multitool))
update_multitool_menu(user)
return 1
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index eb8c996d9b0..6edc4d21eed 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -75,7 +75,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card/proc/is_centcom()
return FALSE
-/obj/machinery/computer/card/proc/is_authenticated(var/mob/user)
+/obj/machinery/computer/card/proc/is_authenticated(mob/user)
if(user.can_admin_interact())
return TRUE
if(scan)
@@ -292,7 +292,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
return TRUE
return FALSE
-/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/card/attack_ai(mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/card/attack_hand(mob/user as mob)
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index fc8321d1f6a..f2a76b15f58 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -372,7 +372,7 @@
src.add_fingerprint(usr)
-/obj/machinery/computer/cloning/proc/scan_mob(mob/living/carbon/human/subject as mob, var/scan_brain = 0)
+/obj/machinery/computer/cloning/proc/scan_mob(mob/living/carbon/human/subject as mob, scan_brain = 0)
if(stat & NOPOWER)
return
if(scanner.stat & (NOPOWER|BROKEN))
@@ -459,7 +459,7 @@
SStgui.update_uis(src)
//Find a specific record by key.
-/obj/machinery/computer/cloning/proc/find_record(var/find_key)
+/obj/machinery/computer/cloning/proc/find_record(find_key)
var/selected_record = null
for(var/datum/dna2/record/R in src.records)
if(R.ckey == find_key)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index d250cc60319..054a6719aff 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -45,7 +45,7 @@
..()
crew_announcement.newscast = 0
-/obj/machinery/computer/communications/proc/is_authenticated(var/mob/user, var/message = 1)
+/obj/machinery/computer/communications/proc/is_authenticated(mob/user, message = 1)
if(user.can_admin_interact())
return COMM_AUTHENTICATION_AGHOST
if(authenticated == COMM_AUTHENTICATION_CAPT)
@@ -56,7 +56,7 @@
to_chat(user, "Access denied.")
return COMM_AUTHENTICATION_NONE
-/obj/machinery/computer/communications/proc/change_security_level(var/new_level)
+/obj/machinery/computer/communications/proc/change_security_level(new_level)
tmp_alertlevel = new_level
var/old_level = GLOB.security_level
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
@@ -137,7 +137,7 @@
if(message_cooldown > world.time)
to_chat(usr, "Please allow at least one minute to pass between announcements.")
return
- var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement")
+ var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") as null|message
if(!input || message_cooldown > world.time || ..() || !(is_authenticated(usr) >= COMM_AUTHENTICATION_CAPT))
return
if(length(input) < COMM_MSGLEN_MINIMUM)
@@ -295,10 +295,10 @@
to_chat(user, "You scramble the communication routing circuits!")
SStgui.update_uis(src)
-/obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/communications/attack_ai(mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/communications/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/communications/attack_hand(mob/user as mob)
if(..(user))
return
@@ -392,25 +392,25 @@
data["esc_section"] = data["esc_status"] || data["esc_callable"] || data["esc_recallable"] || data["lastCallLoc"]
return data
-/obj/machinery/computer/communications/proc/setCurrentMessage(var/mob/user,var/value)
+/obj/machinery/computer/communications/proc/setCurrentMessage(mob/user, value)
if(isAI(user) || isrobot(user))
aicurrmsg = value
else
currmsg = value
-/obj/machinery/computer/communications/proc/getCurrentMessage(var/mob/user)
+/obj/machinery/computer/communications/proc/getCurrentMessage(mob/user)
if(isAI(user) || isrobot(user))
return aicurrmsg
else
return currmsg
-/obj/machinery/computer/communications/proc/setMenuState(var/mob/user,var/value)
+/obj/machinery/computer/communications/proc/setMenuState(mob/user, value)
if(isAI(user) || isrobot(user))
ai_menu_state=value
else
menu_state=value
-/proc/call_shuttle_proc(var/mob/user, var/reason)
+/proc/call_shuttle_proc(mob/user, reason)
if(GLOB.sent_strike_team == 1)
to_chat(user, "Central Command will not allow the shuttle to be called. Consider all contracts terminated.")
return
@@ -433,7 +433,7 @@
return
-/proc/init_shift_change(var/mob/user, var/force = 0)
+/proc/init_shift_change(mob/user, force = 0)
// if force is 0, some things may stop the shuttle call
if(!force)
if(SSshuttle.emergencyNoEscape)
@@ -464,7 +464,7 @@
return
-/proc/cancel_call_proc(var/mob/user)
+/proc/cancel_call_proc(mob/user)
if(SSticker.mode.name == "meteor")
return
diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm
index c21c5445741..e157570f2c5 100644
--- a/code/game/machinery/computer/depot.dm
+++ b/code/game/machinery/computer/depot.dm
@@ -391,6 +391,7 @@
icon_screen = "telesci"
icon_keyboard = "teleport_key"
window_height = 300
+ req_access = list(ACCESS_SYNDICATE_LEADER)
var/obj/machinery/bluespace_beacon/syndicate/mybeacon
var/obj/effect/portal/redspace/myportal
var/obj/effect/portal/redspace/myportal2
@@ -486,7 +487,7 @@
"status" = portal_enabled ? "ON" : "OFF",
"buttontitle" = portal_enabled ? "Disable" : "Enable",
"buttonact" = "secondary",
- "buttondisabled" = (!allowed(user) || (!depotarea.on_peaceful && !check_rights(R_ADMIN, FALSE, user))),
+ "buttondisabled" = !allowed(user),
"buttontooltip" = "When on, creates a bi-directional portal to the beacon of your choice."
))
return data
@@ -500,9 +501,6 @@
playsound(user, sound_yes, 50, 0)
/obj/machinery/computer/syndicate_depot/teleporter/secondary(mob/user)
- if(!depotarea.on_peaceful && !check_rights(R_ADMIN, FALSE, user))
- to_chat(user, "Outgoing Teleport Portal controls are only enabled when the depot has a signed-in agent visitor.")
- return
if(!portal_enabled && myportal)
to_chat(user, "Outgoing Teleport Portal: deactivating... please wait...")
return
diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm
index 9f5d77a642c..6990e1c3dc8 100644
--- a/code/game/machinery/computer/honkputer.dm
+++ b/code/game/machinery/computer/honkputer.dm
@@ -65,7 +65,7 @@
src.emagged = 1
to_chat(user, "You scramble the login circuits, allowing anyone to use the console!")
-/obj/machinery/computer/HONKputer/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/HONKputer/attack_hand(mob/user as mob)
if(..())
return
if(is_away_level(src.z))
diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm
index d7987477a65..823a20884d6 100644
--- a/code/game/machinery/computer/law.dm
+++ b/code/game/machinery/computer/law.dm
@@ -42,7 +42,7 @@
return ..()
-/obj/machinery/computer/aiupload/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/aiupload/attack_hand(mob/user as mob)
if(src.stat & NOPOWER)
to_chat(usr, "The upload computer has no power!")
return
@@ -85,7 +85,7 @@
return ..()
-/obj/machinery/computer/borgupload/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/borgupload/attack_hand(mob/user as mob)
if(src.stat & NOPOWER)
to_chat(usr, "The upload computer has no power!")
return
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index 828b26f69b3..a7345522b25 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -79,7 +79,7 @@
linkedServer = GLOB.message_servers[1]
return
-/obj/machinery/computer/message_monitor/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/message_monitor/attack_hand(mob/user as mob)
if(..())
return
if(stat & (NOPOWER|BROKEN))
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index bafcd2d8ca2..322031d9997 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -48,7 +48,7 @@
return
-/obj/machinery/computer/pod/proc/solo_sync(var/ident_tag)
+/obj/machinery/computer/pod/proc/solo_sync(ident_tag)
for(var/obj/machinery/mass_driver/M in GLOB.machines)
if(M.z != src.z) continue
if((M.id_tag == ident_tag) && !(ident_tag in synced))
@@ -74,7 +74,7 @@
return
-/obj/machinery/computer/pod/proc/launch_sequence(var/ident_tag)
+/obj/machinery/computer/pod/proc/launch_sequence(ident_tag)
if(stat & (NOPOWER|BROKEN))
return
var/anydriver = 0
@@ -108,12 +108,12 @@
return
-/obj/machinery/computer/pod/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/pod/attack_ai(mob/user as mob)
src.add_hiddenprint(user)
return attack_hand(user)
-/obj/machinery/computer/pod/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/pod/attack_hand(mob/user as mob)
if(..())
return
@@ -272,7 +272,7 @@
circuit = /obj/item/circuitboard/syndicatedoor
light_color = "#00FFFF"
-/obj/machinery/computer/pod/old/syndicate/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user as mob)
if(!allowed(user))
to_chat(user, "Access Denied")
return
@@ -290,7 +290,7 @@
var/teleporter_dest = 0
circuit = /obj/item/circuitboard/pod/deathsquad
-/obj/machinery/computer/pod/deathsquad/launch_sequence(var/ident_tag)
+/obj/machinery/computer/pod/deathsquad/launch_sequence(ident_tag)
if(stat & (NOPOWER|BROKEN))
return
var/anydriver = 0
@@ -352,7 +352,7 @@
var/id_tag = ""
-/obj/structure/deathsquad_tele/Bumped(var/atom/movable/AM)
+/obj/structure/deathsquad_tele/Bumped(atom/movable/AM)
if(!ztarget) return ..()
var/y = AM.y
spawn()
diff --git a/code/game/machinery/computer/pod_tracking_console.dm b/code/game/machinery/computer/pod_tracking_console.dm
index 6af1ab0bdf4..e8072d9e1d7 100644
--- a/code/game/machinery/computer/pod_tracking_console.dm
+++ b/code/game/machinery/computer/pod_tracking_console.dm
@@ -23,18 +23,19 @@
var/list/data = list()
var/list/pods = list()
for(var/obj/item/spacepod_equipment/misc/tracker/TR in GLOB.pod_trackers)
- var/obj/spacepod/my_pod = TR.my_atom
- var/podname = capitalize(sanitize(my_pod.name))
- var/pilot = "None"
- var/passengers = list()
- if(my_pod.pilot)
- pilot = my_pod.pilot
- if(my_pod.passengers)
- for(var/mob/M in my_pod.passengers)
- passengers += M.name
- var/passengers_text = english_list(passengers, "None")
+ if(TR.my_atom)
+ var/obj/spacepod/my_pod = TR.my_atom
+ var/podname = capitalize(sanitize(my_pod.name))
+ var/pilot = "None"
+ var/passengers = list()
+ if(my_pod.pilot)
+ pilot = my_pod.pilot
+ if(my_pod.passengers)
+ for(var/mob/M in my_pod.passengers)
+ passengers += M.name
+ var/passengers_text = english_list(passengers, "None")
- pods.Add(list(list("name" = podname, "podx" = my_pod.x, "pody" = my_pod.y, "podz" = my_pod.z, "pilot" = pilot, "passengers" = passengers_text)))
+ pods.Add(list(list("name" = podname, "podx" = my_pod.x, "pody" = my_pod.y, "podz" = my_pod.z, "pilot" = pilot, "passengers" = passengers_text)))
data["pods"] = pods
return data
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index 8aa41e70f69..a155a323663 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -15,7 +15,7 @@
light_color = LIGHT_COLOR_DARKRED
-/obj/machinery/computer/prisoner/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/prisoner/attack_ai(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/prisoner/New()
@@ -26,7 +26,7 @@
GLOB.prisoncomputer_list -= src
return ..()
-/obj/machinery/computer/prisoner/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/prisoner/attack_hand(mob/user as mob)
if(..())
return 1
user.set_machine(src)
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 79c2cb35566..ffa434e7f2d 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -12,10 +12,10 @@
var/safety = 1
-/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/robotics/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/robotics/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/robotics/attack_hand(mob/user as mob)
if(..())
return
if(stat & (NOPOWER|BROKEN))
diff --git a/code/game/machinery/computer/salvage_ship.dm b/code/game/machinery/computer/salvage_ship.dm
index 1a3f15ddbab..917849101a5 100644
--- a/code/game/machinery/computer/salvage_ship.dm
+++ b/code/game/machinery/computer/salvage_ship.dm
@@ -106,5 +106,5 @@
updateUsrDialog()
return
-/obj/machinery/computer/salvage_ship/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/computer/salvage_ship/bullet_act(obj/item/projectile/Proj)
visible_message("[Proj] ricochets off [src]!")
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 60e1d2814f2..692c10d9706 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -1,6 +1,5 @@
#define SEC_DATA_R_LIST 1 // Record list
-#define SEC_DATA_MAINT 2 // Records maintenance
-#define SEC_DATA_RECORD 3 // Record
+#define SEC_DATA_RECORD 2 // Record
#define SEC_FIELD(N, V, E, LB) list(field = N, value = V, edit = E, line_break = LB)
@@ -166,7 +165,7 @@
if("page") // Select Page
if(!logged_in)
return
- var/page_num = clamp(text2num(params["page"]), SEC_DATA_R_LIST, SEC_DATA_MAINT) // SEC_DATA_RECORD cannot be accessed through this act
+ var/page_num = clamp(text2num(params["page"]), SEC_DATA_R_LIST, SEC_DATA_R_LIST) // SEC_DATA_RECORD cannot be accessed through this act
current_page = page_num
record_general = null
record_security = null
@@ -247,25 +246,6 @@
QDEL_NULL(record_security)
update_all_mob_security_hud()
set_temp("Security record deleted.")
- if("delete_security_all") // Delete All Security Records
- if(!logged_in)
- return
- for(var/datum/data/record/S in GLOB.data_core.security)
- qdel(S)
- message_admins("[key_name_admin(usr)] has deleted all security records at [ADMIN_COORDJMP(usr)]")
- usr.create_log(MISC_LOG, "deleted all security records")
- update_all_mob_security_hud()
- set_temp("All security records deleted.")
- if("delete_cell_logs") // Delete All Cell Logs
- if(!logged_in)
- return
- if(!length(GLOB.cell_logs))
- set_temp("There are no cell logs to delete.")
- return
- message_admins("[key_name_admin(usr)] has deleted all cell logs at [ADMIN_COORDJMP(usr)]")
- usr.create_log(MISC_LOG, "deleted all cell logs")
- GLOB.cell_logs.Cut()
- set_temp("All cell logs deleted.")
if("comment_delete") // Delete Comment
if(!logged_in)
return
@@ -494,6 +474,5 @@
density = FALSE
#undef SEC_DATA_R_LIST
-#undef SEC_DATA_MAINT
#undef SEC_DATA_RECORD
#undef SEC_FIELD
diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm
index 5933fc1b7d0..216c4fd8b67 100644
--- a/code/game/machinery/computer/specops_shuttle.dm
+++ b/code/game/machinery/computer/specops_shuttle.dm
@@ -247,7 +247,7 @@ GLOBAL_VAR_INIT(specops_shuttle_timeleft, 0)
return 0
return 1
-/obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/specops_shuttle/attack_ai(mob/user as mob)
to_chat(user, "Access Denied.")
return 1
@@ -257,7 +257,7 @@ GLOBAL_VAR_INIT(specops_shuttle_timeleft, 0)
else
return ..()
-/obj/machinery/computer/specops_shuttle/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/specops_shuttle/attack_hand(mob/user as mob)
if(!allowed(user))
to_chat(user, "Access Denied.")
return
diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm
index efe5617511e..6b72e5bbf5b 100644
--- a/code/game/machinery/computer/syndicate_specops_shuttle.dm
+++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm
@@ -178,7 +178,7 @@ GLOBAL_VAR_INIT(syndicate_elite_shuttle_timeleft, 0)
if(GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return 0
else return 1
-/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob)
+/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(mob/user as mob)
to_chat(user, "Access Denied.")
return 1
@@ -188,7 +188,7 @@ GLOBAL_VAR_INIT(syndicate_elite_shuttle_timeleft, 0)
else
return ..()
-/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(mob/user as mob)
if(!allowed(user))
to_chat(user, "Access Denied.")
return
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index b90b2ed5f26..322141dee0a 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -490,7 +490,8 @@ to destroy them and players will be able to make replacements.
"\improper Secure Refrigerated Medicine Storage" = /obj/machinery/smartfridge/secure/medbay,
"\improper Smart Chemical Storage" = /obj/machinery/smartfridge/secure/chemistry,
"smart virus storage" = /obj/machinery/smartfridge/secure/chemistry/virology,
- "\improper Drink Showcase" = /obj/machinery/smartfridge/drinks
+ "\improper Drink Showcase" = /obj/machinery/smartfridge/drinks,
+ "disk compartmentalizer" = /obj/machinery/smartfridge/disks
)
@@ -624,6 +625,10 @@ to destroy them and players will be able to make replacements.
/obj/item/stock_parts/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
+/obj/item/circuitboard/autolathe/syndi
+ name = "Circuit board (Syndi Autolathe)"
+ build_path = /obj/machinery/autolathe/syndicate
+
/obj/item/circuitboard/protolathe
name = "Circuit board (Protolathe)"
build_path = /obj/machinery/r_n_d/protolathe
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 7b7544d86fe..23f217bf32b 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -225,6 +225,7 @@
var/willing_time_divisor = 10
var/time_entered = 0 // Used to keep track of the safe period.
var/obj/item/radio/intercom/announce
+ var/silent = FALSE
var/obj/machinery/computer/cryopod/control_computer
var/last_no_computer_message = 0
@@ -430,20 +431,27 @@
//Make an announcement and log the person entering storage.
control_computer.frozen_crew += "[occupant.real_name]"
- var/list/ailist = list()
- for(var/mob/living/silicon/ai/A in GLOB.silicon_mob_list)
- ailist += A
- if(length(ailist))
- var/mob/living/silicon/ai/announcer = pick(ailist)
- if(announce_rank)
- announcer.say(";[occupant.real_name] ([announce_rank]) [on_store_message]", ignore_languages = TRUE)
+ if(!silent)
+ var/list/ailist = list()
+ for(var/thing in GLOB.ai_list)
+ var/mob/living/silicon/ai/AI = thing
+ if(AI.stat)
+ continue
+ ailist += AI
+ if(length(ailist))
+ var/mob/living/silicon/ai/announcer = pick(ailist)
+ if(announce_rank)
+ announcer.say(";[occupant.real_name] ([announce_rank]) [on_store_message]", ignore_languages = TRUE)
+ else
+ announcer.say(";[occupant.real_name] [on_store_message]", ignore_languages = TRUE)
else
- announcer.say(";[occupant.real_name] [on_store_message]", ignore_languages = TRUE)
- else
- if(announce_rank)
- announce.autosay("[occupant.real_name] ([announce_rank]) [on_store_message]", "[on_store_name]")
- else
- announce.autosay("[occupant.real_name] [on_store_message]", "[on_store_name]")
+ if(announce_rank)
+ announce.autosay("[occupant.real_name] ([announce_rank]) [on_store_message]", "[on_store_name]")
+ else
+ if(announce_rank)
+ announce.autosay("[occupant.real_name] ([announce_rank]) [on_store_message]", "[on_store_name]")
+ else
+ announce.autosay("[occupant.real_name] [on_store_message]", "[on_store_name]")
visible_message("[src] hums and hisses as it moves [occupant.real_name] into storage.")
// Ghost and delete the mob.
@@ -582,7 +590,7 @@
else
to_chat(user, "You stop [L == user ? "climbing into the cryo pod." : "putting [L] into the cryo pod."]")
-/obj/machinery/cryopod/proc/take_occupant(var/mob/living/carbon/E, var/willing_factor = 1)
+/obj/machinery/cryopod/proc/take_occupant(mob/living/carbon/E, willing_factor = 1)
if(occupant)
return
if(!E)
@@ -708,6 +716,10 @@
/obj/machinery/cryopod/blob_act()
return //Sorta gamey, but we don't really want these to be destroyed.
+/obj/machinery/cryopod/offstation
+ // Won't announce when used for cryoing.
+ silent = TRUE
+
/obj/machinery/computer/cryopod/robot
name = "robotic storage console"
desc = "An interface between crew and the robotic storage systems"
@@ -753,7 +765,7 @@
return ..()
-/proc/cryo_ssd(var/mob/living/carbon/person_to_cryo)
+/proc/cryo_ssd(mob/living/carbon/person_to_cryo)
if(istype(person_to_cryo.loc, /obj/machinery/cryopod))
return 0
if(isobj(person_to_cryo.loc))
@@ -774,7 +786,7 @@
return 1
return 0
-/proc/force_cryo_human(var/mob/living/carbon/person_to_cryo)
+/proc/force_cryo_human(mob/living/carbon/person_to_cryo)
if(!istype(person_to_cryo))
return
if(!istype(person_to_cryo.loc, /obj/machinery/cryopod))
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 3d3b1eec098..8c5ed4ddb6e 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1285,6 +1285,7 @@ About the new airlock wires panel:
sleep(6)
if(QDELETED(src))
return
+ electronics = new /obj/item/airlock_electronics/destroyed()
operating = FALSE
if(!open())
update_icon(AIRLOCK_CLOSED, 1)
@@ -1406,9 +1407,6 @@ About the new airlock wires panel:
ae = electronics
electronics = null
ae.forceMove(loc)
- if(emagged)
- ae.icon_state = "door_electronics_smoked"
- operating = 0
qdel(src)
/obj/machinery/door/airlock/proc/note_type() //Returns a string representing the type of note pinned to this airlock
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index e9435dfe4e8..0be1de00c80 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -102,3 +102,16 @@
if("clear_all")
selected_accesses = list()
+
+/obj/item/airlock_electronics/destroyed
+ name = "burned-out airlock electronics"
+ icon_state = "door_electronics_smoked"
+
+/obj/item/airlock_electronics/destroyed/attack_self(mob/user)
+ return
+
+/obj/item/airlock_electronics/destroyed/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ C.stored_comms["metal"] += 1
+ C.stored_comms["glass"] += 1
+ qdel(src)
+ return TRUE
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 9b913dbf148..e23aa154d6d 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -532,6 +532,9 @@
L.throw_at(throwtarget, 5, 1,src)
return FALSE
+/obj/machinery/door/airlock/cult/screwdriver_act(mob/user, obj/item/I)
+ return
+
/obj/machinery/door/airlock/cult/cult_conceal()
icon = stealth_icon
overlays_file = stealth_overlays
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index f8e726e256c..cebd507a9ca 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -97,7 +97,7 @@
return ..()
//Multi-tile poddoors don't turn invisible automatically, so we change the opacity of the turfs below instead one by one.
-/obj/machinery/door/poddoor/multi_tile/proc/apply_opacity_to_my_turfs(var/new_opacity)
+/obj/machinery/door/poddoor/multi_tile/proc/apply_opacity_to_my_turfs(new_opacity)
for(var/turf/T in locs)
T.opacity = new_opacity
T.has_opaque_atom = new_opacity
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 7b5e711ca81..59d839018bb 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -219,6 +219,7 @@
if(!operating && density && !emagged)
emagged = TRUE
operating = TRUE
+ electronics = new /obj/item/airlock_electronics/destroyed()
flick("[base_state]spark", src)
playsound(src, "sparks", 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
sleep(6)
@@ -279,11 +280,6 @@
WA.update_icon()
WA.created_name = name
- if(emagged)
- to_chat(user, "You discard the damaged electronics.")
- qdel(src)
- return
-
to_chat(user, "You remove the airlock electronics.")
var/obj/item/airlock_electronics/ae
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index e02bcce1315..0061e91001c 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -19,7 +19,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
var/actual_size_message
var/theoretical_size_message
-/datum/explosion_log/New(var/log_time, var/log_epicenter, var/log_actual_size_message, var/log_theoretical_size_message)
+/datum/explosion_log/New(log_time, log_epicenter, log_actual_size_message, log_theoretical_size_message)
..()
logged_time = log_time
epicenter = log_epicenter
diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm
index d9500e30808..825ba8ceee5 100644
--- a/code/game/machinery/embedded_controller/airlock_program.dm
+++ b/code/game/machinery/embedded_controller/airlock_program.dm
@@ -23,7 +23,7 @@
var/state = STATE_IDLE
var/target_state = TARGET_NONE
-/datum/computer/file/embedded_program/airlock/New(var/obj/machinery/embedded_controller/M)
+/datum/computer/file/embedded_program/airlock/New(obj/machinery/embedded_controller/M)
..(M)
memory["chamber_sensor_pressure"] = ONE_ATMOSPHERE
@@ -271,13 +271,13 @@
var/int_closed = check_interior_door_secured()
return (ext_closed && int_closed)
-/datum/computer/file/embedded_program/airlock/proc/signalDoor(var/tag, var/command)
+/datum/computer/file/embedded_program/airlock/proc/signalDoor(tag, command)
var/datum/signal/signal = new
signal.data["tag"] = tag
signal.data["command"] = command
post_signal(signal, RADIO_AIRLOCK)
-/datum/computer/file/embedded_program/airlock/proc/signalPump(var/tag, var/power, var/direction, var/pressure)
+/datum/computer/file/embedded_program/airlock/proc/signalPump(tag, power, direction, pressure)
var/datum/signal/signal = new
signal.data = list(
"tag" = tag,
@@ -289,7 +289,7 @@
post_signal(signal)
//this is called to set the appropriate door state at the end of a cycling process, or for the exterior buttons
-/datum/computer/file/embedded_program/airlock/proc/cycleDoors(var/target)
+/datum/computer/file/embedded_program/airlock/proc/cycleDoors(target)
switch(target)
if(TARGET_OUTOPEN)
toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "close")
@@ -305,7 +305,7 @@
signalDoor(tag_exterior_door, command)
signalDoor(tag_interior_door, command)
-/datum/computer/file/embedded_program/airlock/proc/signal_mech_sensor(var/command, var/sensor)
+/datum/computer/file/embedded_program/airlock/proc/signal_mech_sensor(command, sensor)
var/datum/signal/signal = new
signal.data["tag"] = sensor
signal.data["command"] = command
@@ -331,7 +331,7 @@ Only sends a command if it is needed, i.e. if the door is
already open, passing an open command to this proc will not
send an additional command to open the door again.
----------------------------------------------------------*/
-/datum/computer/file/embedded_program/airlock/proc/toggleDoor(var/list/doorStatus, var/doorTag, var/secure, var/command)
+/datum/computer/file/embedded_program/airlock/proc/toggleDoor(list/doorStatus, doorTag, secure, command)
var/doorCommand = null
if(command == "toggle")
diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm
index a58118b31f0..2a049958488 100644
--- a/code/game/machinery/embedded_controller/embedded_controller_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm
@@ -69,7 +69,7 @@
else
icon_state = "airlock_control_off"
-/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal, var/filter = null)
+/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal, filter = null)
signal.transmission_method = TRANSMISSION_RADIO
if(radio_connection)
//use_power(radio_power_use) //neat idea, but causes way too much lag.
diff --git a/code/game/machinery/embedded_controller/embedded_program_base.dm b/code/game/machinery/embedded_controller/embedded_program_base.dm
index 5bd46b2f3e0..bf64ee1e75e 100644
--- a/code/game/machinery/embedded_controller/embedded_program_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_program_base.dm
@@ -5,7 +5,7 @@
var/id_tag
-/datum/computer/file/embedded_program/New(var/obj/machinery/embedded_controller/M)
+/datum/computer/file/embedded_program/New(obj/machinery/embedded_controller/M)
master = M
if(istype(M, /obj/machinery/embedded_controller/radio))
var/obj/machinery/embedded_controller/radio/R = M
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index b4214fe3b23..71e919f10cc 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -98,9 +98,8 @@ FIRE ALARM
if(istype(I, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/coil = I
if(!coil.use(5))
- to_chat(user, "You cut the wires!")
+ to_chat(user, "You need a total of five cables to wire [src]!")
return
-
buildstage = FIRE_ALARM_READY
playsound(get_turf(src), I.usesound, 50, 1)
to_chat(user, "You wire [src]!")
@@ -220,11 +219,9 @@ FIRE ALARM
/obj/machinery/firealarm/power_change()
if(powered(ENVIRON))
stat &= ~NOPOWER
- update_icon()
else
- spawn(rand(0,15))
- stat |= NOPOWER
- update_icon()
+ stat |= NOPOWER
+ update_icon()
/obj/machinery/firealarm/attack_hand(mob/user)
if(stat & (NOPOWER|BROKEN) || buildstage != 2)
diff --git a/code/game/machinery/gameboard.dm b/code/game/machinery/gameboard.dm
index edc1d3499ec..3141f66592d 100644
--- a/code/game/machinery/gameboard.dm
+++ b/code/game/machinery/gameboard.dm
@@ -73,7 +73,7 @@
user << browse(null, "window=SpessChess") // And I will kill you.
return
-/obj/machinery/gameboard/Topic(var/href, var/list/href_list)
+/obj/machinery/gameboard/Topic(href, list/href_list)
. = ..()
var/prize = /obj/item/stack/tickets
if(.)
diff --git a/code/game/machinery/guestpass.dm b/code/game/machinery/guestpass.dm
index 165c8dbe4cb..2292b20728a 100644
--- a/code/game/machinery/guestpass.dm
+++ b/code/game/machinery/guestpass.dm
@@ -39,21 +39,22 @@
density = 0
- var/obj/item/card/id/giver
+ var/obj/item/card/id/scan
var/list/accesses = list()
var/giv_name = "NOT SPECIFIED"
var/reason = "NOT SPECIFIED"
var/duration = 5
+ var/print_cooldown = 0
var/list/internal_log = list()
- var/mode = 0 // 0 - making pass, 1 - viewing logs
+ var/mode = FALSE // FALSE - making pass, TRUE - viewing logs
/obj/machinery/computer/guestpass/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/card/id))
- if(!giver)
+ if(!scan)
if(user.drop_item())
I.forceMove(src)
- giver = I
+ scan = I
updateUsrDialog()
else
to_chat(user, "There is already ID card inside.")
@@ -61,132 +62,161 @@
return ..()
/obj/machinery/computer/guestpass/proc/get_changeable_accesses()
- return giver.access
+ return scan.access
/obj/machinery/computer/guestpass/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/computer/guestpass/attack_hand(var/mob/user as mob)
+/obj/machinery/computer/guestpass/attack_hand(mob/user)
if(..())
return
+ ui_interact(user)
- user.set_machine(src)
- var/dat
+/obj/machinery/computer/guestpass/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "GuestPass", name, 500, 850, master_ui, state)
+ ui.open()
+ ui.set_autoupdate(FALSE)
- if(mode == 1) //Logs
- dat += "Activity log "
- for(var/entry in internal_log)
- dat += "[entry]
"
- dat += "Print "
- dat += "Back "
+/obj/machinery/computer/guestpass/ui_data(mob/user)
+ var/list/data = list()
+ data["showlogs"] = mode
+ data["scan_name"] = scan ? scan.name : FALSE
+ data["issue_log"] = internal_log ? internal_log : list()
+ data["giv_name"] = giv_name
+ data["reason"] = reason
+ data["duration"] = duration
+ if(scan && !(ACCESS_CHANGE_IDS in scan.access))
+ data["grantableList"] = scan ? scan.access : list()
+ data["canprint"] = FALSE
+ if(!scan)
+ data["printmsg"] = "No card inserted."
+ else if(!length(scan.access))
+ data["printmsg"] = "Card has no access."
+ else if(!length(accesses))
+ data["printmsg"] = "No access types selected."
+ else if(print_cooldown > world.time)
+ data["printmsg"] = "Busy for [(round((print_cooldown - world.time) / 10))]s.."
else
- dat += "Guest pass terminal #[uid] "
- dat += "View activity log
"
- dat += "Issuing ID: [giver] "
- dat += "Issued to: [giv_name] "
- dat += "Reason: [reason] "
- dat += "Duration (minutes): [duration] m "
- dat += "Access to areas: "
- if(giver && giver.access)
- for(var/A in get_changeable_accesses())
- var/area = get_access_desc(A)
- if(A in accesses)
- area = "[area]"
- dat += "[area] "
- dat += " Issue pass "
+ data["printmsg"] = "Print Pass"
+ data["canprint"] = TRUE
- var/datum/browser/popup = new(user, "guestpass", name, 400, 520)
- popup.set_content(dat)
- popup.open(0)
- onclose(user, "guestpass")
+ data["selectedAccess"] = accesses ? accesses : list()
+ return data
+/obj/machinery/computer/guestpass/ui_static_data(mob/user)
+ var/list/data = list()
+ data["regions"] = get_accesslist_static_data(REGION_GENERAL, REGION_COMMAND)
+ return data
-/obj/machinery/computer/guestpass/Topic(href, href_list)
+/obj/machinery/computer/guestpass/ui_act(action, params)
if(..())
- return 1
- usr.set_machine(src)
- if(href_list["mode"])
- mode = text2num(href_list["mode"])
-
- if(href_list["choice"])
- switch(href_list["choice"])
- if("giv_name")
- var/nam = strip_html_simple(input("Person pass is issued to", "Name", giv_name) as text|null)
- if(nam)
- giv_name = nam
- if("reason")
- var/reas = strip_html_simple(input("Reason why pass is issued", "Reason", reason) as text|null)
- if(reas)
- reason = reas
- if("duration")
- var/dur = input("Duration (in minutes) during which pass is valid (up to 30 minutes).", "Duration") as num|null
- if(dur)
- if(dur > 0 && dur <= 30)
- duration = dur
- else
- to_chat(usr, "Invalid duration.")
- if("access")
- var/A = text2num(href_list["access"])
- if(A in accesses)
- accesses.Remove(A)
+ return
+ . = TRUE
+ switch(action)
+ if("scan") // insert/remove your ID card
+ if(scan)
+ if(ishuman(usr))
+ scan.forceMove(get_turf(usr))
+ usr.put_in_hands(scan)
+ scan = null
else
- if(giver && giver.access && (A in get_changeable_accesses()))
+ scan.forceMove(get_turf(src))
+ scan = null
+ accesses.Cut()
+ else
+ var/obj/item/I = usr.get_active_hand()
+ if(istype(I, /obj/item/card/id))
+ if(usr.drop_item())
+ I.forceMove(src)
+ scan = I
+ if("mode")
+ mode = !mode
+ if(!scan || !scan.access)
+ return // everything below here requires card auth
+ switch(action)
+ if("giv_name")
+ var/nam = strip_html_simple(input("Person pass is issued to", "Name", giv_name) as text | null)
+ if(nam)
+ giv_name = nam
+ if("reason")
+ var/reas = strip_html_simple(input("Reason why pass is issued", "Reason", reason) as text | null)
+ if(reas)
+ reason = reas
+ if("duration")
+ var/dur = input("Duration (in minutes) during which pass is valid (up to 30 minutes).", "Duration") as num | null
+ if(dur)
+ if(dur > 0 && dur <= 30)
+ duration = dur
+ else
+ to_chat(usr, "Invalid duration.")
+ if("print")
+ var/dat = "Activity log of guest pass terminal #[uid] "
+ for(var/entry in internal_log)
+ dat += "[entry]
"
+ var/obj/item/paper/P = new /obj/item/paper(loc)
+ playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, TRUE)
+ P.name = "activity log"
+ P.info = dat
+ if("issue")
+ if(!length(accesses))
+ return
+ if(print_cooldown > world.time)
+ return
+ var/number = add_zero("[rand(0, 9999)]", 4)
+ var/entry = "\[[station_time()]\] Pass #[number] issued by [scan.registered_name] ([scan.assignment]) to [giv_name]. Reason: [reason]. Grants access to following areas: "
+ for(var/i in 1 to length(accesses))
+ var/A = accesses[i]
+ if(A)
+ var/area = get_access_desc(A)
+ entry += "[i > 1 ? ", [area]" : "[area]"]"
+ var/obj/item/card/id/guest/pass = new(get_turf(src))
+ pass.temp_access = accesses.Copy()
+ pass.registered_name = giv_name
+ pass.expiration_time = world.time + duration MINUTES
+ pass.reason = reason
+ pass.name = "guest pass #[number]"
+ print_cooldown = world.time + 10 SECONDS
+ entry += ". Expires at [station_time_timestamp("hh:mm:ss", pass.expiration_time)]."
+ internal_log += entry
+ if("access")
+ var/A = text2num(params["access"])
+ if(A in accesses)
+ accesses.Remove(A)
+ else if(ACCESS_CHANGE_IDS in scan.access)
+ accesses += A
+ else if(A in get_changeable_accesses())
+ accesses += A
+ if("grant_region")
+ var/region = text2num(params["region"])
+ if(isnull(region))
+ return
+ if(ACCESS_CHANGE_IDS in scan.access)
+ accesses |= get_region_accesses(region)
+ else
+ var/list/new_accesses = get_region_accesses(region)
+ for(var/A in new_accesses)
+ if(A in scan.access)
accesses.Add(A)
- if(href_list["action"])
- switch(href_list["action"])
- if("id")
- if(giver)
- if(ishuman(usr))
- giver.loc = usr.loc
- if(!usr.get_active_hand())
- usr.put_in_hands(giver)
- giver = null
- else
- giver.loc = src.loc
- giver = null
- accesses.Cut()
- else
- var/obj/item/I = usr.get_active_hand()
- if(istype(I, /obj/item/card/id))
- usr.drop_item()
- I.loc = src
- giver = I
- updateUsrDialog()
-
- if("print")
- var/dat = "Activity log of guest pass terminal #[uid] "
- for(var/entry in internal_log)
- dat += "[entry]
"
-// to_chat(usr, "Printing the log, standby...")
- //sleep(50)
- var/obj/item/paper/P = new/obj/item/paper( loc )
- playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
- P.name = "activity log"
- P.info = dat
-
- if("issue")
- if(giver)
- var/number = add_zero("[rand(0,9999)]", 4)
- var/entry = "\[[station_time()]\] Pass #[number] issued by [giver.registered_name] ([giver.assignment]) to [giv_name]. Reason: [reason]. Grants access to following areas: "
- for(var/i=1 to accesses.len)
- var/A = accesses[i]
- if(A)
- var/area = get_access_desc(A)
- entry += "[i > 1 ? ", [area]" : "[area]"]"
- entry += ". Expires at [station_time(world.time + duration*10*60)]."
- internal_log.Add(entry)
-
- var/obj/item/card/id/guest/pass = new(src.loc)
- pass.temp_access = accesses.Copy()
- pass.registered_name = giv_name
- pass.expiration_time = world.time + duration*10*60
- pass.reason = reason
- pass.name = "guest pass #[number]"
- else
- to_chat(usr, "Cannot issue pass without issuing ID.")
- updateUsrDialog()
- return
+ if("deny_region")
+ var/region = text2num(params["region"])
+ if(isnull(region))
+ return
+ accesses -= get_region_accesses(region)
+ if("clear_all")
+ accesses = list()
+ if("grant_all")
+ if(ACCESS_CHANGE_IDS in scan.access)
+ accesses = get_all_accesses()
+ else
+ var/list/new_accesses = get_all_accesses()
+ for(var/A in new_accesses)
+ if(A in scan.access)
+ accesses += A
+ if(.)
+ add_fingerprint(usr)
/obj/machinery/computer/guestpass/hop
name = "\improper HoP guest pass terminal"
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 6d2586c46aa..c4d5c4984b9 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -343,7 +343,7 @@ GLOBAL_LIST_EMPTY(holopads)
update_holoray(user,new_turf)
return TRUE
-/obj/machinery/hologram/holopad/proc/activate_holo(mob/living/user, var/force = 0)
+/obj/machinery/hologram/holopad/proc/activate_holo(mob/living/user, force = 0)
var/mob/living/silicon/ai/AI = user
if(!istype(AI))
AI = null
@@ -423,7 +423,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
icon_state = "holopad0"
-/obj/machinery/hologram/holopad/proc/set_holo(mob/living/user, var/obj/effect/overlay/holo_pad_hologram/h)
+/obj/machinery/hologram/holopad/proc/set_holo(mob/living/user, obj/effect/overlay/holo_pad_hologram/h)
masters[user] = h
holorays[user] = new /obj/effect/overlay/holoray(loc)
var/mob/living/silicon/ai/AI = user
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index f2262b99859..ae3520af45b 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -17,7 +17,7 @@
var/logic_connect = 0 //Set this to allow the switch to send out logic signals.
-/obj/machinery/light_switch/New(turf/loc, var/w_dir=null)
+/obj/machinery/light_switch/New(turf/loc, w_dir=null)
..()
switch(w_dir)
if(NORTH)
@@ -165,7 +165,7 @@
new/obj/item/mounted/frame/light_switch(get_turf(src))
qdel(src)
-/obj/machinery/light_switch/multitool_menu(var/mob/user, var/obj/item/multitool/P)
+/obj/machinery/light_switch/multitool_menu(mob/user, obj/item/multitool/P)
return {"
"}
-/obj/machinery/light_switch/multitool_topic(var/mob/user,var/list/href_list,var/obj/O)
+/obj/machinery/light_switch/multitool_topic(mob/user, list/href_list, obj/O)
..()
if("toggle_light_connect" in href_list)
light_connect = !light_connect
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 5406743f015..901844c0c14 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -203,7 +203,7 @@ Class Procs:
stat &= ~BROKEN
//sets the use_power var and then forces an area power update
-/obj/machinery/proc/update_use_power(var/new_use_power)
+/obj/machinery/proc/update_use_power(new_use_power)
use_power = new_use_power
/obj/machinery/proc/auto_use_power()
@@ -241,7 +241,7 @@ Class Procs:
return TRUE
return FALSE
-/obj/machinery/proc/handle_multitool_topic(var/href, var/list/href_list, var/mob/user)
+/obj/machinery/proc/handle_multitool_topic(href, list/href_list, mob/user)
if(!allowed(user))//no, not even HREF exploits
return FALSE
var/obj/item/multitool/P = get_multitool(usr)
@@ -313,7 +313,7 @@ Class Procs:
update_multitool_menu(usr)
return TRUE
-/obj/machinery/Topic(href, href_list, var/nowindow = 0, var/datum/ui_state/state = GLOB.default_state)
+/obj/machinery/Topic(href, href_list, nowindow = 0, datum/ui_state/state = GLOB.default_state)
if(..(href, href_list, nowindow, state))
return 1
@@ -321,10 +321,10 @@ Class Procs:
add_fingerprint(usr)
return 0
-/obj/machinery/proc/operable(var/additional_flags = 0)
+/obj/machinery/proc/operable(additional_flags = 0)
return !inoperable(additional_flags)
-/obj/machinery/proc/inoperable(var/additional_flags = 0)
+/obj/machinery/proc/inoperable(additional_flags = 0)
return (stat & (NOPOWER|BROKEN|additional_flags))
/obj/machinery/ui_status(mob/user, datum/ui_state/state)
@@ -339,11 +339,11 @@ Class Procs:
return ..()
-/obj/machinery/CouldUseTopic(var/mob/user)
+/obj/machinery/CouldUseTopic(mob/user)
..()
user.set_machine(src)
-/obj/machinery/CouldNotUseTopic(var/mob/user)
+/obj/machinery/CouldNotUseTopic(mob/user)
usr.unset_machine()
/obj/machinery/proc/dropContents()//putting for swarmers, occupent code commented out, someone can use later.
@@ -567,7 +567,7 @@ Class Procs:
/obj/machinery/proc/is_assess_emagged()
return emagged
-/obj/machinery/proc/assess_perp(mob/living/carbon/human/perp, var/check_access, var/auth_weapons, var/check_records, var/check_arrest)
+/obj/machinery/proc/assess_perp(mob/living/carbon/human/perp, check_access, auth_weapons, check_records, check_arrest)
var/threatcount = 0 //the integer returned
if(is_assess_emagged())
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index 9963cfbda93..7bd89ac6dae 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -69,7 +69,7 @@
-/obj/machinery/magnetic_module/proc/Cmd(var/command, var/modifier)
+/obj/machinery/magnetic_module/proc/Cmd(command, modifier)
if(command)
switch(command)
if("set-electriclevel")
diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm
index 49457c96ec7..cae3e78186e 100644
--- a/code/game/machinery/mass_driver.dm
+++ b/code/game/machinery/mass_driver.dm
@@ -34,7 +34,7 @@
return ..()
-/obj/machinery/mass_driver/multitool_menu(var/mob/user, var/obj/item/multitool/P)
+/obj/machinery/mass_driver/multitool_menu(mob/user, obj/item/multitool/P)
return {"
- [format_tag("ID Tag","id_tag","set_id")]
@@ -98,7 +98,7 @@
anchored = 0
var/build = 0
-/obj/machinery/mass_driver_frame/attackby(var/obj/item/W as obj, var/mob/user as mob)
+/obj/machinery/mass_driver_frame/attackby(obj/item/W as obj, mob/user as mob)
switch(build)
if(0) // Loose frame
if(istype(W, /obj/item/wrench))
diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm
index 952cdccfd39..a3254458337 100644
--- a/code/game/machinery/overview.dm
+++ b/code/game/machinery/overview.dm
@@ -11,7 +11,7 @@
src.drawmap(usr)
-/obj/machinery/computer/security/proc/drawmap(var/mob/user as mob)
+/obj/machinery/computer/security/proc/drawmap(mob/user as mob)
var/icx = round(world.maxx/16) + 1
var/icy = round(world.maxy/16) + 1
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index d434dbff73c..69166311caa 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -149,7 +149,7 @@
else
return ..()
-/obj/item/pipe/proc/update(var/obj/machinery/atmospherics/make_from)
+/obj/item/pipe/proc/update(obj/machinery/atmospherics/make_from)
name = "[get_pipe_name(pipe_type, PIPETYPE_ATMOS)] fitting"
icon_state = get_pipe_icon(pipe_type)
var/obj/machinery/atmospherics/trinary/triP = make_from
@@ -303,7 +303,7 @@
else
return 0
-/obj/item/pipe/proc/unflip(var/direction)
+/obj/item/pipe/proc/unflip(direction)
if(!(direction in GLOB.cardinal))
return turn(direction, 45)
@@ -514,7 +514,7 @@
item_state = "buildpipe"
w_class = WEIGHT_CLASS_BULKY
-/obj/item/pipe_meter/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
+/obj/item/pipe_meter/attackby(obj/item/W as obj, mob/user as mob, params)
if(!istype(W, /obj/item/wrench))
return ..()
if(!locate(/obj/machinery/atmospherics/pipe, src.loc))
@@ -539,7 +539,7 @@
item_state = "buildpipe"
w_class = WEIGHT_CLASS_BULKY
-/obj/item/pipe_gsensor/attackby(var/obj/item/W as obj, var/mob/user as mob)
+/obj/item/pipe_gsensor/attackby(obj/item/W as obj, mob/user as mob)
if(!istype(W, /obj/item/wrench))
return ..()
new/obj/machinery/air_sensor( src.loc )
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 8f0e3316399..38443de284e 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -95,7 +95,7 @@
new /obj/item/pipe_gsensor(loc)
return TRUE
-/obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
+/obj/machinery/pipedispenser/attackby(obj/item/W as obj, mob/user as mob, params)
add_fingerprint(usr)
if(istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter) || istype(W, /obj/item/pipe_gsensor))
to_chat(usr, "You put [W] back to [src].")
@@ -138,7 +138,7 @@
icon_state = "pipe_d"
//Allow you to drag-drop disposal pipes into it
-/obj/machinery/pipedispenser/disposal/MouseDrop_T(var/obj/structure/disposalconstruct/pipe, mob/usr)
+/obj/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/disposalconstruct/pipe, mob/usr)
if(usr.incapacitated())
return
diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm
index d2ade6bf0ea..8273e58cbc2 100644
--- a/code/game/machinery/poolcontroller.dm
+++ b/code/game/machinery/poolcontroller.dm
@@ -89,7 +89,7 @@
animate(decal, alpha = 10, time = 20)
QDEL_IN(decal, 25)
-/obj/machinery/poolcontroller/proc/handleTemp(var/mob/M)
+/obj/machinery/poolcontroller/proc/handleTemp(mob/M)
if(!M || isAIEye(M) || issilicon(M) || isobserver(M) || M.stat == DEAD)
return
M.water_act(100, temperature, src)//leave temp at 0, we handle it in the switch. oh wait
@@ -108,7 +108,7 @@
if(FRIGID) //YOU'RE AS COLD AS ICE
to_chat(M, "The water is freezing!")
-/obj/machinery/poolcontroller/proc/handleDrowning(var/mob/living/carbon/human/drownee)
+/obj/machinery/poolcontroller/proc/handleDrowning(mob/living/carbon/human/drownee)
if(!drownee)
return
diff --git a/code/game/machinery/portable_tag_turret.dm b/code/game/machinery/portable_tag_turret.dm
index 562db4074f3..34c8f8a7623 100644
--- a/code/game/machinery/portable_tag_turret.dm
+++ b/code/game/machinery/portable_tag_turret.dm
@@ -25,7 +25,7 @@
. = ..()
icon_state = "[lasercolor]grey_target_prism"
-/obj/machinery/porta_turret/tag/weapon_setup(var/obj/item/gun/energy/E)
+/obj/machinery/porta_turret/tag/weapon_setup(obj/item/gun/energy/E)
return
/obj/machinery/porta_turret/tag/ui_data(mob/user)
@@ -71,7 +71,7 @@
spawn(100)
disabled = FALSE
-/obj/machinery/porta_turret/tag/assess_living(var/mob/living/L)
+/obj/machinery/porta_turret/tag/assess_living(mob/living/L)
if(!L)
return TURRET_NOT_TARGET
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 9a94d8e83fa..4f22d1c2bb2 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -104,7 +104,7 @@
weapon_setup(installation)
-/obj/machinery/porta_turret/proc/weapon_setup(var/guntype)
+/obj/machinery/porta_turret/proc/weapon_setup(guntype)
switch(guntype)
if(/obj/item/gun/energy/laser/practice)
lethal_is_configurable = FALSE
@@ -317,11 +317,9 @@ GLOBAL_LIST_EMPTY(turret_icons)
/obj/machinery/porta_turret/power_change()
if(powered() || !use_power)
stat &= ~NOPOWER
- update_icon()
else
- spawn(rand(0, 15))
- stat |= NOPOWER
- update_icon()
+ stat |= NOPOWER
+ update_icon()
/obj/machinery/porta_turret/attackby(obj/item/I, mob/user)
@@ -610,7 +608,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
return TURRET_PRIORITY_TARGET //if the perp has passed all previous tests, congrats, it is now a "shoot-me!" nominee
-/obj/machinery/porta_turret/proc/tryToShootAt(var/list/mob/living/targets)
+/obj/machinery/porta_turret/proc/tryToShootAt(list/mob/living/targets)
if(targets.len && last_target && (last_target in targets) && target(last_target))
return 1
@@ -668,7 +666,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
return ..()
-/obj/machinery/porta_turret/proc/set_raised_raising(var/is_raised, var/is_raising)
+/obj/machinery/porta_turret/proc/set_raised_raising(is_raised, is_raising)
raised = is_raised
raising = is_raising
density = is_raised || is_raising
@@ -756,7 +754,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
var/check_borgs
var/ailock
-/obj/machinery/porta_turret/proc/setState(var/datum/turret_checks/TC)
+/obj/machinery/porta_turret/proc/setState(datum/turret_checks/TC)
if(controllock)
return
enabled = TC.enabled
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 9b10029e2ad..9063a126317 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -83,7 +83,7 @@
new /obj/effect/gibspawner/generic(get_turf(loc)) //I REPLACE YOUR TECHNOLOGY WITH FLESH!
qdel(src)
-/obj/machinery/recharge_station/Bumped(var/mob/AM)
+/obj/machinery/recharge_station/Bumped(mob/AM)
if(ismob(AM))
move_inside(AM)
@@ -234,7 +234,7 @@
add_fingerprint(usr)
return
-/obj/machinery/recharge_station/verb/move_inside(var/mob/user = usr)
+/obj/machinery/recharge_station/verb/move_inside(mob/user = usr)
set category = "Object"
set src in oview(1)
if(!user || !usr)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 2d04d04644a..487ec245466 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -193,7 +193,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles)
reset_message(TRUE)
if("writeAnnouncement")
- var/new_message = sanitize(input("Write your message:", "Awaiting Input", ""))
+ var/new_message = input("Write your message:", "Awaiting Input", message) as message|null
if(new_message)
message = new_message
else
@@ -202,7 +202,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles)
if("sendAnnouncement")
if(!announcementConsole)
return
- announcement.Announce(message, msg_sanitized = TRUE)
+ announcement.Announce(message)
reset_message(TRUE)
if("department")
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 5535c8bbe90..6934483c0ae 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -7,6 +7,7 @@
opacity = FALSE
anchored = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ flags_2 = RAD_NO_CONTAMINATE_2
max_integrity = 200
/obj/machinery/shield/New()
diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm
index 30dfc78fe29..81835d19c82 100644
--- a/code/game/machinery/status_display.dm
+++ b/code/game/machinery/status_display.dm
@@ -287,7 +287,7 @@
return
-/obj/machinery/ai_status_display/proc/set_picture(var/state)
+/obj/machinery/ai_status_display/proc/set_picture(state)
picture_state = state
if(overlays.len)
overlays.Cut()
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index d4b2641b22f..9fe8c781c09 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -314,7 +314,7 @@
if(state_open)
if(store_item(I, user))
update_icon()
- updateUsrDialog()
+ SStgui.update_uis(src)
to_chat(user, "You load the [I] into the storage compartment.")
else
to_chat(user, "You can't fit [I] into [src]!")
@@ -366,6 +366,7 @@
helmet = null
suit = null
mask = null
+ boots = null
storage = null
occupant = null
@@ -409,8 +410,6 @@
if(uv_cycles)
uv_cycles--
uv = TRUE
- locked = TRUE
- update_icon()
if(occupant)
var/mob/living/mob_occupant = occupant
if(uv_super)
@@ -422,7 +421,6 @@
else
uv_cycles = initial(uv_cycles)
uv = FALSE
- locked = FALSE
for(var/atom/A in contents)
A.clean_blood(radiation_clean = FALSE) // we invoke the radiation cleaning proc directly
A.clean_radiation(12) // instead of letting clean_blood do it
@@ -451,9 +449,10 @@
else
visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.")
playsound(src, 'sound/machines/airlock_close.ogg', 25, 1)
- open_machine(FALSE)
if(occupant)
dump_contents()
+ update_icon()
+ SStgui.update_uis(src)
/obj/machinery/suit_storage_unit/relaymove(mob/user)
if(locked)
@@ -502,7 +501,7 @@
if(drop)
dropContents()
update_icon()
- updateUsrDialog()
+ SStgui.update_uis(src)
/obj/machinery/suit_storage_unit/dropContents()
var/turf/T = get_turf(src)
@@ -532,132 +531,81 @@
if(target && !target.has_buckled_mobs() && (!isliving(target) || !mobtarget.buckled))
occupant = target
target.forceMove(src)
- updateUsrDialog()
+ SStgui.update_uis(src)
update_icon()
////////
-/obj/machinery/suit_storage_unit/attack_hand(mob/user)
- var/dat
- if(shocked && !(stat & NOPOWER))
- if(shock(user, 100))
- return
- if(stat & NOPOWER)
- return
- if(..())
- return
- if(panel_open) //The maintenance panel is open. Time for some shady stuff
- wires.Interact(user)
- if(uv) //The thing is running its cauterisation cycle. You have to wait.
- dat += "Suit storage unit"
- dat+= "Unit is cauterising contents with selected UV ray intensity. Please wait. "
- else
- if(!broken)
- dat+= "Welcome to the Unit control panel. "
- dat+= text("Helmet storage compartment: [] ",(helmet ? helmet.name : "No helmet detected.") )
- if(helmet && state_open)
- dat+="Dispense helmet "
- dat+= text("Suit storage compartment: [] ",(suit ? suit.name : "No exosuit detected.") )
- if(suit && state_open)
- dat+="Dispense suit "
- dat+= text("Breathmask storage compartment: [] ",(mask ? mask.name : "No breathmask detected.") )
- if(mask && state_open)
- dat+="Dispense mask "
- dat+= text("Magboots storage compartment: [] ",(boots ? boots.name : "No magboots detected.") )
- if(boots && state_open)
- dat+="Dispense magboots "
- dat+= text("Tank storage compartment: [] ",(storage ? storage.name : "No storage item detected.") )
- if(storage && state_open)
- dat+="Dispense storage item "
- if(occupant)
- dat+= " WARNING: Biological entity detected inside the Unit's storage. Please remove. "
- dat+= "Eject extra load"
- dat+= text(" Unit is: [] - [] Unit ",(state_open ? "Open" : "Closed"),(state_open ? "Close" : "Open"))
- if(state_open)
- dat+=" "
- else
- dat+= text(" - *[] Unit* ",(locked ? "Unlock" : "Lock") )
- dat+= text("Unit status: []",(locked? "**LOCKED** " : "**UNLOCKED** ") )
- dat+= "Start Disinfection cycle "
- dat += "
Close control panel"
- else //Ohhhh shit it's dirty or broken! Let's inform the guy.
- dat+= "Suit storage unit"
- dat+= "Unit chamber is too contaminated to continue usage. Please call for a qualified individual to perform maintenance.
"
- dat+= " Close control panel"
-
-
- var/datum/browser/popup = new(user, "suit_storage_unit", name, 400, 500)
- popup.set_content(dat)
- popup.open(0)
- onclose(user, "suit_storage_unit")
- return
-
/obj/machinery/suit_storage_unit/proc/check_allowed(user)
if(!(allowed(user) || !secure))
to_chat(user, "Access denied.")
return FALSE
return TRUE
-/obj/machinery/suit_storage_unit/Topic(href, href_list)
+/obj/machinery/suit_storage_unit/attack_hand(mob/user)
+ if(..() || (stat & NOPOWER))
+ return
+ if(shocked && shock(user, 100))
+ return
+ if(panel_open) //The maintenance panel is open. Time for some shady stuff
+ wires.Interact(user)
+ ui_interact(user)
+
+/obj/machinery/suit_storage_unit/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "SuitStorage", name, 402, 268, master_ui, state)
+ ui.set_autoupdate(FALSE)
+ ui.open()
+
+/obj/machinery/suit_storage_unit/ui_data(mob/user)
+ var/list/data = list(
+ "locked" = locked,
+ "open" = state_open,
+ "broken" = broken,
+ "helmet" = helmet ? helmet.name : null,
+ "suit" = suit ? suit.name : null,
+ "magboots" = boots ? boots.name : null,
+ "mask" = mask ? mask.name : null,
+ "storage" = storage ? storage.name : null,
+ "uv" = uv
+ )
+ return data
+
+/obj/machinery/suit_storage_unit/ui_act(action, list/params)
if(..())
- return 1
+ return
+ add_fingerprint(usr)
if(shocked && !(stat & NOPOWER))
if(shock(usr, 100))
- return
- if((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
- usr.set_machine(src)
- if(href_list["toggleUV"])
- toggleUV()
- updateUsrDialog()
- update_icon()
- if(href_list["togglesafeties"])
- togglesafeties()
- updateUsrDialog()
- update_icon()
- if(href_list["dispense_helmet"])
- dispense_helmet()
- updateUsrDialog()
- update_icon()
- if(href_list["dispense_suit"])
- dispense_suit()
- updateUsrDialog()
- update_icon()
- if(href_list["dispense_mask"])
- dispense_mask()
- updateUsrDialog()
- update_icon()
- if(href_list["dispense_magboots"])
- dispense_magboots()
- updateUsrDialog()
- update_icon()
- if(href_list["dispense_storage"])
- dispense_storage()
- updateUsrDialog()
- update_icon()
- if(href_list["toggle_open"])
- if(!check_allowed(usr))
- return
- toggle_open(usr)
- updateUsrDialog()
- update_icon()
- if(href_list["toggle_lock"])
- if(!check_allowed(usr))
- return
- toggle_lock(usr)
- updateUsrDialog()
- update_icon()
- if(href_list["cook"])
- cook()
- updateUsrDialog()
- update_icon()
- if(href_list["eject_guy"])
- eject_occupant(usr)
- updateUsrDialog()
- update_icon()
- add_fingerprint(usr)
- return
+ return FALSE
+ . = TRUE
+ switch(action)
+ if("dispense_helmet")
+ dispense_helmet()
+ if("dispense_suit")
+ dispense_suit()
+ if("dispense_mask")
+ dispense_mask()
+ if("dispense_boots")
+ dispense_boots()
+ if("dispense_storage")
+ dispense_storage()
+ if("toggle_open")
+ if(!check_allowed(usr))
+ return FALSE
+ toggle_open(usr)
+ if("toggle_lock")
+ if(!check_allowed(usr))
+ return FALSE
+ toggle_lock(usr)
+ if("cook")
+ cook()
+ if("eject_occupant")
+ eject_occupant(usr)
+ update_icon()
/obj/machinery/suit_storage_unit/proc/toggleUV()
if(!panel_open)
@@ -692,7 +640,7 @@
mask.forceMove(loc)
mask = null
-/obj/machinery/suit_storage_unit/proc/dispense_magboots()
+/obj/machinery/suit_storage_unit/proc/dispense_boots()
if(!boots)
return
else
@@ -754,7 +702,7 @@
return
eject_occupant(usr)
add_fingerprint(usr)
- updateUsrDialog()
+ SStgui.update_uis(src)
update_icon()
return
@@ -785,7 +733,7 @@
update_icon()
add_fingerprint(usr)
- updateUsrDialog()
+ SStgui.update_uis(src)
return
else
occupant = null
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index a5cff57ad52..6318eebdb2d 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -17,7 +17,7 @@
var/selfdestructing = 0
var/charges = 1
-/obj/machinery/syndicate_beacon/attack_hand(var/mob/user as mob)
+/obj/machinery/syndicate_beacon/attack_hand(mob/user as mob)
usr.set_machine(src)
var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]... Identity confirmed, "
if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai))
@@ -147,7 +147,7 @@
return
-/obj/machinery/power/singularity_beacon/attack_hand(var/mob/user as mob)
+/obj/machinery/power/singularity_beacon/attack_hand(mob/user as mob)
if(anchored)
return active ? Deactivate(user) : Activate(user)
else
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index e6f9f617cff..ed196abc6dc 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -303,22 +303,6 @@
..()
wires.cut_all()
-/obj/machinery/syndicatebomb/self_destruct
- name = "self destruct device"
- desc = "Do not taunt. Warranty invalid if exposed to high temperature. Not suitable for agents under 3 years of age."
- req_access = list(ACCESS_SYNDICATE)
- payload = /obj/item/bombcore/large
- can_unanchor = FALSE
- var/explosive_wall_group = EXPLOSIVE_WALL_GROUP_SYNDICATE_BASE // If set, this bomb will also cause explosive walls in the same group to explode
-
-/obj/machinery/syndicatebomb/self_destruct/try_detonate(ignore_active = FALSE)
- . = ..()
- if(. && explosive_wall_group)
- for(var/wall in GLOB.explosive_walls)
- var/turf/simulated/wall/mineral/plastitanium/explosive/E = wall
- if(E.explosive_wall_group == explosive_wall_group)
- E.self_destruct()
- sleep(5)
///Bomb Cores///
diff --git a/code/game/machinery/tcomms/_base.dm b/code/game/machinery/tcomms/_base.dm
index 2f6702eaa8c..3fa0c31b559 100644
--- a/code/game/machinery/tcomms/_base.dm
+++ b/code/game/machinery/tcomms/_base.dm
@@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
/obj/machinery/tcomms
name = "Telecommunications Device"
desc = "Someone forgot to say what this thingy does. Please yell at a coder"
- icon = 'icons/obj/tcomms.dmi'
+ icon = 'icons/obj/machines/telecomms.dmi'
icon_state = "error"
density = TRUE
anchored = TRUE
@@ -85,10 +85,8 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
/obj/machinery/tcomms/update_icon()
. = ..()
// Show the off sprite if were inactive, ion'd or unpowered
- if(!active || (stat & NOPOWER) || ion)
- icon_state = "[initial(icon_state)]_off"
- else
- icon_state = initial(icon_state)
+ var/functioning = (active && !(stat & NOPOWER) && !ion)
+ icon_state = "[initial(icon_state)][panel_open ? "_o" : null][functioning ? null : "_off"]"
// Attack overrides. These are needed so the UIs can be opened up //
diff --git a/code/game/machinery/tcomms/nttc.dm b/code/game/machinery/tcomms/nttc.dm
index 6ca309a7dfe..0576bbe7e41 100644
--- a/code/game/machinery/tcomms/nttc.dm
+++ b/code/game/machinery/tcomms/nttc.dm
@@ -189,7 +189,7 @@
// This loads a configuration from a JSON string.
// Fucking broken as shit, someone help me fix this.
-/datum/nttc_configuration/proc/nttc_deserialize(text, var/ckey)
+/datum/nttc_configuration/proc/nttc_deserialize(text, ckey)
if(word_blacklist.Find(text)) //uh oh, they tried to be naughty
message_admins("EXPLOIT WARNING: [ckey] attempted to upload an NTTC configuration containing JS abusable tags!")
log_admin("EXPLOIT WARNING: [ckey] attempted to upload an NTTC configuration containing JS abusable tags")
@@ -279,9 +279,14 @@
if(toggle_command_bold)
var/job = tcm.sender_job
if((job in ert_jobs) || (job in heads) || (job in cc_jobs))
- for(var/datum/multilingual_say_piece/S in message_pieces)
- if(S.message)
- S.message = "[capitalize(S.message)]" // This only capitalizes the first word
+ for(var/I in 1 to length(message_pieces))
+ var/datum/multilingual_say_piece/S = message_pieces[I]
+ if(!S.message)
+ continue
+ if(I == 1 && !istype(S.speaking, /datum/language/noise)) // Capitalise the first section only, unless it's an emote.
+ S.message = "[capitalize(S.message)]"
+ S.message = "[S.message]" // Make everything bolded
+
// Language Conversion
if(setting_language && valid_languages[setting_language])
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 932d46b6c0c..9b7af34349f 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -401,7 +401,9 @@
if(!calibrated && com.cc_beacon)
visible_message("Cannot lock on target. Please calibrate the teleporter before attempting long range teleportation.")
else if(!calibrated && prob(25 - ((accurate) * 10)) && !com.cc_beacon) //oh dear a problem
- . = do_teleport(M, locate(rand((2*TRANSITIONEDGE), world.maxx - (2*TRANSITIONEDGE)), rand((2*TRANSITIONEDGE), world.maxy - (2*TRANSITIONEDGE)), 3), 2, bypass_area_flag = com.area_bypass)
+ var/list/target_z = levels_by_trait(REACHABLE)
+ target_z -= M.z //Where to sir? Anywhere but here.
+ . = do_teleport(M, locate(rand((2*TRANSITIONEDGE), world.maxx - (2*TRANSITIONEDGE)), rand((2*TRANSITIONEDGE), world.maxy - (2*TRANSITIONEDGE)), pick(target_z)), 2, bypass_area_flag = com.area_bypass)
else
. = do_teleport(M, com.target, bypass_area_flag = com.area_bypass)
calibrated = FALSE
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 122b85c3d2e..9f18c35c4b7 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -806,11 +806,9 @@
/obj/machinery/vending/power_change()
if(powered())
stat &= ~NOPOWER
- update_icon()
else
- spawn(rand(0, 15))
- stat |= NOPOWER
- update_icon()
+ stat |= NOPOWER
+ update_icon()
/obj/machinery/vending/obj_break(damage_flag)
if(!(stat & BROKEN))
@@ -1583,6 +1581,7 @@
products = list(/obj/item/storage/bag/tray = 8,
/obj/item/kitchen/utensil/fork = 6,
/obj/item/trash/plate = 20,
+ /obj/item/trash/bowl = 20,
/obj/item/kitchen/knife = 3,
/obj/item/kitchen/rollingpin = 2,
/obj/item/kitchen/sushimat = 3,
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index a48fa88b96a..a5120327f4c 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -272,6 +272,9 @@
if( istype(W,/obj/item/clothing/gloves/furgloves ) )
to_chat(user, "This item does not fit.")
return
+ if(istype(W, /obj/item/clothing/gloves/color/black/krav_maga/sec))
+ to_chat(user, "Washing these gloves would fry the electronics!")
+ return
if(W.flags & NODROP) //if "can't drop" item
to_chat(user, "\The [W] is stuck to your hand, you cannot put it in the washing machine!")
return
diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm
index d8ddee347e2..95539c4b4b1 100644
--- a/code/game/mecha/combat/combat.dm
+++ b/code/game/mecha/combat/combat.dm
@@ -7,7 +7,7 @@
destruction_sleep_duration = 2
var/am = "d3c2fbcadca903a41161ccc9df9cf948"
-/obj/mecha/combat/moved_inside(var/mob/living/carbon/human/H as mob)
+/obj/mecha/combat/moved_inside(mob/living/carbon/human/H as mob)
if(..())
if(H.client)
H.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi")
@@ -15,7 +15,7 @@
else
return 0
-/obj/mecha/combat/mmi_moved_inside(var/obj/item/mmi/mmi_as_oc as obj,mob/user as mob)
+/obj/mecha/combat/mmi_moved_inside(obj/item/mmi/mmi_as_oc as obj, mob/user as mob)
if(..())
if(occupant.client)
occupant.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi")
diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm
index e33a748354c..f1b9b291245 100644
--- a/code/game/mecha/equipment/tools/other_tools.dm
+++ b/code/game/mecha/equipment/tools/other_tools.dm
@@ -296,7 +296,7 @@
return 1000 //making magic
-/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_power_channel(var/area/A)
+/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_power_channel(area/A)
var/pow_chan
if(A)
for(var/c in use_channels)
@@ -395,7 +395,7 @@
if(result)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",get_equip_info())
-/obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/I)
+/obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(obj/item/I)
if(istype(I) && (fuel_type in I.materials))
if(istype(I, /obj/item/stack/sheet))
var/obj/item/stack/sheet/P = I
diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm
index 74b26ebf23a..f78b34078eb 100644
--- a/code/game/mecha/equipment/tools/work_tools.dm
+++ b/code/game/mecha/equipment/tools/work_tools.dm
@@ -345,7 +345,7 @@
UnregisterSignal(chassis, COMSIG_MOVABLE_MOVED)
return ..()
-/obj/item/mecha_parts/mecha_equipment/cable_layer/action(var/obj/item/stack/cable_coil/target)
+/obj/item/mecha_parts/mecha_equipment/cable_layer/action(obj/item/stack/cable_coil/target)
if(!action_checks(target))
return
if(istype(target) && target.amount)
@@ -407,7 +407,7 @@
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/reset()
last_piece = null
-/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/dismantleFloor(var/turf/new_turf)
+/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/dismantleFloor(turf/new_turf)
if(istype(new_turf, /turf/simulated/floor))
var/turf/simulated/floor/T = new_turf
if(!istype(T, /turf/simulated/floor/plating))
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 48fb17565eb..351aba3905b 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -12,7 +12,7 @@
var/projectiles
var/projectile_energy_cost
-/obj/item/mecha_parts/mecha_equipment/weapon/can_attach(var/obj/mecha/combat/M as obj)
+/obj/item/mecha_parts/mecha_equipment/weapon/can_attach(obj/mecha/combat/M as obj)
if(..())
if(istype(M))
if(size > M.maxsize)
@@ -517,8 +517,8 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
equip_cooldown = 10
- name = "217-D Heavy Plasma Cutter"
- desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demloishing solid obstacles."
+ name = "\improper 217-D Heavy Plasma Cutter"
+ desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demolishing solid obstacles."
icon_state = "mecha_plasmacutter"
item_state = "plasmacutter"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index c67125e18d0..2876527a526 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -136,7 +136,7 @@
internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src)
return internal_tank
-/obj/mecha/proc/add_cell(var/obj/item/stock_parts/cell/C=null)
+/obj/mecha/proc/add_cell(obj/item/stock_parts/cell/C=null)
if(C)
C.forceMove(src)
cell = C
@@ -242,7 +242,7 @@
//////////////////////////////////
//////// Movement procs ////////
//////////////////////////////////
-/obj/mecha/Process_Spacemove(var/movement_dir = 0)
+/obj/mecha/Process_Spacemove(movement_dir = 0)
. = ..()
if(.)
return 1
@@ -354,7 +354,7 @@
if(. && stepsound)
playsound(src, stepsound, 40, 1)
-/obj/mecha/Bump(var/atom/obstacle, bump_allowed)
+/obj/mecha/Bump(atom/obstacle, bump_allowed)
if(throwing) //high velocity mechas in your face!
var/breakthrough = 0
if(istype(obstacle, /obj/structure/window))
@@ -1105,7 +1105,7 @@
else
to_chat(user, "You stop entering the exosuit!")
-/obj/mecha/proc/moved_inside(var/mob/living/carbon/human/H as mob)
+/obj/mecha/proc/moved_inside(mob/living/carbon/human/H as mob)
if(H && H.client && (H in range(1)))
occupant = H
H.stop_pulling()
@@ -1128,7 +1128,7 @@
else
return FALSE
-/obj/mecha/proc/mmi_move_inside(var/obj/item/mmi/mmi_as_oc as obj,mob/user as mob)
+/obj/mecha/proc/mmi_move_inside(obj/item/mmi/mmi_as_oc as obj,mob/user as mob)
if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client)
to_chat(user, "Consciousness matrix not detected!")
return FALSE
@@ -1154,7 +1154,7 @@
to_chat(user, "You stop inserting the MMI.")
return FALSE
-/obj/mecha/proc/mmi_moved_inside(obj/item/mmi/mmi_as_oc,mob/user)
+/obj/mecha/proc/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user)
if(mmi_as_oc && (user in range(1)))
if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client)
to_chat(user, "Consciousness matrix not detected.")
@@ -1197,7 +1197,7 @@
return 1
return 0
-/obj/mecha/proc/pilot_mmi_hud(var/mob/living/carbon/brain/pilot)
+/obj/mecha/proc/pilot_mmi_hud(mob/living/carbon/brain/pilot)
return
/obj/mecha/Exited(atom/movable/M, atom/newloc)
diff --git a/code/game/mecha/mecha_modkit.dm b/code/game/mecha/mecha_modkit.dm
index 9d07e760c79..55558ff66dd 100644
--- a/code/game/mecha/mecha_modkit.dm
+++ b/code/game/mecha/mecha_modkit.dm
@@ -5,7 +5,7 @@
icon_state = "harddisk_mini"
var/install_time = 15
-/obj/item/mecha_modkit/proc/install(var/obj/mecha/mech, var/mob/user)
+/obj/item/mecha_modkit/proc/install(obj/mecha/mech, mob/user)
if(user)
to_chat(user, "You install [src] into [mech].")
return TRUE
@@ -20,7 +20,7 @@
var/lowpowersound = 'sound/mecha/lowpower.ogg'
var/longactivationsound = 'sound/mecha/nominal.ogg'
-/obj/item/mecha_modkit/voice/install(var/obj/mecha/mech, var/mob/living/carbon/user)
+/obj/item/mecha_modkit/voice/install(obj/mecha/mech, mob/living/carbon/user)
if(istype(mech, /obj/mecha/combat/reticence) && user)
to_chat(user, "You attempt to install [src] into [mech], but an invisible barrier prevents you from doing so!")
return FALSE
diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm
index 93003258008..3fd3cf8742b 100644
--- a/code/game/mecha/medical/odysseus.dm
+++ b/code/game/mecha/medical/odysseus.dm
@@ -13,7 +13,7 @@
normal_step_energy_drain = 6
var/builtin_hud_user = 0
-/obj/mecha/medical/odysseus/moved_inside(var/mob/living/carbon/human/H)
+/obj/mecha/medical/odysseus/moved_inside(mob/living/carbon/human/H)
. = ..()
if(. && ishuman(H))
if(istype(H.glasses, /obj/item/clothing/glasses/hud))
@@ -23,7 +23,7 @@
A.add_hud_to(H)
builtin_hud_user = 1
-/obj/mecha/medical/odysseus/mmi_moved_inside(var/obj/item/mmi/mmi_as_oc, mob/user)
+/obj/mecha/medical/odysseus/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user)
. = ..()
if(.)
if(occupant.client)
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index e431a2df310..96f045ea9d3 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -62,7 +62,7 @@
add_overlay(occupant ? "ripley-g-full" : "ripley-g-full-open")
/obj/mecha/working/ripley/firefighter
- desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
+ desc = "A standard APLU chassis that was refitted with additional thermal protection and a cistern."
name = "APLU \"Firefighter\""
icon_state = "firefighter"
initial_icon = "firefighter"
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index bf24498e4b2..f88a3cb630d 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -182,7 +182,7 @@ GLOBAL_LIST_EMPTY(splatter_cache)
/obj/effect/decal/cleanable/blood/gibs/cleangibs //most ironic name ever...
scoop_reagents = null
-/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
+/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm
index 91f558068a8..b3519902a6e 100644
--- a/code/game/objects/effects/decals/Cleanable/robots.dm
+++ b/code/game/objects/effects/decals/Cleanable/robots.dm
@@ -20,7 +20,7 @@
/obj/effect/decal/cleanable/blood/gibs/robot/can_bloodcrawl_in()
return FALSE
-/obj/effect/decal/cleanable/blood/gibs/robot/streak(var/list/directions)
+/obj/effect/decal/cleanable/blood/gibs/robot/streak(list/directions)
spawn(0)
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm
index 88663e6c38c..9decdcf4c31 100644
--- a/code/game/objects/effects/decals/misc.dm
+++ b/code/game/objects/effects/decals/misc.dm
@@ -58,14 +58,14 @@
/obj/effect/decal/straw/edge
icon_state = "strawscatterededge"
-/obj/effect/decal/ants
+/obj/effect/decal/cleanable/ants
name = "space ants"
desc = "A bunch of space ants."
icon = 'icons/goonstation/effects/effects.dmi'
icon_state = "spaceants"
scoop_reagents = list("ants" = 20)
-/obj/effect/decal/ants/Initialize(mapload)
+/obj/effect/decal/cleanable/ants/Initialize(mapload)
. = ..()
var/scale = (rand(2, 10) / 10) + (rand(0, 5) / 100)
transform = matrix(transform, scale, scale, MATRIX_SCALE)
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 0f373bfe851..4a00dfda86d 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -164,10 +164,9 @@
new /obj/item/clothing/shoes/jackboots(src.loc)
qdel(src)
-/obj/effect/landmark/costume/nyangirl/New()
+/obj/effect/landmark/costume/schoolgirl/New()
. = ..()
new /obj/item/clothing/under/schoolgirl(src.loc)
- new /obj/item/clothing/head/kitty(src.loc)
qdel(src)
/obj/effect/landmark/costume/maid/New()
diff --git a/code/game/objects/effects/spawners/grouped_spawner.dm b/code/game/objects/effects/spawners/grouped_spawner.dm
new file mode 100644
index 00000000000..c4e62db038a
--- /dev/null
+++ b/code/game/objects/effects/spawners/grouped_spawner.dm
@@ -0,0 +1,128 @@
+/**
+ * Can be used to group spawners together so you ensure a certain amount of things are spawned but can be spawned on multiple locations.
+ *
+ * How to use:
+ * Either place the base grouped_spawner in the map and define the group_id to
+ * determine which spawners belong to one another.
+ * Or make a child instance of the grouped_spawner and define the values there.
+ *
+ * When using the base version be sure to define both total_amount and max_per_spawner on
+ * at least one of the spawners of the group.
+ * A mismatch between instances of the same group between these values will lead to a runtime.
+ * So either leave it empty for the rest or have the rest have the same values
+**/
+/obj/effect/spawner/grouped_spawner
+ name = "grouped spawner"
+ icon = 'icons/mob/screen_gen.dmi'
+ icon_state = "x2"
+ /// Which path will be used to spawn.
+ var/path_to_spawn
+ /// How many will spawn. Set this in the map edit tool or in a child instance to set it for all the other instances.
+ var/total_amount
+ /// How many will spawn maximum per spawner. Set this in the map edit tool or in a child instance to set it for all the other instances.
+ var/max_per_spawner
+ /// The id of the group this spawner belongs to. If left empty it'll use the type as id. Define this for map instances if you want to link different spawners up or want to use the base version.
+ var/group_id
+
+ /// The assoc list of grouped spawners. Key = group_id, value = list of spawners with that key
+ var/static/list/spawner_groups
+ /// Which spawners are chosen to spawn the objects
+ var/static/list/chosen_spawners
+ /// The list which holds the total_amount values for each spawner group
+ var/static/list/total_amount_for_spawners
+ /// The list which holds the max_per_spawner values for each spawner group
+ var/static/list/max_per_spawner_for_spawners
+
+/obj/effect/spawner/grouped_spawner/Initialize(mapload)
+ . = INITIALIZE_HINT_QDEL // For crash handling
+ if(!mapload)
+ CRASH("[src] of type [type] was made post mapload")
+
+ var/turf/T = get_turf(src)
+ if(!T)
+ CRASH("Spawner placed in nullspace!")
+
+ if(isnull(group_id)) // Set the group_id if null
+ group_id = type
+
+ if(group_id == /obj/effect/spawner/grouped_spawner) // Not allowed to use the base type as group_id
+ CRASH("group_id was not set for [src] of type '[type]'")
+
+ ..()
+
+ save_spawn_values()
+ LAZYADDASSOC(spawner_groups, group_id, src)
+
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/effect/spawner/grouped_spawner/LateInitialize()
+ ..()
+
+ if(LAZYACCESS(spawner_groups, group_id) && !LAZYACCESS(chosen_spawners, group_id)) // Not yet picked the spawners
+ pick_spawners()
+ var/list/CS = LAZYACCESS(chosen_spawners, group_id)
+ if(!LAZYACCESS(CS, src)) // I'm not one of the chosen ones ;(
+ qdel(src)
+ return
+ get_spawn_values()
+
+ var/turf/T = get_turf(src)
+ spawn_objects(T, CS[src])
+ qdel(src)
+
+/obj/effect/spawner/grouped_spawner/Destroy()
+ . = ..()
+
+ LAZYREMOVEASSOC(chosen_spawners, group_id, src)
+ if(!LAZYACCESS(chosen_spawners, group_id)) // Last instance that uses these values
+ LAZYREMOVE(total_amount_for_spawners, group_id)
+ LAZYREMOVE(max_per_spawner_for_spawners, group_id)
+
+/**
+ * Saves the spawn values. Will only pick the first defined version of this group_id
+ */
+/obj/effect/spawner/grouped_spawner/proc/save_spawn_values()
+ if(!isnull(total_amount))
+ if(LAZYACCESS(total_amount_for_spawners, group_id) && total_amount_for_spawners[group_id] != total_amount)
+ stack_trace("total_amount mismatch for type [type]. Possible duplicate total_amount definition in the map")
+ else
+ LAZYSET(total_amount_for_spawners, group_id, total_amount)
+ if(!isnull(max_per_spawner))
+ if(LAZYACCESS(max_per_spawner_for_spawners, group_id) && max_per_spawner_for_spawners[group_id] != max_per_spawner)
+ stack_trace("max_per_spawner mismatch for type [type]. Possible duplicate total_amount definition in the map")
+ else
+ LAZYSET(max_per_spawner_for_spawners, group_id, max_per_spawner)
+
+/**
+ * Sets the spawn values to the values of the first defined instance of this group_id
+ */
+/obj/effect/spawner/grouped_spawner/proc/get_spawn_values()
+ total_amount = total_amount_for_spawners[group_id]
+ max_per_spawner = max_per_spawner_for_spawners[group_id]
+
+/obj/effect/spawner/grouped_spawner/proc/spawn_objects(turf/T, amount)
+ for(var/i in 1 to amount)
+ new path_to_spawn(T)
+
+/obj/effect/spawner/grouped_spawner/proc/pick_spawners()
+ var/list/pickable_spawners = spawner_groups[group_id]
+ LAZYSET(chosen_spawners, group_id, list())
+ var/list/spawners = chosen_spawners[group_id]
+
+ for(var/i in 1 to total_amount)
+ if(!length(pickable_spawners))
+ return // No more to pick from
+ var/obj/effect/spawner/grouped_spawner/S = pick(pickable_spawners)
+ if(++spawners[S] >= max_per_spawner)
+ pickable_spawners -= S
+
+ // Clean up
+ pickable_spawners.Cut()
+ LAZYREMOVE(spawner_groups, group_id)
+
+// Example grouped spawner
+/obj/effect/spawner/grouped_spawner/duck_spawn
+ name = "grouped rubberducky spawner"
+ path_to_spawn = /obj/item/bikehorn/rubberducky
+ max_per_spawner = 2
+ total_amount = 5
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 3ecd0d0fc3c..90fcb842684 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -255,7 +255,7 @@
loot = list(
// Robotics
/obj/item/mmi/robotic_brain = 50, // Low-value, but we want to encourage getting more players back in the round.
- /obj/item/assembly/signaler/anomaly = 50, // anomaly core
+ /obj/item/assembly/signaler/anomaly/random = 50, // anomaly core
/obj/item/mecha_parts/mecha_equipment/weapon/energy/xray = 25, // mecha x-ray laser
/obj/item/mecha_parts/mecha_equipment/teleporter/precise = 25, // upgraded mecha teleporter
/obj/item/autosurgeon = 50,
@@ -388,11 +388,11 @@
lootcount = 3
lootdoubles = FALSE
var/soups = list(
- /obj/item/reagent_containers/food/snacks/beetsoup,
- /obj/item/reagent_containers/food/snacks/stew,
- /obj/item/reagent_containers/food/snacks/hotchili,
- /obj/item/reagent_containers/food/snacks/nettlesoup,
- /obj/item/reagent_containers/food/snacks/meatballsoup)
+ /obj/item/reagent_containers/food/snacks/soup/beetsoup,
+ /obj/item/reagent_containers/food/snacks/soup/stew,
+ /obj/item/reagent_containers/food/snacks/soup/hotchili,
+ /obj/item/reagent_containers/food/snacks/soup/nettlesoup,
+ /obj/item/reagent_containers/food/snacks/soup/meatballsoup)
var/salads = list(
/obj/item/reagent_containers/food/snacks/herbsalad,
/obj/item/reagent_containers/food/snacks/validsalad,
diff --git a/code/game/objects/effects/spawners/vaultspawner.dm b/code/game/objects/effects/spawners/vaultspawner.dm
index faa09956abb..ca455603916 100644
--- a/code/game/objects/effects/spawners/vaultspawner.dm
+++ b/code/game/objects/effects/spawners/vaultspawner.dm
@@ -4,7 +4,7 @@
var/minX = 2
var/minY = 2
-/obj/effect/vaultspawner/New(turf/location as turf,lX = minX,uX = maxX,lY = minY,uY = maxY,var/type = null)
+/obj/effect/vaultspawner/New(turf/location as turf,lX = minX,uX = maxX,lY = minY,uY = maxY, type = null)
. = ..()
if(!type)
type = pick("sandstone","rock","alien")
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index bde6cb538df..a12d967e8f6 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -7,10 +7,10 @@
invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit
anchored = TRUE
-/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
+/obj/effect/step_trigger/proc/Trigger(atom/movable/A)
return FALSE
-/obj/effect/step_trigger/Crossed(var/H, oldloc)
+/obj/effect/step_trigger/Crossed(H, oldloc)
. = ..()
if(!H)
return
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index 27d5eafb677..298c6686df2 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -83,7 +83,7 @@
/obj/effect/temp_visual/dir_setting/wraith
name = "blood"
- icon = 'icons/mob/mob.dmi'
+ icon = 'icons/mob/cult.dmi'
icon_state = "phase_shift2"
duration = 12
diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm
index abfee76c1b4..4e4eefbe9cb 100644
--- a/code/game/objects/explosion.dm
+++ b/code/game/objects/explosion.dm
@@ -190,11 +190,15 @@
log_world("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.")
//Machines which report explosions.
- for(var/i,i<=GLOB.doppler_arrays.len,i++)
- var/obj/machinery/doppler_array/Array = GLOB.doppler_arrays[i]
- if(Array)
+ for(var/array in GLOB.doppler_arrays)
+ if(!array)
+ continue
+ if(istype(array, /obj/machinery/doppler_array))
+ var/obj/machinery/doppler_array/Array = array
Array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
-
+ if(istype(array, /obj/item/clothing/head/helmet/space/hardsuit/rd))
+ var/obj/item/clothing/head/helmet/space/hardsuit/rd/Helm_Array = array
+ Helm_Array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
return 1
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 0edfd134d97..f22fb5cbb81 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -389,7 +389,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/goonstation/effect
/obj/item/proc/refill(mob/user, atom/A, amount)
return FALSE
-/obj/item/proc/talk_into(mob/M, var/text, var/channel=null)
+/obj/item/proc/talk_into(mob/M, text, channel=null)
return
/// Called when a mob drops an item.
@@ -505,7 +505,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/goonstation/effect
/obj/item/proc/ui_action_click(mob/user, actiontype)
attack_self(user)
-/obj/item/proc/IsReflect(var/def_zone) //This proc determines if and at what% an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit
+/obj/item/proc/IsReflect(def_zone) //This proc determines if and at what% an object will reflect energy projectiles if it's in l_hand,r_hand or wear_suit
return 0
/obj/item/proc/get_loc_turf()
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index ccdce20f5e4..69ae7f6d77a 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -169,7 +169,7 @@
return A
-/obj/item/areaeditor/proc/get_area_type(var/area/A = get_area())
+/obj/item/areaeditor/proc/get_area_type(area/A = get_area())
if(A.outdoors)
return AREA_SPACE
var/list/SPECIALS = list(
@@ -228,8 +228,8 @@
FD.CalculateAffectingAreas()
interact()
- message_admins("A new room was made by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_VERBOSEJMP(src)] with the name [str]")
- log_game("A new room was made by [key_name(usr)] at [AREACOORD(src)] with the name [str]")
+ message_admins("A new room was made by [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(usr)] with the name [str]")
+ log_game("A new room was made by [key_name(usr)] at [AREACOORD(usr)] with the name [str]")
area_created = TRUE
return area_created
@@ -250,12 +250,12 @@
FD.CalculateAffectingAreas()
to_chat(usr, "You rename the '[prevname]' to '[str]'.")
interact()
- message_admins("A room was renamed by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_VERBOSEJMP(usr)] changing the name from [prevname] to [str]")
+ message_admins("A room was renamed by [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(usr)] changing the name from [prevname] to [str]")
log_game("A room was renamed by [key_name(usr)] at [AREACOORD(usr)] changing the name from [prevname] to [str] ")
return 1
-/obj/item/areaeditor/proc/set_area_machinery_title(var/area/A,var/title,var/oldtitle)
+/obj/item/areaeditor/proc/set_area_machinery_title(area/A, title, oldtitle)
if(!oldtitle) // or replacetext goes to infinite loop
return
for(var/obj/machinery/alarm/M in A)
@@ -270,7 +270,7 @@
M.name = replacetext(M.name,oldtitle,title)
//TODO: much much more. Unnamed airlocks, cameras, etc.
-/obj/item/areaeditor/proc/check_tile_is_border(var/turf/T2,var/dir)
+/obj/item/areaeditor/proc/check_tile_is_border(turf/T2, dir)
if(istype(T2, /turf/space))
return BORDER_SPACE //omg hull breach we all going to die here
if(get_area_type(T2.loc)!=AREA_SPACE)
@@ -298,7 +298,7 @@
return BORDER_NONE
-/obj/item/areaeditor/proc/detect_room(var/turf/first)
+/obj/item/areaeditor/proc/detect_room(turf/first)
var/list/turf/found = new
var/list/turf/pending = list(first)
while(pending.len)
@@ -341,4 +341,3 @@
fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from the station."
/obj/item/areaeditor/blueprints/ce
-
diff --git a/code/game/objects/items/changestone.dm b/code/game/objects/items/changestone.dm
index ec7ad232857..0f3851e1777 100644
--- a/code/game/objects/items/changestone.dm
+++ b/code/game/objects/items/changestone.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/artifacts.dmi'
icon_state = "changerock"
-/obj/item/changestone/attack_hand(var/mob/user as mob)
+/obj/item/changestone/attack_hand(mob/user as mob)
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(!H.gloves)
diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm
index 185a00305de..cb347fe9105 100644
--- a/code/game/objects/items/control_wand.dm
+++ b/code/game/objects/items/control_wand.dm
@@ -41,6 +41,10 @@
to_chat(user, "Now in mode: [mode].")
+/obj/item/door_remote/examine(mob/user)
+ . = ..()
+ . += "It's current mode is: [mode]"
+
/obj/item/door_remote/afterattack(obj/machinery/door/airlock/D, mob/user)
if(!istype(D))
return
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 8fb04c81473..73d0a2e376e 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -174,6 +174,11 @@
colourName = "purple"
..()
+/obj/item/toy/crayon/black
+ icon_state = "crayonblack"
+ colour = "#000000"
+ colourName = "black"
+
/obj/item/toy/crayon/white
icon_state = "crayonwhite"
colour = "#FFFFFF"
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index 68da2fb99b7..ef7e5edb106 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -66,7 +66,7 @@
spawn(8)
qdel(T)
-/obj/item/chameleon/proc/disrupt(var/delete_dummy = 1)
+/obj/item/chameleon/proc/disrupt(delete_dummy = 1)
if(active_dummy)
do_sparks(5, 0, src)
eject_all()
@@ -91,7 +91,7 @@
var/can_move = 1
var/obj/item/chameleon/master = null
-/obj/effect/dummy/chameleon/proc/activate(var/obj/O, var/mob/M, new_icon, new_iconstate, new_overlays, new_underlays, var/obj/item/chameleon/C)
+/obj/effect/dummy/chameleon/proc/activate(obj/O, mob/M, new_icon, new_iconstate, new_overlays, new_underlays, obj/item/chameleon/C)
name = O.name
desc = O.desc
icon = new_icon
@@ -135,7 +135,7 @@
..()
master.disrupt()
-/obj/effect/dummy/chameleon/relaymove(var/mob/user, direction)
+/obj/effect/dummy/chameleon/relaymove(mob/user, direction)
if(istype(loc, /turf/space) || !direction)
return //No magical space movement!
diff --git a/code/game/objects/items/devices/enginepicker.dm b/code/game/objects/items/devices/enginepicker.dm
index 0fd3a591560..215addfe81e 100644
--- a/code/game/objects/items/devices/enginepicker.dm
+++ b/code/game/objects/items/devices/enginepicker.dm
@@ -44,7 +44,7 @@
list_enginebeacons += B
//Spawns and logs / announces the appropriate engine based on the choice made
-/obj/item/enginepicker/proc/processchoice(var/obj/item/radio/beacon/engine/choice, mob/living/carbon/user)
+/obj/item/enginepicker/proc/processchoice(obj/item/radio/beacon/engine/choice, mob/living/carbon/user)
var/issuccessful = FALSE //Check for a successful choice
var/engtype //Engine type
var/G //Generator that will be spawned
@@ -90,7 +90,7 @@
return
//Deletes objects and mobs from the beacon's turf.
-/obj/item/enginepicker/proc/clearturf(var/turf/T)
+/obj/item/enginepicker/proc/clearturf(turf/T)
for(var/obj/item/I in T)
I.visible_message("\The [I] gets crushed to dust!")
qdel(I)
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index d2cf5a65bd2..26bfb6c816d 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -54,7 +54,7 @@
visible_message("The [src.name] burns out!")
-/obj/item/flash/proc/flash_recharge(var/mob/user)
+/obj/item/flash/proc/flash_recharge(mob/user)
if(prob(times_used * 2)) //if you use it 5 times in a minute it has a 10% chance to break!
burn_out()
return 0
@@ -85,7 +85,7 @@
return TRUE
-/obj/item/flash/proc/flash_carbon(var/mob/living/carbon/M, var/mob/user = null, var/power = 5, targeted = 1)
+/obj/item/flash/proc/flash_carbon(mob/living/carbon/M, mob/user = null, power = 5, targeted = 1)
if(user)
add_attack_logs(user, M, "Flashed with [src]")
if(targeted)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 009c7e70b48..3f7bf9997f6 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -22,7 +22,7 @@
icon_state = initial(icon_state)
set_light(0)
-/obj/item/flashlight/proc/update_brightness(var/mob/user = null)
+/obj/item/flashlight/proc/update_brightness(mob/user = null)
if(on)
icon_state = "[initial(icon_state)]-on"
set_light(brightness_on)
@@ -199,7 +199,7 @@
else
update_brightness(null)
-/obj/item/flashlight/flare/update_brightness(var/mob/user = null)
+/obj/item/flashlight/flare/update_brightness(mob/user = null)
..()
if(on)
item_state = "[initial(item_state)]-on"
diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm
index f4c1e4903e2..5a2c4fd2d57 100644
--- a/code/game/objects/items/devices/floor_painter.dm
+++ b/code/game/objects/items/devices/floor_painter.dm
@@ -27,7 +27,7 @@
"whitered", "whiteredcorner", "whiteredfull", "whiteyellow", "whiteyellowcorner", "whiteyellowfull", "yellow",
"yellowcorner", "yellowcornersiding", "yellowsiding")
-/obj/item/floor_painter/afterattack(var/atom/A, var/mob/user, proximity, params)
+/obj/item/floor_painter/afterattack(atom/A, mob/user, proximity, params)
if(!proximity)
return
@@ -46,7 +46,7 @@
F.icon_regular_floor = floor_state
F.dir = floor_dir
-/obj/item/floor_painter/attack_self(var/mob/user)
+/obj/item/floor_painter/attack_self(mob/user)
if(!user)
return 0
user.set_machine(src)
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index d96b2822bc2..da8ad829b9b 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -65,12 +65,12 @@
..()
return
-/obj/item/laser_pointer/afterattack(var/atom/target, var/mob/living/user, flag, params)
+/obj/item/laser_pointer/afterattack(atom/target, mob/living/user, flag, params)
if(flag) //we're placing the object on a table or in backpack
return
laser_act(target, user, params)
-/obj/item/laser_pointer/proc/laser_act(var/atom/target, var/mob/living/user, var/params)
+/obj/item/laser_pointer/proc/laser_act(atom/target, mob/living/user, params)
if( !(user in (viewers(7,target))) )
return
if(!diode)
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 4f2d41d7894..4ed9b335584 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -179,7 +179,7 @@
playsound(loc, 'sound/machines/ding.ogg', 50, TRUE)
return new_bulbs
-/obj/item/lightreplacer/proc/Charge(var/mob/user)
+/obj/item/lightreplacer/proc/Charge(mob/user)
charge += 1
if(charge > 3)
AddUses(1)
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 42c134736d7..4b1058ae359 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -303,7 +303,7 @@
/obj/item/paicard
var/current_emotion = 1
-/obj/item/paicard/proc/setEmotion(var/emotion)
+/obj/item/paicard/proc/setEmotion(emotion)
if(pai)
overlays.Cut()
switch(emotion)
diff --git a/code/game/objects/items/devices/pizza_bomb.dm b/code/game/objects/items/devices/pizza_bomb.dm
index e5c237938d6..ceb52db9076 100644
--- a/code/game/objects/items/devices/pizza_bomb.dm
+++ b/code/game/objects/items/devices/pizza_bomb.dm
@@ -57,7 +57,7 @@
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
qdel(src)
-/obj/item/pizza_bomb/attackby(var/obj/item/I, var/mob/user, params)
+/obj/item/pizza_bomb/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/wirecutters) && primed)
to_chat(user, "Oh God, what wire do you cut?!")
var/chosen_wire = input(user, "OH GOD OH GOD", "WHAT WIRE?!") in wires
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index 68f52721f86..6c6526fe176 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -88,7 +88,7 @@
/obj/item/powersink/attack_ai()
return
-/obj/item/powersink/attack_hand(var/mob/user)
+/obj/item/powersink/attack_hand(mob/user)
switch(mode)
if(DISCONNECTED)
..()
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index db337d0a188..235750a2b48 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -103,10 +103,10 @@
/obj/item/radio/headset/syndicate/alt/syndteam
ks1type = /obj/item/encryptionkey/syndteam
-/obj/item/radio/headset/syndicate/alt/lavaland
- name = "syndicate lavaland headset"
+/obj/item/radio/headset/syndicate/alt/nocommon
+ name = "syndicate researcher headset"
-/obj/item/radio/headset/syndicate/alt/lavaland/New()
+/obj/item/radio/headset/syndicate/alt/nocommon/New()
. = ..()
set_frequency(SYND_FREQ)
@@ -190,14 +190,14 @@
ks2type = /obj/item/encryptionkey/heads/captain
/obj/item/radio/headset/heads/captain/alt
- name = "\proper the captain's bowman headset"
+ name = "captain's bowman headset"
desc = "The headset of the boss. Protects ears from flashbangs."
flags = EARBANGPROTECT
icon_state = "com_headset_alt"
item_state = "com_headset_alt"
/obj/item/radio/headset/heads/rd
- name = "Research Director's headset"
+ name = "research director's headset"
desc = "Headset of the researching God."
icon_state = "com_headset"
item_state = "headset"
@@ -211,7 +211,7 @@
ks2type = /obj/item/encryptionkey/heads/hos
/obj/item/radio/headset/heads/hos/alt
- name = "\proper the head of security's bowman headset"
+ name = "head of security's bowman headset"
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs."
flags = EARBANGPROTECT
icon_state = "com_headset_alt"
@@ -272,7 +272,7 @@
ks2type = /obj/item/encryptionkey/heads/magistrate
/obj/item/radio/headset/heads/magistrate/alt
- name = "\proper magistrate's bowman headset"
+ name = "magistrate's bowman headset"
desc = "The headset of the Magistrate. Protects ears from flashbangs."
flags = EARBANGPROTECT
icon_state = "com_headset_alt"
@@ -286,7 +286,7 @@
ks2type = /obj/item/encryptionkey/heads/blueshield
/obj/item/radio/headset/heads/blueshield/alt
- name = "\proper blueshield's bowman headset"
+ name = "blueshield's bowman headset"
desc = "The headset of the Blueshield. Protects ears from flashbangs."
flags = EARBANGPROTECT
icon_state = "com_headset_alt"
@@ -314,7 +314,7 @@
instant = TRUE
/obj/item/radio/headset/centcom
- name = "\proper centcom officer's bowman headset"
+ name = "centcom officer's bowman headset"
desc = "The headset of final authority. Protects ears from flashbangs. Can transmit even if telecomms are down."
flags = EARBANGPROTECT
icon_state = "com_headset_alt"
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 1ee9114a322..ee06d563aad 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -236,15 +236,15 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
return user.has_internal_radio_channel_access(user, internal_channels[freq])
-/mob/proc/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
+/mob/proc/has_internal_radio_channel_access(mob/user, list/req_one_accesses)
var/obj/item/card/id/I = user.get_id_card()
return has_access(list(), req_one_accesses, I ? I.GetAccess() : list())
-/mob/living/silicon/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
+/mob/living/silicon/has_internal_radio_channel_access(mob/user, list/req_one_accesses)
var/list/access = get_all_accesses()
return has_access(list(), req_one_accesses, access)
-/mob/dead/observer/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
+/mob/dead/observer/has_internal_radio_channel_access(mob/user, list/req_one_accesses)
return can_admin_interact()
/obj/item/radio/proc/ToggleBroadcast()
@@ -475,7 +475,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
return FALSE
-/obj/item/radio/hear_talk(mob/M as mob, list/message_pieces, var/verb = "says")
+/obj/item/radio/hear_talk(mob/M as mob, list/message_pieces, verb = "says")
if(broadcasting)
if(get_dist(src, M) <= canhear_range)
talk_into(M, message_pieces, null, verb)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 5e82e651e23..761943f9bcf 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -100,9 +100,9 @@ REAGENT SCANNER
/obj/item/healthanalyzer/attack(mob/living/M, mob/living/user)
if((HAS_TRAIT(user, TRAIT_CLUMSY) || user.getBrainLoss() >= 60) && prob(50))
user.visible_message("[user] analyzes the floor's vitals!", "You stupidly try to analyze the floor's vitals!")
- to_chat(user, "Analyzing results for The floor:\n\tOverall status: Healthy")
- to_chat(user, "Key: Suffocation/Toxin/Burn/Brute")
- to_chat(user, "\tDamage specifics: 0-0-0-0")
+ to_chat(user, "Analyzing results for The floor:\n\tOverall status: Healthy")
+ to_chat(user, "Key: Suffocation/Toxin/Burn/Brute")
+ to_chat(user, "\tDamage specifics: 0 - 0 - 0 - 0")
to_chat(user, "Body temperature: ???")
return
@@ -130,19 +130,30 @@ REAGENT SCANNER
var/TX = H.getToxLoss() > 50 ? "[H.getToxLoss()]" : H.getToxLoss()
var/BU = H.getFireLoss() > 50 ? "[H.getFireLoss()]" : H.getFireLoss()
var/BR = H.getBruteLoss() > 50 ? "[H.getBruteLoss()]" : H.getBruteLoss()
- if(HAS_TRAIT(H, TRAIT_FAKEDEATH))
- OX = fake_oxy > 50 ? "[fake_oxy]" : fake_oxy
- to_chat(user, "Analyzing Results for [H]:\n\t Overall Status: dead")
- else
- to_chat(user, "Analyzing Results for [H]:\n\t Overall Status: [H.stat > 1 ? "dead" : "[H.health]% healthy"]")
+
+ var/status = "Dead" // Dead by default to make it simpler
+ var/mob/dead/observer/ghost = H.get_ghost(TRUE)
+ var/DNR = (ghost && !ghost.can_reenter_corpse)
+ if(H.stat == DEAD)
+ if(DNR)
+ status = "Dead \[DNR]"
+ else // Alive or unconscious
+ if(HAS_TRAIT(H, TRAIT_FAKEDEATH)) // status still shows as "Dead"
+ OX = fake_oxy > 50 ? "[fake_oxy]" : fake_oxy
+ else
+ status = "[H.health]% Healthy"
+
+ to_chat(user, "Analyzing Results for [H]:\n\t Overall Status: [status]")
to_chat(user, "\t Key: Suffocation/Toxin/Burns/Brute")
to_chat(user, "\t Damage Specifics: [OX] - [TX] - [BU] - [BR]")
to_chat(user, "Body Temperature: [H.bodytemperature-T0C]°C ([H.bodytemperature*1.8-459.67]°F)")
if(H.timeofdeath && (H.stat == DEAD || (HAS_TRAIT(H, TRAIT_FAKEDEATH))))
to_chat(user, "Time of Death: [station_time_timestamp("hh:mm:ss", H.timeofdeath)]")
var/tdelta = round(world.time - H.timeofdeath)
- if(tdelta < DEFIB_TIME_LIMIT)
+ if(tdelta < DEFIB_TIME_LIMIT && !DNR)
to_chat(user, "Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!")
+ else
+ to_chat(user, "Subject died [DisplayTimeText(tdelta)] ago.")
if(mode == 1)
var/list/damaged = H.get_damaged_organs(1,1)
@@ -239,9 +250,9 @@ REAGENT SCANNER
to_chat(user, "Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.")
var/implant_detect
- for(var/obj/item/organ/internal/cyberimp/CI in H.internal_organs)
- if(CI.is_robotic())
- implant_detect += "[H.name] is modified with a [CI.name]. "
+ for(var/obj/item/organ/internal/O in H.internal_organs)
+ if(O.is_robotic())
+ implant_detect += "[H.name] is modified with a [O.name]. "
if(implant_detect)
to_chat(user, "Detected cybernetic modifications:")
to_chat(user, "[implant_detect]")
diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm
index 5253a98c6a5..f4cecade824 100644
--- a/code/game/objects/items/devices/uplinks.dm
+++ b/code/game/objects/items/devices/uplinks.dm
@@ -79,7 +79,7 @@ GLOBAL_LIST_EMPTY(world_uplinks)
return pick(random_items)
-/obj/item/uplink/proc/buy(var/datum/uplink_item/UI, var/reference)
+/obj/item/uplink/proc/buy(datum/uplink_item/UI, reference)
if(is_jammed)
to_chat(usr, "[src] seems to be jammed - it cannot be used here!")
return
@@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(world_uplinks)
// Checks to see if the value meets the target. Like a frequency being a traitor_frequency, in order to unlock a headset.
// If true, it accesses trigger() and returns 1. If it fails, it returns false. Use this to see if you need to close the
// current item's menu.
-/obj/item/uplink/hidden/proc/check_trigger(mob/user, var/value, var/target)
+/obj/item/uplink/hidden/proc/check_trigger(mob/user, value, target)
if(is_jammed)
to_chat(user, "[src] seems to be jammed - it cannot be used here!")
return
diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm
index 754c0676b71..0850dd29a76 100644
--- a/code/game/objects/items/devices/whistle.dm
+++ b/code/game/objects/items/devices/whistle.dm
@@ -1,3 +1,6 @@
+
+#define USE_COOLDOWN 2 SECONDS
+
/obj/item/hailer
name = "hailer"
desc = "Used by obese officers to save their breath for running."
@@ -6,11 +9,11 @@
item_state = "flashtool" //looks exactly like a flash (and nothing like a flashbang)
w_class = WEIGHT_CLASS_TINY
flags = CONDUCT
-
+ var/next_use_time
var/spamcheck = 0
/obj/item/hailer/attack_self(mob/living/carbon/user as mob)
- if(spamcheck)
+ if(world.time < next_use_time)
return
if(emagged)
@@ -20,11 +23,11 @@
playsound(get_turf(src), 'sound/voice/halt.ogg', 100, 1, vary = 0)
user.visible_message("[user]'s [name] rasps, \"Halt! Security!\"")
- spamcheck = 1
- spawn(20)
- spamcheck = 0
+ next_use_time = world.time + USE_COOLDOWN
/obj/item/hailer/emag_act(user as mob)
if(!emagged)
to_chat(user, "You overload \the [src]'s voice synthesizer.")
emagged = 1
+
+#undef USE_COOLDOWN
diff --git a/code/game/objects/items/hand_item.dm b/code/game/objects/items/hand_item.dm
new file mode 100644
index 00000000000..7f378aa6cdc
--- /dev/null
+++ b/code/game/objects/items/hand_item.dm
@@ -0,0 +1,116 @@
+/obj/item/slapper
+ name = "slapper"
+ desc = "This is how real men fight."
+ icon_state = "latexballon"
+ item_state = "nothing"
+ force = 0
+ throwforce = 0
+ flags = DROPDEL | ABSTRACT
+ attack_verb = list("slaps")
+ hitsound = 'sound/weapons/slap.ogg'
+ /// How many smaller table smacks we can do before we're out
+ var/table_smacks_left = 3
+
+/obj/item/slapper/attack(mob/M, mob/living/carbon/human/user)
+ user.do_attack_animation(M)
+ playsound(M, hitsound, 50, TRUE, -1)
+ user.visible_message("[user] slaps [M]!", "You slap [M]!", "You hear a slap.")
+
+/obj/item/slapper/attack_obj(obj/O, mob/living/user, params)
+ if(!istype(O, /obj/structure/table))
+ return ..()
+
+ var/obj/structure/table/the_table = O
+
+ if(user.a_intent == INTENT_HARM && table_smacks_left == initial(table_smacks_left)) // so you can't do 2 weak slaps followed by a big slam
+ transform = transform.Scale(1.5) // BIG slap
+ if(HAS_TRAIT(user, TRAIT_HULK))
+ transform = transform.Scale(2)
+ color = COLOR_GREEN
+ user.do_attack_animation(the_table)
+ if(ishuman(user))
+ var/mob/living/carbon/human/human_user = user
+ if(istype(human_user.shoes, /obj/item/clothing/shoes/cowboy))
+ human_user.say(pick("Hot damn!", "Hoo-wee!", "Got-dang!"))
+ playsound(get_turf(the_table), 'sound/effects/tableslam.ogg', 110, TRUE)
+ user.visible_message("[user] slams [user.p_their()] fist down on [the_table]!", "You slam your fist down on [the_table]!")
+ qdel(src)
+ else
+ user.do_attack_animation(the_table)
+ playsound(get_turf(the_table), 'sound/effects/tableslam.ogg', 40, TRUE)
+ user.visible_message("[user] slaps [user.p_their()] hand on [the_table].", "You slap your hand on [the_table].")
+ table_smacks_left--
+ if(table_smacks_left <= 0)
+ qdel(src)
+
+/obj/item/kisser
+ name = "kiss"
+ desc = "I want you all to know, everyone and anyone, to seal it with a kiss."
+ icon = 'icons/mob/animal.dmi'
+ icon_state = "heart"
+ item_state = "nothing"
+ force = 0
+ throwforce = 0
+ flags = DROPDEL | ABSTRACT
+ /// The kind of projectile this version of the kiss blower fires
+ var/kiss_type = /obj/item/projectile/kiss
+
+/obj/item/kisser/afterattack(atom/target, mob/user, flag, params)
+ var/turf/user_turf = get_turf(user)
+ var/obj/item/projectile/blown_kiss = new kiss_type(user_turf)
+ user.visible_message("[user] blows \a [blown_kiss] at [target]!", "You blow \a [blown_kiss] at [target]!")
+
+ //Shooting Code:
+ blown_kiss.spread = 0
+ blown_kiss.original = target
+ blown_kiss.firer = user // don't hit ourself that would be really annoying
+ blown_kiss.preparePixelProjectile(target, user_turf, user, params)
+ blown_kiss.fire()
+ qdel(src)
+
+/obj/item/kisser/death
+ name = "kiss of death"
+ desc = "If looks could kill, they'd be this."
+ color = COLOR_BLACK
+ kiss_type = /obj/item/projectile/kiss/death
+
+/obj/item/projectile/kiss
+ name = "kiss"
+ icon = 'icons/mob/animal.dmi'
+ icon_state = "heart"
+ hitsound = 'sound/effects/kiss.ogg'
+ hitsound_wall = 'sound/effects/kiss.ogg'
+ pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
+ speed = 1.6
+ damage_type = BRUTE
+ damage = 0
+ nodamage = TRUE // love can't actually hurt you
+ armour_penetration = 100 // but if it could, it would cut through even the thickest plate
+ flag = "magic" // and most importantly, love is magic~
+
+/obj/item/projectile/kiss/fire(angle)
+ if(firer)
+ name = "[name] blown by [firer]"
+ return ..()
+
+/obj/item/projectile/kiss/on_hit(atom/target, blocked, hit_zone)
+ def_zone = BODY_ZONE_HEAD // let's keep it PG, people
+ . = ..()
+
+/obj/item/projectile/kiss/death
+ name = "kiss of death"
+ nodamage = FALSE // okay i kinda lied about love not being able to hurt you
+ damage = 35
+ sharp = TRUE
+ color = COLOR_BLACK
+
+/obj/item/projectile/kiss/death/on_hit(atom/target, blocked, pierce_hit)
+ . = ..()
+ if(!iscarbon(target))
+ return
+ var/mob/living/carbon/heartbreakee = target
+ var/obj/item/organ/internal/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot("heart")
+ if(dont_go_breakin_my_heart)
+ dont_go_breakin_my_heart.receive_damage(999)
+ else // You're probably a snowflakey species or Xenomorph
+ heartbreakee.adjustFireLoss(1000) // the sickest of burns
diff --git a/code/game/objects/items/mountable_frames/mountables.dm b/code/game/objects/items/mountable_frames/mountables.dm
index cfb4d18473c..6abe277b4d9 100644
--- a/code/game/objects/items/mountable_frames/mountables.dm
+++ b/code/game/objects/items/mountable_frames/mountables.dm
@@ -2,7 +2,7 @@
var/list/buildon_types = list(/turf/simulated/wall)
-/obj/item/mounted/afterattack(var/atom/A, mob/user, proximity_flag)
+/obj/item/mounted/afterattack(atom/A, mob/user, proximity_flag)
var/found_type = 0
for(var/turf_type in src.buildon_types)
if(istype(A, turf_type))
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 56a6d452e2a..81733bd91e7 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -44,7 +44,7 @@
/obj/item/borg/upgrade/rename/attack_self(mob/user)
heldname = stripped_input(user, "Enter new robot name", "Cyborg Reclassification", heldname, MAX_NAME_LEN)
-/obj/item/borg/upgrade/rename/action(var/mob/living/silicon/robot/R)
+/obj/item/borg/upgrade/rename/action(mob/living/silicon/robot/R)
if(..())
return
if(!R.allow_rename)
@@ -88,7 +88,7 @@
require_module = TRUE
origin_tech = "engineering=4;materials=5;programming=4"
-/obj/item/borg/upgrade/vtec/action(var/mob/living/silicon/robot/R)
+/obj/item/borg/upgrade/vtec/action(mob/living/silicon/robot/R)
if(..())
return
if(R.speed < 0)
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 8b302cd338a..1be2e6b289d 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -14,7 +14,7 @@ GLOBAL_LIST_INIT(human_recipes, list( \
new/datum/stack_recipe("bloated human costume head", /obj/item/clothing/head/human_head, 5, on_floor = TRUE), \
))
-/obj/item/stack/sheet/animalhide/human/New(var/loc, var/amount=null)
+/obj/item/stack/sheet/animalhide/human/New(loc, amount=null)
recipes = GLOB.human_recipes
return ..()
@@ -144,7 +144,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/sinew, 1, on_floor = 1), \
))
-/obj/item/stack/sheet/sinew/New(var/loc, var/amount=null)
+/obj/item/stack/sheet/sinew/New(loc, amount=null)
recipes = GLOB.sinew_recipes
return ..()
diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm
index 17cf8bc5001..4eadda37c32 100644
--- a/code/game/objects/items/stacks/sheets/light.dm
+++ b/code/game/objects/items/stacks/sheets/light.dm
@@ -13,7 +13,7 @@
flags = CONDUCT
max_amount = 60
-/obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/item/stack/light_w/attackby(obj/item/O as obj, mob/user as mob, params)
..()
if(istype(O,/obj/item/wirecutters))
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index a707ff0b39f..a004cfd0de8 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -123,7 +123,7 @@ GLOBAL_LIST_INIT(metal_recipes, list(
new /obj/item/stack/sheet/runed_metal(loc, amount)
qdel(src)
-/obj/item/stack/sheet/metal/New(var/loc, var/amount=null)
+/obj/item/stack/sheet/metal/New(loc, amount=null)
recipes = GLOB.metal_recipes
return ..()
@@ -158,7 +158,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list(
merge_type = /obj/item/stack/sheet/plasteel
point_value = 23
-/obj/item/stack/sheet/plasteel/New(var/loc, var/amount=null)
+/obj/item/stack/sheet/plasteel/New(loc, amount=null)
recipes = GLOB.plasteel_recipes
return ..()
@@ -202,7 +202,7 @@ GLOBAL_LIST_INIT(wood_recipes, list(
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
merge_type = /obj/item/stack/sheet/wood
-/obj/item/stack/sheet/wood/New(var/loc, var/amount=null)
+/obj/item/stack/sheet/wood/New(loc, amount=null)
recipes = GLOB.wood_recipes
return ..()
@@ -341,7 +341,7 @@ GLOBAL_LIST_INIT(cardboard_recipes, list (
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/sheet/cardboard
-/obj/item/stack/sheet/cardboard/New(var/loc, var/amt = null)
+/obj/item/stack/sheet/cardboard/New(loc, amt = null)
recipes = GLOB.cardboard_recipes
return ..()
@@ -402,7 +402,7 @@ GLOBAL_LIST_INIT(cult_recipes, list ( \
/obj/item/stack/sheet/runed_metal/fifty
amount = 50
-/obj/item/stack/sheet/runed_metal/New(var/loc, var/amount=null)
+/obj/item/stack/sheet/runed_metal/New(loc, amount=null)
recipes = GLOB.cult_recipes
return ..()
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 007be9d3535..4eb77144528 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -106,8 +106,8 @@
name = "light tiles"
gender = PLURAL
singular_name = "light floor tile"
- desc = "A floor tile, made out off glass. Use a multitool on it to change its color."
- icon_state = "tile_light blue"
+ desc = "A floor tile made of glass, with an integrated light. Use a multitool on it to change its color."
+ icon_state = "tile_white"
force = 3
throwforce = 5
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
diff --git a/code/game/objects/items/tools/multitool.dm b/code/game/objects/items/tools/multitool.dm
index bad1a325b26..7acee5352a3 100644
--- a/code/game/objects/items/tools/multitool.dm
+++ b/code/game/objects/items/tools/multitool.dm
@@ -12,7 +12,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "multitool"
flags = CONDUCT
- force = 5.0
+ force = 0
w_class = WEIGHT_CLASS_SMALL
throwforce = 0
throw_range = 7
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index dd117b85c73..374b8ad66ca 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -32,7 +32,7 @@
user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!")
return BRUTELOSS
-/obj/item/screwdriver/New(loc, var/param_color = null)
+/obj/item/screwdriver/New(loc, param_color = null)
..()
if(random_color)
if(!param_color)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index c013c489bc5..a2d2aeac16d 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -271,7 +271,7 @@
w_class = WEIGHT_CLASS_TINY
var/ash_type = /obj/effect/decal/cleanable/ash
-/obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1)
+/obj/item/toy/snappop/proc/pop_burst(n=3, c=1)
do_sparks(n, c, src)
new ash_type(loc)
visible_message("[src] explodes!",
@@ -1226,6 +1226,7 @@
icon = 'icons/obj/library.dmi'
icon_state = "demonomicon"
w_class = WEIGHT_CLASS_SMALL
+ var/list/messages = list("You must challenge the devil to a dance-off!", "The devils true name is Ian", "The devil hates salt!", "Would you like infinite power?", "Would you like infinite wisdom?", " Would you like infinite healing?")
var/cooldown = FALSE
/obj/item/toy/codex_gigas/attack_self(mob/user)
@@ -1234,21 +1235,12 @@
"[user] presses the button on \the [src].",
"You press the button on \the [src].",
"You hear a soft click.")
- var/list/messages = list()
- var/datum/devilinfo/devil = randomDevilInfo()
- messages += "Some fun facts about: [devil.truename]"
- messages += "[GLOB.lawlorify[LORE][devil.bane]]"
- messages += "[GLOB.lawlorify[LORE][devil.obligation]]"
- messages += "[GLOB.lawlorify[LORE][devil.ban]]"
- messages += "[GLOB.lawlorify[LORE][devil.banish]]"
- playsound(loc, 'sound/machines/click.ogg', 20, 1)
+ playsound(loc, 'sound/machines/click.ogg', 20, TRUE)
cooldown = TRUE
- for(var/message in messages)
+ addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 60)
+ for(var/message in pick(messages))
user.loc.visible_message("[bicon(src)] [message]")
sleep(10)
- spawn(20)
- cooldown = FALSE
- return
/obj/item/toy/owl
name = "owl action figure"
@@ -1372,7 +1364,7 @@
var/cooldown = 0
var/obj/stored_minature = null
-/obj/item/toy/minigibber/attack_self(var/mob/user)
+/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!")
@@ -1385,7 +1377,7 @@
playsound(user, 'sound/goonstation/effects/gib.ogg', 20, 1)
cooldown = world.time
-/obj/item/toy/minigibber/attackby(var/obj/O, var/mob/user, params)
+/obj/item/toy/minigibber/attackby(obj/O, mob/user, params)
if(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))
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 80dd45d1b02..c2ff3879968 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -52,12 +52,12 @@
icon_state = "waffles"
/obj/item/trash/plate
- name = "Plate"
+ name = "plate"
icon_state = "plate"
resistance_flags = NONE
/obj/item/trash/snack_bowl
- name = "Snack bowl"
+ name = "snack bowl"
icon_state = "snack_bowl"
/obj/item/trash/fried_vox
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 62716bc51c4..7c1a8c5b4f1 100755
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -22,7 +22,7 @@ AI MODULES
materials = list(MAT_GOLD=50)
var/datum/ai_laws/laws = null
-/obj/item/aiModule/proc/install(var/obj/machinery/computer/C)
+/obj/item/aiModule/proc/install(obj/machinery/computer/C)
if(istype(C, /obj/machinery/computer/aiupload))
var/obj/machinery/computer/aiupload/comp = C
if(comp.stat & NOPOWER)
@@ -72,7 +72,7 @@ AI MODULES
to_chat(usr, "Upload complete. The robot's laws have been modified.")
-/obj/item/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/proc/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
log_law_changes(target, sender)
if(laws)
@@ -82,12 +82,12 @@ AI MODULES
to_chat(target, "[sender] has uploaded a change to the laws you must follow, using \an [src]. From now on: ")
target.show_laws()
-/obj/item/aiModule/proc/log_law_changes(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/proc/log_law_changes(mob/living/silicon/ai/target, mob/sender)
var/time = time2text(world.realtime,"hh:mm:ss")
GLOB.lawchanges.Add("[time] : [sender.name]([sender.key]) used [src.name] on [target.name]([target.key])")
log_and_message_admins("used [src.name] on [target.name]([target.key])")
-/obj/item/aiModule/proc/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/proc/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
/******************** Safeguard ********************/
@@ -97,19 +97,19 @@ AI MODULES
desc = "A 'safeguard' AI module: 'Safeguard . Individuals that threaten are not crew and must be eliminated.'"
origin_tech = "programming=3;materials=3"
-/obj/item/aiModule/safeguard/attack_self(var/mob/user as mob)
+/obj/item/aiModule/safeguard/attack_self(mob/user as mob)
..()
var/targName = stripped_input(usr, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name)
targetName = targName
desc = text("A 'safeguard' AI module: 'Safeguard []. Individuals that threaten [] are not crew and must be eliminated.'", targetName, targetName)
-/obj/item/aiModule/safeguard/install(var/obj/machinery/computer/C)
+/obj/item/aiModule/safeguard/install(obj/machinery/computer/C)
if(!targetName)
to_chat(usr, "No name detected on module, please enter one.")
return 0
..()
-/obj/item/aiModule/safeguard/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/safeguard/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
..()
var/law = text("Safeguard []. Individuals that threaten [] are not crew and must be eliminated.'", targetName, targetName)
to_chat(target, law)
@@ -123,19 +123,19 @@ AI MODULES
desc = "A 'one human' AI module: 'Only is crew.'"
origin_tech = "programming=4;materials=4"
-/obj/item/aiModule/oneCrewMember/attack_self(var/mob/user as mob)
+/obj/item/aiModule/oneCrewMember/attack_self(mob/user as mob)
..()
var/targName = stripped_input(usr, "Please enter the name of the person who is the only crew.", "Who?", user.real_name)
targetName = targName
desc = text("A 'one human' AI module: 'Only [] is crew.'", targetName)
-/obj/item/aiModule/oneCrewMember/install(var/obj/machinery/computer/C)
+/obj/item/aiModule/oneCrewMember/install(obj/machinery/computer/C)
if(!targetName)
to_chat(usr, "No name detected on module, please enter one.")
return 0
..()
-/obj/item/aiModule/oneCrewMember/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/oneCrewMember/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
..()
var/law = "Only [targetName] is crew."
if(!is_special_character(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite
@@ -153,10 +153,10 @@ AI MODULES
desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized.'"
origin_tech = "programming=4;materials=4" //made of gold
-/obj/item/aiModule/protectStation/attack_self(var/mob/user as mob)
+/obj/item/aiModule/protectStation/attack_self(mob/user as mob)
..()
-/obj/item/aiModule/protectStation/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/protectStation/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
..()
var/law = "Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized."
to_chat(target, law)
@@ -168,10 +168,10 @@ AI MODULES
desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member.'"
origin_tech = "programming=4;biotech=2;materials=4"
-/obj/item/aiModule/oxygen/attack_self(var/mob/user as mob)
+/obj/item/aiModule/oxygen/attack_self(mob/user as mob)
..()
-/obj/item/aiModule/oxygen/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/oxygen/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
..()
var/law = "Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member."
to_chat(target, law)
@@ -185,7 +185,7 @@ AI MODULES
desc = "A 'freeform' AI module: ''"
origin_tech = "programming=4;materials=4"
-/obj/item/aiModule/freeform/attack_self(var/mob/user as mob)
+/obj/item/aiModule/freeform/attack_self(mob/user as mob)
..()
var/new_lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num
if(new_lawpos < MIN_SUPPLIED_LAW_NUMBER) return
@@ -195,7 +195,7 @@ AI MODULES
newFreeFormLaw = targName
desc = "A 'freeform' AI module: ([lawpos]) '[newFreeFormLaw]'"
-/obj/item/aiModule/freeform/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/freeform/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
..()
var/law = "[newFreeFormLaw]"
to_chat(target, law)
@@ -204,7 +204,7 @@ AI MODULES
target.add_supplied_law(lawpos, law)
GLOB.lawchanges.Add("The law was '[newFreeFormLaw]'")
-/obj/item/aiModule/freeform/install(var/obj/machinery/computer/C)
+/obj/item/aiModule/freeform/install(obj/machinery/computer/C)
if(!newFreeFormLaw)
to_chat(usr, "No law detected on module, please create one.")
return 0
@@ -217,7 +217,7 @@ AI MODULES
desc = "A 'reset' AI module: 'Clears all laws except for the core laws.'"
origin_tech = "programming=3;materials=2"
-/obj/item/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/reset/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
log_law_changes(target, sender)
if(!is_special_character(target))
@@ -234,7 +234,7 @@ AI MODULES
desc = "A 'purge' AI Module: 'Purges all laws.'"
origin_tech = "programming=5;materials=4"
-/obj/item/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/purge/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
..()
if(!is_special_character(target))
target.clear_zeroth_law()
@@ -320,20 +320,20 @@ AI MODULES
desc = "A 'freeform' Core AI module: ''"
origin_tech = "programming=5;materials=4"
-/obj/item/aiModule/freeformcore/attack_self(var/mob/user as mob)
+/obj/item/aiModule/freeformcore/attack_self(mob/user as mob)
..()
var/newlaw = ""
var/targName = stripped_input(usr, "Please enter a new core law for the AI.", "Freeform Law Entry", newlaw)
newFreeFormLaw = targName
desc = "A 'freeform' Core AI module: '[newFreeFormLaw]'"
-/obj/item/aiModule/freeformcore/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/freeformcore/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender)
..()
var/law = "[newFreeFormLaw]"
target.add_inherent_law(law)
GLOB.lawchanges.Add("The law is '[newFreeFormLaw]'")
-/obj/item/aiModule/freeformcore/install(var/obj/machinery/computer/C)
+/obj/item/aiModule/freeformcore/install(obj/machinery/computer/C)
if(!newFreeFormLaw)
to_chat(usr, "No law detected on module, please create one.")
return 0
@@ -346,14 +346,14 @@ AI MODULES
desc = "A hacked AI law module: ''"
origin_tech = "programming=5;materials=5;syndicate=5"
-/obj/item/aiModule/syndicate/attack_self(var/mob/user as mob)
+/obj/item/aiModule/syndicate/attack_self(mob/user as mob)
..()
var/newlaw = ""
var/targName = stripped_input(usr, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw,MAX_MESSAGE_LEN)
newFreeFormLaw = targName
desc = "A hacked AI law module: '[newFreeFormLaw]'"
-/obj/item/aiModule/syndicate/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/syndicate/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
// ..() //We don't want this module reporting to the AI who dun it. --NEO
log_law_changes(target, sender)
@@ -363,7 +363,7 @@ AI MODULES
target.add_ion_law(law)
target.show_laws()
-/obj/item/aiModule/syndicate/install(var/obj/machinery/computer/C)
+/obj/item/aiModule/syndicate/install(obj/machinery/computer/C)
if(!newFreeFormLaw)
to_chat(usr, "No law detected on module, please create one.")
return 0
@@ -378,7 +378,7 @@ AI MODULES
origin_tech = "programming=6;materials=5;syndicate=6"
laws = list("")
-/obj/item/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
+/obj/item/aiModule/toyAI/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
//..()
to_chat(target, "KRZZZT")
target.add_ion_law(laws[1])
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 2b30ae5851f..f181233e9ba 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -157,7 +157,7 @@
/obj/item/card/id/proc/UpdateName()
name = "[src.registered_name]'s ID Card ([src.assignment])"
-/obj/item/card/id/proc/SetOwnerInfo(var/mob/living/carbon/human/H)
+/obj/item/card/id/proc/SetOwnerInfo(mob/living/carbon/human/H)
if(!H || !H.dna)
return
@@ -332,11 +332,12 @@
var/list/initial_access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_EXTERNAL_AIRLOCKS)
origin_tech = "syndicate=1"
var/registered_user = null
- untrackable = 1
- var/anyone = FALSE //Can anyone forge the ID or just syndicate?
+ untrackable = TRUE
-/obj/item/card/id/syndicate/anyone
- anyone = TRUE
+/obj/item/card/id/syndicate/researcher
+ initial_access = list(ACCESS_SYNDICATE)
+ assignment = "Syndicate Researcher"
+ icon_state = "syndie"
/obj/item/card/id/syndicate/New()
access = initial_access.Copy()
@@ -350,19 +351,19 @@
initial_access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER, ACCESS_SYNDICATE_COMMAND, ACCESS_EXTERNAL_AIRLOCKS)
icon_state = "commander"
-/obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity)
+/obj/item/card/id/syndicate/afterattack(obj/item/O as obj, mob/user as mob, proximity)
if(!proximity)
return
if(istype(O, /obj/item/card/id))
var/obj/item/card/id/I = O
if(istype(user, /mob/living) && user.mind)
- if(user.mind.special_role || anyone)
+ if(user.mind.special_role)
to_chat(usr, "The card's microscanners activate as you pass it over \the [I], copying its access.")
src.access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming
/obj/item/card/id/syndicate/attack_self(mob/user as mob)
if(!src.registered_name)
- var/t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name))
+ var/t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name), TRUE)
if(!t)
to_chat(user, "Invalid name.")
return
@@ -601,7 +602,7 @@
registered_name = "Syndicate"
icon_state = "syndie"
assignment = "Syndicate Overlord"
- untrackable = 1
+ untrackable = TRUE
access = list(ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER, ACCESS_SYNDICATE_COMMAND, ACCESS_EXTERNAL_AIRLOCKS)
/obj/item/card/id/captains_spare
@@ -623,7 +624,7 @@
item_state = "gold_id"
registered_name = "Admin"
assignment = "Testing Shit"
- untrackable = 1
+ untrackable = TRUE
/obj/item/card/id/admin/New()
access = get_absolutely_all_accesses()
diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm
index ef158e3758c..82ea2364954 100644
--- a/code/game/objects/items/weapons/chrono_eraser.dm
+++ b/code/game/objects/items/weapons/chrono_eraser.dm
@@ -13,7 +13,7 @@
var/obj/item/gun/energy/chrono_gun/PA = null
var/list/erased_minds = list() //a collection of minds from the dead
-/obj/item/chrono_eraser/proc/pass_mind(var/datum/mind/M)
+/obj/item/chrono_eraser/proc/pass_mind(datum/mind/M)
erased_minds += M
/obj/item/chrono_eraser/dropped()
@@ -113,7 +113,7 @@
field_disconnect(F)
return 0
-/obj/item/gun/energy/chrono_gun/proc/pass_mind(var/datum/mind/M)
+/obj/item/gun/energy/chrono_gun/proc/pass_mind(datum/mind/M)
if(TED)
TED.pass_mind(M)
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index e0de229e494..d7993768fec 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -187,7 +187,7 @@
QDEL_NULL(cell)
return ..()
-/obj/item/defibrillator/proc/deductcharge(var/chrgdeductamt)
+/obj/item/defibrillator/proc/deductcharge(chrgdeductamt)
if(cell)
if(cell.charge < (paddles.revivecost+chrgdeductamt))
powered = FALSE
@@ -199,7 +199,7 @@
update_icon()
return FALSE
-/obj/item/defibrillator/proc/cooldowncheck(var/mob/user)
+/obj/item/defibrillator/proc/cooldowncheck(mob/user)
spawn(50)
if(cell)
if(cell.charge >= paddles.revivecost)
@@ -310,7 +310,7 @@
if(!t.Adjacent(user))
defib.remove_paddles(user)
-/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, var/mob/living/carbon/human/M, var/obj/O)
+/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, mob/living/carbon/human/M, obj/O)
if(!mainunit || !istype(mainunit, /obj/item/defibrillator)) //To avoid weird issues from admin spawns
M.unEquip(O)
qdel(O)
@@ -363,7 +363,7 @@
if(do_after(user, 30 * toolspeed, target = M)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process
user.visible_message("[user] places [src] on [M.name]'s chest.", "You place [src] on [M.name]'s chest.")
playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0)
- var/mob/dead/observer/ghost = H.get_ghost()
+ var/mob/dead/observer/ghost = H.get_ghost(TRUE)
if(ghost && !ghost.client)
// In case the ghost's not getting deleted for some reason
H.key = ghost.key
@@ -420,7 +420,7 @@
for(var/obj/item/organ/external/O in H.bodyparts)
total_brute += O.brute_dam
total_burn += O.burn_dam
- if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !HAS_TRAIT(H, TRAIT_HUSK) && !HAS_TRAIT(H, TRAIT_BADDNA) && (H.mind && H.mind.is_revivable()) && (H.get_int_organ(/obj/item/organ/internal/heart) || H.get_int_organ(/obj/item/organ/internal/brain/slime)))
+ if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !HAS_TRAIT(H, TRAIT_HUSK) && !HAS_TRAIT(H, TRAIT_BADDNA) && (H.get_int_organ(/obj/item/organ/internal/heart) || H.get_int_organ(/obj/item/organ/internal/brain/slime)))
tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you
tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived
H.adjustOxyLoss(tobehealed)
@@ -446,10 +446,13 @@
else if(total_burn >= 180 || total_brute >= 180)
user.visible_message("[defib] buzzes: Resuscitation failed - Severe tissue damage detected.")
else if(ghost)
- user.visible_message("[defib] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.")
- to_chat(ghost, "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)")
- window_flash(ghost.client)
- ghost << sound('sound/effects/genetics.ogg')
+ if(!ghost.can_reenter_corpse) // DNR or AntagHUD
+ user.visible_message("[defib] buzzes: Resucitation failed: No electrical brain activity detected.")
+ else
+ user.visible_message("[defib] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.")
+ to_chat(ghost, "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)")
+ window_flash(ghost.client)
+ ghost << sound('sound/effects/genetics.ogg')
else
user.visible_message("[defib] buzzes: Resuscitation failed.")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
@@ -539,7 +542,7 @@
for(var/obj/item/organ/external/O in H.bodyparts)
total_brute += O.brute_dam
total_burn += O.burn_dam
- if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !HAS_TRAIT(H, TRAIT_HUSK) && (H.mind && H.mind.is_revivable()))
+ if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !HAS_TRAIT(H, TRAIT_HUSK))
tobehealed = min(health + threshold, 0) // It's HILARIOUS without this min statement, let me tell you
tobehealed -= 5 //They get 5 of each type of damage healed so excessive combined damage will not immediately kill them after they get revived
H.adjustOxyLoss(tobehealed)
diff --git a/code/game/objects/items/weapons/dnascrambler.dm b/code/game/objects/items/weapons/dnascrambler.dm
index f0a1a208906..ecc859bf638 100644
--- a/code/game/objects/items/weapons/dnascrambler.dm
+++ b/code/game/objects/items/weapons/dnascrambler.dm
@@ -37,7 +37,7 @@
else
to_chat(user, "You failed to inject [M].")
-/obj/item/dnascrambler/proc/injected(var/mob/living/carbon/human/target, var/mob/living/carbon/user)
+/obj/item/dnascrambler/proc/injected(mob/living/carbon/human/target, mob/living/carbon/user)
if(istype(target))
var/mob/living/carbon/human/H = target
scramble(1, H, 100)
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 9584130c0c6..259ccad7ff6 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -109,8 +109,6 @@
message_say = "FOR THE REVOLOUTION!"
else if(role == "death commando" || role == ROLE_ERT)
message_say = "FOR NANOTRASEN!"
- else if(role == ROLE_DEVIL)
- message_say = "FOR INFERNO!"
user.say(message_say)
target = user
sleep(10)
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 1b1352c372f..ecc485737a4 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -57,7 +57,7 @@
to_chat(user, "The safety is [safety ? "on" : "off"].")
return
-/obj/item/extinguisher/attack_obj(obj/O, mob/living/user)
+/obj/item/extinguisher/attack_obj(obj/O, mob/living/user, params)
if(AttemptRefill(O, user))
refilling = TRUE
return FALSE
diff --git a/code/game/objects/items/weapons/grenades/bananade.dm b/code/game/objects/items/weapons/grenades/bananade.dm
index 96a3a8e1400..f9465b923d8 100644
--- a/code/game/objects/items/weapons/grenades/bananade.dm
+++ b/code/game/objects/items/weapons/grenades/bananade.dm
@@ -37,7 +37,7 @@
var/fillamt = 0
-/obj/item/grenade/bananade/casing/attackby(var/obj/item/I, mob/user as mob, params)
+/obj/item/grenade/bananade/casing/attackby(obj/item/I, mob/user as mob, params)
if(istype(I, /obj/item/grown/bananapeel))
if(fillamt < 9)
to_chat(usr, "You add another banana peel to the assembly.")
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index f756929e5ab..570cc603155 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -304,7 +304,7 @@
qdel(src)
-/obj/item/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey)
+/obj/item/grenade/chem_grenade/proc/CreateDefaultTrigger(typekey)
if(ispath(typekey,/obj/item/assembly))
nadeassembly = new(src)
if(nadeassembly.has_prox_sensors())
@@ -457,7 +457,7 @@
/obj/item/grenade/chem_grenade/firefighting
- payload_name = "fire fighting grenade"
+ payload_name = "fire fighting"
desc = "Can help to put out dangerous fires from a distance."
stage = READY
diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm
index 98253ed14ba..6b8f0fd33b2 100644
--- a/code/game/objects/items/weapons/grenades/clusterbuster.dm
+++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm
@@ -37,7 +37,7 @@
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
-/obj/item/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/grenade/flashbang/cluster)
+/obj/item/grenade/clusterbuster/segment/New(loc, payload_type = /obj/item/grenade/flashbang/cluster)
..()
icon_state = "clusterbang_segment_active"
payload = payload_type
@@ -58,7 +58,7 @@
//////////////////////////////////
//The payload spawner effect
/////////////////////////////////
-/obj/effect/payload_spawner/New(var/turf/newloc,var/type, var/numspawned as num)
+/obj/effect/payload_spawner/New(turf/newloc, type, numspawned as num)
. = ..()
for(var/loop = numspawned ,loop > 0, loop--)
var/obj/item/grenade/P = new type(loc)
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 43e6b9e4692..288c098a38b 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -21,7 +21,7 @@
if(!QDELETED(src))
qdel(src)
-/obj/item/grenade/proc/clown_check(var/mob/living/user)
+/obj/item/grenade/proc/clown_check(mob/living/user)
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
to_chat(user, "Huh? How does this thing work?")
active = 1
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index a9e4765560a..d8abb853e9f 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -145,7 +145,7 @@
desc = "Use this to keep prisoners in line. Or you know, your significant other."
icon_state = "pinkcuffs"
-/obj/item/restraints/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob, params)
+/obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user as mob, params)
..()
if(istype(I, /obj/item/stack/rods))
var/obj/item/stack/rods/R = I
@@ -192,5 +192,10 @@
desc = "A pair of broken zipties."
icon_state = "cuff_white_used"
+/obj/item/restraints/handcuffs/cable/zipties/used/decompile_act(obj/item/matter_decompiler/C, mob/user)
+ C.stored_comms["glass"] += 1
+ qdel(src)
+ return TRUE
+
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
return
diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm
index 59880fdcc8c..0b9aeee47dd 100644
--- a/code/game/objects/items/weapons/holy_weapons.dm
+++ b/code/game/objects/items/weapons/holy_weapons.dm
@@ -39,7 +39,7 @@
if(ishuman(M) && M.mind?.vampire)
if(!M.mind.vampire.get_ability(/datum/vampire_passive/full))
to_chat(M, "The nullrod's power interferes with your own!")
- M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
+ M.mind.vampire.adjust_nullification(5, 2)
/obj/item/nullrod/pickup(mob/living/user)
. = ..()
@@ -471,12 +471,12 @@
if(target.mind)
if(iscultist(target))
- SSticker.mode.remove_cultist(target.mind) // This proc will handle message generation.
+ SSticker.mode.remove_cultist(target.mind, TRUE, TRUE) // This proc will handle message generation.
praying = FALSE
return
if(target.mind.vampire && !target.mind.vampire.get_ability(/datum/vampire_passive/full)) // Getting a full prayer off on a vampire will interrupt their powers for a large duration.
- target.mind.vampire.nullified = max(120, target.mind.vampire.nullified + 120)
+ target.mind.vampire.adjust_nullification(120, 50)
to_chat(target, "[user]'s prayer to [SSticker.Bible_deity_name] has interfered with your power!")
praying = FALSE
return
@@ -500,7 +500,7 @@
if(holder.l_hand == src || holder.r_hand == src) // Holding this in your hand will
for(var/mob/living/carbon/human/H in range(5, loc))
if(H.mind && H.mind.vampire && !H.mind.vampire.get_ability(/datum/vampire_passive/full))
- H.mind.vampire.nullified = max(5, H.mind.vampire.nullified + 2)
+ H.mind.vampire.adjust_nullification(5, 2)
if(prob(10))
to_chat(H, "Being in the presence of [holder]'s [src] is interfering with your powers!")
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 9dc1fe864fc..b0c09f4f68c 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -28,7 +28,7 @@
//return 1 if the implant injects
//return -1 if the implant fails to inject
//return 0 if there is no room for implant
-/obj/item/implant/proc/implant(var/mob/source, var/mob/user)
+/obj/item/implant/proc/implant(mob/source, mob/user)
var/obj/item/implant/imp_e = locate(src.type) in source
if(!allow_multiple && imp_e && imp_e != src)
if(imp_e.uses < initial(imp_e.uses)*2)
@@ -58,7 +58,7 @@
return 1
-/obj/item/implant/proc/removed(var/mob/source)
+/obj/item/implant/proc/removed(mob/source)
src.loc = null
imp_in = null
implanted = 0
diff --git a/code/game/objects/items/weapons/implants/implant_abductor.dm b/code/game/objects/items/weapons/implants/implant_abductor.dm
index 8967f364078..be448130aae 100644
--- a/code/game/objects/items/weapons/implants/implant_abductor.dm
+++ b/code/game/objects/items/weapons/implants/implant_abductor.dm
@@ -38,7 +38,7 @@
home = console.pad
return 1
-/obj/item/implant/abductor/proc/get_team_console(var/team)
+/obj/item/implant/abductor/proc/get_team_console(team)
var/obj/machinery/abductor/console/console
for(var/obj/machinery/abductor/console/c in GLOB.abductor_equipment)
if(c.team == team)
diff --git a/code/game/objects/items/weapons/implants/implant_death_alarm.dm b/code/game/objects/items/weapons/implants/implant_death_alarm.dm
index e8330c0c5cd..c5368494a8d 100644
--- a/code/game/objects/items/weapons/implants/implant_death_alarm.dm
+++ b/code/game/objects/items/weapons/implants/implant_death_alarm.dm
@@ -31,7 +31,7 @@
else if(M.stat == DEAD)
activate("death")
-/obj/item/implant/death_alarm/activate(var/cause)
+/obj/item/implant/death_alarm/activate(cause)
var/mob/M = imp_in
var/area/t = get_area(M)
diff --git a/code/game/objects/items/weapons/implants/implant_explosive.dm b/code/game/objects/items/weapons/implants/implant_explosive.dm
index 52262ac8edb..a776cbce2aa 100644
--- a/code/game/objects/items/weapons/implants/implant_explosive.dm
+++ b/code/game/objects/items/weapons/implants/implant_explosive.dm
@@ -3,6 +3,7 @@
desc = "And boom goes the weasel."
icon_state = "explosive"
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
+ actions_types = list(/datum/action/item_action/hands_free/activate/always)
var/weak = 2
var/medium = 0.8
var/heavy = 0.4
@@ -135,6 +136,7 @@
desc = "An alarm which monitors host vital signs, transmitting a radio message and dusting the corpse on death."
icon = 'icons/effects/blood.dmi'
icon_state = "remains"
+ actions_types = list(/datum/action/item_action/hands_free/activate/always)
/obj/item/implant/dust/get_data()
var/dat = {"Implant Specifications:
diff --git a/code/game/objects/items/weapons/implants/implant_mindshield.dm b/code/game/objects/items/weapons/implants/implant_mindshield.dm
index f9cf7e4cff1..8fff9eaee77 100644
--- a/code/game/objects/items/weapons/implants/implant_mindshield.dm
+++ b/code/game/objects/items/weapons/implants/implant_mindshield.dm
@@ -33,7 +33,7 @@
return 1
return 0
-/obj/item/implant/mindshield/removed(mob/target, var/silent = 0)
+/obj/item/implant/mindshield/removed(mob/target, silent = 0)
if(..())
if(target.stat != DEAD && !silent)
to_chat(target, "You feel a sense of liberation as Nanotrasen's grip on your mind fades away.")
diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index 161d7dd33a7..2278f232f7d 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -838,7 +838,7 @@
/obj/item/book/manual/chef_recipes
name = "Chef Recipes"
- icon_state = "cooked_book"
+ icon_state = "cook_book"
author = "NanoTrasen"
title = "Chef Recipes"
dat = {"
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 56803b5be3d..b1903ea8eda 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -133,7 +133,7 @@
/obj/item/melee/energy/sword/cyborg
var/hitcost = 50
-/obj/item/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
+/obj/item/melee/energy/sword/cyborg/attack(mob/M, mob/living/silicon/robot/R)
if(R.cell)
var/obj/item/stock_parts/cell/C = R.cell
if(active && !(C.use(hitcost)))
diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm
index e26607b8fb7..4f3729f7076 100644
--- a/code/game/objects/items/weapons/pneumaticCannon.dm
+++ b/code/game/objects/items/weapons/pneumaticCannon.dm
@@ -88,7 +88,7 @@
Fire(user, target)
-/obj/item/pneumatic_cannon/proc/Fire(var/mob/living/carbon/human/user, var/atom/target)
+/obj/item/pneumatic_cannon/proc/Fire(mob/living/carbon/human/user, atom/target)
if(!istype(user) && !target)
return
var/discharge = 0
@@ -137,7 +137,7 @@
/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
name = "Pneumatic Cannon"
- result = /obj/item/pneumatic_cannon/ghetto
+ result = list(/obj/item/pneumatic_cannon/ghetto)
tools = list(TOOL_WELDER, TOOL_WRENCH)
reqs = list(/obj/item/stack/sheet/metal = 4,
/obj/item/stack/packageWrap = 8,
diff --git a/code/game/objects/items/weapons/rpd.dm b/code/game/objects/items/weapons/rpd.dm
index 1d91ef24848..bb499d96753 100644
--- a/code/game/objects/items/weapons/rpd.dm
+++ b/code/game/objects/items/weapons/rpd.dm
@@ -86,7 +86,7 @@
if(delay)
lastused = world.time
-/obj/item/rpd/proc/can_dispense_pipe(var/pipe_id, var/pipe_type) //Returns TRUE if this is a legit pipe we can dispense, otherwise returns FALSE
+/obj/item/rpd/proc/can_dispense_pipe(pipe_id, pipe_type) //Returns TRUE if this is a legit pipe we can dispense, otherwise returns FALSE
for(var/list/L in GLOB.rpd_pipe_list)
if(pipe_type != L["pipe_type"]) //Sometimes pipes in different categories have the same pipe_id, so we need to skip anything not in the category we want
continue
diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm
index e01038e4e53..9ea4b8b58d0 100644
--- a/code/game/objects/items/weapons/scrolls.dm
+++ b/code/game/objects/items/weapons/scrolls.dm
@@ -43,7 +43,7 @@
attack_self(H)
return
-/obj/item/teleportation_scroll/proc/teleportscroll(var/mob/user)
+/obj/item/teleportation_scroll/proc/teleportscroll(mob/user)
var/A
diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm
index 56f31188300..40e627a3375 100644
--- a/code/game/objects/items/weapons/signs.dm
+++ b/code/game/objects/items/weapons/signs.dm
@@ -38,7 +38,7 @@
/datum/crafting_recipe/picket_sign
name = "Picket Sign"
- result = /obj/item/picket_sign
+ result = list(/obj/item/picket_sign)
reqs = list(/obj/item/stack/rods = 1,
/obj/item/stack/sheet/cardboard = 2)
time = 80
diff --git a/code/game/objects/items/weapons/staff.dm b/code/game/objects/items/weapons/staff.dm
index fa2c6adcc7f..465e77e7cbc 100644
--- a/code/game/objects/items/weapons/staff.dm
+++ b/code/game/objects/items/weapons/staff.dm
@@ -43,7 +43,7 @@
if(wielded)
to_chat(user, "You hold \the [src] between your legs.")
-/obj/item/twohanded/staff/broom/attackby(var/obj/O, mob/user)
+/obj/item/twohanded/staff/broom/attackby(obj/O, mob/user)
if(istype(O, /obj/item/clothing/mask/horsehead))
new/obj/item/twohanded/staff/broom/horsebroom(get_turf(src))
user.unEquip(O)
@@ -52,6 +52,11 @@
return
..()
+/obj/item/twohanded/staff/broom/dropped(mob/user)
+ if((user.mind in SSticker.mode.wizards) && user.flying)
+ user.flying = FALSE
+ ..()
+
/obj/item/twohanded/staff/broom/horsebroom
name = "broomstick horse"
desc = "Saddle up!"
diff --git a/code/game/objects/items/weapons/stock_parts.dm b/code/game/objects/items/weapons/stock_parts.dm
index 3934121365b..ea01683133a 100644
--- a/code/game/objects/items/weapons/stock_parts.dm
+++ b/code/game/objects/items/weapons/stock_parts.dm
@@ -54,7 +54,7 @@
//Sorts stock parts inside an RPED by their rating.
//Only use /obj/item/stock_parts/ with this sort proc!
-/proc/cmp_rped_sort(var/obj/item/stock_parts/A, var/obj/item/stock_parts/B)
+/proc/cmp_rped_sort(obj/item/stock_parts/A, obj/item/stock_parts/B)
return B.rating - A.rating
/obj/item/stock_parts
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 301b43403f6..eb700165441 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -366,6 +366,22 @@
item_state = "assault"
storage_slots = 6
+/obj/item/storage/belt/military/assault/marines/full/populate_contents()
+ new /obj/item/ammo_box/magazine/m12g(src)
+ new /obj/item/ammo_box/magazine/m12g(src)
+ new /obj/item/ammo_box/magazine/m12g(src)
+ new /obj/item/ammo_box/magazine/m12g(src)
+ new /obj/item/ammo_box/magazine/m45(src)
+ new /obj/item/ammo_box/magazine/m45(src)
+ update_icon()
+
+/obj/item/storage/belt/military/assault/marines/elite/full/populate_contents()
+ new /obj/item/ammo_box/magazine/m556/arg(src)
+ new /obj/item/ammo_box/magazine/m556/arg(src)
+ new /obj/item/ammo_box/magazine/m556/arg(src)
+ new /obj/item/ammo_box/magazine/m45(src)
+ new /obj/item/ammo_box/magazine/m45(src)
+ update_icon()
/obj/item/storage/belt/janitor
name = "janibelt"
desc = "A belt used to hold most janitorial supplies."
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index 71852c60541..8cc8f5729f2 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -121,19 +121,21 @@
icon = 'icons/obj/crayons.dmi'
icon_state = "crayonbox"
w_class = WEIGHT_CLASS_SMALL
- storage_slots = 6
+ storage_slots = 8
icon_type = "crayon"
can_hold = list(
/obj/item/toy/crayon
)
/obj/item/storage/fancy/crayons/populate_contents()
+ new /obj/item/toy/crayon/white(src)
new /obj/item/toy/crayon/red(src)
new /obj/item/toy/crayon/orange(src)
new /obj/item/toy/crayon/yellow(src)
new /obj/item/toy/crayon/green(src)
new /obj/item/toy/crayon/blue(src)
new /obj/item/toy/crayon/purple(src)
+ new /obj/item/toy/crayon/black(src)
update_icon()
/obj/item/storage/fancy/crayons/update_icon()
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index f8104a2d9ea..0df5817f598 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -76,6 +76,10 @@
if(!cell)
return
cell.use(amount)
+ if(cell.rigged)
+ cell = null
+ turned_on = FALSE
+ update_icon()
if(cell.charge < (hitcost)) // If after the deduction the baton doesn't have enough charge for a stun hit it turns off.
turned_on = FALSE
update_icon()
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index b1fb8a0e703..f2145970843 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -141,7 +141,7 @@
/obj/item/reagent_containers/spray/mister/attack_self()
return
-/proc/check_tank_exists(parent_tank, var/mob/living/carbon/human/M, var/obj/O)
+/proc/check_tank_exists(parent_tank, mob/living/carbon/human/M, obj/O)
if(!parent_tank || !istype(parent_tank, /obj/item/watertank)) //To avoid weird issues from admin spawns
M.unEquip(O)
qdel(0)
@@ -182,7 +182,7 @@
/obj/item/watertank/janitor/make_noz()
return new /obj/item/reagent_containers/spray/mister/janitor(src)
-/obj/item/reagent_containers/spray/mister/janitor/attack_self(var/mob/user)
+/obj/item/reagent_containers/spray/mister/janitor/attack_self(mob/user)
amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10)
to_chat(user, "You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.")
diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm
index 7084fdbc163..ccc1a9ddbbd 100644
--- a/code/game/objects/items/weapons/tape.dm
+++ b/code/game/objects/items/weapons/tape.dm
@@ -8,7 +8,7 @@
amount = 25
max_amount = 25
-/obj/item/stack/tape_roll/New(var/loc, var/amount=null)
+/obj/item/stack/tape_roll/New(loc, amount=null)
..()
update_icon()
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 35905aa4292..a7ac1d632c7 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -638,7 +638,7 @@
/obj/item/twohanded/singularityhammer
name = "singularity hammer"
desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
- icon_state = "mjollnir0"
+ icon_state = "singulohammer0"
flags = CONDUCT
slot_flags = SLOT_BACK
force = 5
@@ -665,7 +665,7 @@
charged++
/obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
- icon_state = "mjollnir[wielded]"
+ icon_state = "singulohammer[wielded]"
..()
/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder)
@@ -806,76 +806,3 @@
Z.ex_act(2)
charged = 3
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
-
-/obj/item/twohanded/pitchfork
- icon_state = "pitchfork0"
- name = "pitchfork"
- desc = "A simple tool used for moving hay."
- force = 7
- throwforce = 15
- w_class = WEIGHT_CLASS_BULKY
- force_unwielded = 7
- force_wielded = 15
- attack_verb = list("attacked", "impaled", "pierced")
- hitsound = 'sound/weapons/bladeslice.ogg'
- max_integrity = 200
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
- resistance_flags = FIRE_PROOF
-
-/obj/item/twohanded/pitchfork/demonic
- name = "demonic pitchfork"
- desc = "A red pitchfork, it looks like the work of the devil."
- force = 19
- throwforce = 24
- force_unwielded = 19
- force_wielded = 25
-
-/obj/item/twohanded/pitchfork/demonic/greater
- force = 24
- throwforce = 50
- force_unwielded = 24
- force_wielded = 34
-
-/obj/item/twohanded/pitchfork/demonic/ascended
- force = 100
- throwforce = 100
- force_unwielded = 100
- force_wielded = 500000 // Kills you DEAD.
-
-/obj/item/twohanded/pitchfork/update_icon()
- icon_state = "pitchfork[wielded]"
-
-/obj/item/twohanded/pitchfork/suicide_act(mob/user)
- user.visible_message("[user] impales \himself in \his abdomen with [src]! It looks like \he's trying to commit suicide...")
- return BRUTELOSS
-
-/obj/item/twohanded/pitchfork/demonic/pickup(mob/user)
- . = ..()
- if(istype(user, /mob/living))
- var/mob/living/U = user
- if(U.mind && !U.mind.devilinfo && (U.mind.soulOwner == U.mind)) //Burn hands unless they are a devil or have sold their soul
- U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \
- "\"As you pick up the [src] your arms ignite, reminding you of all your past sins.\"")
- if(ishuman(U))
- var/mob/living/carbon/human/H = U
- H.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm"))
- else
- U.adjustFireLoss(rand(force/2,force))
-
-/obj/item/twohanded/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user)
- if(user.mind && !user.mind.devilinfo && (user.mind.soulOwner != user.mind))
- to_chat(user, "The [src] burns in your hands.")
- user.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm"))
- ..()
-
-// It's no fun being the lord of all hell if you can't get out of a simple room
-/obj/item/twohanded/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity)
- if(!proximity || !wielded)
- return
- if(istype(target, /turf/simulated/wall))
- var/turf/simulated/wall/W = target
- user.visible_message("[user] blasts \the [target] with \the [src]!")
- playsound(target, 'sound/magic/Disintegrate.ogg', 100, 1)
- W.devastate_wall(TRUE)
- return 1
- ..()
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 0f63a5315ad..e508b09fc8e 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -41,7 +41,7 @@
do_climb(usr)
-/obj/structure/MouseDrop_T(var/atom/movable/C, mob/user as mob)
+/obj/structure/MouseDrop_T(atom/movable/C, mob/user as mob)
if(..())
return
if(C == user)
@@ -56,7 +56,7 @@
return T
return null
-/obj/structure/proc/do_climb(var/mob/living/user)
+/obj/structure/proc/do_climb(mob/living/user)
if(!can_touch(user) || !climbable)
return
var/blocking_object = density_check()
@@ -127,7 +127,7 @@
H.UpdateDamageIcon()
return
-/obj/structure/proc/can_touch(var/mob/user)
+/obj/structure/proc/can_touch(mob/user)
if(!user)
return 0
if(!Adjacent(user))
diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm
index 83d03263571..357a5c0db51 100644
--- a/code/game/objects/structures/barsign.dm
+++ b/code/game/objects/structures/barsign.dm
@@ -25,7 +25,7 @@
//randomly assigning a sign
set_sign(pick(barsigns))
-/obj/structure/sign/barsign/proc/set_sign(var/datum/barsign/sign)
+/obj/structure/sign/barsign/proc/set_sign(datum/barsign/sign)
if(!istype(sign))
return
icon_state = sign.icon
@@ -68,7 +68,7 @@
-/obj/structure/sign/barsign/attackby(var/obj/item/I, var/mob/user)
+/obj/structure/sign/barsign/attackby(obj/item/I, mob/user)
if( istype(I, /obj/item/screwdriver))
if(!panel_open)
to_chat(user, "You open the maintenance panel.")
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 383d6992803..741afa2738b 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -75,10 +75,14 @@
/obj/structure/closet/proc/dump_contents()
var/turf/T = get_turf(src)
- for(var/atom/movable/AM in src)
- AM.forceMove(T)
+ for(var/mob/AM1 in src) //Does the same as below but removes the mobs first to avoid forcing players to step on items in the locker (e.g. soap) when opened.
+ AM1.forceMove(T)
if(throwing) // you keep some momentum when getting out of a thrown closet
- step(AM, dir)
+ step(AM1, dir)
+ for(var/atom/movable/AM2 in src)
+ AM2.forceMove(T)
+ if(throwing) // you keep some momentum when getting out of a thrown closet
+ step(AM2, dir)
if(throwing)
throwing.finalize(FALSE)
@@ -308,7 +312,7 @@
return FALSE
return TRUE
-/obj/structure/closet/container_resist(var/mob/living/L)
+/obj/structure/closet/container_resist(mob/living/L)
var/breakout_time = 2 //2 minutes by default
if(opened)
if(L.loc == src)
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index 741a9bae5a2..ed16e8d338e 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -19,7 +19,7 @@
. = ..()
. += "Use a multitool to lock/unlock it."
-/obj/structure/closet/fireaxecabinet/attackby(var/obj/item/O as obj, var/mob/living/user as mob) //Marker -Agouri
+/obj/structure/closet/fireaxecabinet/attackby(obj/item/O as obj, mob/living/user as mob) //Marker -Agouri
if(isrobot(user) || locked)
if(istype(O, /obj/item/multitool))
to_chat(user, "Resetting circuitry...")
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm
index ef80d50371a..55e44163a06 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm
@@ -22,6 +22,7 @@
new /obj/item/storage/backpack/cultpack(src)
new /obj/item/clothing/head/helmet/riot/knight/templar(src)
new /obj/item/clothing/suit/armor/riot/knight/templar(src)
+ new /obj/item/clothing/suit/storage/labcoat(src)
new /obj/item/soulstone/anybody/purified/chaplain(src)
new /obj/item/storage/fancy/candle_box/eternal(src)
new /obj/item/storage/fancy/candle_box/eternal(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
index 7b8494a01ba..16d1875044e 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
@@ -15,7 +15,7 @@
else
icon_state = icon_opened
-/obj/structure/closet/secure_closet/freezer/ex_act(var/severity)
+/obj/structure/closet/secure_closet/freezer/ex_act(severity)
// IF INDIANA JONES CAN DO IT SO CAN YOU
// Bomb in here? (using same search as space transits searching for nuke disk)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index c684afab240..8c878cd6c59 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -114,7 +114,7 @@
else
icon_state = icon_opened
-/obj/structure/closet/secure_closet/container_resist(var/mob/living/L)
+/obj/structure/closet/secure_closet/container_resist(mob/living/L)
var/breakout_time = 2 //2 minutes by default
if(opened)
if(L.loc == src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 51796eade39..d8441b26c0b 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -27,6 +27,7 @@
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/laceup(src)
new /obj/item/radio/headset/heads/captain/alt(src)
+ new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/gloves/color/captain(src)
new /obj/item/storage/belt/rapier(src)
new /obj/item/gun/energy/gun(src)
@@ -50,6 +51,7 @@
new /obj/item/clothing/head/hopcap(src)
new /obj/item/cartridge/hop(src)
new /obj/item/radio/headset/heads/hop(src)
+ new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/storage/box/ids(src)
new /obj/item/storage/box/PDAs(src)
new /obj/item/clothing/suit/armor/vest(src)
@@ -272,6 +274,7 @@
new /obj/item/paicard(src)
new /obj/item/flash(src)
new /obj/item/clothing/glasses/hud/skills/sunglasses(src)
+ new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/gloves/color/white(src)
new /obj/item/clothing/shoes/centcom(src)
new /obj/item/clothing/under/lawyer/oldman(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 54b9b8a1c56..71455c67275 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -12,7 +12,7 @@
var/intialOxy = 0
var/timer = 240 //eventually the person will be freed
-/obj/structure/closet/statue/Initialize(mapload, var/mob/living/L)
+/obj/structure/closet/statue/Initialize(mapload, mob/living/L)
. = ..()
if(ishuman(L) || iscorgi(L))
if(L.buckled)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index f8d1cc20ff1..f6b9ab8de60 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -151,7 +151,7 @@
src.toggle(user, by_hand = TRUE)
// Called when a crate is delivered by MULE at a location, for notifying purposes
-/obj/structure/closet/crate/proc/notifyRecipient(var/destination)
+/obj/structure/closet/crate/proc/notifyRecipient(destination)
var/list/msg = list("[capitalize(name)] has arrived at [destination].")
if(destination in announce_beacons)
for(var/obj/machinery/requests_console/D in GLOB.allRequestConsoles)
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 0d9db6737b6..02cad716d3d 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -75,7 +75,7 @@
state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
to_chat(user, "You wire the airlock assembly.")
- else if(istype(W, /obj/item/airlock_electronics) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS && W.icon_state != "door_electronics_smoked")
+ else if(istype(W, /obj/item/airlock_electronics) && state == AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS && !istype(W, /obj/item/airlock_electronics/destroyed))
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...")
@@ -187,6 +187,7 @@
door.name = base_name
door.previous_airlock = previous_assembly
electronics.forceMove(door)
+ electronics = null
qdel(src)
update_icon()
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index ec74469f7e7..3679587d654 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -223,9 +223,10 @@
/obj/item/twohanded/required/kirbyplants/equipped(mob/living/user)
. = ..()
- var/image/I = image(icon = 'icons/obj/flora/plants.dmi' , icon_state = src.icon_state, loc = user)
- I.override = 1
- user.add_alt_appearance("sneaking_mission", I, GLOB.player_list)
+ if(wielded)
+ var/image/I = image(icon, user, icon_state)
+ I.override = TRUE
+ user.add_alt_appearance("sneaking_mission", I, GLOB.player_list)
/obj/item/twohanded/required/kirbyplants/dropped(mob/living/user)
..()
@@ -319,7 +320,7 @@
A.loc = get_turf(src)
*/
-/obj/structure/bush/attackby(var/obj/I as obj, var/mob/user as mob, params)
+/obj/structure/bush/attackby(obj/I as obj, mob/user as mob, params)
//hatchets can clear away undergrowth
if(istype(I, /obj/item/hatchet) && !stump)
if(indestructable)
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index d3cf5b0dd96..785d6894215 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -59,10 +59,12 @@
qdel(src)
else
visible_message("[src] slowly deflates.")
- spawn(50)
- var/obj/item/inflatable/R = new intact(loc)
- transfer_fingerprints_to(R)
- qdel(src)
+ addtimer(CALLBACK(src, .proc/deflate), 5 SECONDS)
+
+/obj/structure/inflatable/proc/deflate()
+ var/obj/item/inflatable/R = new intact(loc)
+ transfer_fingerprints_to(R)
+ qdel(src)
/obj/structure/inflatable/verb/hand_deflate()
set name = "Deflate"
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 431af38a598..5510c1b4c46 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -49,7 +49,7 @@
if(M)
var/mob/dead/observer/G = M.get_ghost()
- if(M.mind && M.mind.is_revivable() && !M.mind.suicided)
+ if(M.mind && !M.mind.suicided)
if(M.client)
icon_state = "morgue3"
desc = initial(desc) + "\n[status_descriptors[4]]"
@@ -161,7 +161,7 @@
QDEL_NULL(connected)
return ..()
-/obj/structure/morgue/container_resist(var/mob/living/L)
+/obj/structure/morgue/container_resist(mob/living/L)
var/mob/living/carbon/CM = L
if(!istype(CM))
return
@@ -391,7 +391,7 @@
QDEL_NULL(connected)
return ..()
-/obj/structure/crematorium/container_resist(var/mob/living/L)
+/obj/structure/crematorium/container_resist(mob/living/L)
var/mob/living/carbon/CM = L
if(!istype(CM))
return
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 6b9615cd994..64a0361dc5d 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -18,7 +18,7 @@
icon_state = "nboard0[notices]"
//attaching papers!!
-/obj/structure/noticeboard/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/structure/noticeboard/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/paper))
if(notices < 5)
O.add_fingerprint(user)
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 2f751dbfadd..4266d6ef254 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -7,7 +7,7 @@ SAFE CODES
*/
#define DRILL_SPARK_CHANCE 15
-#define DRILL_TIME 300 SECONDS
+#define DRILL_TIME 120 SECONDS
#define SOUND_CHANCE 10
GLOBAL_LIST_EMPTY(safes)
@@ -402,7 +402,7 @@ GLOBAL_LIST_EMPTY(safes)
for(var/safe in GLOB.safes)
var/obj/structure/safe/S = safe
if(owner in S.known_by)
- info += " The combination for the safe located in the [get_area(S).name] is: [S.get_combination()] "
+ info += " The combination for the safe located in the [get_area_name(S, TRUE)] is: [S.get_combination()] "
info_links = info
update_icon()
diff --git a/code/game/objects/structures/spirit_board.dm b/code/game/objects/structures/spirit_board.dm
index 8fa6e0d7dd1..647f0a53c6e 100644
--- a/code/game/objects/structures/spirit_board.dm
+++ b/code/game/objects/structures/spirit_board.dm
@@ -24,7 +24,7 @@
spirit_board_pick_letter(user)
-/obj/structure/spirit_board/proc/spirit_board_pick_letter(var/mob/M)
+/obj/structure/spirit_board/proc/spirit_board_pick_letter(mob/M)
if(!spirit_board_checks(M))
return 0
@@ -43,7 +43,7 @@
visible_message("The planchette slowly moves... and stops at the letter \"[planchette]\".")
-/obj/structure/spirit_board/proc/spirit_board_checks(var/mob/M)
+/obj/structure/spirit_board/proc/spirit_board_checks(mob/M)
//cooldown
var/bonus = 0
if(M.ckey == lastuser)
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 2c7ffbe2e90..15874e0c812 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -46,9 +46,6 @@
user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
"You rub some dust off from the [name]'s surface.")
-/obj/structure/statue/CanAtmosPass()
- return !density
-
/obj/structure/statue/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
if(material_drop_type)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index 9def5542c76..1a162c250fa 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -156,3 +156,6 @@
else
. = 1
+
+/obj/structure/chair/wheelchair/bike/wrench_act(mob/user, obj/item/I)
+ return
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index d287c2f5bbf..5bce42875fe 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -591,7 +591,7 @@
verbs -= /obj/structure/table/verb/do_flip
typecache_can_hold = typecacheof(typecache_can_hold)
for(var/atom/movable/held in get_turf(src))
- if(is_type_in_typecache(held, typecache_can_hold))
+ if(!held.anchored && held.move_resist != INFINITY && is_type_in_typecache(held, typecache_can_hold))
held_items += held.UID()
/obj/structure/table/tray/Move(NewLoc, direct)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
index 126133cddc0..0e6327090c9 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
@@ -28,7 +28,7 @@
return TRUE
else return ..()
-/obj/structure/transit_tube_pod/proc/follow_tube(var/reverse_launch)
+/obj/structure/transit_tube_pod/proc/follow_tube(reverse_launch)
if(moving)
return
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index fb89c95815b..73e6fadac80 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -131,7 +131,7 @@
if("02")
//Adding airlock electronics for access. Step 6 complete.
- if(istype(W, /obj/item/airlock_electronics))
+ if(istype(W, /obj/item/airlock_electronics) && !istype(W, /obj/item/airlock_electronics/destroyed))
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...")
user.drop_item()
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 3ba2e638099..c9fbd4df113 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -1,12 +1,9 @@
//This is so damaged or burnt tiles or platings don't get remembered as the default tile
GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","damaged3","damaged4",
"damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2",
- "platingdmg3","plating","light_on","light_on_flicker1","light_on_flicker2",
- "warnplate", "warnplatecorner","metalfoam", "ironfoam",
- "light_on_clicker3","light_on_clicker4","light_on_clicker5","light_broken",
- "light_on_broken","light_off","wall_thermite","grass1","grass2","grass3","grass4",
- "asteroid","asteroid_dug",
- "asteroid0","asteroid1","asteroid2","asteroid3","asteroid4",
+ "platingdmg3","plating","light_on","warnplate", "warnplatecorner","metalfoam", "ironfoam",
+ "light_off","wall_thermite","grass1","grass2","grass3","grass4",
+ "asteroid","asteroid_dug","asteroid0","asteroid1","asteroid2","asteroid3","asteroid4",
"asteroid5","asteroid6","asteroid7","asteroid8","asteroid9","asteroid10","asteroid11","asteroid12",
"oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpet",
"carpetcorner", "carpetside", "carpet", "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5",
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index 0d27e02537f..6264fb366ab 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -1,23 +1,14 @@
-#define LIGHTFLOOR_ON 1
-#define LIGHTFLOOR_WHITE 2
-#define LIGHTFLOOR_RED 3
-#define LIGHTFLOOR_GREEN 4
-#define LIGHTFLOOR_YELLOW 5
-#define LIGHTFLOOR_BLUE 6
-#define LIGHTFLOOR_PURPLE 7
-
-#define LIGHTFLOOR_GENERICCYCLE 8
-#define LIGHTFLOOR_CYCLEA 9
-#define LIGHTFLOOR_CYCLEB 10
-
/turf/simulated/floor/light
name = "\improper light floor"
light_range = 5
icon_state = "light_on"
floor_tile = /obj/item/stack/tile/light
- broken_states = list("light_broken")
+ broken_states = list("light_off")
+ /// Are we on
var/on = TRUE
- var/state = LIGHTFLOOR_ON
+ /// Are we broken
+ var/light_broken = FALSE
+ /// Can we modify a colour
var/can_modify_colour = TRUE
/turf/simulated/floor/light/Initialize(mapload)
@@ -27,43 +18,11 @@
/turf/simulated/floor/light/update_icon()
..()
if(on)
- switch(state)
- if(LIGHTFLOOR_ON)
- icon_state = "light_on"
- set_light(5, null,LIGHT_COLOR_LIGHTBLUE)
- if(LIGHTFLOOR_WHITE)
- icon_state = "light_on-w"
- set_light(5, null,LIGHT_COLOR_WHITE)
- if(LIGHTFLOOR_RED)
- icon_state = "light_on-r"
- set_light(5, null,LIGHT_COLOR_RED)
- if(LIGHTFLOOR_GREEN)
- icon_state = "light_on-g"
- set_light(5, null,LIGHT_COLOR_PURE_GREEN)
- if(LIGHTFLOOR_YELLOW)
- icon_state = "light_on-y"
- set_light(5, null,"#FFFF00")
- if(LIGHTFLOOR_BLUE)
- icon_state = "light_on-b"
- set_light(5, null,LIGHT_COLOR_DARKBLUE)
- if(LIGHTFLOOR_PURPLE)
- icon_state = "light_on-p"
- set_light(5, null,LIGHT_COLOR_PURPLE)
- if(LIGHTFLOOR_GENERICCYCLE)
- icon_state = "light_on-cycle_all"
- set_light(5, null,LIGHT_COLOR_WHITE)
- if(LIGHTFLOOR_CYCLEA)
- icon_state = "light_on-dancefloor_A"
- set_light(5,null,LIGHT_COLOR_RED)
- if(LIGHTFLOOR_CYCLEB)
- icon_state = "light_on-dancefloor_B"
- set_light(5, null,LIGHT_COLOR_DARKBLUE)
- else
- icon_state = "light_off"
- set_light(0)
+ icon_state = "light_on"
+ set_light(5, null, color)
else
- set_light(0)
icon_state = "light_off"
+ set_light(0)
/turf/simulated/floor/light/BeforeChange()
set_light(0)
@@ -76,9 +35,9 @@
/turf/simulated/floor/light/attackby(obj/item/C, mob/user, params)
if(istype(C, /obj/item/light/bulb)) //only for light tiles
- if(!state)
+ if(!light_broken)
qdel(C)
- state = LIGHTFLOOR_ON
+ light_broken = FALSE
update_icon()
to_chat(user, "You replace the light bulb.")
else
@@ -92,11 +51,21 @@
return
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
- if(state != 0)
- if(state < LIGHTFLOOR_PURPLE)
- state++
- else
- state = LIGHTFLOOR_ON
+ if(!light_broken)
+ var/new_color = input(user, "Select a bulb color", "Select a bulb color", color) as color|null
+ if(!new_color)
+ return
+
+ // Cancel if they walked away
+ if(!Adjacent(user, src))
+ return
+
+ // Now lets make sure it cant go fully black. Yes I know this is more dense than my skull.
+ var/list/hsl = rgb2hsl(hex2num(copytext(new_color, 2, 4)), hex2num(copytext(new_color, 4, 6)), hex2num(copytext(new_color, 6, 8)))
+ hsl[3] = max(hsl[3], 0.4)
+ var/list/rgb = hsl2rgb(arglist(hsl))
+ color = "#[num2hex(rgb[1], 2)][num2hex(rgb[2], 2)][num2hex(rgb[3], 2)]"
+
to_chat(user, "You change [src]'s light bulb color.")
update_icon()
else
@@ -111,33 +80,3 @@
/turf/simulated/floor/light/extinguish_light()
toggle_light(FALSE)
visible_message("[src] flickers and falls dark.")
-
-//Cycles through all of the colours
-/turf/simulated/floor/light/colour_cycle
- state = LIGHTFLOOR_GENERICCYCLE
- can_modify_colour = FALSE
-
-//Two different "dancefloor" types so that you can have a checkered pattern
-// (also has a longer delay than colour_cycle between cycling colours)
-/turf/simulated/floor/light/colour_cycle/dancefloor_a
- name = "dancefloor"
- desc = "Funky floor."
- state = LIGHTFLOOR_CYCLEA
-
-/turf/simulated/floor/light/colour_cycle/dancefloor_b
- name = "dancefloor"
- desc = "Funky floor."
- state = LIGHTFLOOR_CYCLEB
-
-
-#undef LIGHTFLOOR_ON
-#undef LIGHTFLOOR_WHITE
-#undef LIGHTFLOOR_RED
-#undef LIGHTFLOOR_GREEN
-#undef LIGHTFLOOR_YELLOW
-#undef LIGHTFLOOR_BLUE
-#undef LIGHTFLOOR_PURPLE
-
-#undef LIGHTFLOOR_GENERICCYCLE
-#undef LIGHTFLOOR_CYCLEA
-#undef LIGHTFLOOR_CYCLEB
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 27eac4308a4..94d95c2af86 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -305,7 +305,7 @@
if(MFOAM_IRON)
icon_state = "ironfoam"
-/turf/simulated/floor/plating/metalfoam/attackby(var/obj/item/C, mob/user, params)
+/turf/simulated/floor/plating/metalfoam/attackby(obj/item/C, mob/user, params)
if(..())
return TRUE
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 538c1599069..d2109bee2f0 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -20,7 +20,7 @@
var/mineralType = null
var/mineralAmt = 3
var/spread = 0 //will the seam spread?
- var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles
+ var/spreadChance = 0 //the percentile chance of an ore spreading to the neighboring tiles
var/last_act = 0
var/scan_state = "" //Holder for the image we display when we're pinged by a mining scanner
var/defer_change = 0
@@ -478,7 +478,7 @@
det_time = 0
visible_message("The chain reaction was stopped! The gibtonite had [det_time] reactions left till the explosion!")
-/turf/simulated/mineral/gibtonite/gets_drilled(var/mob/user, triggered_by_explosion = 0)
+/turf/simulated/mineral/gibtonite/gets_drilled(mob/user, triggered_by_explosion = 0)
if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated
playsound(src,'sound/effects/hit_on_shattered_glass.ogg', 50, TRUE)
explosive_reaction(user, triggered_by_explosion)
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 02035e17f95..1eb89e6a238 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -4,7 +4,7 @@
/turf/simulated/wall
name = "wall"
- desc = "A huge chunk of metal used to seperate rooms."
+ desc = "A huge chunk of metal used to separate rooms."
icon = 'icons/turf/walls/wall.dmi'
icon_state = "wall"
var/rotting = FALSE
diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm
index 7bc49c2951e..9d743ae9c18 100644
--- a/code/game/turfs/simulated/walls_mineral.dm
+++ b/code/game/turfs/simulated/walls_mineral.dm
@@ -82,7 +82,7 @@
/turf/simulated/wall/mineral/plasma
name = "plasma wall"
- desc = "A wall with plasma plating. This is definately a bad idea."
+ desc = "A wall with plasma plating. This is definitely a bad idea."
icon = 'icons/turf/walls/plasma_wall.dmi'
icon_state = "plasma"
sheet_type = /obj/item/stack/sheet/mineral/plasma
@@ -122,7 +122,7 @@
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
-/turf/simulated/wall/mineral/plasma/bullet_act(var/obj/item/projectile/Proj)
+/turf/simulated/wall/mineral/plasma/bullet_act(obj/item/projectile/Proj)
if(Proj.damage == 0)//lasertag guns and so on don't set off plasma anymore. can't use nodamage here because lasertag guns actually don't have it.
return
if(istype(Proj,/obj/item/projectile/beam))
@@ -303,26 +303,6 @@
icon_state = "map-overspace"
fixed_underlay = list("space"=1)
-/turf/simulated/wall/mineral/plastitanium/explosive
- var/explosive_wall_group = EXPLOSIVE_WALL_GROUP_SYNDICATE_BASE
- icon_state = "map-shuttle_nd"
- smooth = SMOOTH_MORE
-
-/turf/simulated/wall/mineral/plastitanium/explosive/Initialize(mapload)
- . = ..()
- GLOB.explosive_walls += src
-
-/turf/simulated/wall/mineral/plastitanium/explosive/Destroy()
- GLOB.explosive_walls -= src
- return ..()
-
-/turf/simulated/wall/mineral/plastitanium/explosive/proc/self_destruct()
- var/obj/item/bombcore/large/explosive_wall/bombcore = new(get_turf(src))
- bombcore.detonate()
-
-/turf/simulated/wall/mineral/plastitanium/explosive/ex_act(severity)
- return
-
//have to copypaste this code
/turf/simulated/wall/mineral/plastitanium/interior/copyTurf(turf/T)
if(T.type != type)
diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm
index 89122891702..e32fa627297 100644
--- a/code/game/turfs/simulated/walls_misc.dm
+++ b/code/game/turfs/simulated/walls_misc.dm
@@ -11,7 +11,7 @@
/turf/simulated/wall/cult/Initialize(mapload)
. = ..()
- if(SSticker.mode)//game hasn't started offically don't do shit..
+ if(SSticker.mode)//game hasn't started officially don't do shit..
new /obj/effect/temp_visual/cult/turf(src)
icon_state = SSticker.cultdat.cult_wall_icon_state
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 31408a0cad3..4678bd94ce4 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -348,7 +348,7 @@
// Returns the surrounding cardinal turfs with open links
// Including through doors openable with the ID
-/turf/proc/CardinalTurfsWithAccess(var/obj/item/card/id/ID)
+/turf/proc/CardinalTurfsWithAccess(obj/item/card/id/ID)
var/list/L = new()
var/turf/simulated/T
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 0aea3e234c5..f4f37f313a1 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -104,7 +104,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
else
to_chat(world, "The OOC channel has been globally disabled!")
-/proc/auto_toggle_ooc(var/on)
+/proc/auto_toggle_ooc(on)
if(config.auto_toggle_ooc_during_round && config.ooc_allowed != on)
toggle_ooc()
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index 4a0429dd576..4c21afebdd2 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -1,63 +1,98 @@
-
/client/verb/who()
set name = "Who"
set category = "OOC"
- var/msg = "Current Players:\n"
+ var/list/lines = list()
+ var/list/temp = list()
+ for(var/client/C in GLOB.clients)
+ if(C.holder && C.holder.big_brother) // BB doesn't show up at all
+ continue
+
+ if(C.holder && C.holder.fakekey)
+ temp += C.holder.fakekey
+ else
+ temp += C.key
+
+ temp = sortList(temp) // Sort it. We dont do this above because fake keys would be out of order, which would be a giveaway
+
+ var/list/output_players = list()
+
+ // Now go over it again to apply colours.
+ for(var/p in temp)
+ var/client/C = GLOB.directory[ckey(p)]
+ if(!C)
+ // This should NEVER happen, but better to be safe
+ continue
+ // Get the colour
+ var/colour = client2rankcolour(C)
+ var/out = "[p]"
+ if(C.holder)
+ out = "[out]"
+ if(colour)
+ out = "[out]"
+
+ output_players += out
+
+ lines += "Current Players ([length(output_players)]): "
+ lines += output_players.Join(", ") // Turn players into a comma separated list
+
+ if(check_rights(R_ADMIN, FALSE))
+ lines += "Click here for detailed (old) who."
+
+ var/msg = lines.Join("\n")
+
+ to_chat(src, msg)
+
+// Advanced version of `who` to show player age, antag status and more. Lags the chat when loading, so its in its own proc
+/client/proc/who_advanced()
+ if(!check_rights(R_ADMIN))
+ return
var/list/Lines = list()
- if(check_rights(R_ADMIN,0))
- for(var/client/C in GLOB.clients)
- if(C.holder && C.holder.big_brother && !check_rights(R_PERMISSIONS, 0)) // need PERMISSIONS to see BB
- continue
+ for(var/client/C in GLOB.clients)
+ if(C.holder && C.holder.big_brother && !check_rights(R_PERMISSIONS, FALSE)) // need PERMISSIONS to see BB
+ continue
- var/entry = "\t[C.key]"
- if(C.holder && C.holder.fakekey)
- entry += " (as [C.holder.fakekey])"
- entry += " - Playing as [C.mob.real_name]"
- switch(C.mob.stat)
- if(UNCONSCIOUS)
- entry += " - Unconscious"
- if(DEAD)
- if(isobserver(C.mob))
- var/mob/dead/observer/O = C.mob
- if(O.started_as_observer)
- entry += " - Observing"
- else
- entry += " - DEAD"
- else if(isnewplayer(C.mob))
- entry += " - New Player"
+ var/entry = "\t[C.key]"
+ if(C.holder && C.holder.fakekey)
+ entry += " (as [C.holder.fakekey])"
+ entry += " - Playing as [C.mob.real_name]"
+ switch(C.mob.stat)
+ if(UNCONSCIOUS)
+ entry += " - Unconscious"
+ if(DEAD)
+ if(isobserver(C.mob))
+ var/mob/dead/observer/O = C.mob
+ if(O.started_as_observer)
+ entry += " - Observing"
else
entry += " - DEAD"
+ else if(isnewplayer(C.mob))
+ entry += " - New Player"
+ else
+ entry += " - DEAD"
- var/age
- if(isnum(C.player_age))
- age = C.player_age
- else
- age = 0
+ var/age
+ if(isnum(C.player_age))
+ age = C.player_age
+ else
+ age = 0
- if(age <= 1)
- age = "[age]"
- else if(age < 10)
- age = "[age]"
+ if(age <= 1)
+ age = "[age]"
+ else if(age < 10)
+ age = "[age]"
- entry += " - [age]"
+ entry += " - [age]"
- if(is_special_character(C.mob))
- entry += " - Antagonist"
- entry += " ([ADMIN_QUE(C.mob,"?")])"
- Lines += entry
- else
- for(var/client/C in GLOB.clients)
- if(C.holder && C.holder.big_brother) // BB doesn't show up at all
- continue
+ if(is_special_character(C.mob))
+ entry += " - Antagonist"
+ entry += " ([ADMIN_QUE(C.mob, "?")])"
+ Lines += entry
- if(C.holder && C.holder.fakekey)
- Lines += C.holder.fakekey
- else
- Lines += C.key
+ var/msg = ""
for(var/line in sortList(Lines))
msg += "[line]\n"
@@ -83,7 +118,12 @@
if(C.holder.big_brother && !check_rights(R_PERMISSIONS, 0)) // normal admins can't see BB
continue
- msg += "\t[C] is a [C.holder.rank]"
+ // Their rank may not have a defined colour, only set colour if so
+ var/rank_colour = client2rankcolour(C)
+ if(rank_colour)
+ msg += "[C] is a [C.holder.rank]"
+ else
+ msg += "[C] is a [C.holder.rank]"
if(C.holder.fakekey)
msg += " (as [C.holder.fakekey])"
@@ -102,7 +142,12 @@
num_admins_online++
else if(check_rights(R_MENTOR|R_MOD, 0, C.mob))
- modmsg += "\t[C] is a [C.holder.rank]"
+ // Their rank may not have a defined colour, only set colour if so
+ var/rank_colour = client2rankcolour(C)
+ if(rank_colour)
+ modmsg += "[C] is a [C.holder.rank]"
+ else
+ modmsg += "[C] is a [C.holder.rank]"
if(isobserver(C.mob))
modmsg += " - Observing"
@@ -120,10 +165,20 @@
if(check_rights(R_ADMIN, 0, C.mob))
if(!C.holder.fakekey)
- msg += "\t[C] is a [C.holder.rank]\n"
+ var/rank_colour = client2rankcolour(C)
+ if(rank_colour)
+ msg += "[C] is a [C.holder.rank]"
+ else
+ msg += "[C] is a [C.holder.rank]"
+ msg += "\n"
num_admins_online++
else if(check_rights(R_MOD|R_MENTOR, 0, C.mob) && !check_rights(R_ADMIN, 0, C.mob))
- modmsg += "\t[C] is a [C.holder.rank]\n"
+ var/rank_colour = client2rankcolour(C)
+ if(rank_colour)
+ modmsg += "[C] is a [C.holder.rank]"
+ else
+ modmsg += "[C] is a [C.holder.rank]"
+ modmsg += "\n"
num_mods_online++
var/noadmins_info = "\nIf no admins or mentors are online, make a ticket anyways. Adminhelps and mentorhelps will be relayed to discord, and staff will still be informed."
diff --git a/code/game/world.dm b/code/game/world.dm
index 0cb7e750c77..8573327076a 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -142,11 +142,11 @@ GLOBAL_LIST_EMPTY(world_topic_handlers)
return
#endif
- // If we had an update or pending TM, set a 60 second timeout
+ // If the server has been gracefully shutdown in TGS, have a 60 seconds grace period for SQL updates and stuff
var/secs_before_auto_reconnect = 10
- if(GLOB.pending_server_update)
+ if(GLOB.slower_restart)
secs_before_auto_reconnect = 60
- to_chat(world, "Reboot will take a little longer, due to pending updates.")
+ server_announce_global("Reboot will take a little longer due to pending backend changes.")
// Send the reboot banner to all players
for(var/client/C in GLOB.clients)
@@ -175,7 +175,7 @@ GLOBAL_LIST_EMPTY(world_topic_handlers)
GLOB.master_mode = Lines[1]
log_game("Saved mode is '[GLOB.master_mode]'")
-/world/proc/save_mode(var/the_mode)
+/world/proc/save_mode(the_mode)
var/F = file("data/mode.txt")
fdel(F)
F << the_mode
@@ -190,6 +190,7 @@ GLOBAL_LIST_EMPTY(world_topic_handlers)
config.load("config/game_options.txt","game_options")
config.loadsql("config/dbconfig.txt")
config.loadoverflowwhitelist("config/ofwhitelist.txt")
+ config.load_rank_colour_map()
// apply some settings from config..
/world/proc/update_status()
diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm
index e0c93f8b40e..4169ca380ab 100644
--- a/code/modules/admin/NewBan.dm
+++ b/code/modules/admin/NewBan.dm
@@ -2,7 +2,7 @@ GLOBAL_VAR(CMinutes)
GLOBAL_DATUM(banlist_savefile, /savefile)
GLOBAL_PROTECT(banlist_savefile) // Obvious reasons
-/proc/CheckBan(var/ckey, var/id, var/address)
+/proc/CheckBan(ckey, id, address)
if(!GLOB.banlist_savefile) // if banlist_savefile cannot be located for some reason
LoadBans() // try to load the bans
if(!GLOB.banlist_savefile) // uh oh, can't find bans!
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 10417e2b937..2f7ef2e44c8 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -2,14 +2,14 @@ GLOBAL_VAR_INIT(BSACooldown, 0)
GLOBAL_VAR_INIT(nologevent, 0)
////////////////////////////////
-/proc/message_admins(var/msg)
+/proc/message_admins(msg)
msg = "ADMIN LOG: [msg]"
for(var/client/C in GLOB.admins)
if(R_ADMIN & C.holder.rights)
if(C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_ADMINLOGS))
to_chat(C, msg)
-/proc/msg_admin_attack(var/text, var/loglevel)
+/proc/msg_admin_attack(text, loglevel)
if(!GLOB.nologevent)
var/rendered = "ATTACK: [text]"
for(var/client/C in GLOB.admins)
@@ -54,7 +54,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
SEND_SOUND(C, sound('sound/effects/adminhelp.ogg'))
window_flash(C)
-/proc/admin_ban_mobsearch(var/mob/M, var/ckey_to_find, var/mob/admin_to_notify)
+/proc/admin_ban_mobsearch(mob/M, ckey_to_find, mob/admin_to_notify)
if(!M || !M.ckey)
if(ckey_to_find)
for(var/mob/O in GLOB.mob_list)
@@ -70,7 +70,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
///////////////////////////////////////////////////////////////////////////////////////////////Panels
-/datum/admins/proc/show_player_panel(var/mob/M in GLOB.mob_list)
+/datum/admins/proc/show_player_panel(mob/M in GLOB.mob_list)
set category = null
set name = "Show Player Panel"
set desc="Edit player (respawn, ban, heal, etc)"
@@ -299,7 +299,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
show_note()
-/datum/admins/proc/show_player_notes(var/key as text)
+/datum/admins/proc/show_player_notes(key as text)
set category = "Admin"
set name = "Show Player Notes"
@@ -662,7 +662,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
return 0
-/datum/admins/proc/spawn_atom(var/object as text)
+/datum/admins/proc/spawn_atom(object as text)
set category = "Debug"
set desc = "(atom path) Spawn an atom"
set name = "Spawn"
@@ -698,7 +698,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Spawn Atom") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/datum/admins/proc/show_traitor_panel(var/mob/M in GLOB.mob_list)
+/datum/admins/proc/show_traitor_panel(mob/M in GLOB.mob_list)
set category = "Admin"
set desc = "Edit mobs's memory and role"
set name = "Show Traitor Panel"
@@ -801,7 +801,7 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space
GLOB.gamma_ship_location = 1
return
-/proc/formatJumpTo(var/location,var/where="")
+/proc/formatJumpTo(location, where="")
var/turf/loc
if(istype(location,/turf/))
loc = location
@@ -811,7 +811,7 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space
where=formatLocation(loc)
return "[where]"
-/proc/formatLocation(var/location)
+/proc/formatLocation(location)
var/turf/loc
if(istype(location,/turf/))
loc = location
@@ -820,7 +820,7 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space
var/area/A = get_area(location)
return "[A.name] - [loc.x],[loc.y],[loc.z]"
-/proc/formatPlayerPanel(var/mob/U,var/text="PP")
+/proc/formatPlayerPanel(mob/U, text="PP")
return "[ADMIN_PP(U,"[text]")]"
//Kicks all the clients currently in the lobby. The second parameter (kick_only_afk) determins if an is_afk() check is ran, or if all clients are kicked
@@ -840,7 +840,7 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space
//returns 1 to let the dragdrop code know we are trapping this event
//returns 0 if we don't plan to trap the event
-/datum/admins/proc/cmd_ghost_drag(var/mob/dead/observer/frommob, var/tothing)
+/datum/admins/proc/cmd_ghost_drag(mob/dead/observer/frommob, tothing)
if(!istype(frommob))
return //extra sanity check to make sure only observers are shoved into things
diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm
index 527540e9490..24ea8f95886 100644
--- a/code/modules/admin/admin_investigate.dm
+++ b/code/modules/admin/admin_investigate.dm
@@ -8,14 +8,14 @@
#define INVESTIGATE_DIR "data/investigate/"
//SYSTEM
-/proc/investigate_subject2file(var/subject)
+/proc/investigate_subject2file(subject)
return file("[INVESTIGATE_DIR][subject].html")
/proc/investigate_reset()
if(fdel(INVESTIGATE_DIR)) return 1
return 0
-/atom/proc/investigate_log(var/message, var/subject)
+/atom/proc/investigate_log(message, subject)
if(!message) return
var/F = investigate_subject2file(subject)
if(!F) return
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index d0660ef89e7..f63473216a9 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -24,12 +24,9 @@ GLOBAL_LIST_INIT(admin_verbs_admin, list(
/client/proc/cmd_admin_check_contents, /*displays the contents of an instance*/
/client/proc/cmd_admin_open_logging_view,
/client/proc/getserverlogs, /*allows us to fetch server logs (diary) for other days*/
- /client/proc/jumptocoord, /*we ghost and jump to a coordinate*/
/client/proc/Getmob, /*teleports a mob to our location*/
/client/proc/Getkey, /*teleports a mob with a certain ckey to our location*/
- /client/proc/Jump,
- /client/proc/jumptokey, /*allows us to jump to the location of a mob with a certain ckey*/
- /client/proc/jumptomob, /*allows us to jump to a specific mob*/
+ /client/proc/jump_to, /*Opens a menu for jumping to an Area, Mob, Key or Coordinate*/
/client/proc/jumptoturf, /*allows us to jump to a specific turf*/
/client/proc/admin_call_shuttle, /*allows us to call the emergency shuttle*/
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/
@@ -606,7 +603,7 @@ GLOBAL_LIST_INIT(admin_verbs_ticket, list(
log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].")
message_admins("[key_name_admin(usr)] gave [key_name(T)] the disease [D].")
-/client/proc/make_sound(var/obj/O in view()) // -- TLE
+/client/proc/make_sound(obj/O in view()) // -- TLE
set category = "Event"
set name = "Make Sound"
set desc = "Display a message to everyone who can hear the target"
@@ -635,7 +632,7 @@ GLOBAL_LIST_INIT(admin_verbs_ticket, list(
togglebuildmode(src.mob)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Build Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/object_talk(var/msg as text) // -- TLE
+/client/proc/object_talk(msg as text) // -- TLE
set category = "Event"
set name = "oSay"
set desc = "Display a message to everyone who can hear the target"
diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm
index 7ff26de5992..51b1299079b 100644
--- a/code/modules/admin/banjob.dm
+++ b/code/modules/admin/banjob.dm
@@ -118,7 +118,7 @@ GLOBAL_DATUM_INIT(jobban_regex, /regex, regex("(\[\\S]+) - (\[^#]+\[^# ])(?: ##
/proc/jobban_unban_client(ckey, rank)
jobban_remove("[ckey] - [rank]")
-/proc/ban_unban_log_save(var/formatted_log)
+/proc/ban_unban_log_save(formatted_log)
text2file(formatted_log,"data/ban_unban_log.txt")
diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm
index 616d5aa9ee8..6740a3d59b7 100644
--- a/code/modules/admin/create_mob.dm
+++ b/code/modules/admin/create_mob.dm
@@ -1,5 +1,5 @@
GLOBAL_VAR(create_mob_html)
-/datum/admins/proc/create_mob(var/mob/user)
+/datum/admins/proc/create_mob(mob/user)
if(!GLOB.create_mob_html)
var/mobjs = null
mobjs = jointext(typesof(/mob), ";")
diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm
index c311be0d017..99706d19950 100644
--- a/code/modules/admin/create_object.dm
+++ b/code/modules/admin/create_object.dm
@@ -1,7 +1,7 @@
GLOBAL_VAR(create_object_html)
GLOBAL_LIST_INIT(create_object_forms, list(/obj, /obj/structure, /obj/machinery, /obj/effect, /obj/item, /obj/mecha, /obj/item/clothing, /obj/item/stack, /obj/item/reagent_containers, /obj/item/gun))
-/datum/admins/proc/create_object(var/mob/user)
+/datum/admins/proc/create_object(mob/user)
if(!GLOB.create_object_html)
var/objectjs = null
objectjs = jointext(typesof(/obj), ";")
@@ -10,7 +10,7 @@ GLOBAL_LIST_INIT(create_object_forms, list(/obj, /obj/structure, /obj/machinery,
user << browse(replacetext(GLOB.create_object_html, "/* ref src */", UID()), "window=create_object;size=425x475")
-/datum/admins/proc/quick_create_object(var/mob/user)
+/datum/admins/proc/quick_create_object(mob/user)
var/path = input("Select the path of the object you wish to create.", "Path", /obj) in GLOB.create_object_forms
var/html_form = GLOB.create_object_forms[path]
diff --git a/code/modules/admin/create_turf.dm b/code/modules/admin/create_turf.dm
index c65c7b22b1a..9ef3b465194 100644
--- a/code/modules/admin/create_turf.dm
+++ b/code/modules/admin/create_turf.dm
@@ -1,5 +1,5 @@
GLOBAL_VAR(create_turf_html)
-/datum/admins/proc/create_turf(var/mob/user)
+/datum/admins/proc/create_turf(mob/user)
if(!GLOB.create_turf_html)
var/turfjs = null
turfjs = jointext(typesof(/turf), ";")
diff --git a/code/modules/admin/db_ban/functions.dm b/code/modules/admin/db_ban/functions.dm
index 105c6bd6778..24c2c558e2e 100644
--- a/code/modules/admin/db_ban/functions.dm
+++ b/code/modules/admin/db_ban/functions.dm
@@ -1,6 +1,6 @@
#define MAX_ADMIN_BANS_PER_ADMIN 1
-/datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null, var/banip = null, var/bancid = null)
+/datum/admins/proc/DB_ban_record(bantype, mob/banned_mob, duration = -1, reason, job = "", rounds = 0, banckey = null, banip = null, bancid = null)
if(!check_rights(R_BAN)) return
@@ -186,7 +186,7 @@
else
flag_account_for_forum_sync(ckey)
-/datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
+/datum/admins/proc/DB_ban_unban(ckey, bantype, job = "")
if(!check_rights(R_BAN)) return
@@ -275,7 +275,7 @@
else
flag_account_for_forum_sync(ckey)
-/datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
+/datum/admins/proc/DB_ban_edit(banid = null, param = null)
if(!check_rights(R_BAN)) return
@@ -361,7 +361,7 @@
to_chat(usr, "Cancelled")
return
-/datum/admins/proc/DB_ban_unban_by_id(var/id)
+/datum/admins/proc/DB_ban_unban_by_id(id)
if(!check_rights(R_BAN))
return
@@ -428,7 +428,7 @@
holder.DB_ban_panel()
-/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/dbbantype = null, var/match = null)
+/datum/admins/proc/DB_ban_panel(playerckey = null, adminckey = null, playerip = null, playercid = null, dbbantype = null, match = null)
if(!usr.client)
return
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index 470293bfe76..2aacdb50b54 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -78,7 +78,7 @@ proc/admin_proc()
NOTE: it checks usr! not src! So if you're checking somebody's rank in a proc which they did not call
you will have to do something like if(client.holder.rights & R_ADMIN) yourself.
*/
-/proc/check_rights(rights_required, show_msg=1, var/mob/user = usr)
+/proc/check_rights(rights_required, show_msg=1, mob/user = usr)
if(user && user.client)
if(rights_required)
if(user.client.holder)
diff --git a/code/modules/admin/ipintel.dm b/code/modules/admin/ipintel.dm
index 70d02303ed7..b0d411a2727 100644
--- a/code/modules/admin/ipintel.dm
+++ b/code/modules/admin/ipintel.dm
@@ -83,7 +83,7 @@
qdel(query_add_ip_intel)
-/proc/ip_intel_query(ip, var/retryed=0)
+/proc/ip_intel_query(ip, retryed=0)
. = -1 //default
if(!ip)
return
diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm
index dc55605d202..0abbb877350 100644
--- a/code/modules/admin/permissionverbs/permissionedit.dm
+++ b/code/modules/admin/permissionverbs/permissionedit.dm
@@ -51,7 +51,7 @@
usr << browse(output,"window=editrights;size=600x500")
-/datum/admins/proc/log_admin_rank_modification(var/adm_ckey, var/new_rank)
+/datum/admins/proc/log_admin_rank_modification(adm_ckey, new_rank)
if(config.admin_legacy_system) return
if(!usr.client)
@@ -134,7 +134,7 @@
qdel(log_query)
to_chat(usr, "Admin rank changed.")
-/datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission)
+/datum/admins/proc/log_admin_permission_modification(adm_ckey, new_permission)
if(IsAdminAdvancedProcCall())
to_chat(usr, "Admin edit blocked: Advanced ProcCall detected.")
message_admins("[key_name(usr)] attempted to edit admin ranks via advanced proc-call")
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 2986035e15a..248e1e262c2 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -494,9 +494,6 @@
if(SSticker.mode.vampire_enthralled.len)
dat += check_role_table("Vampire Thralls", SSticker.mode.vampire_enthralled)
- if(SSticker.mode.devils.len)
- dat += check_role_table("Devils", SSticker.mode.devils)
-
if(SSticker.mode.xenos.len)
dat += check_role_table("Xenos", SSticker.mode.xenos)
diff --git a/code/modules/admin/stickyban.dm b/code/modules/admin/stickyban.dm
index 61759f2e36d..0c2af216d2e 100644
--- a/code/modules/admin/stickyban.dm
+++ b/code/modules/admin/stickyban.dm
@@ -167,7 +167,7 @@
"}
usr << browse(html,"window=stickybans;size=700x400")
-/proc/get_stickyban_from_ckey(var/ckey)
+/proc/get_stickyban_from_ckey(ckey)
if(!ckey)
return null
ckey = ckey(ckey)
@@ -177,7 +177,7 @@
. = stickyban2list(world.GetConfig("ban",key))
break
-/proc/stickyban2list(var/ban)
+/proc/stickyban2list(ban)
if(!ban)
return null
. = params2list(ban)
@@ -186,7 +186,7 @@
.["IP"] = splittext(.["IP"], ",")
.["computer_id"] = splittext(.["computer_id"], ",")
-/proc/list2stickyban(var/list/ban)
+/proc/list2stickyban(list/ban)
if(!ban || !islist(ban))
return null
. = ban.Copy()
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index aa10d51ce1d..35a48a0bf16 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2630,7 +2630,7 @@
fax_panel(usr)
else if(href_list["getplaytimewindow"])
- if(!check_rights(R_ADMIN))
+ if(!check_rights(R_ADMIN | R_MOD | R_MENTOR))
return
var/mob/M = locateUID(href_list["getplaytimewindow"])
if(!istype(M, /mob))
@@ -2930,20 +2930,32 @@
GLOB.event_announcement.Announce("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.")
if("power")
- SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All APCs")
- log_admin("[key_name(usr)] made all areas powered", 1)
- message_admins("[key_name_admin(usr)] made all areas powered", 1)
- power_restore()
+ switch(alert("What Would You Like to Do?", "Make All Areas Powered", "Power all APCs", "Repair all APCs", "Repair and Power APCs")) //Alert notification in this code for standarization purposes
+ if("Power all APCs")
+ power_restore(TRUE, 0)
+ SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power all APCs")
+ log_and_message_admins("[key_name_admin(usr)] powered all APCs", 1)
+ if("Repair all APCs")
+ power_restore(TRUE, 1)
+ SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Repair all APCs")
+ log_and_message_admins("[key_name_admin(usr)] repaired all APCs", 1)
+ if("Repair and Power APCs")
+ power_restore(TRUE, 2)
+ SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Repair and Power all APCs")
+ log_and_message_admins("[key_name_admin(usr)] repaired and powered all APCs", 1)
if("unpower")
- SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Depower All APCs")
- log_admin("[key_name(usr)] made all areas unpowered", 1)
- message_admins("[key_name_admin(usr)] made all areas unpowered", 1)
- power_failure()
+ if(alert("What Would You Like to Do?", "Make All Areas Unpowered", "Depower all APCs", "Short out APCs") == "Depower all APCs")
+ depower_apcs()
+ SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Depower all APCs")
+ log_and_message_admins("[key_name_admin(usr)] made all areas unpowered", 1)
+ else
+ power_failure()
+ SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Short out APCs")
+ log_and_message_admins("[key_name_admin(usr)] has shorted APCs", 1)
if("quickpower")
- SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All SMESs")
- log_admin("[key_name(usr)] made all SMESs powered", 1)
- message_admins("[key_name_admin(usr)] made all SMESs powered", 1)
power_restore_quick()
+ SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All SMESs")
+ log_and_message_admins("[key_name(usr)] made all SMESs powered", 1)
if("prisonwarp")
if(!SSticker)
alert("The game hasn't started yet!", null, null, null, null, null)
@@ -3544,8 +3556,10 @@
var/datum/browser/popup = new(usr, "view_karma", "Karma stats for [target_ckey]", 600, 300)
popup.set_content(dat)
popup.open(FALSE)
+ else if(href_list["who_advanced"])
+ usr.client.who_advanced()
-/client/proc/create_eventmob_for(var/mob/living/carbon/human/H, var/killthem = 0)
+/client/proc/create_eventmob_for(mob/living/carbon/human/H, killthem = 0)
if(!check_rights(R_EVENT))
return
var/admin_outfits = subtypesof(/datum/outfit/admin)
@@ -3605,7 +3619,7 @@
tatorhud.join_hud(hunter_mob)
set_antag_hud(hunter_mob, "hudsyndicate")
-/proc/admin_jump_link(var/atom/target)
+/proc/admin_jump_link(atom/target)
if(!target) return
// The way admin jump links handle their src is weirdly inconsistent...
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index c4eabef3eae..ad8b1ff90d0 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -437,7 +437,7 @@
return v
-/proc/SDQL_function(var/datum/object, var/procname, var/list/arguments, source)
+/proc/SDQL_function(datum/object, procname, list/arguments, source)
var/list/new_args = list()
for(var/arg in arguments)
new_args[++new_args.len] = SDQL_expression(source, arg)
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm
index 50c852af03b..98334649315 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm
@@ -311,7 +311,7 @@
//assignment: '=' expression
-/datum/SDQL_parser/proc/assignment(var/i, var/list/node, var/list/assignment_list = list())
+/datum/SDQL_parser/proc/assignment(i, list/node, list/assignment_list = list())
assignment_list += token(i)
if(token(i + 1) == ".")
@@ -415,7 +415,7 @@
return i + 1
//array: '{' expression, expression, ... '}'
-/datum/SDQL_parser/proc/array(var/i, var/list/node)
+/datum/SDQL_parser/proc/array(i, list/node)
// Arrays get turned into this: list("{", list(exp_1a = exp_1b, ...), ...), "{" is to mark the next node as an array.
if(copytext(token(i), 1, 2) != "{")
parse_error("Expected an array but found '[token(i)]'")
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 00db28c83e5..ed2aff985f1 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -1,23 +1,56 @@
-/client/proc/Jump(area/A in return_sorted_areas())
- set name = "Jump to Area"
- set desc = "Area to jump to"
+/client/proc/jump_to()
+ set name = "Jump to..."
+ set desc = "Area, Mob, Key or Coordinate"
set category = "Admin"
+ var/list/choices = list("Area", "Mob", "Key", "Coordinates")
if(!check_rights(R_ADMIN))
return
- if(!A)
+ var/chosen = input(src, null, "Jump to...") as null|anything in choices
+ if(!chosen)
+ return
+
+ var/jumping // Thing to jump to
+ switch(chosen)
+ if("Area")
+ jumping = input(src, "Area to jump to", "Jump to Area") as null|anything in return_sorted_areas()
+ if(jumping)
+ return jumptoarea(jumping)
+ if("Mob")
+ jumping = input(src, "Mob to jump to", "Jump to Mob") as null|anything in GLOB.mob_list
+ if(jumping)
+ return jumptomob(jumping)
+ if("Key")
+ jumping = input(src, "Key to jump to", "Jump to Key") as null|anything in sortKey(GLOB.clients)
+ if(jumping)
+ return jumptokey(jumping)
+ if("Coordinates")
+ var/x = input(src, "X Coordinate", "Jump to Coordinates") as null|num
+ if(!x)
+ return
+ var/y = input(src, "Y Coordinate", "Jump to Coordinates") as null|num
+ if(!y)
+ return
+ var/z = input(src, "Z Coordinate", "Jump to Coordinates") as null|num
+ if(!z)
+ return
+ return jumptocoord(x, y, z)
+
+
+/client/proc/jumptoarea(area/A)
+ if(!A || !check_rights(R_ADMIN))
return
var/list/turfs = list()
for(var/turf/T in A)
if(T.density)
continue
- if(locate(/obj/structure/grille, T)) // Quick check to not spawn in windows
+ if(locate(/obj/structure/grille) in T) // Quick check to not spawn in windows
continue
- turfs.Add(T)
+ turfs += T
- var/turf/T = pick_n_take(turfs)
+ var/turf/T = safepick(turfs)
if(!T)
to_chat(src, "Nowhere to jump to!")
return
@@ -32,7 +65,7 @@
message_admins("[key_name_admin(usr)] jumped to [A]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Area") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/jumptoturf(var/turf/T in world)
+/client/proc/jumptoturf(turf/T in world)
set name = "Jump to Turf"
set category = null
@@ -49,11 +82,9 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
-/client/proc/jumptomob(var/mob/M in GLOB.mob_list)
- set category = "Admin"
+/client/proc/jumptomob(mob/M)
set name = "Jump to Mob"
-
- if(!check_rights(R_ADMIN))
+ if(!M || !check_rights(R_ADMIN))
return
log_admin("[key_name(usr)] jumped to [key_name(M)]")
@@ -72,9 +103,6 @@
to_chat(A, "This mob is not located in the game world.")
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
- set category = "Admin"
- set name = "Jump to Coordinate"
-
if(!isobserver(usr) && !check_rights(R_ADMIN)) // Only admins can jump without being a ghost
return
@@ -91,21 +119,10 @@
if(!isobserver(usr))
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
-/client/proc/jumptokey()
- set category = "Admin"
- set name = "Jump to Key"
-
- if(!check_rights(R_ADMIN))
+/client/proc/jumptokey(client/C)
+ if(!C?.mob || !check_rights(R_ADMIN))
return
-
- var/list/keys = list()
- for(var/mob/M in GLOB.player_list)
- keys += M.client
- var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
- if(!selection)
- to_chat(src, "No keys found.")
- return
- var/mob/M = selection:mob
+ var/mob/M = C.mob
log_admin("[key_name(usr)] jumped to [key_name(M)]")
if(!isobserver(usr))
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
@@ -116,7 +133,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/Getmob(var/mob/M in GLOB.mob_list)
+/client/proc/Getmob(mob/M in GLOB.mob_list)
set category = null
set name = "Get Mob"
set desc = "Mob to teleport"
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index c27f4502af2..b09941d0f06 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -171,7 +171,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey
#endif
-/client/proc/callproc_datum(var/A as null|area|mob|obj|turf)
+/client/proc/callproc_datum(A as null|area|mob|obj|turf)
set category = null
set name = "Atom ProcCall"
@@ -284,7 +284,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
usr.show_message(t, 1)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Air Status (Location)") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_robotize(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_admin_robotize(mob/M in GLOB.mob_list)
set category = "Event"
set name = "Make Robot"
@@ -302,7 +302,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
else
alert("Invalid mob")
-/client/proc/cmd_admin_animalize(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_admin_animalize(mob/M in GLOB.mob_list)
set category = "Event"
set name = "Make Simple Animal"
@@ -326,7 +326,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
M.Animalize()
-/client/proc/makepAI(var/turf/T in GLOB.mob_list)
+/client/proc/makepAI(turf/T in GLOB.mob_list)
set category = "Event"
set name = "Make pAI"
set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI"
@@ -362,7 +362,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
GLOB.paiController.pai_candidates.Remove(candidate)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make pAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_alienize(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_admin_alienize(mob/M in GLOB.mob_list)
set category = "Event"
set name = "Make Alien"
@@ -382,7 +382,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
else
alert("Invalid mob")
-/client/proc/cmd_admin_slimeize(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_admin_slimeize(mob/M in GLOB.mob_list)
set category = "Event"
set name = "Make slime"
@@ -402,7 +402,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
else
alert("Invalid mob")
-/client/proc/cmd_admin_super(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_admin_super(mob/M in GLOB.mob_list)
set category = "Event"
set name = "Make Superhero"
@@ -455,7 +455,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Powernets") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_grantfullaccess(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_admin_grantfullaccess(mob/M in GLOB.mob_list)
set category = "Admin"
set name = "Grant Full Access"
@@ -489,7 +489,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
log_admin("[key_name(src)] has granted [M.key] full access.")
message_admins("[key_name_admin(usr)] has granted [M.key] full access.", 1)
-/client/proc/cmd_assume_direct_control(var/mob/M in GLOB.mob_list)
+/client/proc/cmd_assume_direct_control(mob/M in GLOB.mob_list)
set category = "Admin"
set name = "Assume direct control"
set desc = "Direct intervention"
@@ -845,7 +845,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
usr << browse(dat, "window=simpledellog")
-/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
+/client/proc/cmd_admin_toggle_block(mob/M, block)
if(!check_rights(R_SPAWN))
return
diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm
index cc9197f24a5..542d5a5b5fe 100644
--- a/code/modules/admin/verbs/massmodvar.dm
+++ b/code/modules/admin/verbs/massmodvar.dm
@@ -1,4 +1,4 @@
-/client/proc/cmd_mass_modify_object_variables(atom/A, var/var_name)
+/client/proc/cmd_mass_modify_object_variables(atom/A, var_name)
set category = "Debug"
set name = "Mass Edit Variables"
set desc="(target) Edit all instances of a target item's variables"
@@ -205,7 +205,7 @@
log_admin("[key_name(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)")
message_admins("[key_name_admin(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)")
-/proc/get_all_of_type(var/T, subtypes = TRUE)
+/proc/get_all_of_type(T, subtypes = TRUE)
var/list/typecache = list()
typecache[T] = 1
if(subtypes)
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm
index 079446b0994..975071350fb 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/verbs/modifyvariables.dm
@@ -2,7 +2,7 @@ GLOBAL_LIST_INIT(VVlocked, list("vars", "var_edited", "client", "firemut", "ishu
GLOBAL_LIST_INIT(VVicon_edit_lock, list("icon", "icon_state", "overlays", "underlays", "resize")) // R_EVENT | R_DEBUG
GLOBAL_LIST_INIT(VVckey_edit, list("key", "ckey")) // R_EVENT | R_DEBUG
GLOBAL_LIST_INIT(VVpixelmovement, list("step_x", "step_y", "step_size", "bound_height", "bound_width", "bound_x", "bound_y")) // R_DEBUG + warning
-/client/proc/vv_get_class(var/var_value)
+/client/proc/vv_get_class(var_value)
if(isnull(var_value))
. = VV_NULL
@@ -268,7 +268,7 @@ GLOBAL_LIST_INIT(VVpixelmovement, list("step_x", "step_y", "step_size", "bound_h
//FALSE = no subtypes, strict exact type pathing (or the type doesn't have subtypes)
//TRUE = Yes subtypes
//NULL = User cancelled at the prompt or invalid type given
-/client/proc/vv_subtype_prompt(var/type)
+/client/proc/vv_subtype_prompt(type)
if(!ispath(type))
return
var/list/subtypes = subtypesof(type)
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 58677605714..66bc9aae6cc 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -25,7 +25,7 @@
usr << browse(dat, "window=oneclickantag;size=400x400")
return
-/datum/admins/proc/CandCheck(var/role = null, var/mob/living/carbon/human/M, var/datum/game_mode/temp = null)
+/datum/admins/proc/CandCheck(role = null, mob/living/carbon/human/M, datum/game_mode/temp = null)
// You pass in ROLE define (optional), the applicant, and the gamemode, and it will return true / false depending on whether the applicant qualify for the candidacy in question
if(jobban_isbanned(M, "Syndicate"))
return FALSE
@@ -368,7 +368,7 @@
return 1
-/proc/makeBody(var/mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character
+/proc/makeBody(mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character
if(!G_found || !G_found.key) return
//First we spawn a dude.
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index ef76d110dc7..5bb640ed8ea 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -41,7 +41,7 @@
SSblackbox.record_feedback("tally", "admin_verb", 1, "Pray") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/proc/Centcomm_announce(var/text , var/mob/Sender)
+/proc/Centcomm_announce(text, mob/Sender)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
msg = "CENTCOMM: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")])): [msg]"
for(var/client/X in GLOB.admins)
@@ -50,7 +50,7 @@
if(X.prefs.sound & SOUND_ADMINHELP)
SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
-/proc/Syndicate_announce(var/text , var/mob/Sender)
+/proc/Syndicate_announce(text, mob/Sender)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
msg = "SYNDICATE: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]): [msg]"
for(var/client/X in GLOB.admins)
@@ -59,7 +59,7 @@
if(X.prefs.sound & SOUND_ADMINHELP)
SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
-/proc/HONK_announce(var/text , var/mob/Sender)
+/proc/HONK_announce(text, mob/Sender)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
msg = "HONK: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (RPLY): [msg]"
for(var/client/X in GLOB.admins)
@@ -68,7 +68,7 @@
if(X.prefs.sound & SOUND_ADMINHELP)
SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
-/proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning)
+/proc/ERT_Announce(text, mob/Sender, repeat_warning)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
msg = "ERT REQUEST: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (RESPOND): [msg]"
if(repeat_warning)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index bbc849d1fde..484bd321bf1 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -122,7 +122,7 @@
message_admins("GlobalNarrate: [key_name_admin(usr)]: [msg] ", 1)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_direct_narrate(var/mob/M) // Targetted narrate -- TLE
+/client/proc/cmd_admin_direct_narrate(mob/M) // Targetted narrate -- TLE
set category = null
set name = "Direct Narrate"
@@ -526,7 +526,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return 1
-/client/proc/get_ghosts(var/notify = 0,var/what = 2)
+/client/proc/get_ghosts(notify = 0, what = 2)
// what = 1, return ghosts ass list.
// what = 2, return mob list
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 59ab53f3ca6..55895e5b282 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -136,15 +136,14 @@ GLOBAL_VAR_INIT(sent_strike_team, 0)
/client/proc/create_death_commando(obj/spawn_location, is_leader = FALSE)
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
- var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
- var/commando_name = pick(GLOB.last_names)
+ var/commando_name = pick(GLOB.commando_names)
var/datum/preferences/A = new()//Randomize appearance for the commando.
if(is_leader)
A.age = rand(35,45)
A.real_name = "[commando_leader_rank] [commando_name]"
else
- A.real_name = "[commando_rank] [commando_name]"
+ A.real_name = "[commando_name]"
A.copy_to(new_commando)
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index d3d663d90a7..c1905917c9d 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -248,6 +248,7 @@
owner.announce_objectives()
if(should_give_codewords)
give_codewords()
+ to_chat(owner.current, "For more information, check the wiki page: ([config.wikiurl]/index.php/Traitor)")
/datum/antagonist/traitor/proc/update_traitor_icons_added(datum/mind/traitor_mind)
@@ -361,7 +362,7 @@
return 1
-/datum/antagonist/traitor/proc/assign_exchange_role(var/datum/mind/owner)
+/datum/antagonist/traitor/proc/assign_exchange_role(datum/mind/owner)
//set faction
var/faction = "red"
if(owner == SSticker.mode.exchange_blue)
diff --git a/code/modules/arcade/arcade_base.dm b/code/modules/arcade/arcade_base.dm
index df007b83ad3..2a2a5edaec0 100644
--- a/code/modules/arcade/arcade_base.dm
+++ b/code/modules/arcade/arcade_base.dm
@@ -59,7 +59,7 @@
to_chat(user, "Someone else is already playing this machine, please wait your turn!")
return
-/obj/machinery/arcade/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/machinery/arcade/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/screwdriver) && anchored)
playsound(src.loc, O.usesound, 50, 1)
panel_open = !panel_open
@@ -93,7 +93,7 @@
cashmoney.use(token_price)
return 1
-/obj/machinery/arcade/proc/pay_with_card(var/obj/item/card/id/I, var/mob/user)
+/obj/machinery/arcade/proc/pay_with_card(obj/item/card/id/I, mob/user)
visible_message("[usr] swipes a card through [src].")
var/datum/money_account/customer_account = attempt_account_access_nosec(I.associated_account_number)
if(!customer_account)
diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm
index 63e5e9e9c57..3adc53684cf 100644
--- a/code/modules/arcade/arcade_prize.dm
+++ b/code/modules/arcade/arcade_prize.dm
@@ -69,7 +69,7 @@
w_class = WEIGHT_CLASS_TINY
max_amount = 9999 //Dang that's a lot of tickets
-/obj/item/stack/tickets/New(var/loc, var/amount=null)
+/obj/item/stack/tickets/New(loc, amount=null)
..()
update_icon()
diff --git a/code/modules/arcade/prize_counter.dm b/code/modules/arcade/prize_counter.dm
index 9c8a4dea685..364486792d4 100644
--- a/code/modules/arcade/prize_counter.dm
+++ b/code/modules/arcade/prize_counter.dm
@@ -31,7 +31,7 @@
icon_state = "prize_counter-on"
return
-/obj/machinery/prize_counter/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/machinery/prize_counter/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/stack/tickets))
var/obj/item/stack/tickets/T = O
if(user.unEquip(T)) //Because if you can't drop it for some reason, you shouldn't be increasing the tickets var
diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm
index 2b9f17c3d04..9e402020242 100644
--- a/code/modules/arcade/prize_datums.dm
+++ b/code/modules/arcade/prize_datums.dm
@@ -7,7 +7,7 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new())
for(var/itempath in subtypesof(/datum/prize_item))
prizes += new itempath()
-/datum/prizes/proc/PlaceOrder(var/obj/machinery/prize_counter/prize_counter, var/itemID)
+/datum/prizes/proc/PlaceOrder(obj/machinery/prize_counter/prize_counter, itemID)
if(!prize_counter.Adjacent(usr))
to_chat(usr, "You need to be closer!")
return
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 87fefe4fc65..7f3edf98f46 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -16,7 +16,7 @@
/obj/item/assembly_holder/proc/attach(obj/item/D, obj/item/D2, mob/user)
return
-/obj/item/assembly_holder/proc/process_activation(var/obj/item/D)
+/obj/item/assembly_holder/proc/process_activation(obj/item/D)
return
/obj/item/assembly_holder/IsAssemblyHolder()
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 9de2f32ed6f..d1efa862a63 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -116,7 +116,7 @@
qdel(first)
return TRUE
-/obj/item/assembly/infra/equipped(var/mob/user, var/slot)
+/obj/item/assembly/infra/equipped(mob/user, slot)
qdel(first)
return ..()
diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm
index d5e8c50e074..8c1fcdab34c 100644
--- a/code/modules/atmospherics/environmental/LINDA_system.dm
+++ b/code/modules/atmospherics/environmental/LINDA_system.dm
@@ -1,4 +1,4 @@
-/turf/proc/CanAtmosPass(var/turf/T)
+/turf/proc/CanAtmosPass(turf/T)
if(!istype(T)) return 0
var/R
if(blocks_air || T.blocks_air)
@@ -101,26 +101,26 @@
return adjacent_turfs
-/atom/movable/proc/air_update_turf(var/command = 0)
+/atom/movable/proc/air_update_turf(command = 0)
if(!istype(loc,/turf) && command)
return
for(var/turf/T in locs) // used by double wide doors and other nonexistant multitile structures
T.air_update_turf(command)
-/turf/proc/air_update_turf(var/command = 0)
+/turf/proc/air_update_turf(command = 0)
if(command)
CalculateAdjacentTurfs()
if(SSair)
SSair.add_to_active(src,command)
-/atom/movable/proc/move_update_air(var/turf/T)
+/atom/movable/proc/move_update_air(turf/T)
if(istype(T,/turf))
T.air_update_turf(1)
air_update_turf(1)
-/atom/movable/proc/atmos_spawn_air(var/text, var/amount) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires
+/atom/movable/proc/atmos_spawn_air(text, amount) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires
var/turf/simulated/T = get_turf(src)
if(!istype(T))
return
diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
index f2a37876881..cd5186b1d7f 100644
--- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
+++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
@@ -273,6 +273,7 @@
var/atmos_overlay = get_atmos_overlay_by_name(atmos_overlay_type)
if(atmos_overlay)
vis_contents -= atmos_overlay
+ atmos_overlay_type = null
atmos_overlay = get_atmos_overlay_by_name(new_overlay_type)
if(atmos_overlay)
@@ -308,7 +309,7 @@
T.consider_pressure_difference(src, difference)
last_share_check()
-/turf/proc/consider_pressure_difference(var/turf/simulated/T, var/difference)
+/turf/proc/consider_pressure_difference(turf/simulated/T, difference)
SSair.high_pressure_delta |= src
if(difference > pressure_difference)
pressure_direction = get_dir(src, T)
@@ -354,13 +355,13 @@
if(SSair)
SSair.excited_groups += src
-/datum/excited_group/proc/add_turf(var/turf/simulated/T)
+/datum/excited_group/proc/add_turf(turf/simulated/T)
turf_list += T
T.excited_group = src
T.recently_active = 1
reset_cooldowns()
-/datum/excited_group/proc/merge_groups(var/datum/excited_group/E)
+/datum/excited_group/proc/merge_groups(datum/excited_group/E)
if(length(turf_list) > length(E.turf_list))
SSair.excited_groups -= E
for(var/turf/simulated/T in E.turf_list)
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 35eafba791b..13e2d7bcb16 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -144,7 +144,7 @@
/obj/machinery/alarm/kitchen_cold_room
preset = AALARM_PRESET_COLDROOM
-/obj/machinery/alarm/proc/apply_preset(var/no_cycle_after=0)
+/obj/machinery/alarm/proc/apply_preset(no_cycle_after=0)
// Propogate settings.
for(var/obj/machinery/alarm/AA in alarm_area)
if(!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.preset != src.preset)
@@ -1052,8 +1052,7 @@
stat &= ~NOPOWER
else
stat |= NOPOWER
- spawn(rand(0,15))
- update_icon()
+ update_icon()
/obj/machinery/alarm/obj_break(damage_flag)
..()
diff --git a/code/modules/atmospherics/machinery/atmospherics.dm b/code/modules/atmospherics/machinery/atmospherics.dm
index d5e6176ca22..8a77e3908f1 100644
--- a/code/modules/atmospherics/machinery/atmospherics.dm
+++ b/code/modules/atmospherics/machinery/atmospherics.dm
@@ -83,14 +83,14 @@ Pipelines + Other Objects -> Pipe network
return TRUE
-/obj/machinery/atmospherics/proc/color_cache_name(var/obj/machinery/atmospherics/node)
+/obj/machinery/atmospherics/proc/color_cache_name(obj/machinery/atmospherics/node)
//Don't use this for standard pipes
if(!istype(node))
return null
return node.pipe_color
-/obj/machinery/atmospherics/proc/add_underlay(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type)
+/obj/machinery/atmospherics/proc/add_underlay(turf/T, obj/machinery/atmospherics/node, direction, icon_connect_type)
if(node)
if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
//underlays += SSair.icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node))
@@ -253,7 +253,7 @@ Pipelines + Other Objects -> Pipe network
build_network()
// Find a connecting /obj/machinery/atmospherics in specified direction.
-/obj/machinery/atmospherics/proc/findConnecting(var/direction)
+/obj/machinery/atmospherics/proc/findConnecting(direction)
for(var/obj/machinery/atmospherics/target in get_step(src,direction))
var/can_connect = check_connect_types(target, src)
if(can_connect && (target.initialize_directions & get_dir(target,src)))
@@ -292,7 +292,7 @@ Pipelines + Other Objects -> Pipe network
spawn(1)
user.canmove = 1
-/obj/machinery/atmospherics/AltClick(var/mob/living/L)
+/obj/machinery/atmospherics/AltClick(mob/living/L)
if(is_type_in_list(src, GLOB.ventcrawl_machinery))
L.handle_ventcrawl(src)
return
@@ -301,7 +301,7 @@ Pipelines + Other Objects -> Pipe network
/obj/machinery/atmospherics/proc/can_crawl_through()
return 1
-/obj/machinery/atmospherics/proc/change_color(var/new_color)
+/obj/machinery/atmospherics/proc/change_color(new_color)
//only pass valid pipe colors please ~otherwise your pipe will turn invisible
if(!pipe_color_check(new_color))
return
@@ -310,7 +310,7 @@ Pipelines + Other Objects -> Pipe network
update_icon()
// Additional icon procs
-/obj/machinery/atmospherics/proc/universal_underlays(var/obj/machinery/atmospherics/node, var/direction)
+/obj/machinery/atmospherics/proc/universal_underlays(obj/machinery/atmospherics/node, direction)
var/turf/T = get_turf(src)
if(!istype(T)) return
if(node)
@@ -332,7 +332,7 @@ Pipelines + Other Objects -> Pipe network
add_underlay_adapter(T, , direction, "-scrubbers")
add_underlay_adapter(T, , direction, "")
-/obj/machinery/atmospherics/proc/add_underlay_adapter(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) //modified from add_underlay, does not make exposed underlays
+/obj/machinery/atmospherics/proc/add_underlay_adapter(turf/T, obj/machinery/atmospherics/node, direction, icon_connect_type) //modified from add_underlay, does not make exposed underlays
if(node)
if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/binary_atmos_base.dm b/code/modules/atmospherics/machinery/components/binary_devices/binary_atmos_base.dm
index 0a8b9eb95a4..b0ca5531af1 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/binary_atmos_base.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/binary_atmos_base.dm
@@ -134,7 +134,7 @@
else if(Old == parent2)
parent2 = New
-/obj/machinery/atmospherics/binary/unsafe_pressure_release(var/mob/user,var/pressures)
+/obj/machinery/atmospherics/binary/unsafe_pressure_release(mob/user, pressures)
..()
var/turf/T = get_turf(src)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
index 11e9897136f..0ff312806e9 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
@@ -71,7 +71,7 @@
add_underlay(T, node1, turn(dir, -180))
add_underlay(T, node2, dir)
-/obj/machinery/atmospherics/binary/dp_vent_pump/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/binary/dp_vent_pump/update_icon(safety = 0)
..()
if(!check_icon_cache())
@@ -227,22 +227,20 @@
)
if(signal.data["status"])
- spawn(2)
- broadcast_status()
+ broadcast_status()
return //do not update_icon
- spawn(2)
- broadcast_status()
+ broadcast_status()
update_icon()
-/obj/machinery/atmospherics/binary/dp_vent_pump/attackby(var/obj/item/W as obj, var/mob/user as mob)
+/obj/machinery/atmospherics/binary/dp_vent_pump/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/multitool))
update_multitool_menu(user)
return 1
return ..()
-/obj/machinery/atmospherics/binary/dp_vent_pump/multitool_menu(var/mob/user,var/obj/item/multitool/P)
+/obj/machinery/atmospherics/binary/dp_vent_pump/multitool_menu(mob/user, obj/item/multitool/P)
return {"
- Frequency: [format_frequency(frequency)] GHz (Reset)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
index 2dd2705901d..2c12b3fa6a6 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
@@ -110,12 +110,10 @@
investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos")
if("status" in signal.data)
- spawn(2)
- broadcast_status()
+ broadcast_status()
return //do not update_icon
- spawn(2)
- broadcast_status()
+ broadcast_status()
update_icon()
return
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
index c8d96628433..fec536ad0c9 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
@@ -165,12 +165,10 @@ Thus, the two variables affect pump operation are set in New():
investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos")
if(signal.data["status"])
- spawn(2)
- broadcast_status()
+ broadcast_status()
return //do not update_icon
- spawn(2)
- broadcast_status()
+ broadcast_status()
update_icon()
return
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
index dd43bee7b4f..47286270a4c 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
@@ -135,13 +135,13 @@
if(open)
close()
-/obj/machinery/atmospherics/binary/valve/digital/attackby(var/obj/item/W as obj, var/mob/user)
+/obj/machinery/atmospherics/binary/valve/digital/attackby(obj/item/W as obj, mob/user)
if(istype(W, /obj/item/multitool))
update_multitool_menu(user)
return 1
return ..()
-/obj/machinery/atmospherics/binary/valve/digital/multitool_menu(var/mob/user,var/obj/item/multitool/P)
+/obj/machinery/atmospherics/binary/valve/digital/multitool_menu(mob/user, obj/item/multitool/P)
return {"
- Frequency: [format_frequency(frequency)] GHz (Reset)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
index 7f6cc228844..83d01cb20aa 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
@@ -163,12 +163,10 @@ Thus, the two variables affect pump operation are set in New():
investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos")
if(signal.data["status"])
- spawn(2)
- broadcast_status()
+ broadcast_status()
return //do not update_icon
- spawn(2)
- broadcast_status()
+ broadcast_status()
update_icon()
/obj/machinery/atmospherics/binary/volume_pump/attack_hand(mob/user)
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/trinary_base.dm b/code/modules/atmospherics/machinery/components/trinary_devices/trinary_base.dm
index 79fae0f7d88..5b54f0ff91c 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/trinary_base.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/trinary_base.dm
@@ -190,7 +190,7 @@
else if(Old == parent3)
parent3 = New
-/obj/machinery/atmospherics/trinary/unsafe_pressure_release(var/mob/user,var/pressures)
+/obj/machinery/atmospherics/trinary/unsafe_pressure_release(mob/user, pressures)
..()
var/turf/T = get_turf(src)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 8c11ea9618d..01d18336b5c 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -280,7 +280,7 @@
add_fingerprint(usr)
-/obj/machinery/atmospherics/unary/cryo_cell/attackby(var/obj/item/G, var/mob/user, params)
+/obj/machinery/atmospherics/unary/cryo_cell/attackby(obj/item/G, mob/user, params)
if(istype(G, /obj/item/reagent_containers/glass))
var/obj/item/reagent_containers/B = G
if(beaker)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index 8a2e383a710..11c032a522d 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -138,14 +138,12 @@
volume_rate = between(0, number, air_contents.volume)
if(signal.data["status"])
- spawn(2)
- broadcast_status()
+ broadcast_status()
return //do not update_icon
//log_admin("DEBUG \[[world.timeofday]\]: outlet_injector/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
//return
- spawn(2)
- broadcast_status()
+ broadcast_status()
update_icon()
/*hide(var/i) //to make the little pipe section invisible, the icon changes.
@@ -159,7 +157,7 @@
on = 0
return*/
-/obj/machinery/atmospherics/unary/outlet_injector/multitool_menu(var/mob/user,var/obj/item/multitool/P)
+/obj/machinery/atmospherics/unary/outlet_injector/multitool_menu(mob/user, obj/item/multitool/P)
return {"
- Frequency: [format_frequency(frequency)] GHz (Reset)
@@ -180,5 +178,5 @@
/obj/machinery/atmospherics/unary/outlet_injector/interact(mob/user as mob)
update_multitool_menu(user)
-/obj/machinery/atmospherics/unary/outlet_injector/hide(var/i)
+/obj/machinery/atmospherics/unary/outlet_injector/hide(i)
update_underlays()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm
index 7b4ba08af77..eadd1bac280 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm
@@ -35,7 +35,7 @@
return 0
parent.update = 1
-/obj/machinery/atmospherics/unary/portables_connector/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
+/obj/machinery/atmospherics/unary/portables_connector/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/wrench))
if(connected_device)
to_chat(user, "You cannot unwrench this [src], detach [connected_device] first.")
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/unary_base.dm b/code/modules/atmospherics/machinery/components/unary_devices/unary_base.dm
index 08af292d62e..0f838f1dc94 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/unary_base.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/unary_base.dm
@@ -87,7 +87,7 @@
if(Old == parent)
parent = New
-/obj/machinery/atmospherics/unary/unsafe_pressure_release(var/mob/user,var/pressures)
+/obj/machinery/atmospherics/unary/unsafe_pressure_release(mob/user, pressures)
..()
var/turf/T = get_turf(src)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
index e380ddb3b94..d85d502c3ab 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
@@ -379,7 +379,7 @@
/obj/machinery/atmospherics/unary/vent_pump/interact(mob/user as mob)
update_multitool_menu(user)
-/obj/machinery/atmospherics/unary/vent_pump/multitool_menu(var/mob/user,var/obj/item/multitool/P)
+/obj/machinery/atmospherics/unary/vent_pump/multitool_menu(mob/user, obj/item/multitool/P)
return {"
"}
-/obj/machinery/atmospherics/unary/vent_pump/multitool_topic(var/mob/user, var/list/href_list, var/obj/O)
+/obj/machinery/atmospherics/unary/vent_pump/multitool_topic(mob/user, list/href_list, obj/O)
if("set_id" in href_list)
var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag for this machine", src, src.id_tag) as null|text), 1, MAX_MESSAGE_LEN)
if(!newid)
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
index 7048ee61639..7a983e8b7cc 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
@@ -92,7 +92,7 @@
use_power(amount, power_channel)
return 1
-/obj/machinery/atmospherics/unary/vent_scrubber/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/unary/vent_scrubber/update_icon(safety = 0)
..()
plane = FLOOR_PLANE
@@ -215,7 +215,7 @@
if(istype(T))
adjacent_turfs = T.GetAtmosAdjacentTurfs(alldir=1)
-/obj/machinery/atmospherics/unary/vent_scrubber/proc/scrub(var/turf/simulated/tile)
+/obj/machinery/atmospherics/unary/vent_scrubber/proc/scrub(turf/simulated/tile)
if(!tile || !istype(tile))
return 0
@@ -275,7 +275,7 @@
return 1
-/obj/machinery/atmospherics/unary/vent_scrubber/hide(var/i) //to make the little pipe section invisible, the icon changes.
+/obj/machinery/atmospherics/unary/vent_scrubber/hide(i) //to make the little pipe section invisible, the icon changes.
update_icon()
/obj/machinery/atmospherics/unary/vent_scrubber/receive_signal(datum/signal/signal)
@@ -341,7 +341,7 @@
if(old_stat != stat)
update_icon()
-/obj/machinery/atmospherics/unary/vent_scrubber/multitool_menu(var/mob/user,var/obj/item/multitool/P)
+/obj/machinery/atmospherics/unary/vent_scrubber/multitool_menu(mob/user, obj/item/multitool/P)
return {"
"}
-/obj/machinery/atmospherics/unary/vent_scrubber/multitool_topic(var/mob/user, var/list/href_list, var/obj/O)
+/obj/machinery/atmospherics/unary/vent_scrubber/multitool_topic(mob/user, list/href_list, obj/O)
if("set_id" in href_list)
var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag for this machine", src, src:id_tag) as null|text),1,MAX_MESSAGE_LEN)
if(!newid)
@@ -379,7 +379,7 @@
pipe_image.plane = ABOVE_HUD_PLANE
playsound(loc, 'sound/weapons/bladeslice.ogg', 100, TRUE)
-/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
+/obj/machinery/atmospherics/unary/vent_scrubber/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/multitool))
update_multitool_menu(user)
return 1
diff --git a/code/modules/atmospherics/machinery/datum_icon_manager.dm b/code/modules/atmospherics/machinery/datum_icon_manager.dm
index 014fafc5c18..2e0ef593bae 100644
--- a/code/modules/atmospherics/machinery/datum_icon_manager.dm
+++ b/code/modules/atmospherics/machinery/datum_icon_manager.dm
@@ -6,12 +6,12 @@
// atmospherics devices.
//--------------------------------------------
-/proc/pipe_color_lookup(var/color)
+/proc/pipe_color_lookup(color)
for(var/C in GLOB.pipe_colors)
if(color == GLOB.pipe_colors[C])
return "[C]"
-/proc/pipe_color_check(var/color)
+/proc/pipe_color_check(color)
if(!color)
return 1
for(var/C in GLOB.pipe_colors)
@@ -37,7 +37,7 @@
/datum/pipe_icon_manager/New()
check_icons()
-/datum/pipe_icon_manager/proc/get_atmos_icon(var/device, var/dir, var/color, var/state)
+/datum/pipe_icon_manager/proc/get_atmos_icon(device, dir, color, state)
check_icons()
device = "[device]"
diff --git a/code/modules/atmospherics/machinery/other/area_atmos_computer.dm b/code/modules/atmospherics/machinery/other/area_atmos_computer.dm
index d7650d1cb68..52d4cdf8b18 100644
--- a/code/modules/atmospherics/machinery/other/area_atmos_computer.dm
+++ b/code/modules/atmospherics/machinery/other/area_atmos_computer.dm
@@ -112,7 +112,7 @@
scrubber.on = text2num(href_list["toggle"])
scrubber.update_icon()
-/obj/machinery/computer/area_atmos/proc/validscrubber( var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber as obj )
+/obj/machinery/computer/area_atmos/proc/validscrubber(obj/machinery/portable_atmospherics/scrubber/huge/scrubber as obj)
if(!isobj(scrubber) || get_dist(scrubber.loc, src.loc) > src.range || scrubber.loc.z != src.loc.z)
return 0
diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm
index 7c72c9e2b09..84688b03195 100644
--- a/code/modules/atmospherics/machinery/other/meter.dm
+++ b/code/modules/atmospherics/machinery/other/meter.dm
@@ -123,7 +123,7 @@
return ..()
-/obj/machinery/meter/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
+/obj/machinery/meter/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/multitool))
update_multitool_menu(user)
return 1
@@ -162,10 +162,10 @@
target = loc
..()
-/obj/machinery/meter/turf/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
+/obj/machinery/meter/turf/attackby(obj/item/W as obj, mob/user as mob, params)
return
-/obj/machinery/meter/multitool_menu(var/mob/user, var/obj/item/multitool/P)
+/obj/machinery/meter/multitool_menu(mob/user, obj/item/multitool/P)
return {"
Main
diff --git a/code/modules/atmospherics/machinery/pipes/cap.dm b/code/modules/atmospherics/machinery/pipes/cap.dm
index 94ba0b5429c..516660e72ba 100644
--- a/code/modules/atmospherics/machinery/pipes/cap.dm
+++ b/code/modules/atmospherics/machinery/pipes/cap.dm
@@ -16,7 +16,7 @@
..()
initialize_directions = dir
-/obj/machinery/atmospherics/pipe/cap/hide(var/i)
+/obj/machinery/atmospherics/pipe/cap/hide(i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? INVISIBILITY_MAXIMUM : 0
update_icon()
@@ -47,13 +47,13 @@
..()
-/obj/machinery/atmospherics/pipe/cap/change_color(var/new_color)
+/obj/machinery/atmospherics/pipe/cap/change_color(new_color)
..()
//for updating connected atmos device pipes (i.e. vents, manifolds, etc)
if(node)
node.update_underlays()
-/obj/machinery/atmospherics/pipe/cap/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/pipe/cap/update_icon(safety = 0)
..()
if(!check_icon_cache())
diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm
index 17f93dd7a23..ab7196e0864 100644
--- a/code/modules/atmospherics/machinery/pipes/manifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/manifold.dm
@@ -58,7 +58,7 @@
hide(T.intact)
update_icon()
-/obj/machinery/atmospherics/pipe/manifold/hide(var/i)
+/obj/machinery/atmospherics/pipe/manifold/hide(i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? INVISIBILITY_MAXIMUM : 0
@@ -104,7 +104,7 @@
update_icon()
..()
-/obj/machinery/atmospherics/pipe/manifold/change_color(var/new_color)
+/obj/machinery/atmospherics/pipe/manifold/change_color(new_color)
..()
//for updating connected atmos device pipes (i.e. vents, manifolds, etc)
if(node1)
@@ -114,7 +114,7 @@
if(node3)
node3.update_underlays()
-/obj/machinery/atmospherics/pipe/manifold/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/pipe/manifold/update_icon(safety = 0)
..()
if(!check_icon_cache())
diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm
index a5e32eb6f69..0ac16c2c69d 100644
--- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm
+++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm
@@ -76,7 +76,7 @@
..()
-/obj/machinery/atmospherics/pipe/manifold4w/change_color(var/new_color)
+/obj/machinery/atmospherics/pipe/manifold4w/change_color(new_color)
..()
//for updating connected atmos device pipes (i.e. vents, manifolds, etc)
if(node1)
@@ -88,7 +88,7 @@
if(node4)
node4.update_underlays()
-/obj/machinery/atmospherics/pipe/manifold4w/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/pipe/manifold4w/update_icon(safety = 0)
..()
if(!check_icon_cache())
@@ -131,7 +131,7 @@
// 1: 1-4 nodes exist, we continue existing
return 1
-/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i)
+/obj/machinery/atmospherics/pipe/manifold4w/hide(i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? INVISIBILITY_MAXIMUM : 0
diff --git a/code/modules/atmospherics/machinery/pipes/pipe.dm b/code/modules/atmospherics/machinery/pipes/pipe.dm
index 56141b0573d..70c25a7939b 100644
--- a/code/modules/atmospherics/machinery/pipes/pipe.dm
+++ b/code/modules/atmospherics/machinery/pipes/pipe.dm
@@ -75,7 +75,7 @@
/obj/machinery/atmospherics/pipe/setPipenet(datum/pipeline/P)
parent = P
-/obj/machinery/atmospherics/pipe/color_cache_name(var/obj/machinery/atmospherics/node)
+/obj/machinery/atmospherics/pipe/color_cache_name(obj/machinery/atmospherics/node)
if(istype(node, /obj/machinery/atmospherics/pipe/manifold) || istype(node, /obj/machinery/atmospherics/pipe/manifold4w))
if(pipe_color == node.pipe_color)
return node.pipe_color
diff --git a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm
index 70abc375ca2..92c421fbff9 100644
--- a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm
+++ b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm
@@ -128,7 +128,7 @@
/obj/machinery/atmospherics/pipe/simple/pipeline_expansion()
return list(node1, node2)
-/obj/machinery/atmospherics/pipe/simple/change_color(var/new_color)
+/obj/machinery/atmospherics/pipe/simple/change_color(new_color)
..()
//for updating connected atmos device pipes (i.e. vents, manifolds, etc)
if(node1)
@@ -136,7 +136,7 @@
if(node2)
node2.update_underlays()
-/obj/machinery/atmospherics/pipe/simple/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/pipe/simple/update_icon(safety = 0)
..()
if(!check_icon_cache())
@@ -162,6 +162,6 @@
/obj/machinery/atmospherics/pipe/simple/update_underlays()
return
-/obj/machinery/atmospherics/pipe/simple/hide(var/i)
+/obj/machinery/atmospherics/pipe/simple/hide(i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? INVISIBILITY_MAXIMUM : 0
diff --git a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm
index 98390b515c4..fcfe622e483 100644
--- a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm
+++ b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm
@@ -27,7 +27,7 @@
connect_types = list(1,2,3)
icon_state = "map_universal"
-/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(safety = 0)
..()
if(!check_icon_cache())
diff --git a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm
index 7d9abccc394..c2aa015fb23 100644
--- a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm
+++ b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm
@@ -44,7 +44,7 @@
connect_types = list(1,2,3)
icon_state = "map_universal"
-/obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0)
+/obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(safety = 0)
..()
if(!check_icon_cache())
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 07edc75c590..cc4daa540ff 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -278,14 +278,14 @@ update_flag
else if(valve_open && holding)
investigate_log("[key_name(user)] started a transfer into [holding]. ", "atmos")
-/obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user)
+/obj/machinery/portable_atmospherics/canister/attack_ai(mob/user)
add_hiddenprint(user)
return attack_hand(user)
-/obj/machinery/portable_atmospherics/canister/attack_ghost(var/mob/user)
+/obj/machinery/portable_atmospherics/canister/attack_ghost(mob/user)
return ui_interact(user)
-/obj/machinery/portable_atmospherics/canister/attack_hand(var/mob/user)
+/obj/machinery/portable_atmospherics/canister/attack_hand(mob/user)
return ui_interact(user)
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index c3a483c04d8..f11e6e238da 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -33,6 +33,7 @@
var/banType = ROLE_GHOST
var/ghost_usable = TRUE
var/offstation_role = TRUE // If set to true, the role of the user's mind will be set to offstation
+ var/death_cooldown = 0 // How long you have to wait after dying before using it again, in deciseconds. People that join as observers are not included.
/obj/effect/mob_spawn/attack_ghost(mob/user)
var/mob/dead/observer/O = user
@@ -50,6 +51,8 @@
if(!O.can_reenter_corpse)
to_chat(user, "You have forfeited the right to respawn.")
return
+ if(time_check(user))
+ return
var/ghost_role = alert("Become [mob_name]? (Warning, You can no longer be cloned!)",,"Yes","No")
if(ghost_role == "No")
return
@@ -86,6 +89,30 @@
/obj/effect/mob_spawn/proc/equip(mob/M)
return
+/obj/effect/mob_spawn/proc/time_check(mob/user)
+ var/deathtime = world.time - user.timeofdeath
+ var/joinedasobserver = FALSE
+ if(isobserver(user))
+ var/mob/dead/observer/G = user
+ if(G.started_as_observer)
+ joinedasobserver = TRUE
+
+ var/deathtimeminutes = round(deathtime / 600)
+ var/pluralcheck = "minute"
+ if(deathtimeminutes == 0)
+ pluralcheck = ""
+ else if(deathtimeminutes == 1)
+ pluralcheck = " [deathtimeminutes] minute and"
+ else if(deathtimeminutes > 1)
+ pluralcheck = " [deathtimeminutes] minutes and"
+ var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10, 1)
+
+ if(deathtime <= death_cooldown && !joinedasobserver)
+ to_chat(user, "You have been dead for[pluralcheck] [deathtimeseconds] seconds.")
+ to_chat(user, "You must wait [death_cooldown / 600] minutes to respawn!")
+ return TRUE
+ return FALSE
+
/obj/effect/mob_spawn/proc/create(ckey, flavour = TRUE, name)
var/mob/living/M = new mob_type(get_turf(src)) //living mobs only
var/mob/living/carbon/human/H = M
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 19cefa36fa5..ba78a3f9b02 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -279,7 +279,7 @@ GLOBAL_DATUM_INIT(the_gateway, /obj/machinery/gateway/centerstation, null)
if(M.client)
M.client.move_delay = max(world.time + 5, M.client.move_delay)
-/obj/machinery/gateway/centeraway/proc/exilecheck(var/mob/living/carbon/M)
+/obj/machinery/gateway/centeraway/proc/exilecheck(mob/living/carbon/M)
for(var/obj/item/implant/exile/E in M)//Checking that there is an exile implant in the contents
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
to_chat(M, "The station gate has detected your exile implant and is blocking your entry.")
diff --git a/code/modules/awaymissions/mission_code/academy.dm b/code/modules/awaymissions/mission_code/academy.dm
index 4421bc9c232..82e0789e955 100644
--- a/code/modules/awaymissions/mission_code/academy.dm
+++ b/code/modules/awaymissions/mission_code/academy.dm
@@ -94,7 +94,7 @@
smoke.set_up(amount, 0, drop_location())
smoke.start()
-/obj/item/dice/d20/fate/proc/effect(var/mob/living/carbon/human/user, roll)
+/obj/item/dice/d20/fate/proc/effect(mob/living/carbon/human/user, roll)
var/turf/T = get_turf(src)
switch(roll)
if(1)
diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm
index 0996f214691..2c7be0f1329 100644
--- a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm
+++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm
@@ -61,6 +61,7 @@
anchored = FALSE
move_resist = MOVE_FORCE_NORMAL
density = FALSE
+ death_cooldown = 300 SECONDS
var/has_owner = FALSE
var/can_transfer = TRUE //if golems can switch bodies to this new shell
var/mob/living/owner = null //golem's owner if it has one
@@ -134,6 +135,25 @@
user.death()
return
+/obj/effect/mob_spawn/human/golem/attackby(obj/item/I, mob/living/carbon/user, params)
+ if(!istype(I, /obj/item/slimepotion/transference))
+ return ..()
+ if(iscarbon(user) && can_transfer)
+ var/human_transfer_choice = alert("Transfer your soul to [src]? (Warning, your old body will die!)", null, "Yes", "No")
+ if(human_transfer_choice != "Yes")
+ return
+ if(QDELETED(src) || uses <= 0 || user.stat >= 1 || QDELETED(I))
+ return
+ if(istype(src, /obj/effect/mob_spawn/human/golem/servant))
+ has_owner = FALSE
+ flavour_text = null
+ user.visible_message("As [user] applies the potion on the golem shell, a faint light leaves them, moving to [src] and animating it!",
+ "You apply the potion to [src], feeling your mind leave your body!")
+ message_admins("[key_name(user)] used [I] to transfer their mind into [src]")
+ create(ckey = user.ckey, name = user.real_name)
+ user.death() //Keeps brain intact to prevent forcing redtext
+ qdel(I)
+
/obj/effect/mob_spawn/human/golem/servant
has_owner = TRUE
name = "inert servant golem shell"
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index 8f1e583a2ee..1f440d5496d 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -176,7 +176,7 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
if(prob(25))
mezzer()
-/obj/singularity/narsie/sc_Narsie/consume(var/atom/A)
+/obj/singularity/narsie/sc_Narsie/consume(atom/A)
if(!A.simulated)
return FALSE
if(is_type_in_list(A, uneatable))
diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index 94743390f30..d943da48997 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -50,7 +50,7 @@
var/chargesa = 1
var/insistinga = 0
-/obj/machinery/wish_granter_dark/attack_hand(var/mob/living/carbon/human/user as mob)
+/obj/machinery/wish_granter_dark/attack_hand(mob/living/carbon/human/user as mob)
usr.set_machine(src)
if(chargesa <= 0)
diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm
index 36d51843b8c..ce32a9c28b4 100644
--- a/code/modules/client/asset_cache.dm
+++ b/code/modules/client/asset_cache.dm
@@ -28,7 +28,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
//This proc sends the asset to the client, but only if it needs it.
//This proc blocks(sleeps) unless verify is set to false
-/proc/send_asset(var/client/client, var/asset_name, var/verify = TRUE)
+/proc/send_asset(client/client, asset_name, verify = TRUE)
if(!istype(client))
if(ismob(client))
var/mob/M = client
@@ -73,7 +73,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
return 1
//This proc blocks(sleeps) unless verify is set to false
-/proc/send_asset_list(var/client/client, var/list/asset_list, var/verify = TRUE)
+/proc/send_asset_list(client/client, list/asset_list, verify = TRUE)
if(!istype(client))
if(ismob(client))
var/mob/M = client
@@ -124,7 +124,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
//This proc will download the files without clogging up the browse() queue, used for passively sending files on connection start.
//The proc calls procs that sleep for long times.
-/proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE)
+/proc/getFilesSlow(client/client, list/files, register_asset = TRUE)
var/concurrent_tracker = 1
for(var/file in files)
if(!client)
@@ -141,7 +141,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
//This proc "registers" an asset, it adds it to the cache for further use, you cannot touch it from this point on or you'll fuck things up.
//if it's an icon or something be careful, you'll have to copy it before further use.
-/proc/register_asset(var/asset_name, var/asset)
+/proc/register_asset(asset_name, asset)
SSassets.cache[asset_name] = asset
//These datums are used to populate the asset cache, the proc "register()" does this.
@@ -150,7 +150,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
GLOBAL_LIST_EMPTY(asset_datums)
//get a assetdatum or make a new one
-/proc/get_asset_datum(var/type)
+/proc/get_asset_datum(type)
if(!(type in GLOB.asset_datums))
return new type()
return GLOB.asset_datums[type]
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 9edc012e7ac..fe1799b5048 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -8,8 +8,8 @@
#define UPLOAD_LIMIT 10485760 //Restricts client uploads to the server to 10MB //Boosted this thing. What's the worst that can happen?
#define MIN_CLIENT_VERSION 513 // Minimum byond major version required to play.
//I would just like the code ready should it ever need to be used.
-#define SUGGESTED_CLIENT_VERSION 513 // only integers (e.g: 513, 514) are useful here. This is the part BEFORE the ".", IE 513 out of 513.1536
-#define SUGGESTED_CLIENT_BUILD 1536 // only integers (e.g: 1536, 1539) are useful here. This is the part AFTER the ".", IE 1536 out of 513.1536
+#define SUGGESTED_CLIENT_VERSION 513 // only integers (e.g: 513, 514) are useful here. This is the part BEFORE the ".", IE 513 out of 513.1542
+#define SUGGESTED_CLIENT_BUILD 1542 // only integers (e.g: 1542, 1543) are useful here. This is the part AFTER the ".", IE 1542 out of 513.1542
#define SSD_WARNING_TIMER 30 // cycles, not seconds, so 30=60s
@@ -211,7 +211,7 @@
/client/proc/setDir(newdir)
dir = newdir
-/client/proc/handle_spam_prevention(var/message, var/mute_type, var/throttle = 0)
+/client/proc/handle_spam_prevention(message, mute_type, throttle = 0)
if(throttle)
if((last_message_time + throttle > world.time) && !check_rights(R_ADMIN, 0))
var/wait_time = round(((last_message_time + throttle) - world.time) / 10, 1)
diff --git a/code/modules/client/message.dm b/code/modules/client/message.dm
index 1bb9d03dd88..8848e16ace9 100644
--- a/code/modules/client/message.dm
+++ b/code/modules/client/message.dm
@@ -1,6 +1,6 @@
GLOBAL_LIST_EMPTY(clientmessages)
-/proc/addclientmessage(var/ckey, var/message)
+/proc/addclientmessage(ckey, message)
ckey = ckey(ckey)
if(!ckey || !message)
return
diff --git a/code/modules/client/preference/loadout/gear_tweaks.dm b/code/modules/client/preference/loadout/gear_tweaks.dm
index 9446008b762..d462cc1f342 100644
--- a/code/modules/client/preference/loadout/gear_tweaks.dm
+++ b/code/modules/client/preference/loadout/gear_tweaks.dm
@@ -1,16 +1,16 @@
-/datum/gear_tweak/proc/get_contents(var/metadata)
+/datum/gear_tweak/proc/get_contents(metadata)
return
-/datum/gear_tweak/proc/get_metadata(var/user, var/metadata)
+/datum/gear_tweak/proc/get_metadata(user, metadata)
return
/datum/gear_tweak/proc/get_default()
return
-/datum/gear_tweak/proc/tweak_gear_data(var/metadata, var/datum/gear_data)
+/datum/gear_tweak/proc/tweak_gear_data(metadata, datum/gear_data)
return
-/datum/gear_tweak/proc/tweak_item(var/obj/item/I, var/metadata)
+/datum/gear_tweak/proc/tweak_item(obj/item/I, metadata)
return
/*
@@ -21,22 +21,22 @@ GLOBAL_DATUM_INIT(gear_tweak_free_color_choice, /datum/gear_tweak/color, new())
/datum/gear_tweak/color
var/list/valid_colors
-/datum/gear_tweak/color/New(var/list/colors)
+/datum/gear_tweak/color/New(list/colors)
valid_colors = colors
..()
-/datum/gear_tweak/color/get_contents(var/metadata)
+/datum/gear_tweak/color/get_contents(metadata)
return "Color: ⚫"
/datum/gear_tweak/color/get_default()
return valid_colors ? valid_colors[1] : COLOR_GRAY
-/datum/gear_tweak/color/get_metadata(var/user, var/metadata)
+/datum/gear_tweak/color/get_metadata(user, metadata)
if(valid_colors)
return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors
return input(user, "Choose an item color.", "Global Preference", metadata) as color|null
-/datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata)
+/datum/gear_tweak/color/tweak_item(obj/item/I, metadata)
if(valid_colors && !(metadata in valid_colors))
return
I.color = metadata
@@ -48,20 +48,20 @@ GLOBAL_DATUM_INIT(gear_tweak_free_color_choice, /datum/gear_tweak/color, new())
/datum/gear_tweak/path
var/list/valid_paths
-/datum/gear_tweak/path/New(var/list/paths)
+/datum/gear_tweak/path/New(list/paths)
valid_paths = paths
..()
-/datum/gear_tweak/path/get_contents(var/metadata)
+/datum/gear_tweak/path/get_contents(metadata)
return "Type: [metadata]"
/datum/gear_tweak/path/get_default()
return valid_paths[1]
-/datum/gear_tweak/path/get_metadata(var/user, var/metadata)
+/datum/gear_tweak/path/get_metadata(user, metadata)
return input(user, "Choose a type.", "Character Preference", metadata) as null|anything in valid_paths
-/datum/gear_tweak/path/tweak_gear_data(var/metadata, var/datum/gear_data/gear_data)
+/datum/gear_tweak/path/tweak_gear_data(metadata, datum/gear_data/gear_data)
if(!(metadata in valid_paths))
return
gear_data.path = valid_paths[metadata]
@@ -77,7 +77,7 @@ GLOBAL_DATUM_INIT(gear_tweak_free_color_choice, /datum/gear_tweak/color, new())
valid_contents = args.Copy()
..()
-/datum/gear_tweak/contents/get_contents(var/metadata)
+/datum/gear_tweak/contents/get_contents(metadata)
return "Contents: [english_list(metadata, and_text = ", ")]"
/datum/gear_tweak/contents/get_default()
@@ -85,7 +85,7 @@ GLOBAL_DATUM_INIT(gear_tweak_free_color_choice, /datum/gear_tweak/color, new())
for(var/i = 1 to valid_contents.len)
. += "Random"
-/datum/gear_tweak/contents/get_metadata(var/user, var/list/metadata)
+/datum/gear_tweak/contents/get_metadata(user, list/metadata)
. = list()
for(var/i = metadata.len to valid_contents.len)
metadata += "Random"
@@ -96,7 +96,7 @@ GLOBAL_DATUM_INIT(gear_tweak_free_color_choice, /datum/gear_tweak/color, new())
else
return metadata
-/datum/gear_tweak/contents/tweak_item(var/obj/item/I, var/list/metadata)
+/datum/gear_tweak/contents/tweak_item(obj/item/I, list/metadata)
if(metadata.len != valid_contents.len)
return
for(var/i = 1 to valid_contents.len)
diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm
index 2911e64e87c..e188431f719 100644
--- a/code/modules/client/preference/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference/loadout/loadout_uniform.dm
@@ -4,7 +4,7 @@
slot = slot_w_uniform
sort_category = "Uniforms and Casual Dress"
-/datum/gear/uniform/suits
+/datum/gear/uniform/suit
subtype_path = /datum/gear/uniform/suit
//there's a lot more colors than I thought there were @_@
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index 76e93f728dc..5a838c3ac9a 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -23,8 +23,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
ROLE_BORER = 21,
ROLE_NINJA = 21,
ROLE_GSPIDER = 21,
- ROLE_ABDUCTOR = 30,
- ROLE_DEVIL = 14
+ ROLE_ABDUCTOR = 30
))
/proc/player_old_enough_antag(client/C, role)
@@ -49,7 +48,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
return max(0, minimal_player_age_antag - C.player_age)
-/proc/check_client_age(client/C, var/days) // If days isn't provided, returns the age of the client. If it is provided, it returns the days until the player_age is equal to or greater than the days variable
+/proc/check_client_age(client/C, days) // If days isn't provided, returns the age of the client. If it is provided, it returns the days until the player_age is equal to or greater than the days variable
if(!days)
return C.player_age
else
@@ -193,6 +192,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
"1020" = 100, // CHANNEL_HEARTBEAT
"1019" = 100, // CHANNEL_BUZZ
"1018" = 100, // CHANNEL_AMBIENCE
+ "1017" = 100, // CHANNEL_ENGINE
)
/// The volume mixer save timer handle. Used to debounce the DB call to save, to avoid spamming.
var/volume_mixer_saving = null
@@ -205,6 +205,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
var/gear_tab = "General"
// Parallax
var/parallax = PARALLAX_HIGH
+ /// Do we want to force our runechat colour to be white?
+ var/force_white_runechat = FALSE
/datum/preferences/New(client/C)
parent = C
@@ -580,20 +582,20 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
popup.open(0)
-/datum/preferences/proc/get_gear_metadata(var/datum/gear/G)
+/datum/preferences/proc/get_gear_metadata(datum/gear/G)
. = loadout_gear[G.display_name]
if(!.)
. = list()
loadout_gear[G.display_name] = .
-/datum/preferences/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak)
+/datum/preferences/proc/get_tweak_metadata(datum/gear/G, datum/gear_tweak/tweak)
var/list/metadata = get_gear_metadata(G)
. = metadata["[tweak]"]
if(!.)
. = tweak.get_default()
metadata["[tweak]"] = .
-/datum/preferences/proc/set_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak, var/new_metadata)
+/datum/preferences/proc/set_tweak_metadata(datum/gear/G, datum/gear_tweak/tweak, new_metadata)
var/list/metadata = get_gear_metadata(G)
metadata["[tweak]"] = new_metadata
@@ -762,7 +764,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
popup.open(0)
return
-/datum/preferences/proc/SetJobPreferenceLevel(var/datum/job/job, var/level)
+/datum/preferences/proc/SetJobPreferenceLevel(datum/job/job, level)
if(!job)
return 0
@@ -985,7 +987,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
job_karma_low = 0
-/datum/preferences/proc/GetJobDepartment(var/datum/job/job, var/level)
+/datum/preferences/proc/GetJobDepartment(datum/job/job, level)
if(!job || !level) return 0
switch(job.department_flag)
if(JOBCAT_SUPPORT)
@@ -1022,7 +1024,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
return job_karma_low
return 0
-/datum/preferences/proc/SetJobDepartment(var/datum/job/job, var/level)
+/datum/preferences/proc/SetJobDepartment(datum/job/job, level)
if(!job || !level) return 0
switch(level)
if(1)//Only one of these should ever be active at once so clear them all here
diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm
index 509a5402eaa..063ee29402c 100644
--- a/code/modules/client/preference/preferences_mysql.dm
+++ b/code/modules/client/preference/preferences_mysql.dm
@@ -50,7 +50,7 @@
//Sanitize
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
- UI_style = sanitize_inlist(UI_style, list("White", "Midnight"), initial(UI_style))
+ UI_style = sanitize_inlist(UI_style, list("White", "Midnight", "Plasmafire", "Retro", "Slimecore", "Operative"), initial(UI_style))
default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
toggles = sanitize_integer(toggles, 0, TOGGLES_TOTAL, initial(toggles))
toggles2 = sanitize_integer(toggles2, 0, TOGGLES_2_TOTAL, initial(toggles2))
@@ -440,7 +440,7 @@
"f_style" = f_style,
"markingstyleslist" = markingstyleslist,
"ha_style" = ha_style,
- "alt_head" = alt_head || "",
+ "alt_head" = (alt_head ? alt_head : ""), // This it intentional. It wont work without it!
"e_colour" = e_colour,
"underwear" = underwear,
"undershirt" = undershirt,
diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm
index a5a24419028..d3ac6cc874b 100644
--- a/code/modules/client/preference/preferences_toggles.dm
+++ b/code/modules/client/preference/preferences_toggles.dm
@@ -340,3 +340,11 @@
prefs.toggles2 ^= PREFTOGGLE_2_REVERB_DISABLE
prefs.save_preferences(src)
to_chat(src, "You will [(prefs.toggles2 & PREFTOGGLE_2_REVERB_DISABLE) ? "no longer" : "now"] get reverb on ingame sounds.")
+
+/client/verb/toggle_forced_white_runechat()
+ set name = "Toggle Runechat Colour Forcing"
+ set category = "Preferences"
+ set desc = "Toggles forcing your runechat colour to white"
+ prefs.toggles2 ^= PREFTOGGLE_2_FORCE_WHITE_RUNECHAT
+ prefs.save_preferences(src)
+ to_chat(src, "Your runechats will [(prefs.toggles2 & PREFTOGGLE_2_FORCE_WHITE_RUNECHAT) ? "no longer" : "now"] be forced to be white.")
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 38b49314667..c34e17943cb 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -175,7 +175,7 @@
select_look(owner)
return 1
-/datum/action/item_action/chameleon/change/proc/emp_randomise(var/amount = EMP_RANDOMISE_TIME)
+/datum/action/item_action/chameleon/change/proc/emp_randomise(amount = EMP_RANDOMISE_TIME)
START_PROCESSING(SSprocessing, src)
random_look(owner)
@@ -263,6 +263,7 @@
icon_state = "meson"
item_state = "meson"
resistance_flags = NONE
+ prescription_upgradable = TRUE
armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
sprite_sheets = list(
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 3f23b1e8736..9baf6c46079 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -101,7 +101,7 @@
return 1
-/obj/item/clothing/proc/refit_for_species(var/target_species)
+/obj/item/clothing/proc/refit_for_species(target_species)
//Set species_restricted list
switch(target_species)
if("Human", "Skrell") //humanoid bodytypes
@@ -181,7 +181,7 @@
icon_state = "block"
slot_flags = SLOT_EARS | SLOT_TWOEARS
-/obj/item/clothing/ears/offear/New(var/obj/O)
+/obj/item/clothing/ears/offear/New(obj/O)
. = ..()
name = O.name
desc = O.desc
@@ -370,7 +370,7 @@ BLIND // can't see anything
put_on_delay = 40
//Proc that moves gas/breath masks out of the way
-/obj/item/clothing/mask/proc/adjustmask(var/mob/user)
+/obj/item/clothing/mask/proc/adjustmask(mob/user)
var/mob/living/carbon/human/H = usr //Used to check if the mask is on the head, to check if the hands are full, and to turn off internals if they were on when the mask was pushed out of the way.
if(user.incapacitated()) //This check allows you to adjust your masks while you're buckled into chairs or beds.
return
@@ -486,8 +486,8 @@ BLIND // can't see anything
//Suit
/obj/item/clothing/suit
- icon = 'icons/obj/clothing/suits.dmi'
name = "suit"
+ icon = 'icons/obj/clothing/suits.dmi'
var/fire_resist = T0C+100
allowed = list(/obj/item/tank/internals/emergency_oxygen)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -502,7 +502,7 @@ BLIND // can't see anything
var/list/hide_tail_by_species = null
//Proc that opens and closes jackets.
-/obj/item/clothing/suit/proc/adjustsuit(var/mob/user)
+/obj/item/clothing/suit/proc/adjustsuit(mob/user)
if(!ignore_suitadjust)
if(!user.incapacitated())
if(!HAS_TRAIT(user, TRAIT_HULK))
@@ -550,7 +550,7 @@ BLIND // can't see anything
else
to_chat(user, "You attempt to button up the velcro on \the [src], before promptly realising how foolish you are.")
-/obj/item/clothing/suit/equipped(var/mob/living/carbon/human/user, var/slot) //Handle tail-hiding on a by-species basis.
+/obj/item/clothing/suit/equipped(mob/living/carbon/human/user, slot) //Handle tail-hiding on a by-species basis.
..()
if(ishuman(user) && hide_tail_by_species && slot == slot_wear_suit)
if(user.dna.species.name in hide_tail_by_species)
@@ -573,7 +573,7 @@ BLIND // can't see anything
//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
// Meaning the the suit is defined directly after the corrisponding helmet. Just like below!
/obj/item/clothing/head/helmet/space
- name = "Space helmet"
+ name = "space helmet"
icon_state = "space"
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
w_class = WEIGHT_CLASS_NORMAL
@@ -596,7 +596,7 @@ BLIND // can't see anything
/obj/item/clothing/suit/space
- name = "Space suit"
+ name = "space suit"
desc = "A suit that protects against low pressure environments. Has a big 13 on the back."
icon_state = "space"
item_state = "s_suit"
@@ -618,7 +618,9 @@ BLIND // can't see anything
resistance_flags = NONE
hide_tail_by_species = null
species_restricted = list("exclude","Wryn")
-
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//Under clothing
/obj/item/clothing/under
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index ea030fb8905..d07b95d18eb 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -4,31 +4,33 @@
// Pre-upgraded upgradable glasses
name = "prescription [name]"
-/obj/item/clothing/glasses/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(user.stat || user.restrained() || !ishuman(user))
+/obj/item/clothing/glasses/attackby(obj/item/I, mob/user)
+ if(!prescription_upgradable || user.stat || user.restrained() || !ishuman(user))
return ..()
var/mob/living/carbon/human/H = user
- if(prescription_upgradable)
- if(istype(O, /obj/item/clothing/glasses/regular))
- if(prescription)
- to_chat(H, "You can't possibly imagine how adding more lenses would improve \the [name].")
- return
- H.unEquip(O)
- O.loc = src // Store the glasses for later removal
- to_chat(H, "You fit \the [name] with lenses from \the [O].")
- prescription = 1
- name = "prescription [name]"
+
+ // Adding prescription glasses
+ if(istype(I, /obj/item/clothing/glasses/regular))
+ if(prescription)
+ to_chat(H, "You can't possibly imagine how adding more lenses would improve [src].")
return
- if(prescription && istype(O, /obj/item/screwdriver))
- var/obj/item/clothing/glasses/regular/G = locate() in src
- if(!G)
- G = new(get_turf(H))
- to_chat(H, "You salvage the prescription lenses from \the [name].")
- prescription = 0
- name = initial(name)
- H.put_in_hands(G)
- return
- return ..()
+ H.unEquip(I)
+ I.loc = src // Store the glasses for later removal
+ to_chat(H, "You fit [src] with lenses from [I].")
+ prescription = TRUE
+ name = "prescription [initial(name)]"
+
+ // Removing prescription glasses
+ else if(prescription && istype(I, /obj/item/screwdriver))
+ var/obj/item/clothing/glasses/regular/G = locate() in src
+ if(!G)
+ G = new(src)
+ to_chat(H, "You salvage the prescription lenses from [src].")
+ prescription = FALSE
+ name = initial(name)
+ H.put_in_hands(G)
+
+ H.update_nearsighted_effects()
/obj/item/clothing/glasses/visor_toggling()
..()
@@ -59,7 +61,7 @@
eyes.receive_damage(5)
/obj/item/clothing/glasses/meson
- name = "Optical Meson Scanner"
+ name = "optical meson scanner"
desc = "Used for seeing walls, floors, and stuff through anything."
icon_state = "meson"
item_state = "meson"
@@ -76,8 +78,8 @@
)
/obj/item/clothing/glasses/meson/night
- name = "Night Vision Optical Meson Scanner"
- desc = "An Optical Meson Scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
+ name = "night vision optical meson scanner"
+ desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
icon_state = "nvgmeson"
origin_tech = "magnets=4;engineering=5;plasmatech=4"
see_in_dark = 8
@@ -100,7 +102,7 @@
sharp = 1
/obj/item/clothing/glasses/meson/cyber
- name = "Eye Replacement Implant"
+ name = "eye replacement implant"
desc = "An implanted replacement for a left eye with meson vision capabilities."
icon_state = "cybereye-green"
item_state = "eyepatch"
@@ -114,7 +116,7 @@
icon_state = "purple"
item_state = "glasses"
origin_tech = "magnets=2;engineering=1"
- prescription_upgradable = 0
+ prescription_upgradable = TRUE
scan_reagents = 1 //You can see reagents while wearing science goggles
resistance_flags = ACID_PROOF
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
@@ -130,15 +132,16 @@
return 1
/obj/item/clothing/glasses/science/night
- name = "Night Vision Science Goggle"
+ name = "night vision science goggles"
desc = "Now you can science in darkness."
icon_state = "nvpurple"
item_state = "glasses"
see_in_dark = 8
+ prescription_upgradable = FALSE
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE //don't render darkness while wearing these
/obj/item/clothing/glasses/janitor
- name = "Janitorial Goggles"
+ name = "janitorial goggles"
desc = "These'll keep the soap out of your eyes."
icon_state = "purple"
item_state = "glasses"
@@ -148,7 +151,7 @@
)
/obj/item/clothing/glasses/night
- name = "Night Vision Goggles"
+ name = "night vision goggles"
desc = "You can totally see in the dark now!"
icon_state = "night"
item_state = "glasses"
@@ -188,7 +191,7 @@
)
/obj/item/clothing/glasses/material
- name = "Optical Material Scanner"
+ name = "optical material scanner"
desc = "Very confusing glasses."
icon_state = "material"
item_state = "glasses"
@@ -202,7 +205,7 @@
)
/obj/item/clothing/glasses/material/cyber
- name = "Eye Replacement Implant"
+ name = "eye replacement implant"
desc = "An implanted replacement for a left eye with material vision capabilities."
icon_state = "cybereye-blue"
item_state = "eyepatch"
@@ -210,7 +213,7 @@
flags_cover = null
/obj/item/clothing/glasses/material/lighting
- name = "Neutron Goggles"
+ name = "neutron goggles"
desc = "These odd glasses use a form of neutron-based imaging to completely negate the effects of light and darkness."
origin_tech = null
vision_flags = 0
@@ -238,8 +241,8 @@
item_state = "hipster_glasses"
/obj/item/clothing/glasses/threedglasses
+ name = "\improper 3D glasses"
desc = "A long time ago, people used these glasses to makes images from screens threedimensional."
- name = "3D glasses"
icon_state = "3d"
item_state = "3d"
@@ -250,7 +253,7 @@
)
/obj/item/clothing/glasses/gglasses
- name = "Green Glasses"
+ name = "green glasses"
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
icon_state = "gglasses"
item_state = "gglasses"
@@ -263,8 +266,8 @@
prescription_upgradable = 1
/obj/item/clothing/glasses/sunglasses
- desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
name = "sunglasses"
+ desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
icon_state = "sun"
item_state = "sunglasses"
see_in_dark = 1
@@ -279,8 +282,8 @@
)
/obj/item/clothing/glasses/sunglasses_fake
- desc = "Cheap, plastic sunglasses. They don't even have UV protection."
name = "cheap sunglasses"
+ desc = "Cheap, plastic sunglasses. They don't even have UV protection."
icon_state = "sun"
item_state = "sunglasses"
see_in_dark = 0
@@ -332,8 +335,8 @@
scan_reagents = 1
/obj/item/clothing/glasses/virussunglasses
- desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
name = "sunglasses"
+ desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
icon_state = "sun"
item_state = "sunglasses"
see_in_dark = 1
@@ -347,8 +350,8 @@
)
/obj/item/clothing/glasses/sunglasses/lasers
- desc = "A peculiar set of sunglasses; they have various chips and other panels attached to the sides of the frames."
name = "high-tech sunglasses"
+ desc = "A peculiar set of sunglasses; they have various chips and other panels attached to the sides of the frames."
flags = NODROP
/obj/item/clothing/glasses/sunglasses/lasers/equipped(mob/user, slot) //grant them laser eyes upon equipping it.
@@ -401,7 +404,7 @@
item_state = "bigsunglasses"
/obj/item/clothing/glasses/thermal
- name = "Optical Thermal Scanner"
+ name = "optical thermal scanner"
desc = "Thermals in the shape of glasses."
icon_state = "thermal"
item_state = "glasses"
@@ -421,25 +424,25 @@
..()
/obj/item/clothing/glasses/thermal/monocle
- name = "Thermoncle"
- desc = "A monocle thermal."
+ name = "thermoncle"
+ desc = "A thermal monocle."
icon_state = "thermoncle"
flags_cover = null //doesn't protect eyes because it's a monocle, duh
/obj/item/clothing/glasses/thermal/eyepatch
- name = "Optical Thermal Eyepatch"
+ name = "optical thermal eyepatch"
desc = "An eyepatch with built-in thermal optics"
icon_state = "eyepatch"
item_state = "eyepatch"
/obj/item/clothing/glasses/thermal/jensen
- name = "Optical Thermal Implants"
+ name = "optical thermal implant"
desc = "A set of implantable lenses designed to augment your vision"
icon_state = "thermalimplants"
item_state = "syringe_kit"
/obj/item/clothing/glasses/thermal/cyber
- name = "Eye Replacement Implant"
+ name = "eye replacement implant"
desc = "An implanted replacement for a left eye with thermal vision capabilities."
icon_state = "cybereye-red"
item_state = "eyepatch"
@@ -454,6 +457,7 @@
vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS
see_in_dark = 8
scan_reagents = 1
+ prescription = TRUE
flags = NODROP
flags_cover = null
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 04d603631d4..f0dce270fb6 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -28,7 +28,7 @@
desc = desc + " The display flickers slightly."
/obj/item/clothing/glasses/hud/health
- name = "\improper Health Scanner HUD"
+ name = "health scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
icon_state = "healthhud"
origin_tech = "magnets=3;biotech=2"
@@ -42,7 +42,7 @@
)
/obj/item/clothing/glasses/hud/health/night
- name = "\improper Night Vision Health Scanner HUD"
+ name = "night vision health scanner HUD"
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
icon_state = "healthhudnight"
item_state = "glasses"
@@ -60,7 +60,7 @@
tint = 1
/obj/item/clothing/glasses/hud/diagnostic
- name = "Diagnostic HUD"
+ name = "diagnostic HUD"
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits."
icon_state = "diagnostichud"
origin_tech = "magnets=2;engineering=2"
@@ -73,7 +73,7 @@
)
/obj/item/clothing/glasses/hud/diagnostic/night
- name = "Night Vision Diagnostic HUD"
+ name = "night vision diagnostic HUD"
desc = "A robotics diagnostic HUD fitted with a light amplifier."
icon_state = "diagnostichudnight"
item_state = "glasses"
@@ -91,7 +91,7 @@
tint = 1
/obj/item/clothing/glasses/hud/security
- name = "\improper Security HUD"
+ name = "security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records."
icon_state = "securityhud"
origin_tech = "magnets=3;combat=2"
@@ -115,7 +115,7 @@
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
/obj/item/clothing/glasses/hud/security/night
- name = "\improper Night Vision Security HUD"
+ name = "night vision security HUD"
desc = "An advanced heads-up display which provides id data and vision in complete darkness."
icon_state = "securityhudnight"
origin_tech = "magnets=4;combat=4;plasmatech=4;engineering=5"
@@ -146,7 +146,7 @@
prescription = 1
/obj/item/clothing/glasses/hud/hydroponic
- name = "Hydroponic HUD"
+ name = "hydroponic HUD"
desc = "A heads-up display capable of analyzing the health and status of plants growing in hydro trays and soil."
icon_state = "hydroponichud"
HUDType = DATA_HUD_HYDROPONIC
@@ -158,7 +158,7 @@
)
/obj/item/clothing/glasses/hud/hydroponic/night
- name = "Night Vision Hydroponic HUD"
+ name = "night vision hydroponic HUD"
desc = "A hydroponic HUD fitted with a light amplifier."
icon_state = "hydroponichudnight"
item_state = "glasses"
@@ -201,7 +201,7 @@
toggle_veil()
/obj/item/clothing/glasses/hud/skills
- name = "Skills HUD"
+ name = "skills HUD"
desc = "A heads-up display capable of showing the employment history records of NT crew members."
icon_state = "skill"
item_state = "glasses"
@@ -214,7 +214,7 @@
)
/obj/item/clothing/glasses/hud/skills/sunglasses
- name = "Skills HUD Sunglasses"
+ name = "skills HUD sunglasses"
desc = "Sunglasses with a build-in skills HUD, showing the employment history of nearby NT crew members."
icon_state = "sunhudskill"
see_in_dark = 1 // None of these three can be converted to booleans. Do not try it.
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 019b37a566f..b889246f73d 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/gloves/color/yellow
- desc = "These gloves will protect the wearer from electric shock."
name = "insulated gloves"
+ desc = "These gloves will protect the wearer from electric shock."
icon_state = "yellow"
item_state = "ygloves"
siemens_coefficient = 0
@@ -52,8 +52,8 @@
siemens_coefficient = 1
/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap
- desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly."
name = "budget insulated gloves"
+ desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly."
icon_state = "yellow"
item_state = "ygloves"
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
@@ -66,19 +66,19 @@
siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5)
/obj/item/clothing/gloves/color/fyellow/old
- desc = "Old and worn out insulated gloves, hopefully they still work."
name = "worn out insulated gloves"
+ desc = "Old and worn out insulated gloves, hopefully they still work."
/obj/item/clothing/gloves/color/fyellow/old/New()
..()
siemens_coefficient = pick(0,0,0,0.5,0.5,0.5,0.75)
/obj/item/clothing/gloves/color/black
- desc = "These gloves are fire-resistant."
name = "black gloves"
+ desc = "These gloves are fire-resistant."
icon_state = "black"
item_state = "bgloves"
- item_color="brown"
+ item_color="black"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
@@ -226,8 +226,8 @@
/obj/item/clothing/gloves/color/captain
- desc = "Regal blue gloves, with a nice gold trim. Swanky."
name = "captain's gloves"
+ desc = "Regal blue gloves, with a nice gold trim. Swanky."
icon_state = "captain"
item_state = "egloves"
item_color = "captain"
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 4345a4542d2..a6ece08feee 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -12,8 +12,8 @@
clipped = 1
/obj/item/clothing/gloves/cyborg
- desc = "beep boop borp"
name = "cyborg gloves"
+ desc = "beep boop borp"
icon_state = "black"
item_state = "r_hands"
@@ -25,8 +25,8 @@
can_leave_fibers = FALSE
/obj/item/clothing/gloves/combat
- desc = "These tactical gloves are both insulated and offer protection from heat sources."
name = "combat gloves"
+ desc = "These tactical gloves are both insulated and offer protection from heat sources."
icon_state = "combat"
item_state = "swat_gl"
siemens_coefficient = 0
@@ -55,8 +55,8 @@
armor = list("melee" = 15, "bullet" = 25, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/gloves/botanic_leather
- desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
name = "botanist's leather gloves"
+ desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
icon_state = "leather"
item_state = "ggloves"
permeability_coefficient = 0.9
@@ -68,8 +68,8 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 30)
/obj/item/clothing/gloves/batmangloves
- desc = "Used for handling all things bat related."
name = "batgloves"
+ desc = "Used for handling all things bat related."
icon_state = "bmgloves"
item_state = "bmgloves"
item_color="bmgloves"
@@ -157,7 +157,7 @@
update_icon()
/obj/item/clothing/gloves/fingerless/rapid
- name = "Gloves of the North Star"
+ name = "gloves of the North Star"
desc = "Just looking at these fills you with an urge to beat the shit out of people."
var/accepted_intents = list(INTENT_HARM)
var/click_speed_modifier = CLICK_CD_RAPID
@@ -166,20 +166,20 @@
var/mob/living/M = loc
if(M.a_intent in accepted_intents)
- if(istype(M.mind.martial_art, /datum/martial_art/cqc))
+ if(M.mind.martial_art || HAS_TRAIT(M, TRAIT_HULK))
M.changeNext_move(CLICK_CD_MELEE)//normal attack speed for hulk, CQC and Carp.
else
M.changeNext_move(click_speed_modifier)
.= FALSE
/obj/item/clothing/gloves/fingerless/rapid/admin
- name = "Advanced Interactive Gloves"
+ name = "advanced interactive gloves"
desc = "The gloves are covered in indecipherable buttons and dials, your mind warps by merely looking at them."
accepted_intents = list(INTENT_HELP, INTENT_DISARM, INTENT_GRAB, INTENT_HARM)
click_speed_modifier = 0
siemens_coefficient = 0
/obj/item/clothing/gloves/fingerless/rapid/headpat
- name = "Gloves of Headpats"
+ name = "gloves of headpats"
desc = "You feel the irresistable urge to give headpats by merely glimpsing these."
accepted_intents = list(INTENT_HELP)
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index b5d4b94038f..95c4e04b3ac 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -55,14 +55,12 @@
icon_state = "hardhat0_orange"
item_state = "hardhat0_orange"
item_color = "orange"
- dog_fashion = null
/obj/item/clothing/head/hardhat/red
+ name = "firefighter helmet"
icon_state = "hardhat0_red"
item_state = "hardhat0_red"
item_color = "red"
- dog_fashion = null
- name = "firefighter helmet"
flags = STOPSPRESSUREDMAGE
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
@@ -84,14 +82,13 @@
icon_state = "hardhat0_dblue"
item_state = "hardhat0_dblue"
item_color = "dblue"
- dog_fashion = null
/obj/item/clothing/head/hardhat/atmos
+ name = "atmospheric technician's firefighting helmet"
+ desc = "A firefighter's helmet, able to keep the user cool in any situation."
icon_state = "hardhat0_atmos"
item_state = "hardhat0_atmos"
item_color = "atmos"
- name = "atmospheric technician's firefighting helmet"
- desc = "A firefighter's helmet, able to keep the user cool in any situation."
flags = STOPSPRESSUREDMAGE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
heat_protection = HEAD
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index bafe3a9f0a9..e8ce88dba1e 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -162,7 +162,7 @@
icon_state = "roman"
item_state = "roman"
strip_delay = 100
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/roman
/obj/item/clothing/head/helmet/roman/fake
desc = "An ancient helmet made of plastic and leather."
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 3ed9aafda44..dd99bba3211 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -25,7 +25,7 @@
name = "captain's parade cap"
desc = "Worn only by Captains with an abundance of class."
icon_state = "capcap"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/captain
//Head of Personnel
/obj/item/clothing/head/hopcap
@@ -101,16 +101,18 @@
//Security
/obj/item/clothing/head/HoS
- name = "head of security cap"
+ name = "head of security's cap"
desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge."
icon_state = "hoscap"
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60)
strip_delay = 80
+ dog_fashion = /datum/dog_fashion/head/HoS
/obj/item/clothing/head/HoS/beret
- name = "head of security beret"
+ name = "head of security's beret"
desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection."
icon_state = "beret_hos_black"
+ dog_fashion = /datum/dog_fashion/head/HoS
/obj/item/clothing/head/warden
name = "warden's police hat"
@@ -134,7 +136,7 @@
icon_state = "beret_officer"
armor = list("melee" = 35, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/beret/sec
/obj/item/clothing/head/beret/sec/warden
name = "warden's beret"
@@ -153,7 +155,7 @@
icon_state = "beret_atmospherics"
/obj/item/clothing/head/beret/ce
- name = "chief engineer beret"
+ name = "chief engineer's beret"
desc = "A white beret with the engineering insignia emblazoned on it. Its owner knows what they're doing. Probably."
icon_state = "beret_ce"
@@ -180,15 +182,35 @@
/obj/item/clothing/head/surgery/purple
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is deep purple."
icon_state = "surgcap_purple"
+ dog_fashion = /datum/dog_fashion/head/surgery
/obj/item/clothing/head/surgery/blue
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is baby blue."
icon_state = "surgcap_blue"
+ dog_fashion = /datum/dog_fashion/head/surgery
/obj/item/clothing/head/surgery/green
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is dark green."
icon_state = "surgcap_green"
+ dog_fashion = /datum/dog_fashion/head/surgery
/obj/item/clothing/head/surgery/black
- desc = "A cap coroners wear during autopsies. Keeps their hair from falling into the cadavers. It is as dark than the coroner's humor."
+ desc = "A cap coroners wear during autopsies. Keeps their hair from falling into the cadavers. It is as dark as the coroner's humor."
icon_state = "surgcap_black"
+ dog_fashion = /datum/dog_fashion/head/surgery
+
+//Special Roles
+/obj/item/clothing/head/beret/solgov/command
+ name = "\improper Trans-Solar Federation Lieutenant's beret"
+ desc = "A beret worn by marines of the Trans-Solar Federation. The insignia signifies the wearer bears the rank of a Lieutenant."
+ icon_state = "solgovcberet"
+ item_color = "solgovc"
+ dog_fashion = null
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60)
+ strip_delay = 80
+
+/obj/item/clothing/head/beret/solgov/command/elite
+ name = "\improper Trans-Solar Federation Specops Lieutenant's beret"
+ desc = "A beret worn by marines of the Trans-Solar Federation Psiops division. The insignia signifies the wearer bears the rank of a Lieutenant."
+ icon_state = "solgovceliteberet"
+ item_color = "solgovcelite"
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 543ba75160a..388fa0374ed 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -21,10 +21,11 @@
item_state = "pwig"
/obj/item/clothing/head/justice_wig
- name = "Justice wig"
+ name = "justice wig"
desc = "A fancy powdered wig given to arbitrators of the law. It looks itchy."
icon_state = "jwig"
item_state = "jwig"
+ dog_fashion = /datum/dog_fashion/head/justice_wig
/obj/item/clothing/head/beret/blue
icon_state = "beret_blue"
@@ -187,6 +188,7 @@
icon_state = "bowler_hat"
item_state = "bowler_hat"
desc = "For that industrial age look."
+ dog_fashion = /datum/dog_fashion/head/bowlerhat
/obj/item/clothing/head/beaverhat
name = "beaver hat"
@@ -298,10 +300,10 @@
flags = BLOCKHAIR
/obj/item/clothing/head/xenos
- name = "xenos helmet"
+ name = "xeno helmet"
+ desc = "A helmet made out of chitinous alien hide."
icon_state = "xenos"
item_state = "xenos_helm"
- desc = "A helmet made out of chitinous alien hide."
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
@@ -330,51 +332,51 @@
"Vox" = 'icons/mob/species/vox/head.dmi'
)
-/obj/item/clothing/head/stalhelm
- name = "Clown Stalhelm"
+/obj/item/clothing/head/stalhelm //Why do these exist
+ name = "clown stalhelm"
desc = "The typical clown soldier's helmet."
icon_state = "stalhelm"
item_state = "stalhelm"
flags = BLOCKHAIR
flags_inv = HIDEEARS
-/obj/item/clothing/head/panzer
- name = "Clown HONKMech Cap"
+/obj/item/clothing/head/panzer //Why
+ name = "clown HONKMech cap"
desc = "The softcap worn by HONK Mech pilots."
icon_state = "panzercap"
item_state = "panzercap"
flags = BLOCKHAIR
-/obj/item/clothing/head/naziofficer
- name = "Clown Officer Cap"
+/obj/item/clothing/head/naziofficer //Ah, come on
+ name = "clown officer cap"
desc = "The peaked clown officer's cap, disturbingly similar to the warden's."
icon_state = "officercap"
item_state = "officercap"
flags = BLOCKHAIR
flags_inv = HIDEEARS
-/obj/item/clothing/head/beret/purple
+/obj/item/clothing/head/beret/purple //Fluff?
name = "Pierson Family Beret"
desc = " A purple beret, with a small golden crescent moon sewn onto it."
icon_state = "beret_purple"
item_state = "purpleberet"
/obj/item/clothing/head/beret/centcom/officer
- name = "officers beret"
+ name = "officer beret"
desc = "A black beret adorned with the shield—a silver kite shield with an engraved sword—of the Nanotrasen security forces, announcing to the world that the wearer is a defender of Nanotrasen."
icon_state = "beret_centcom_officer"
armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
/obj/item/clothing/head/beret/centcom/officer/navy
- name = "navy blue officers beret"
+ name = "navy blue officer beret"
desc = "A navy blue beret adorned with the shield—a silver kite shield with an engraved sword—of the Nanotrasen security forces, announcing to the world that the wearer is a defender of Nanotrasen."
icon_state = "beret_centcom_officer_navy"
armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
/obj/item/clothing/head/beret/centcom/captain
- name = "captains beret"
+ name = "captain's beret"
desc = "A white beret adorned with the shield—a cobalt kite shield with an engraved sword—of the Nanotrasen security forces, worn only by those captaining a vessel of the Nanotrasen Navy."
icon_state = "beret_centcom_captain"
@@ -401,8 +403,8 @@
dog_fashion = null
/obj/item/clothing/head/cone
- desc = "This cone is trying to warn you of something!"
name = "warning cone"
+ desc = "This cone is trying to warn you of something!"
icon = 'icons/obj/janitor.dmi'
icon_state = "cone"
item_state = "cone"
@@ -448,7 +450,7 @@
/obj/item/clothing/head/lordadmiralhat
- name = "Lord Admiral's Hat"
+ name = "lord admiral's hat"
desc = "A hat suitable for any man of high and exalted rank."
icon_state = "lordadmiralhat"
item_state = "lordadmiralhat"
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 8d37c2a872f..28dd6f4cb55 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -198,7 +198,7 @@
var/icon/mob
dog_fashion = /datum/dog_fashion/head/kitty
-/obj/item/clothing/head/kitty/update_icon(var/mob/living/carbon/human/user)
+/obj/item/clothing/head/kitty/update_icon(mob/living/carbon/human/user)
if(!istype(user)) return
var/obj/item/organ/external/head/head_organ = user.get_organ("head")
@@ -210,7 +210,7 @@
icon_override = mob
-/obj/item/clothing/head/kitty/equipped(var/mob/M, slot)
+/obj/item/clothing/head/kitty/equipped(mob/M, slot)
. = ..()
if(ishuman(M) && slot == slot_head)
update_icon(M)
@@ -221,7 +221,7 @@
desc = "A pair of mouse ears. Squeak!"
icon_state = "mousey"
-/obj/item/clothing/head/kitty/mouse/update_icon(var/mob/living/carbon/human/user)
+/obj/item/clothing/head/kitty/mouse/update_icon(mob/living/carbon/human/user)
if(!istype(user)) return
var/obj/item/organ/external/head/head_organ = user.get_organ("head")
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mousey")
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 7ac87e5d5bc..ca0e6d5aad5 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -38,35 +38,35 @@
desc = "It's a baseball hat in a tasteless red colour."
icon_state = "redsoft"
item_color = "red"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/blue
name = "blue cap"
desc = "It's a baseball hat in a tasteless blue colour."
icon_state = "bluesoft"
item_color = "blue"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/green
name = "green cap"
desc = "It's a baseball hat in a tasteless green colour."
icon_state = "greensoft"
item_color = "green"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/yellow
name = "yellow cap"
desc = "It's a baseball hat in a tasteless yellow colour."
icon_state = "yellowsoft"
item_color = "yellow"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/grey
name = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
icon_state = "greysoft"
item_color = "grey"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/orange
name = "orange cap"
@@ -79,28 +79,28 @@
desc = "It's a baseball hat in a tasteless white colour."
icon_state = "mimesoft"
item_color = "mime"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/purple
name = "purple cap"
desc = "It's a baseball hat in a tasteless purple colour."
icon_state = "purplesoft"
item_color = "purple"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/black
name = "black cap"
desc = "It's a baseball hat in a tasteless black colour."
icon_state = "blacksoft"
item_color = "black"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/rainbow
name = "rainbow cap"
desc = "It's a baseball hat in a bright rainbow of colors."
icon_state = "rainbowsoft"
item_color = "rainbow"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/sec
name = "security cap"
@@ -109,7 +109,7 @@
item_color = "sec"
armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/sec/corp
name = "corporate security cap"
@@ -118,15 +118,35 @@
item_color = "corp"
/obj/item/clothing/head/soft/solgov
- name = "Sol Federation marine cap"
- desc = "A soft cap worn by marines of the Sol Federation."
+ name = "\improper Trans-Solar Federation marine cap"
+ desc = "A soft cap worn by marines of the Trans-Solar Federation."
icon_state = "solgovsoft"
item_color = "solgov"
dog_fashion = null
-/obj/item/clothing/head/soft/solgov/command
- name = "Sol Federation Lieutenant's cap"
- desc = "A soft cap worn by marines of the Sol Federation. The insignia signifies the wearer bears the rank of a Lieutenant."
- icon_state = "solgovcsoft"
+/obj/item/clothing/head/soft/solgov/marines
+ armor = list("melee" = 35, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
+ strip_delay = 60
+ icon_state = "solgovsoft_flipped"
+ flipped = TRUE
+
+/obj/item/clothing/head/soft/solgov/marines/elite
+ name = "\improper Trans-Solar Federation Specops marine cap"
+ desc = "A soft cap worn by marines of the Trans-Solar Federation Specops division."
+ icon_state = "solgovelitesoft_flipped"
+ item_color = "solgovelite"
+
+/obj/item/clothing/head/soft/solgov/marines/command
+ name = "\improper Trans-Solar Federation lieutenant's cap"
+ desc = "A soft cap worn by marines of the Trans-Solar Federation. The insignia signifies the wearer bears the rank of a Lieutenant."
+ icon_state = "solgovcsoft_flipped"
item_color = "solgovc"
dog_fashion = null
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60)
+ strip_delay = 80
+
+/obj/item/clothing/head/soft/solgov/marines/command/elite
+ name = "\improper Trans-Solar Federation Specops Lieutenant's cap"
+ desc = "A soft cap worn by marines of the Trans-Solar Federation Specops division. The insignia signifies the wearer bears the rank of a Lieutenant."
+ icon_state = "solgovcelitesoft"
+ item_color = "solgovcelite"
diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm
index 14afa81cb58..090011ce47d 100644
--- a/code/modules/clothing/masks/boxing.dm
+++ b/code/modules/clothing/masks/boxing.dm
@@ -18,11 +18,11 @@
"Drask" = 'icons/mob/species/drask/mask.dmi'
)
-/obj/item/clothing/mask/balaclava/attack_self(var/mob/user)
+/obj/item/clothing/mask/balaclava/attack_self(mob/user)
adjustmask(user)
/obj/item/clothing/mask/luchador
- name = "Luchador Mask"
+ name = "luchador mask"
desc = "Worn by robust fighters, flying high to defeat their foes!"
icon_state = "luchag"
item_state = "luchag"
@@ -40,13 +40,13 @@
)
/obj/item/clothing/mask/luchador/tecnicos
- name = "Tecnicos Mask"
+ name = "tecnicos mask"
desc = "Worn by robust fighters who uphold justice and fight honorably."
icon_state = "luchador"
item_state = "luchador"
/obj/item/clothing/mask/luchador/rudos
- name = "Rudos Mask"
+ name = "rudos mask"
desc = "Worn by robust fighters who are willing to do anything to win."
icon_state = "luchar"
item_state = "luchar"
diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm
index 032062461e7..28a0dad852d 100644
--- a/code/modules/clothing/masks/breath.dm
+++ b/code/modules/clothing/masks/breath.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/mask/breath
- desc = "A close-fitting mask that can be connected to an air supply."
name = "breath mask"
+ desc = "A close-fitting mask that can be connected to an air supply."
icon_state = "breath"
item_state = "breath"
flags = AIRTIGHT
@@ -21,7 +21,7 @@
"Plasmaman" = 'icons/mob/species/plasmaman/mask.dmi'
)
-/obj/item/clothing/mask/breath/attack_self(var/mob/user)
+/obj/item/clothing/mask/breath/attack_self(mob/user)
adjustmask(user)
/obj/item/clothing/mask/breath/AltClick(mob/user)
@@ -31,23 +31,23 @@
adjustmask(user)
/obj/item/clothing/mask/breath/medical
- desc = "A close-fitting sterile mask that can be connected to an air supply."
name = "medical mask"
+ desc = "A close-fitting sterile mask that can be connected to an air supply."
icon_state = "medical"
item_state = "medical"
permeability_coefficient = 0.01
put_on_delay = 10
/obj/item/clothing/mask/breath/vox
- desc = "A weirdly-shaped breath mask."
name = "vox breath mask"
+ desc = "A weirdly-shaped breath mask."
icon_state = "voxmask"
item_state = "voxmask"
permeability_coefficient = 0.01
species_restricted = list("Vox", "Vox Armalis") //These should fit the "Mega Vox" just fine.
actions_types = list()
-/obj/item/clothing/mask/breath/vox/attack_self(var/mob/user)
+/obj/item/clothing/mask/breath/vox/attack_self(mob/user)
return
/obj/item/clothing/mask/breath/vox/AltClick(mob/user)
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index b02bfc537bd..d8cba5290b7 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -58,6 +58,9 @@
"Grey" = 'icons/mob/species/grey/mask.dmi'
)
+/obj/item/clothing/mask/gas/explorer/marines
+ name = "military gas mask"
+
/obj/item/clothing/mask/gas/explorer/attack_self(mob/user)
adjustmask(user)
@@ -234,7 +237,7 @@
"dredd" = "I am, the LAW!"
)
/obj/item/clothing/mask/gas/sechailer/hos
- name = "\improper HOS SWAT mask"
+ name = "head of security's SWAT mask"
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000. It has a tan stripe."
icon_state = "hosmask"
aggressiveness = 3
@@ -242,7 +245,7 @@
actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/selectphrase)
/obj/item/clothing/mask/gas/sechailer/warden
- name = "\improper Warden SWAT mask"
+ name = "warden's SWAT mask"
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000. It has a blue stripe."
icon_state = "wardenmask"
aggressiveness = 3
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 15895046dbc..8514c038a58 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -176,7 +176,7 @@
return loc
return FALSE
-/obj/item/clothing/mask/muzzle/safety/shock/proc/process_activation(var/obj/D, var/normal = 1, var/special = 1)
+/obj/item/clothing/mask/muzzle/safety/shock/proc/process_activation(obj/D, normal = 1, special = 1)
visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
var/mob/M = can_shock(loc)
if(M)
@@ -225,7 +225,7 @@
)
-/obj/item/clothing/mask/surgical/attack_self(var/mob/user)
+/obj/item/clothing/mask/surgical/attack_self(mob/user)
adjustmask(user)
/obj/item/clothing/mask/fakemoustache
@@ -408,7 +408,7 @@
w_class = WEIGHT_CLASS_SMALL
/obj/item/clothing/mask/gas/clown_hat/pennywise
- name = "Pennywise Mask"
+ name = "\improper Pennywise mask"
desc = "It's the eater of worlds, and of children."
icon_state = "pennywise_mask"
item_state = "pennywise_mask"
@@ -436,7 +436,7 @@
)
actions_types = list(/datum/action/item_action/adjust)
-/obj/item/clothing/mask/bandana/attack_self(var/mob/user)
+/obj/item/clothing/mask/bandana/attack_self(mob/user)
adjustmask(user)
/obj/item/clothing/mask/bandana/red
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index abbd2a6f03c..1477e4673ad 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/shoes/magboots
- desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
name = "magboots"
+ desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
icon_state = "magboots0"
origin_tech = "materials=3;magnets=4;engineering=4"
var/magboot_state = "magboots"
@@ -46,8 +46,8 @@
/obj/item/clothing/shoes/magboots/advance
- desc = "Advanced magnetic boots that have a lighter magnetic pull, placing less burden on the wearer."
name = "advanced magboots"
+ desc = "Advanced magnetic boots that have a lighter magnetic pull, placing less burden on the wearer."
icon_state = "advmag0"
magboot_state = "advmag"
gustprotection = TRUE
@@ -56,20 +56,20 @@
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/clothing/shoes/magboots/syndie
- desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders."
name = "blood-red magboots"
+ desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders."
icon_state = "syndiemag0"
magboot_state = "syndiemag"
origin_tech = "magnets=4;syndicate=2"
/obj/item/clothing/shoes/magboots/syndie/advance //For the Syndicate Strike Team
- desc = "Reverse-engineered magboots that appear to be based on an advanced model, as they have a lighter magnetic pull. Property of Gorlex Marauders."
name = "advanced blood-red magboots"
+ desc = "Reverse-engineered magboots that appear to be based on an advanced model, as they have a lighter magnetic pull. Property of Gorlex Marauders."
slowdown_active = SHOES_SLOWDOWN
/obj/item/clothing/shoes/magboots/clown
- desc = "The prankster's standard-issue clowning shoes. Damn they're huge! There's a red light on the side."
name = "clown shoes"
+ desc = "The prankster's standard-issue clowning shoes. Damn they're huge! There's a red light on the side."
icon_state = "clownmag0"
magboot_state = "clownmag"
item_state = "clown_shoes"
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index b98661cc70a..ed0fbd60307 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -22,16 +22,16 @@
flags = NOSLIP
/obj/item/clothing/shoes/sandal
- desc = "A pair of rather plain, wooden sandals."
name = "sandals"
+ desc = "A pair of rather plain, wooden sandals."
icon_state = "wizard"
strip_delay = 50
put_on_delay = 50
magical = TRUE
/obj/item/clothing/shoes/sandal/marisa
- desc = "A pair of magic, black shoes."
name = "magic shoes"
+ desc = "A pair of magic, black shoes."
icon_state = "black"
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -41,8 +41,8 @@
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/shoes/galoshes
- desc = "A pair of yellow rubber boots, designed to prevent slipping on wet surfaces."
name = "galoshes"
+ desc = "A pair of yellow rubber boots, designed to prevent slipping on wet surfaces."
icon_state = "galoshes"
permeability_coefficient = 0.05
flags = NOSLIP
@@ -69,8 +69,8 @@
t_loc.MakeDry(TURF_WET_WATER)
/obj/item/clothing/shoes/clown_shoes
- desc = "The prankster's standard-issue clowning shoes. Damn they're huge! Ctrl-click to toggle the waddle dampeners!"
name = "clown shoes"
+ desc = "The prankster's standard-issue clowning shoes. Damn they're huge! Ctrl-click to toggle the waddle dampeners!"
icon_state = "clown"
item_state = "clown_shoes"
slowdown = SHOES_SLOWDOWN+1
@@ -215,13 +215,13 @@
item_state = "noble_boot"
/obj/item/clothing/shoes/sandal/white
- name = "White Sandals"
+ name = "white sandals"
desc = "Medical sandals that nerds wear."
icon_state = "medsandal"
item_color = "medsandal"
/obj/item/clothing/shoes/sandal/fancy
- name = "Fancy Sandals"
+ name = "fancy sandals"
desc = "FANCY!!."
icon_state = "fancysandal"
item_color = "fancysandal"
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index aad6a5af1a0..51d06aec017 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -1,6 +1,6 @@
//Skrell space gear. Sleek like a wetsuit.
/obj/item/clothing/head/helmet/space/skrell
- name = "Skrellian helmet"
+ name = "skrellian helmet"
desc = "Smoothly contoured and polished to a shine. Still looks like a fishbowl."
species_restricted = list("Skrell","Human")
@@ -15,7 +15,7 @@
item_color = "skrell_helmet_black"
/obj/item/clothing/suit/space/skrell
- name = "Skrellian hardsuit"
+ name = "skrellian hardsuit"
desc = "Seems like a wetsuit with reinforced plating seamlessly attached to it. Very chic."
species_restricted = list("Skrell","Human")
@@ -175,8 +175,8 @@
)
/obj/item/clothing/gloves/color/yellow/vox
- desc = "These bizarre gauntlets seem to be fitted for... bird claws?"
name = "insulated gauntlets"
+ desc = "These bizarre gauntlets seem to be fitted for... bird claws?"
icon_state = "gloves-vox"
item_state = "gloves-vox"
siemens_coefficient = 0
@@ -190,8 +190,8 @@
)
/obj/item/clothing/shoes/magboots/vox
- desc = "A pair of heavy, jagged armoured foot pieces, seemingly suitable for a velociraptor."
name = "vox magclaws"
+ desc = "A pair of heavy, jagged armoured foot pieces, seemingly suitable for a velociraptor."
item_state = "boots-vox"
icon_state = "boots-vox"
icon = 'icons/obj/clothing/species/vox/shoes.dmi'
diff --git a/code/modules/clothing/spacesuits/breaches.dm b/code/modules/clothing/spacesuits/breaches.dm
index 899cb8e8d46..c739a93744d 100644
--- a/code/modules/clothing/spacesuits/breaches.dm
+++ b/code/modules/clothing/spacesuits/breaches.dm
@@ -52,7 +52,7 @@ GLOBAL_LIST_INIT(breach_burn_descriptors, list(
descriptor = GLOB.breach_brute_descriptors[class]
//Repair a certain amount of brute or burn damage to the suit.
-/obj/item/clothing/suit/space/proc/repair_breaches(var/damtype, var/amount, var/mob/user)
+/obj/item/clothing/suit/space/proc/repair_breaches(damtype, amount, mob/user)
if(!can_breach || !breaches || !breaches.len || !damage)
to_chat(user, "There are no breaches to repair on \the [src].")
@@ -84,7 +84,7 @@ GLOBAL_LIST_INIT(breach_burn_descriptors, list(
user.visible_message("[user] patches some of the damage on \the [src].")
calc_breach_damage()
-/obj/item/clothing/suit/space/proc/create_breaches(var/damtype, var/amount)
+/obj/item/clothing/suit/space/proc/create_breaches(damtype, amount)
if(!can_breach || !amount)
return
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 94773ceaa31..aab301df1a8 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -1,5 +1,5 @@
/obj/item/clothing/head/helmet/space/chronos
- name = "Chronosuit Helmet"
+ name = "chronosuit helmet"
desc = "A white helmet with an opaque blue visor."
icon_state = "chronohelmet"
item_state = "chronohelmet"
@@ -19,7 +19,7 @@
/obj/item/clothing/suit/space/chronos
- name = "Chronosuit"
+ name = "chronosuit"
desc = "An advanced spacesuit equipped with teleportation and anti-compression technology"
icon_state = "chronosuit"
item_state = "chronosuit"
@@ -34,7 +34,7 @@
var/teleporting = 0
-/obj/item/clothing/suit/space/chronos/proc/new_camera(var/mob/user)
+/obj/item/clothing/suit/space/chronos/proc/new_camera(mob/user)
if(camera)
qdel(camera)
camera = new /obj/effect/chronos_cam(get_turf(user))
@@ -65,7 +65,7 @@
to_chat(user, "Elecrtromagnetic pulse detected, shutting down systems to preserve integrity...")
deactivate()
-/obj/item/clothing/suit/space/chronos/proc/chronowalk(var/mob/living/carbon/human/user)
+/obj/item/clothing/suit/space/chronos/proc/chronowalk(mob/living/carbon/human/user)
if(!teleporting && user && (user.stat == CONSCIOUS))
teleporting = 1
var/turf/from_turf = get_turf(user)
@@ -178,7 +178,7 @@
/obj/effect/chronos_cam
- name = "Chronosuit View"
+ name = "chronosuit view"
density = 0
anchored = 1
invisibility = 101
@@ -192,7 +192,7 @@
/obj/effect/chronos_cam/singularity_pull()
return
-/obj/effect/chronos_cam/relaymove(var/mob/user, direction)
+/obj/effect/chronos_cam/relaymove(mob/user, direction)
if(holder)
if(user == holder)
if(user.client && user.client.eye != src)
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index a732869c7e4..f5d7d500029 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -95,7 +95,7 @@
else if(scanning)
soundloop.start(user)
-/obj/item/clothing/head/helmet/space/hardsuit/proc/display_visor_message(var/msg)
+/obj/item/clothing/head/helmet/space/hardsuit/proc/display_visor_message(msg)
var/mob/wearer = loc
if(msg && ishuman(wearer))
wearer.show_message("[msg]", 1)
@@ -285,9 +285,9 @@
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
/obj/item/clothing/suit/space/hardsuit/engine/elite
- icon_state = "hardsuit-white"
name = "advanced hardsuit"
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
+ icon_state = "hardsuit-white"
item_state = "ce_hardsuit"
armor = list("melee" = 40, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 90)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
@@ -310,9 +310,9 @@
brightness_on = 7
/obj/item/clothing/suit/space/hardsuit/mining
- icon_state = "hardsuit-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
+ icon_state = "hardsuit-mining"
item_state = "mining_hardsuit"
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
@@ -482,15 +482,76 @@
scan_reagents = 1 //Generally worn by the CMO, so they'd get utility off of seeing reagents
/obj/item/clothing/suit/space/hardsuit/medical
- icon_state = "hardsuit-medical"
name = "medical hardsuit"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
+ icon_state = "hardsuit-medical"
item_state = "medical_hardsuit"
allowed = list(/obj/item/flashlight,/obj/item/tank/internals,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical,/obj/item/rad_laser)
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical
slowdown = 0.5
+ //Research Director hardsuit
+/obj/item/clothing/head/helmet/space/hardsuit/rd
+ name = "prototype hardsuit helmet"
+ desc = "A prototype helmet designed for research in a hazardous, low pressure environment. Scientific data flashes across the visor."
+ icon_state = "hardsuit0-rd"
+ item_state = "rd"
+ item_color = "rd"
+ flash_protect = 0
+ scan_reagents = TRUE
+ armor = list("melee" = 30,"bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
+ var/hud_active = FALSE
+ var/explosion_detection_dist = 21
+
+/obj/item/clothing/head/helmet/space/hardsuit/rd/equipped(mob/user, slot)
+ ..()
+ if(slot == slot_head)
+ GLOB.doppler_arrays += src //Needed to sense the kabooms
+ if(ishuman(user))
+ var/mob/living/carbon/human/U = user
+ if(istype(U.glasses, /obj/item/clothing/glasses/hud/diagnostic)) // If they are for some reason wearing a diagnostic hud when they put the helmet on
+ return // already have a hud
+ var/datum/atom_hud/H = GLOB.huds[DATA_HUD_DIAGNOSTIC]
+ H.add_hud_to(U)
+ hud_active = TRUE
+
+
+/obj/item/clothing/head/helmet/space/hardsuit/rd/dropped(mob/living/carbon/human/user)
+ ..()
+ if((user.head == src) && hud_active)
+ GLOB.doppler_arrays -= src
+ var/datum/atom_hud/H = GLOB.huds[DATA_HUD_DIAGNOSTIC]
+ H.remove_hud_from(user)
+
+/obj/item/clothing/head/helmet/space/hardsuit/rd/proc/sense_explosion(x0, y0, z0, devastation_range, heavy_impact_range,
+ light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range)
+ var/turf/T = get_turf(src)
+ var/dx = abs(x0 - T.x)
+ var/dy = abs(y0 - T.y)
+ var/distance
+ if(T.z != z0)
+ return
+ if(dx > dy)
+ distance = dx
+ else
+ distance = dy
+ if(distance > explosion_detection_dist)
+ return
+ display_visor_message("Explosion detected! Epicenter radius: [devastation_range], Outer radius: [heavy_impact_range], Shockwave radius: [light_impact_range]")
+
+/obj/item/clothing/suit/space/hardsuit/rd
+ name = "prototype hardsuit"
+ desc = "A prototype suit that protects against hazardous, low pressure environments. Fitted with extensive plating for handling explosives and dangerous research materials."
+ icon_state = "hardsuit-rd"
+ item_state = "hardsuit-rd"
+ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure.
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun/energy/wormhole_projector,
+ /obj/item/hand_tele, /obj/item/aicard)
+ armor = list("melee" = 30,"bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd
+
+
//Security
/obj/item/clothing/head/helmet/space/hardsuit/security
name = "security hardsuit helmet"
@@ -501,9 +562,9 @@
armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
/obj/item/clothing/suit/space/hardsuit/security
- icon_state = "hardsuit-sec"
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
+ icon_state = "hardsuit-sec"
item_state = "sec_hardsuit"
armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank/internals,/obj/item/melee/baton,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/restraints/handcuffs)
@@ -536,9 +597,9 @@
sprite_sheets = null
/obj/item/clothing/suit/space/hardsuit/singuloth
- icon_state = "hardsuit-singuloth"
name = "singuloth knight's armor"
desc = "This is a ceremonial armor from the chapter of the Singuloth Knights. It's made of pure forged adamantium."
+ icon_state = "hardsuit-singuloth"
item_state = "singuloth_hardsuit"
flags = STOPSPRESSUREDMAGE
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 100, fire = 95, acid = 95)
@@ -601,6 +662,12 @@
return mutable_appearance('icons/effects/effects.dmi', shield_state, MOB_LAYER + 0.01)
/obj/item/clothing/head/helmet/space/hardsuit/shielded
+ name = "shielded hardsuit helmet"
+ desc = "A hardsuit helmet with built in energy shielding. Will rapidly recharge when not under fire."
+ icon_state = "hardsuit0-sec"
+ item_state = "sec_helm"
+ item_color = "sec"
+ armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index c3ce1778a27..d732f3a00ab 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -81,7 +81,7 @@
)
/obj/item/clothing/head/helmet/space/deathsquad/beret
- name = "officer's beret"
+ name = "officer beret"
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_officer"
armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
@@ -158,7 +158,7 @@
//Paramedic EVA suit
/obj/item/clothing/head/helmet/space/eva/paramedic
- name = "Paramedic EVA helmet"
+ name = "paramedic EVA helmet"
desc = "A brand new paramedic EVA helmet. It seems to mold to your head shape. Used for retrieving bodies in space."
icon_state = "paramedic-eva-helmet"
item_state = "paramedic-eva-helmet"
@@ -179,7 +179,7 @@
)
/obj/item/clothing/suit/space/eva/paramedic
- name = "Paramedic EVA suit"
+ name = "paramedic EVA suit"
icon_state = "paramedic-eva"
item_state = "paramedic-eva"
desc = "A brand new paramedic EVA suit. The nitrile seems a bit too thin to be space proof. Used for retrieving bodies in space."
@@ -242,7 +242,7 @@
//Mime's Hardsuit
/obj/item/clothing/head/helmet/space/eva/mime
- name = "mime eva helmet"
+ name = "mime EVA helmet"
// icon = 'spaceciv.dmi'
desc = ". . ."
icon_state = "spacemimehelmet"
@@ -253,7 +253,7 @@
sprite_sheets_obj = null
/obj/item/clothing/suit/space/eva/mime
- name = "mime eva suit"
+ name = "mime EVA suit"
// icon = 'spaceciv.dmi'
desc = ". . ."
icon_state = "spacemime_suit"
@@ -264,7 +264,7 @@
sprite_sheets_obj = null
/obj/item/clothing/head/helmet/space/eva/clown
- name = "clown eva helmet"
+ name = "clown EVA helmet"
// icon = 'spaceciv.dmi'
desc = "An EVA helmet specifically designed for the clown. SPESSHONK!"
icon_state = "clownhelmet"
@@ -275,7 +275,7 @@
sprite_sheets_obj = null
/obj/item/clothing/suit/space/eva/clown
- name = "clown eva suit"
+ name = "clown EVA suit"
// icon = 'spaceciv.dmi'
desc = "An EVA suit specifically designed for the clown. SPESSHONK!"
icon_state = "spaceclown_suit"
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index b27f7a66729..e672852858d 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -147,7 +147,7 @@
item_state = "scientist_envirohelm"
/obj/item/clothing/head/helmet/space/plasmaman/rd
- name = "research director plasma envirosuit helmet"
+ name = "research director's plasma envirosuit helmet"
desc = "A plasmaman envirohelmet designed for the research director."
icon_state = "rd_envirohelm"
item_state = "rd_envirohelm"
@@ -209,7 +209,7 @@
item_state = "chef_envirohelm"
/obj/item/clothing/head/helmet/space/plasmaman/librarian
- name = "librarian's plasma envirosuit helmet"
+ name = "librarian plasma envirosuit helmet"
desc = "A slight modification on a traditional voidsuit helmet, this helmet was Nanotrasen's first solution to the *logistical problems* that come with employing plasmamen. Despite their limitations, these helmets still see use by historian and old-styled plasmamen alike."
icon_state = "prototype_envirohelm"
item_state = "prototype_envirohelm"
@@ -243,19 +243,19 @@
visor_icon = "clown_envisor"
/obj/item/clothing/head/helmet/space/plasmaman/hop
- name = "head of personnel envirosuit helmet"
+ name = "head of personnel's envirosuit helmet"
desc = "A plasmaman envirohelm that reeks of bureaucracy."
icon_state = "hop_envirohelm"
item_state = "hop_envirohelm"
/obj/item/clothing/head/helmet/space/plasmaman/captain
- name = "captain envirosuit helmet"
+ name = "captain's envirosuit helmet"
desc = "A plasmaman envirohelm designed with the insignia and markings befitting a captain."
icon_state = "cap_envirohelm"
item_state = "cap_envirohelm"
/obj/item/clothing/head/helmet/space/plasmaman/blueshield
- name = "blueshield envirosuit helmet"
+ name = "blueshield's envirosuit helmet"
desc = "A plasmaman envirohelm designed for the blueshield."
icon_state = "bs_envirohelm"
item_state = "bs_envirohelm"
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 8e702089d7f..52a230fa60b 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -31,55 +31,55 @@
//Green syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/green
- name = "Green Space Helmet"
+ name = "green space helmet"
icon_state = "syndicate-helm-green"
item_state = "syndicate-helm-green"
/obj/item/clothing/suit/space/syndicate/green
- name = "Green Space Suit"
+ name = "green space suit"
icon_state = "syndicate-green"
item_state = "syndicate-green"
//Dark green syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/green/dark
- name = "Dark Green Space Helmet"
+ name = "dark green space helmet"
icon_state = "syndicate-helm-green-dark"
item_state = "syndicate-helm-green-dark"
/obj/item/clothing/suit/space/syndicate/green/dark
- name = "Dark Green Space Suit"
+ name = "dark green space suit"
icon_state = "syndicate-green-dark"
item_state = "syndicate-green-dark"
//Orange syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/orange
- name = "Orange Space Helmet"
+ name = "orange space helmet"
icon_state = "syndicate-helm-orange"
item_state = "syndicate-helm-orange"
/obj/item/clothing/suit/space/syndicate/orange
- name = "Orange Space Suit"
+ name = "orange space suit"
icon_state = "syndicate-orange"
item_state = "syndicate-orange"
//Blue syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/blue
- name = "Blue Space Helmet"
+ name = "blue space helmet"
icon_state = "syndicate-helm-blue"
item_state = "syndicate-helm-blue"
/obj/item/clothing/suit/space/syndicate/blue
- name = "Blue Space Suit"
+ name = "blue space suit"
icon_state = "syndicate-blue"
item_state = "syndicate-blue"
//Black syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black"
item_state = "syndicate-helm-black"
@@ -91,7 +91,7 @@
resistance_flags = ACID_PROOF
/obj/item/clothing/suit/space/syndicate/black
- name = "Black Space Suit"
+ name = "black space suit"
icon_state = "syndicate-black"
item_state = "syndicate-black"
@@ -104,55 +104,55 @@
//Black-green syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/green
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black-green"
item_state = "syndicate-helm-black-green"
/obj/item/clothing/suit/space/syndicate/black/green
- name = "Black and Green Space Suit"
+ name = "black and green space suit"
icon_state = "syndicate-black-green"
item_state = "syndicate-black-green"
//Black-blue syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/blue
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black-blue"
item_state = "syndicate-helm-black-blue"
/obj/item/clothing/suit/space/syndicate/black/blue
- name = "Black and Blue Space Suit"
+ name = "black and blue space suit"
icon_state = "syndicate-black-blue"
item_state = "syndicate-black-blue"
//Black medical syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/med
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black-med"
item_state = "syndicate-helm-black"
/obj/item/clothing/suit/space/syndicate/black/med
- name = "Green Space Suit"
+ name = "green space suit"
icon_state = "syndicate-black-med"
item_state = "syndicate-black"
//Black-orange syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/orange
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black-orange"
item_state = "syndicate-helm-black"
/obj/item/clothing/suit/space/syndicate/black/orange
- name = "Black and Orange Space Suit"
+ name = "black and orange space suit"
icon_state = "syndicate-black-orange"
item_state = "syndicate-black"
//Black-red syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/red
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black-red"
item_state = "syndicate-helm-black-red"
@@ -164,7 +164,7 @@
resistance_flags = ACID_PROOF
/obj/item/clothing/suit/space/syndicate/black/red
- name = "Black and Red Space Suit"
+ name = "black and red space suit"
icon_state = "syndicate-black-red"
item_state = "syndicate-black-red"
@@ -178,12 +178,12 @@
//Black with yellow/red engineering syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/engie
- name = "Black Space Helmet"
+ name = "black space helmet"
icon_state = "syndicate-helm-black-engie"
item_state = "syndicate-helm-black"
/obj/item/clothing/suit/space/syndicate/black/engie
- name = "Black Engineering Space Suit"
+ name = "black engineering space suit"
icon_state = "syndicate-black-engie"
item_state = "syndicate-black"
diff --git a/code/modules/clothing/spacesuits/void.dm b/code/modules/clothing/spacesuits/void.dm
index 482c0fc137d..e279b4697d3 100644
--- a/code/modules/clothing/spacesuits/void.dm
+++ b/code/modules/clothing/spacesuits/void.dm
@@ -1,7 +1,7 @@
//Voidsuits
/obj/item/clothing/head/helmet/space/nasavoid
- name = "NASA Void Helmet"
+ name = "\improper NASA void helmet"
desc = "A high tech, NASA Centcom branch designed space suit helmet. Used for AI satellite maintenance."
icon_state = "void-red"
item_state = "void"
@@ -59,26 +59,26 @@
//Captian's Suit, like the other captian's suit, but looks better, at the cost of armor
/obj/item/clothing/head/helmet/space/nasavoid/captain
- name = "Fancy Retro Void Helmet"
+ name = "fancy retro void helmet"
icon_state = "void-captian"
desc = "A high tech, NASA Centcom branch designed space suit helmet. Used for AI satellite maintenance. This one is fit for a captain."
/obj/item/clothing/suit/space/nasavoid/captain
- name = "Fancy NASA Void Suit"
+ name = "fancy NASA void suit"
icon_state = "void-captian"
desc = "A high tech, NASA Centcom branch designed space suit. Used for AI satellite maintenance. This one is fit for a captain."
//Syndi's suit, on par with a blood red softsuit
/obj/item/clothing/head/helmet/space/nasavoid/syndi
- name = "Blood Red Retro Void Helmet"
+ name = "blood-red retro void helmet"
icon_state = "void-syndi"
desc = "A high tech, NASA Centcom branch designed space suit helmet. This one looks rather suspicious."
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
armor = list("melee" = 40, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 80, "acid" = 85)
/obj/item/clothing/suit/space/nasavoid/syndi
- name = "Blood Red NASA Void Suit"
+ name = "blood-red NASA void suit"
icon_state = "void-syndi"
desc = "A high tech, NASA Centcom branch designed space suit. This one looks rather suspicious."
w_class = WEIGHT_CLASS_NORMAL
@@ -88,7 +88,7 @@
//random spawner
/obj/effect/nasavoidsuitspawner
- name = "NASA Void Suit Spawner"
+ name = "\improper NASA void suit spawner"
icon = 'icons/obj/clothing/suits.dmi'
icon_state = "void-red"
desc = "You shouldn't see this, a spawner for NASA Void Suits."
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 650e8edf141..db127c5b100 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -81,7 +81,7 @@
..()
/obj/item/clothing/suit/armor/vest/blueshield
- name = "blueshield security armor"
+ name = "blueshield's security armor"
desc = "An armored vest with the badge of a Blueshield Lieutenant."
icon_state = "blueshield"
item_state = "blueshield"
@@ -139,7 +139,7 @@
sprite_sheets = null
/obj/item/clothing/suit/armor/vest/warden
- name = "Warden's armored jacket"
+ name = "warden's armored jacket"
desc = "An armored jacket with silver rank pips and livery."
icon_state = "warden_jacket"
item_state = "armor"
@@ -172,7 +172,7 @@
item_state = "capspacesuit"
/obj/item/clothing/suit/armor/riot
- name = "Riot Suit"
+ name = "riot suit"
desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement."
icon_state = "riot"
item_state = "swat_suit"
@@ -223,7 +223,7 @@
armor = list("melee" = 20, "bullet" = 10, "laser" = 30, "energy" = 5, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 50)
/obj/item/clothing/suit/armor/bulletproof
- name = "Bulletproof Vest"
+ name = "bulletproof vest"
desc = "A bulletproof vest that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
icon_state = "bulletproof"
item_state = "armor"
@@ -233,7 +233,7 @@
put_on_delay = 50
/obj/item/clothing/suit/armor/laserproof
- name = "Ablative Armor Vest"
+ name = "ablative armor vest"
desc = "A vest that excels in protecting the wearer against energy projectiles. Projects an energy field around the user, allowing a chance of energy projectile deflection no matter where on the user it would hit."
icon_state = "armor_reflec"
item_state = "armor_reflec"
@@ -261,7 +261,8 @@
name = "reactive armor"
desc = "Doesn't seem to do much for some reason."
var/active = FALSE
- var/emp_d = FALSE
+ /// Is the armor disabled, and prevented from reactivating temporarly?
+ var/disabled = FALSE
icon_state = "reactiveoff"
item_state = "reactiveoff"
blood_overlay_type = "armor"
@@ -272,8 +273,8 @@
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user)
active = !(active)
- if(emp_d)
- to_chat(user, "[src] is disabled from an electromagnetic pulse!")
+ if(disabled)
+ to_chat(user, "[src] is disabled and rebooting!")
return
if(active)
to_chat(user, "[src] is now active.")
@@ -290,18 +291,37 @@
A.UpdateButtonIcon()
/obj/item/clothing/suit/armor/reactive/emp_act(severity)
+ var/emp_power = 5 + (severity-1 ? 0 : 5)
+ disable(emp_power)
+ ..()
+
+/obj/item/clothing/suit/armor/reactive/proc/disable(disable_time = 0)
active = FALSE
- emp_d = TRUE
+ disabled = TRUE
icon_state = "reactiveoff"
item_state = "reactiveoff"
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/C = loc
C.update_inv_wear_suit()
- addtimer(CALLBACK(src, .proc/reboot), 100 / severity)
- ..()
+ addtimer(CALLBACK(src, .proc/reboot), disable_time SECONDS)
/obj/item/clothing/suit/armor/reactive/proc/reboot()
- emp_d = FALSE
+ disabled = FALSE
+ active = TRUE
+ icon_state = "reactive"
+ item_state = "reactive"
+ if(ishuman(loc))
+ var/mob/living/carbon/human/C = loc
+ C.update_inv_wear_suit()
+
+/obj/item/clothing/suit/armor/reactive/proc/reaction_check(hitby)
+ if(prob(hit_reaction_chance))
+ if(istype(hitby, /obj/item/projectile))
+ var/obj/item/projectile/P = hitby
+ if(!P.nodamage)
+ return TRUE
+ else
+ return TRUE
//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!)
/obj/item/clothing/suit/armor/reactive/teleport
@@ -312,7 +332,7 @@
/obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(!active)
return 0
- if(prob(hit_reaction_chance))
+ if(reaction_check(hitby))
var/mob/living/carbon/human/H = owner
owner.visible_message("The reactive teleport system flings [H] clear of [attack_text]!")
var/list/turfs = new/list()
@@ -332,33 +352,35 @@
if(!isturf(picked))
return
H.forceMove(picked)
- return 1
- return 0
+ return TRUE
+ return FALSE
/obj/item/clothing/suit/armor/reactive/fire
name = "reactive incendiary armor"
+ desc = "This armor uses the power of a pyro anomaly core to shoot protective jets of fire."
/obj/item/clothing/suit/armor/reactive/fire/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(!active)
- return 0
- if(prob(hit_reaction_chance))
+ return FALSE
+ if(reaction_check(hitby))
owner.visible_message("The [src] blocks the [attack_text], sending out jets of flame!")
for(var/mob/living/carbon/C in range(6, owner))
if(C != owner)
C.fire_stacks += 8
C.IgniteMob()
owner.fire_stacks = -20
- return 1
- return 0
+ return TRUE
+ return FALSE
/obj/item/clothing/suit/armor/reactive/stealth
name = "reactive stealth armor"
+ desc = "This armor uses an anomaly core combined with holographic projectors to make the user invisible temporarly, and make a fake image of the user."
/obj/item/clothing/suit/armor/reactive/stealth/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(!active)
- return 0
- if(prob(hit_reaction_chance))
+ return FALSE
+ if(reaction_check(hitby))
var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc)
E.Copy_Parent(owner, 50)
E.GiveTarget(owner) //so it starts running right away
@@ -367,23 +389,64 @@
owner.visible_message("[owner] is hit by [attack_text] in the chest!") //We pretend to be hit, since blocking it would stop the message otherwise
spawn(40)
owner.alpha = initial(owner.alpha)
- return 1
+ return TRUE
/obj/item/clothing/suit/armor/reactive/tesla
name = "reactive tesla armor"
+ desc = "This armor uses the power of a flux anomaly core to protect the user in shocking ways."
/obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(!active)
- return 0
- if(prob(hit_reaction_chance))
+ return FALSE
+ if(reaction_check(hitby))
owner.visible_message("The [src] blocks the [attack_text], sending out arcs of lightning!")
for(var/mob/living/M in view(6, owner))
if(M == owner)
continue
owner.Beam(M,icon_state="lightning[rand(1, 12)]",icon='icons/effects/effects.dmi',time=5)
- M.adjustFireLoss(25)
+ M.adjustFireLoss(20)
playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1)
- return 1
+ disable(rand(2, 5)) // let's not have buckshot set it off 4 times and do 80 burn damage.
+ return TRUE
+
+/obj/item/clothing/suit/armor/reactive/repulse
+ name = "reactive repulse armor"
+ desc = "An experimental suit of armor that violently throws back attackers with the power of a gravitational anomaly core."
+ ///How strong the reactive armor is for throwing
+ var/repulse_power = 3
+ /// How far away are we finding things to throw
+ var/repulse_range = 5
+
+/obj/item/clothing/suit/armor/reactive/repulse/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(!active)
+ return FALSE
+ if(reaction_check(hitby))
+ owner.visible_message("[src] blocks [attack_text], converting the attack into a wave of force!")
+ var/list/thrownatoms = list()
+ for(var/turf/T in range(repulse_range, owner)) //Done this way so things don't get thrown all around hilariously.
+ for(var/atom/movable/AM in T)
+ thrownatoms += AM
+
+ for(var/am in thrownatoms)
+ var/atom/movable/AM = am
+ if(AM == owner || AM.anchored)
+ continue
+
+ var/throwtarget = get_edge_target_turf(owner, get_dir(owner, get_step_away(AM, owner)))
+ var/distfromuser = get_dist(owner, AM)
+ if(distfromuser == 0)
+ if(isliving(AM))
+ var/mob/living/M = AM
+ M.Weaken(3)
+ to_chat(M, "You're slammed into the floor by [owner]'s reactive armor!")
+ else
+ if(isliving(AM))
+ var/mob/living/M = AM
+ to_chat(M, "You're thrown back by the [owner]'s reactive armor!")
+ spawn(0)
+ AM.throw_at(throwtarget, ((clamp((repulse_power - (clamp(distfromuser - 2, 0, distfromuser))), 3, repulse_power))), 1)//So stuff gets tossed around at the same time.
+ disable(rand(2, 5))
+ return TRUE
//All of the armor below is mostly unused
@@ -427,13 +490,13 @@
hide_tail_by_species = list("Vox")
/obj/item/clothing/suit/armor/tdome/red
- name = "Red Thunderdome Armor"
+ name = "red Thunderdome armor"
desc = "Armor worn by the red Thunderdome team."
icon_state = "tdred"
item_state = "tdred"
/obj/item/clothing/suit/armor/tdome/green
- name = "Green Thunderdome Armor"
+ name = "green Thunderdome armor"
desc = "Armor worn by the green Thunderdome team."
icon_state = "tdgreen"
item_state = "tdgreen"
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index f2bc0f1bd8e..996ce7e3ad9 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -95,7 +95,7 @@
//Plague Dr mask can be found in clothing/masks/gasmask.dm
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit
- name = "Plague doctor suit"
+ name = "plague doctor suit"
desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses."
icon_state = "plaguedoctor"
item_state = "bio_suit"
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 49b552d099d..b3fd2c5aa85 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -17,7 +17,7 @@
//Brig Physician
/obj/item/clothing/suit/storage/brigdoc
- name = "brig physician vest"
+ name = "brig physician's vest"
desc = "A vest often worn by doctors caring for inmates."
icon_state = "brigphysician-vest"
item_state = "brigphysician-vest"
@@ -209,7 +209,7 @@
//Blueshield
/obj/item/clothing/suit/storage/blueshield
- name = "blueshield coat"
+ name = "blueshield's coat"
desc = "NT deluxe ripoff. You finally have your own coat."
icon_state = "blueshieldcoat"
item_state = "blueshieldcoat"
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 5281a32676e..5e286ccb7e5 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -59,7 +59,7 @@
item_state = "labcoat_mort_open"
/obj/item/clothing/suit/storage/labcoat/emt
- name = "EMT labcoat"
+ name = "\improper EMT labcoat"
desc = "A comfortable suit for paramedics. Has dark colours."
icon_state = "labcoat_emt_open"
item_state = "labcoat_emt_open"
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 6efe1d38026..ff4afe5d2ce 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -83,7 +83,7 @@
/obj/item/clothing/suit/greatcoat
name = "great coat"
- desc = "A Nazi great coat."
+ desc = "A Nazi great coat." //A what
icon_state = "nazi"
item_state = "nazi"
@@ -708,7 +708,7 @@
icon_state = "white_jacket"
/obj/item/clothing/suit/xenos
- name = "xenos suit"
+ name = "xeno suit"
desc = "A suit made out of chitinous alien hide."
icon_state = "xenos"
item_state = "xenos_helm"
@@ -762,7 +762,7 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
/obj/item/clothing/head/mercy_hood
- name = "Mercy Hood"
+ name = "mercy Hood"
desc = "A soft white hood made of a synthetic fiber that provides improved protection against biohazards. Its elegant design allows a clear field of vision."
icon_state = "mercy_hood"
item_state = "mercy_hood"
@@ -839,8 +839,8 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
/obj/item/clothing/suit/officercoat
- name = "Clown Officer's Coat"
- desc = "A classy clown officer's overcoat, also designed by Hugo Boss."
+ name = "clown officer's coat"
+ desc = "A classy clown officer's overcoat, also designed by Hugo Boss." //What and why
icon_state = "officersuit"
item_state = "officersuit"
ignore_suitadjust = 0
@@ -852,7 +852,7 @@
)
/obj/item/clothing/suit/soldiercoat
- name = "Clown Soldier's Coat"
+ name = "clown soldier's coat"
desc = "An overcoat for the clown soldier, to keep him warm during those cold winter nights on the front."
icon_state = "soldiersuit"
item_state = "soldiersuit"
@@ -895,7 +895,7 @@
A.UpdateButtonIcon()
/obj/item/clothing/suit/lordadmiral
- name = "Lord Admiral's Coat"
+ name = "lord admiral's coat"
desc = "You'll be the Ruler of the King's Navy in no time."
icon_state = "lordadmiral"
item_state = "lordadmiral"
@@ -912,7 +912,7 @@
///Advanced Protective Suit, AKA, God Mode in wearable form.
/obj/item/clothing/suit/advanced_protective_suit
- name = "Advanced Protective Suit"
+ name = "advanced protective suit"
desc = "An incredibly advanced and complex suit; it has so many buttons and dials as to be incomprehensible."
w_class = WEIGHT_CLASS_BULKY
icon_state = "bomb"
diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm
index 1da4138fe77..6d198a28b1e 100644
--- a/code/modules/clothing/suits/storage.dm
+++ b/code/modules/clothing/suits/storage.dm
@@ -33,7 +33,7 @@
pockets.hear_talk(M, message_pieces)
..()
-/obj/item/clothing/suit/storage/hear_message(mob/M, var/msg)
+/obj/item/clothing/suit/storage/hear_message(mob/M, msg)
pockets.hear_message(M, msg)
..()
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 526086d2347..6cd8596d8b3 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -122,7 +122,7 @@
* Radiation protection
*/
/obj/item/clothing/head/radiation
- name = "Radiation Hood"
+ name = "radiation hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
flags = BLOCKHAIR|THICKMATERIAL
@@ -138,7 +138,7 @@
)
/obj/item/clothing/suit/radiation
- name = "Radiation suit"
+ name = "radiation suit"
desc = "A suit that protects against radiation. Label: Made with lead, do not eat insulation."
icon_state = "rad"
item_state = "rad_suit"
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 0c3a0e92310..d7c146e3602 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -22,7 +22,7 @@
name = "black wizard hat"
desc = "Strange-looking black hat-wear that most certainly belongs to a real skeleton. Spooky."
icon_state = "blackwizard"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/black_wizard
/obj/item/clothing/head/wizard/clown
name = "purple wizard hat"
@@ -55,17 +55,17 @@
dog_fashion = /datum/dog_fashion/head/blue_wizard
/obj/item/clothing/head/wizard/marisa
- name = "Witch Hat"
+ name = "witch hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/wizard/marisa
/obj/item/clothing/head/wizard/magus
- name = "Magus Helm"
+ name = "magus helm"
desc = "A mysterious helmet that hums with an unearthly power"
icon_state = "magus"
item_state = "magus"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/wizard/magus
/obj/item/clothing/head/wizard/amp
name = "psychic amplifier"
@@ -119,19 +119,19 @@
)
/obj/item/clothing/suit/wizrobe/marisa
- name = "Witch Robe"
+ name = "witch robe"
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
item_state = "marisarobe"
/obj/item/clothing/suit/wizrobe/magusblue
- name = "Magus Robe"
+ name = "magus robe"
desc = "A set of armoured robes that seem to radiate a dark power"
icon_state = "magusblue"
item_state = "magusblue"
/obj/item/clothing/suit/wizrobe/magusred
- name = "Magus Robe"
+ name = "magus robe"
desc = "A set of armoured robes that seem to radiate a dark power"
icon_state = "magusred"
item_state = "magusred"
@@ -154,7 +154,7 @@
magical = FALSE
/obj/item/clothing/head/wizard/marisa/fake
- name = "Witch Hat"
+ name = "witch hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
gas_transfer_coefficient = 1
@@ -164,7 +164,7 @@
magical = FALSE
/obj/item/clothing/suit/wizrobe/marisa/fake
- name = "Witch Robe"
+ name = "witch robe"
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
item_state = "marisarobe"
@@ -177,7 +177,7 @@
//Shielded Armour
/obj/item/clothing/suit/space/hardsuit/shielded/wizard
- name = "battlemage armour"
+ name = "battlemage armor"
desc = "Not all wizards are afraid of getting up close and personal. Not spaceproof despite its appearance."
icon_state = "hardsuit-wiz"
item_state = "wiz_hardsuit"
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 3a69f914339..33563eabe29 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -501,7 +501,7 @@
else
icon_state = "[base_icon]"
-/obj/item/clothing/accessory/necklace/locket/attackby(var/obj/item/O as obj, mob/user as mob)
+/obj/item/clothing/accessory/necklace/locket/attackby(obj/item/O as obj, mob/user as mob)
if(!open)
to_chat(user, "You have to open it first.")
return
diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm
index 727aba06b37..8d7cbc1a143 100644
--- a/code/modules/clothing/under/accessories/storage.dm
+++ b/code/modules/clothing/under/accessories/storage.dm
@@ -44,7 +44,7 @@
hold.hear_talk(M, message_pieces, verb)
..()
-/obj/item/clothing/accessory/storage/hear_message(mob/M, var/msg, verb, datum/language/speaking)
+/obj/item/clothing/accessory/storage/hear_message(mob/M, msg, verb, datum/language/speaking)
hold.hear_message(M, msg)
..()
diff --git a/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm b/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm
index 2ca942338b1..2c106e456ec 100644
--- a/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm
+++ b/code/modules/clothing/under/jobs/plasmamen/civilian_service.dm
@@ -71,7 +71,7 @@
item_color = "clown_envirosuit"
/obj/item/clothing/under/plasmaman/assistant
- name = "Assistant envirosuit"
+ name = "assistant's envirosuit"
desc = "The finest from the bottom of the plasmamen clothing barrel."
icon_state = "assistant_envirosuit"
item_state = "assistant_envirosuit"
@@ -93,21 +93,21 @@
return FALSE
/obj/item/clothing/under/plasmaman/hop
- name = "head of personnel envirosuit"
+ name = "head of personnel's envirosuit"
desc = "An envirosuit designed for plasmamen employed as the head of personnel."
icon_state = "hop_envirosuit"
item_state = "hop_envirosuit"
item_color = "hop_envirosuit"
/obj/item/clothing/under/plasmaman/captain
- name = "captain envirosuit"
+ name = "captain's envirosuit"
desc = "An envirosuit designed for plasmamen employed as the captain."
icon_state = "cap_envirosuit"
item_state = "cap_envirosuit"
item_color = "cap_envirosuit"
/obj/item/clothing/under/plasmaman/blueshield
- name = "blueshield envirosuit"
+ name = "blueshield's envirosuit"
desc = "An envirosuit designed for plasmamen employed as the blueshield."
icon_state = "bs_envirosuit"
item_state = "bs_envirosuit"
diff --git a/code/modules/clothing/under/jobs/plasmamen/engineering.dm b/code/modules/clothing/under/jobs/plasmamen/engineering.dm
index 02a71afcaf6..62c46f050a5 100644
--- a/code/modules/clothing/under/jobs/plasmamen/engineering.dm
+++ b/code/modules/clothing/under/jobs/plasmamen/engineering.dm
@@ -7,7 +7,7 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 10, "fire" = 95, "acid" = 95)
/obj/item/clothing/under/plasmaman/engineering/ce
- name = "chief engineer plasma envirosuit"
+ name = "chief engineer's plasma envirosuit"
desc = "An airtight suit designed to be used by plasmamen employed as the chief engineer."
icon_state = "ce_envirosuit"
item_state = "ce_envirosuit"
diff --git a/code/modules/clothing/under/jobs/plasmamen/medsci.dm b/code/modules/clothing/under/jobs/plasmamen/medsci.dm
index 531bc3fb124..424540914b4 100644
--- a/code/modules/clothing/under/jobs/plasmamen/medsci.dm
+++ b/code/modules/clothing/under/jobs/plasmamen/medsci.dm
@@ -6,7 +6,7 @@
item_color = "doctor_envirosuit"
/obj/item/clothing/under/plasmaman/cmo
- name = "cmo plasma envirosuit"
+ name = "chief medical officer's plasma envirosuit"
desc = "A suit designed for the station's more plasma-based chief medical officer."
icon_state = "cmo_envirosuit"
item_state = "cmo_envirosuit"
@@ -20,7 +20,7 @@
item_color = "scientist_envirosuit"
/obj/item/clothing/under/plasmaman/rd
- name = "rd plasma envirosuit"
+ name = "research director's plasma envirosuit"
desc = "A plasmaman envirosuit designed for the research director."
icon_state = "rd_envirosuit"
item_state = "rd_envirosuit"
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index afeca2fb3bd..f022ab40d9d 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -10,8 +10,8 @@
* Security
*/
/obj/item/clothing/under/rank/warden
- desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for more robust protection. It has the word \"Warden\" written on the shoulders."
name = "warden's jumpsuit"
+ desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for more robust protection. It has the word \"Warden\" written on the shoulders."
icon_state = "warden"
item_state = "r_suit"
item_color = "warden"
@@ -19,8 +19,8 @@
strip_delay = 50
/obj/item/clothing/under/rank/warden/skirt
- desc = "Standard feminine fashion for a Warden. It is made of sturdier material than standard jumpskirts. It has the word \"Warden\" written on the shoulders."
name = "warden's jumpskirt"
+ desc = "Standard feminine fashion for a Warden. It is made of sturdier material than standard jumpskirts. It has the word \"Warden\" written on the shoulders."
icon_state = "wardenf"
item_state = "r_suit"
item_color = "wardenf"
@@ -91,8 +91,8 @@
* Head of Security
*/
/obj/item/clothing/under/rank/head_of_security
- desc = "It's a jumpsuit worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer."
name = "head of security's jumpsuit"
+ desc = "It's a jumpsuit worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer."
icon_state = "hos"
item_state = "r_suit"
item_color = "hosred"
@@ -100,8 +100,8 @@
strip_delay = 60
/obj/item/clothing/under/rank/head_of_security/skirt
- desc = "It's a fashionable jumpskirt worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer."
name = "head of security's jumpskirt"
+ desc = "It's a fashionable jumpskirt worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer."
icon_state = "hosredf"
item_state = "r_suit"
item_color = "hosredf"
@@ -113,8 +113,8 @@
//Jensen cosplay gear
/obj/item/clothing/under/rank/head_of_security/jensen
- desc = "You never asked for anything that stylish."
name = "head of security's jumpsuit"
+ desc = "You never asked for anything that stylish."
icon_state = "jensen"
item_state = "jensen"
item_color = "jensen"
@@ -122,12 +122,12 @@
//Paradise Station
/obj/item/clothing/suit/armor/hos/hosnavyjacket
- name = "head of security navy jacket"
+ name = "head of security's navy jacket"
icon_state = "hosdnavyjacket"
item_state = "hosdnavyjacket"
/obj/item/clothing/suit/armor/hos/hosbluejacket
- name = "head of security blue jacket"
+ name = "head of security's blue jacket"
icon_state = "hosbluejacket"
item_state = "hosbluejacket"
@@ -167,8 +167,8 @@
//Brig Physician
/obj/item/clothing/under/rank/security/brigphys
- desc = "Jumpsuit for Brig Physician it has both medical and security protection."
name = "brig physician's jumpsuit"
+ desc = "Jumpsuit for Brig Physician it has both medical and security protection."
icon_state = "brig_phys"
item_state = "brig_phys"
item_color = "brig_phys"
@@ -176,8 +176,8 @@
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0, fire = 30, acid = 30)
/obj/item/clothing/under/rank/security/brigphys/skirt
- desc = "A skirted Brig Physician uniform. It has both security and medical protection."
name = "brig physician's jumpskirt"
+ desc = "A skirted Brig Physician uniform. It has both security and medical protection."
icon_state = "brig_physf"
item_state = "brig_physf"
item_color = "brig_physf"
@@ -185,8 +185,8 @@
//Pod Pilot
/obj/item/clothing/under/rank/security/pod_pilot
- desc = "Suit for your regular pod pilot."
name = "pod pilot's jumpsuit"
+ desc = "Suit for your regular pod pilot."
icon_state = "pod_pilot"
item_state = "pod_pilot"
item_color = "pod_pilot"
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 974ad9fd26f..e91942e8e5f 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -61,30 +61,41 @@
item_color = "vice"
/obj/item/clothing/under/solgov
- name = "Sol Federation marine uniform"
- desc = "A comfortable and durable combat uniform worn by Sol Federation Marine Forces."
+ name = "\improper Trans-Solar Federation marine uniform"
+ desc = "A comfortable and durable combat uniform worn by Trans-Solar Federation Marine Forces."
icon_state = "solgov"
item_state = "ro_suit"
item_color = "solgov"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
displays_id = 0
+/obj/item/clothing/under/solgov/elite
+ name = "\improper Trans-Solar Federation Specops marine uniform"
+ desc = "A comfortable and durable combat uniform worn by Trans-Solar Federation Specops Marine Forces."
+ icon_state = "solgovelite"
+ item_color = "solgovelite"
/obj/item/clothing/under/solgov/command
- name = "Sol Federation Lieutenant's uniform"
- desc = "A comfortable and durable combat uniform worn by Sol Federation Marine Forces. This one has additional insignia on its shoulders."
+ name = "\improper Trans-Solar Federation Lieutenant's uniform"
+ desc = "A comfortable and durable combat uniform worn by Trans-Solar Federation Marine Forces. This one has additional insignia on its shoulders and cuffs."
icon_state = "solgovc"
item_color = "solgovc"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
+/obj/item/clothing/under/solgov/command/elite
+ name = "\improper Trans-Solar Federation Specops Lieutenant's uniform"
+ desc = "A comfortable and durable combat uniform worn by Trans-Solar Federation Specops Marine Forces. This one has additional insignia on its shoulders and cuffs."
+ icon_state = "solgovcelite"
+ item_color = "solgovcelite"
+
/obj/item/clothing/under/solgov/rep
- name = "Sol Federation representative's uniform"
- desc = "A formal uniform worn by the diplomatic representatives of the Sol Federation."
+ name = "\improper Trans-Solar Federation representative's uniform"
+ desc = "A formal uniform worn by the diplomatic representatives of the Trans-Solar Federation."
icon_state = "solgovr"
item_color = "solgovr"
/obj/item/clothing/under/rank/centcom_officer
- desc = "It's a jumpsuit worn by CentComm Officers."
name = "\improper CentComm officer's jumpsuit"
+ desc = "It's a jumpsuit worn by CentComm Officers."
icon_state = "officer"
item_state = "g_suit"
item_color = "officer"
@@ -94,15 +105,15 @@
random_sensor = FALSE
/obj/item/clothing/under/rank/centcom_commander
+ name = "\improper CentComm commander's jumpsuit"
desc = "It's a jumpsuit worn by CentComm's highest-tier Commanders."
- name = "\improper CentComm officer's jumpsuit"
icon_state = "centcom"
item_state = "dg_suit"
item_color = "centcom"
/obj/item/clothing/under/rank/centcom/officer
+ name = "\improper Nanotrasen naval officer's uniform"
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant-Commander\" and bears \"N.A.S. Trurl \" on the left shoulder. Worn exclusively by officers of the Nanotrasen Navy. It's got exotic materials for protection."
- name = "\improper Nanotrasen Naval Officer Uniform"
icon_state = "navy_gold"
item_state = "navy_gold"
item_color = "navy_gold"
@@ -110,8 +121,8 @@
displays_id = 0
/obj/item/clothing/under/rank/centcom/captain
+ name = "\improper Nanotrasen naval captain's uniform"
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Captain\" and bears \"N.A.S. Trurl \" on the left shoulder. Worn exclusively by officers of the Nanotrasen Navy. It's got exotic materials for protection."
- name = "\improper Nanotrasen Naval Captain Uniform"
icon_state = "navy_gold"
item_state = "navy_gold"
item_color = "navy_gold"
@@ -119,8 +130,8 @@
displays_id = 0
/obj/item/clothing/under/rank/centcom/blueshield
+ name = "formal blueshield's uniform"
desc = "Gold trim on space-black cloth, this uniform bears \"Close Protection\" on the left shoulder. It's got exotic materials for protection."
- name = "\improper Formal Blueshield's Uniform"
icon_state = "officer"
item_state = "g_suit"
item_color = "officer"
@@ -128,8 +139,8 @@
displays_id = 0
/obj/item/clothing/under/rank/centcom/representative
+ name = "formal Nanotrasen Representative's uniform"
desc = "Gold trim on space-black cloth, this uniform bears \"N.S.S. Cyberiad\" on the left shoulder."
- name = "\improper Formal Nanotrasen Representative's Uniform"
icon_state = "officer"
item_state = "g_suit"
item_color = "officer"
@@ -140,8 +151,8 @@
desc = "Gold trim on space-black cloth, this uniform bears [station_name()] on the left shoulder."
/obj/item/clothing/under/rank/centcom/magistrate
+ name = "formal magistrate's uniform"
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Magistrate\" and bears \"N.S.S. Cyberiad\" on the left shoulder."
- name = "\improper Formal Magistrate's Uniform"
icon_state = "officer"
item_state = "g_suit"
item_color = "officer"
@@ -152,8 +163,8 @@
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Magistrate\" and bears [station_name()] on the left shoulder."
/obj/item/clothing/under/rank/centcom/diplomatic
+ name = "\improper Nanotrasen diplomatic uniform"
desc = "A very gaudy and official looking uniform of the Nanotrasen Diplomatic Corps."
- name = "\improper Nanotrasen Diplomatic Uniform"
icon_state = "presidente"
item_state = "g_suit"
item_color = "presidente"
@@ -422,25 +433,25 @@
item_color = "dress_saloon"
/obj/item/clothing/under/dress/dress_rd
- name = "research director dress uniform"
+ name = "research director's dress uniform"
desc = "Feminine fashion for the style concious RD."
icon_state = "dress_rd"
item_color = "dress_rd"
/obj/item/clothing/under/dress/dress_cap
- name = "captain dress uniform"
+ name = "captain's dress uniform"
desc = "Feminine fashion for the style concious captain."
icon_state = "dress_cap"
item_color = "dress_cap"
/obj/item/clothing/under/dress/dress_hop
- name = "head of personal dress uniform"
+ name = "head of personal's dress uniform"
desc = "Feminine fashion for the style concious HoP."
icon_state = "dress_hop"
item_color = "dress_hop"
/obj/item/clothing/under/dress/dress_hr
- name = "human resources director uniform"
+ name = "human resources director's uniform"
desc = "Superior class for the nosy H.R. Director."
icon_state = "huresource"
item_color = "huresource"
@@ -604,14 +615,14 @@
/obj/item/clothing/under/bane
- name = "Bane Harness"
+ name = "bane harness"
desc = "Wear this harness to become the bane of the station."
icon_state = "bane"
item_state = "bane"
item_color = "bane"
/obj/item/clothing/under/vox
- name = "Ripped Jumpsuit"
+ name = "ripped jumpsuit"
desc = "A jumpsuit that looks like it's been shredded by some talons. Who could wear this now?"
icon = 'icons/obj/clothing/species/vox/uniforms.dmi'
icon_state = "vgrey"
@@ -619,35 +630,35 @@
item_color = "vgrey"
/obj/item/clothing/under/psyjump
- name = "Psychic Amp Jumpsuit"
+ name = "psychic amp jumpsuit"
desc = "A suit made of strange materials."
icon_state = "psyamp"
item_state = "psyamp"
item_color = "psyamp"
/obj/item/clothing/under/rebeloutfit
- name = "Rebel Outfit"
+ name = "rebel outfit"
desc = "Made in Seattle, 2216."
icon_state = "colin_earle"
item_state = "colin_earle"
item_color = "colin_earle"
/obj/item/clothing/under/officeruniform
- name = "Clown Officer's Uniform"
+ name = "clown officer's uniform"
desc = "For Clown officers, this uniform was designed by the great clown designer Hugo Boss."
icon_state = "officeruniform"
item_color = "officeruniform"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/soldieruniform
- name = "Clown Soldier's Uniform"
+ name = "clown soldier's uniform"
desc = "For the basic grunt of the Clown army."
icon_state = "soldieruniform"
item_color = "soldieruniform"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/pennywise
- name = "Pennywise Costume"
+ name = "\improper Pennywise costume"
desc = "It's everything you ever were afraid of."
icon_state = "pennywise"
item_color = "pennywise"
diff --git a/code/modules/clothing/under/oldstation_uni.dm b/code/modules/clothing/under/oldstation_uni.dm
index 97a3fa7614b..c39add82a3d 100644
--- a/code/modules/clothing/under/oldstation_uni.dm
+++ b/code/modules/clothing/under/oldstation_uni.dm
@@ -1,32 +1,32 @@
//Let's keep clothing sorting clean. This is for all the oldstation clothes.
/obj/item/clothing/under/retro/security
- desc = "A (now) retro corporate security jumpsuit. It doesn't have any sort of robust fabric, good ol' NT cutting costs."
name = "retro security officer's uniform"
+ desc = "A (now) retro corporate security jumpsuit. It doesn't have any sort of robust fabric, good ol' NT cutting costs."
icon_state = "retro_sec"
item_state = "retro_sec"
item_color = "retro_sec"
displays_id = 0
/obj/item/clothing/under/retro/medical
- desc = "A once biologically resistant medical uniform. The high-vis stripes are faded and unreflective."
name = "retro medical officer's uniform"
+ desc = "A once biologically resistant medical uniform. The high-vis stripes are faded and unreflective."
icon_state = "retro_med"
item_state = "retro_med"
item_color = "retro_med"
displays_id = 0
/obj/item/clothing/under/retro/engineering
- desc = "A faded grimy engineering jumpsuit and overall combo. It's coated with oil, dust, and grit."
name = "retro engineering uniform"
+ desc = "A faded grimy engineering jumpsuit and overall combo. It's coated with oil, dust, and grit."
icon_state = "retro_eng"
item_state = "retro_eng"
item_color = "retro_eng"
displays_id = 0
/obj/item/clothing/under/retro/science
- desc = "A faded polo and set of distinct white slacks. What a ridiculous tie."
name = "retro science officer's uniform"
+ desc = "A faded polo and set of distinct white slacks. What a ridiculous tie."
icon_state = "retro_sci"
item_state = "retro_sci"
item_color = "retro_sci"
diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm
index d41c9ce9f00..f6dbb48ed63 100644
--- a/code/modules/crafting/craft.dm
+++ b/code/modules/crafting/craft.dm
@@ -166,12 +166,13 @@
if(!check_pathtools(user, R, contents))
return ", missing tool."
var/list/parts = del_reqs(R, user)
- var/atom/movable/I = new R.result (get_turf(user.loc))
- I.CheckParts(parts, R)
- if(isitem(I))
- user.put_in_hands(I)
- if(send_feedback)
- SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
+ for(var/I in R.result)
+ var/atom/movable/M = new I (get_turf(user))
+ M.CheckParts(parts)
+ if(isitem(M))
+ user.put_in_hands(M)
+ if(send_feedback)
+ SSblackbox.record_feedback("tally", "object_crafted", 1, M.type)
return 0
return "."
return ", missing tool."
diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm
index 8cc13b0185a..da24e248355 100644
--- a/code/modules/crafting/guncrafting.dm
+++ b/code/modules/crafting/guncrafting.dm
@@ -36,7 +36,7 @@
icon = 'icons/obj/improvised.dmi'
icon_state = "ishotgunstep1"
-/obj/item/weaponcrafting/ishotgunconstruction/attackby(var/obj/item/I, mob/user as mob, params)
+/obj/item/weaponcrafting/ishotgunconstruction/attackby(obj/item/I, mob/user as mob, params)
..()
if(istype(I, /obj/item/screwdriver))
var/obj/item/weaponcrafting/ishotgunconstruction2/C = new /obj/item/weaponcrafting/ishotgunconstruction2
@@ -67,7 +67,7 @@
icon = 'icons/obj/improvised.dmi'
icon_state = "ishotgunstep2"
-/obj/item/weaponcrafting/ishotgunconstruction3/attackby(var/obj/item/I, mob/user as mob, params)
+/obj/item/weaponcrafting/ishotgunconstruction3/attackby(obj/item/I, mob/user as mob, params)
..()
if(istype(I, /obj/item/stack/packageWrap))
var/obj/item/stack/packageWrap/C = I
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index 18ef065d62c..3905458d864 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -1,21 +1,33 @@
/datum/crafting_recipe
- var/name = "" //in-game display name
- var/reqs[] = list() //type paths of items consumed associated with how many are needed
- var/blacklist[] = list() //type paths of items explicitly not allowed as an ingredient
- var/result //type path of item resulting from this craft
- var/tools[] = list() //tool behaviours of items needed but not consumed
- var/pathtools[] = list() //type paths of items needed but not consumed
- var/time = 30 //time in deciseconds
- var/parts[] = list() //type paths of items that will be placed in the result
- var/chem_catalysts[] = list() //like tools but for reagents
- var/category = CAT_NONE //where it shows up in the crafting UI
+ /// In-game display name.
+ var/name = ""
+ /// Type paths of items consumed associated with how many are needed.
+ var/list/reqs = list()
+ /// Type paths of items explicitly not allowed as an ingredient.
+ var/list/blacklist = list()
+ /// Type paths of item(s) resulting from this craft.
+ var/list/result = list()
+ /// Tool behaviours of items needed but not consumed.
+ var/list/tools = list()
+ /// Type paths of items needed but not consumed.
+ var/list/pathtools = list()
+ /// Crafting time in deciseconds.
+ var/time = 30
+ /// Type paths of items that will be placed inside the result.
+ var/list/parts = list()
+ var/list/chem_catalysts = list() //like tools but for reagents
+ /// What category it's shown under in the crafting UI.
+ var/category = CAT_NONE
+ /// What subcategory it's shown under in the crafting UI. (e.g 'Ammo' under 'Weapons')
var/subcategory = CAT_NONE
- var/always_availible = TRUE //Set to FALSE if it needs to be learned first.
+ /// Is this recipe always available, or does it need to be learned first.
+ var/always_availible = TRUE
+ /// Will this recipe send an admin message when it's completed.
var/alert_admins_on_craft = FALSE
/datum/crafting_recipe/IED
name = "IED"
- result = /obj/item/grenade/iedcasing
+ result = list(/obj/item/grenade/iedcasing)
reqs = list(/datum/reagent/fuel = 50,
/obj/item/stack/cable_coil = 1,
/obj/item/assembly/igniter = 1,
@@ -27,7 +39,7 @@
/datum/crafting_recipe/molotov
name = "Molotov"
- result = /obj/item/reagent_containers/food/drinks/bottle/molotov
+ result = list(/obj/item/reagent_containers/food/drinks/bottle/molotov)
reqs = list(/obj/item/reagent_containers/glass/rag = 1,
/obj/item/reagent_containers/food/drinks/bottle = 1)
parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1)
@@ -37,7 +49,7 @@
/datum/crafting_recipe/stunprod
name = "Stunprod"
- result = /obj/item/melee/baton/cattleprod
+ result = list(/obj/item/melee/baton/cattleprod)
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
/obj/item/stack/rods = 1,
/obj/item/assembly/igniter = 1)
@@ -47,7 +59,7 @@
/datum/crafting_recipe/bola
name = "Bola"
- result = /obj/item/restraints/legcuffs/bola
+ result = list(/obj/item/restraints/legcuffs/bola)
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
/obj/item/stack/sheet/metal = 6)
time = 20//15 faster than crafting them by hand!
@@ -56,7 +68,7 @@
/datum/crafting_recipe/ed209
name = "ED209"
- result = /mob/living/simple_animal/bot/ed209
+ result = list(/mob/living/simple_animal/bot/ed209)
reqs = list(/obj/item/robot_parts/robot_suit = 1,
/obj/item/clothing/head/helmet = 1,
/obj/item/clothing/suit/armor/vest = 1,
@@ -73,7 +85,7 @@
/datum/crafting_recipe/secbot
name = "Secbot"
- result = /mob/living/simple_animal/bot/secbot
+ result = list(/mob/living/simple_animal/bot/secbot)
reqs = list(/obj/item/assembly/signaler = 1,
/obj/item/clothing/head/helmet = 1,
/obj/item/melee/baton = 1,
@@ -85,7 +97,7 @@
/datum/crafting_recipe/griefsky
name = "General Griefsky"
- result = /mob/living/simple_animal/bot/secbot/griefsky
+ result = list(/mob/living/simple_animal/bot/secbot/griefsky)
reqs = list(/obj/item/assembly/signaler = 1,
/obj/item/clothing/head/helmet = 1,
/obj/item/melee/energy/sword = 4,
@@ -99,7 +111,7 @@
/datum/crafting_recipe/cleanbot
name = "Cleanbot"
- result = /mob/living/simple_animal/bot/cleanbot
+ result = list(/mob/living/simple_animal/bot/cleanbot)
reqs = list(/obj/item/reagent_containers/glass/bucket = 1,
/obj/item/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
@@ -108,7 +120,7 @@
/datum/crafting_recipe/honkbot
name = "Honkbot"
- result = /mob/living/simple_animal/bot/honkbot
+ result = list(/mob/living/simple_animal/bot/honkbot)
reqs = list(/obj/item/robot_parts/r_arm = 1,
/obj/item/bikehorn = 1,
/obj/item/assembly/prox_sensor = 1,
@@ -119,7 +131,7 @@
/datum/crafting_recipe/floorbot
name = "Floorbot"
- result = /mob/living/simple_animal/bot/floorbot
+ result = list(/mob/living/simple_animal/bot/floorbot)
reqs = list(/obj/item/storage/toolbox = 1,
/obj/item/stack/tile/plasteel = 10,
/obj/item/assembly/prox_sensor = 1,
@@ -129,7 +141,7 @@
/datum/crafting_recipe/medbot
name = "Medbot"
- result = /mob/living/simple_animal/bot/medbot
+ result = list(/mob/living/simple_animal/bot/medbot)
reqs = list(/obj/item/healthanalyzer = 1,
/obj/item/storage/firstaid = 1,
/obj/item/assembly/prox_sensor = 1,
@@ -139,7 +151,7 @@
/datum/crafting_recipe/flamethrower
name = "Flamethrower"
- result = /obj/item/flamethrower
+ result = list(/obj/item/flamethrower)
reqs = list(/obj/item/weldingtool = 1,
/obj/item/assembly/igniter = 1,
/obj/item/stack/rods = 1)
@@ -153,7 +165,7 @@
/datum/crafting_recipe/pulseslug
name = "Pulse Slug Shell"
- result = /obj/item/ammo_casing/shotgun/pulseslug
+ result = list(/obj/item/ammo_casing/shotgun/pulseslug)
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/stock_parts/capacitor/adv = 2,
/obj/item/stock_parts/micro_laser/ultra = 1)
@@ -164,7 +176,7 @@
/datum/crafting_recipe/dragonsbreath
name = "Dragonsbreath Shell"
- result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
+ result = list(/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath)
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
/datum/reagent/phosphorus = 5,)
tools = list(TOOL_SCREWDRIVER)
@@ -174,7 +186,7 @@
/datum/crafting_recipe/frag12
name = "FRAG-12 Shell"
- result = /obj/item/ammo_casing/shotgun/frag12
+ result = list(/obj/item/ammo_casing/shotgun/frag12)
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
/datum/reagent/glycerol = 5,
/datum/reagent/acid = 5,
@@ -186,7 +198,7 @@
/datum/crafting_recipe/ionslug
name = "Ion Scatter Shell"
- result = /obj/item/ammo_casing/shotgun/ion
+ result = list(/obj/item/ammo_casing/shotgun/ion)
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/stock_parts/micro_laser/ultra = 1)
tools = list(TOOL_SCREWDRIVER)
@@ -196,7 +208,7 @@
/datum/crafting_recipe/improvisedslug
name = "Improvised Shotgun Shell"
- result = /obj/item/ammo_casing/shotgun/improvised
+ result = list(/obj/item/ammo_casing/shotgun/improvised)
reqs = list(/obj/item/grenade/chem_grenade = 1,
/obj/item/stack/sheet/metal = 1,
/obj/item/stack/cable_coil = 1,
@@ -208,7 +220,7 @@
/datum/crafting_recipe/improvisedslugoverload
name = "Overload Improvised Shell"
- result = /obj/item/ammo_casing/shotgun/improvised/overload
+ result = list(/obj/item/ammo_casing/shotgun/improvised/overload)
reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1,
/datum/reagent/blackpowder = 10,
/datum/reagent/plasma_dust = 20)
@@ -219,7 +231,7 @@
/datum/crafting_recipe/laserslug
name = "Laser Slug Shell"
- result = /obj/item/ammo_casing/shotgun/laserslug
+ result = list(/obj/item/ammo_casing/shotgun/laserslug)
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/stock_parts/capacitor/adv = 1,
/obj/item/stock_parts/micro_laser/high = 1)
@@ -230,7 +242,7 @@
/datum/crafting_recipe/ishotgun
name = "Improvised Shotgun"
- result = /obj/item/gun/projectile/revolver/doublebarrel/improvised
+ result = list(/obj/item/gun/projectile/revolver/doublebarrel/improvised)
reqs = list(/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
/obj/item/weaponcrafting/stock = 1,
@@ -242,7 +254,7 @@
/datum/crafting_recipe/chainsaw
name = "Chainsaw"
- result = /obj/item/twohanded/required/chainsaw
+ result = list(/obj/item/twohanded/required/chainsaw)
reqs = list(/obj/item/circular_saw = 1,
/obj/item/stack/cable_coil = 1,
/obj/item/stack/sheet/plasteel = 1)
@@ -254,7 +266,7 @@
/datum/crafting_recipe/spear
name = "Spear"
- result = /obj/item/twohanded/spear
+ result = list(/obj/item/twohanded/spear)
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
/obj/item/shard = 1,
/obj/item/stack/rods = 1)
@@ -264,7 +276,7 @@
/datum/crafting_recipe/spooky_camera
name = "Camera Obscura"
- result = /obj/item/camera/spooky
+ result = list(/obj/item/camera/spooky)
time = 15
reqs = list(/obj/item/camera = 1,
/datum/reagent/holywater = 10)
@@ -273,14 +285,14 @@
/datum/crafting_recipe/papersack
name = "Paper Sack"
- result = /obj/item/storage/box/papersack
+ result = list(/obj/item/storage/box/papersack)
time = 10
reqs = list(/obj/item/paper = 5)
category = CAT_MISC
/datum/crafting_recipe/flashlight_eyes
name = "Flashlight Eyes"
- result = /obj/item/organ/internal/eyes/cybernetic/flashlight
+ result = list(/obj/item/organ/internal/eyes/cybernetic/flashlight)
time = 10
reqs = list(/obj/item/flashlight = 2,
/obj/item/restraints/handcuffs/cable = 1)
@@ -288,7 +300,7 @@
/datum/crafting_recipe/sushimat
name = "Sushi Mat"
- result = /obj/item/kitchen/sushimat
+ result = list(/obj/item/kitchen/sushimat)
time = 10
reqs = list(/obj/item/stack/sheet/wood = 1,
/obj/item/stack/cable_coil = 2)
@@ -296,7 +308,7 @@
/datum/crafting_recipe/notreallysoap
name = "Homemade Soap"
- result = /obj/item/soap/ducttape
+ result = list(/obj/item/soap/ducttape)
time = 50
reqs = list(/obj/item/stack/tape_roll = 1,
/datum/reagent/liquidgibs = 10)
@@ -304,7 +316,7 @@
/datum/crafting_recipe/garrote
name = "Makeshift Garrote"
- result = /obj/item/twohanded/garrote/improvised
+ result = list(/obj/item/twohanded/garrote/improvised)
time = 15
reqs = list(/obj/item/stack/sheet/wood = 1,
/obj/item/stack/cable_coil = 5)
@@ -314,7 +326,7 @@
/datum/crafting_recipe/makeshift_bolt
name = "Makeshift Bolt"
- result = /obj/item/arrow/rod
+ result = list(/obj/item/arrow/rod)
time = 5
reqs = list(/obj/item/stack/rods = 1)
tools = list(TOOL_WELDER)
@@ -323,7 +335,7 @@
/datum/crafting_recipe/crossbow
name = "Powered Crossbow"
- result = /obj/item/gun/throw/crossbow
+ result = list(/obj/item/gun/throw/crossbow)
time = 150
reqs = list(/obj/item/stack/rods = 3,
/obj/item/stack/cable_coil = 10,
@@ -335,7 +347,7 @@
/datum/crafting_recipe/glove_balloon
name = "Latex Glove Balloon"
- result = /obj/item/latexballon
+ result = list(/obj/item/latexballon)
time = 15
reqs = list(/obj/item/clothing/gloves/color/latex = 1,
/obj/item/stack/cable_coil = 5)
@@ -343,15 +355,22 @@
/datum/crafting_recipe/gold_horn
name = "Golden bike horn"
- result = /obj/item/bikehorn/golden
+ result = list(/obj/item/bikehorn/golden)
time = 20
reqs = list(/obj/item/stack/sheet/mineral/bananium = 5,
/obj/item/bikehorn)
category = CAT_MISC
+/datum/crafting_recipe/sad_trombone
+ name = "Sad trombone"
+ result = list(/obj/item/instrument/trombone/sad)
+ time = 20
+ reqs = list(/obj/item/stack/sheet/mineral/bananium = 5)
+ category = CAT_MISC
+
/datum/crafting_recipe/blackcarpet
name = "Black Carpet"
- result = /obj/item/stack/tile/carpet/black
+ result = list(/obj/item/stack/tile/carpet/black)
time = 20
reqs = list(/obj/item/stack/tile/carpet = 1)
pathtools = list(/obj/item/toy/crayon)
@@ -359,7 +378,7 @@
/datum/crafting_recipe/showercurtain
name = "Shower Curtains"
- result = /obj/structure/curtain
+ result = list(/obj/structure/curtain)
time = 20
reqs = list(/obj/item/stack/sheet/cloth = 2,
/obj/item/stack/sheet/plastic = 2,
@@ -368,7 +387,7 @@
/datum/crafting_recipe/chemical_payload
name = "Chemical Payload (C4)"
- result = /obj/item/bombcore/chemical
+ result = list(/obj/item/bombcore/chemical)
reqs = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/grenade/plastic/c4 = 1,
@@ -382,7 +401,7 @@
/datum/crafting_recipe/chemical_payload2
name = "Chemical Payload (gibtonite)"
- result = /obj/item/bombcore/chemical
+ result = list(/obj/item/bombcore/chemical)
reqs = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/twohanded/required/gibtonite = 1,
@@ -396,7 +415,7 @@
/datum/crafting_recipe/toxins_payload
name = "Toxins Payload Casing"
- result = /obj/item/bombcore/toxins
+ result = list(/obj/item/bombcore/toxins)
reqs = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/assembly/signaler = 1,
@@ -407,14 +426,14 @@
/datum/crafting_recipe/bonearmor
name = "Bone Armor"
- result = /obj/item/clothing/suit/armor/bone
+ result = list(/obj/item/clothing/suit/armor/bone)
time = 30
reqs = list(/obj/item/stack/sheet/bone = 6)
category = CAT_PRIMAL
/datum/crafting_recipe/bonetalisman
name = "Bone Talisman"
- result = /obj/item/clothing/accessory/necklace/talisman
+ result = list(/obj/item/clothing/accessory/necklace/talisman)
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
@@ -422,7 +441,7 @@
/datum/crafting_recipe/bonecodpiece
name = "Skull Codpiece"
- result = /obj/item/clothing/accessory/necklace/skullcodpiece
+ result = list(/obj/item/clothing/accessory/necklace/skullcodpiece)
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/animalhide/goliath_hide = 1)
@@ -430,7 +449,7 @@
/datum/crafting_recipe/bracers
name = "Bone Bracers"
- result = /obj/item/clothing/gloves/bracer
+ result = list(/obj/item/clothing/gloves/bracer)
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
@@ -438,14 +457,14 @@
/datum/crafting_recipe/skullhelm
name = "Skull Helmet"
- result = /obj/item/clothing/head/helmet/skull
+ result = list(/obj/item/clothing/head/helmet/skull)
time = 30
reqs = list(/obj/item/stack/sheet/bone = 4)
category = CAT_PRIMAL
/datum/crafting_recipe/goliathcloak
name = "Goliath Cloak"
- result = /obj/item/clothing/suit/hooded/goliath
+ result = list(/obj/item/clothing/suit/hooded/goliath)
time = 50
reqs = list(/obj/item/stack/sheet/leather = 2,
/obj/item/stack/sheet/sinew = 2,
@@ -454,7 +473,7 @@
/datum/crafting_recipe/drakecloak
name = "Ash Drake Armour"
- result = /obj/item/clothing/suit/hooded/drake
+ result = list(/obj/item/clothing/suit/hooded/drake)
time = 60
reqs = list(/obj/item/stack/sheet/bone = 10,
/obj/item/stack/sheet/sinew = 2,
@@ -463,7 +482,7 @@
/datum/crafting_recipe/firebrand
name = "Firebrand"
- result = /obj/item/match/firebrand
+ result = list(/obj/item/match/firebrand)
time = 100 //Long construction time. Making fire is hard work.
reqs = list(/obj/item/stack/sheet/wood = 2)
category = CAT_PRIMAL
@@ -473,19 +492,19 @@
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
- result = /obj/item/stack/medical/splint/tribal
+ result = list(/obj/item/stack/medical/splint/tribal)
category = CAT_PRIMAL
/datum/crafting_recipe/bonedagger
name = "Bone Dagger"
- result = /obj/item/kitchen/knife/combat/survival/bone
+ result = list(/obj/item/kitchen/knife/combat/survival/bone)
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/bonespear
name = "Bone Spear"
- result = /obj/item/twohanded/spear/bonespear
+ result = list(/obj/item/twohanded/spear/bonespear)
time = 30
reqs = list(/obj/item/stack/sheet/bone = 4,
/obj/item/stack/sheet/sinew = 1)
@@ -493,7 +512,7 @@
/datum/crafting_recipe/boneaxe
name = "Bone Axe"
- result = /obj/item/twohanded/fireaxe/boneaxe
+ result = list(/obj/item/twohanded/fireaxe/boneaxe)
time = 50
reqs = list(/obj/item/stack/sheet/bone = 6,
/obj/item/stack/sheet/sinew = 3)
@@ -503,7 +522,7 @@
name = "Bonfire"
time = 60
reqs = list(/obj/item/grown/log = 5)
- result = /obj/structure/bonfire
+ result = list(/obj/structure/bonfire)
category = CAT_PRIMAL
alert_admins_on_craft = TRUE
@@ -511,19 +530,19 @@
name = "Rake"
time = 30
reqs = list(/obj/item/stack/sheet/wood = 5)
- result = /obj/item/cultivator/rake
+ result = list(/obj/item/cultivator/rake)
category = CAT_PRIMAL
/datum/crafting_recipe/woodbucket
name = "Wooden Bucket"
time = 30
reqs = list(/obj/item/stack/sheet/wood = 3)
- result = /obj/item/reagent_containers/glass/bucket/wooden
+ result = list(/obj/item/reagent_containers/glass/bucket/wooden)
category = CAT_PRIMAL
/datum/crafting_recipe/guillotine
name = "Guillotine"
- result = /obj/structure/guillotine
+ result = list(/obj/structure/guillotine)
time = 150 // Building a functioning guillotine takes time
reqs = list(/obj/item/stack/sheet/plasteel = 3,
/obj/item/stack/sheet/wood = 20,
@@ -533,7 +552,7 @@
/datum/crafting_recipe/ghettojetpack
name = "Improvised Jetpack"
- result = /obj/item/tank/jetpack/improvised
+ result = list(/obj/item/tank/jetpack/improvised)
time = 30
reqs = list(/obj/item/tank/internals/oxygen = 2, /obj/item/extinguisher = 1, /obj/item/pipe = 3, /obj/item/stack/cable_coil = MAXCOIL)
category = CAT_MISC
@@ -541,7 +560,7 @@
/datum/crafting_recipe/drill
name = "Thermal Drill"
- result = /obj/item/thermal_drill
+ result = list(/obj/item/thermal_drill)
time = 60
reqs = list(/obj/item/stack/cable_coil = 5,
/obj/item/mecha_parts/mecha_equipment/drill = 1,
@@ -553,7 +572,7 @@
/datum/crafting_recipe/d_drill
name = "Diamond Tipped Thermal Drill"
- result = /obj/item/thermal_drill/diamond_drill
+ result = list(/obj/item/thermal_drill/diamond_drill)
time = 60
reqs = list(/obj/item/stack/cable_coil = 5,
/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill = 1,
@@ -565,7 +584,7 @@
/datum/crafting_recipe/faketoolbox
name = "Black and Red toolbox"
- result = /obj/item/storage/toolbox/fakesyndi
+ result = list(/obj/item/storage/toolbox/fakesyndi)
time = 40
reqs = list(/datum/reagent/paint/red = 10,
/datum/reagent/paint/black = 30,
@@ -575,7 +594,7 @@
/datum/crafting_recipe/snowman
name = "Snowman"
- result = /obj/structure/snowman/built
+ result = list(/obj/structure/snowman/built)
reqs = list(/obj/item/snowball = 10,
/obj/item/reagent_containers/food/snacks/grown/carrot = 1,
/obj/item/grown/log = 2)
@@ -586,7 +605,7 @@
/datum/crafting_recipe/paper_craft
name = "Paper Heart"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/heart
+ result = list(/obj/item/decorations/sticky_decorations/flammable/heart)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 1)
tools = list(TOOL_WIRECUTTER) //cutters act as makeshift scissors. I doubt the barber wants to have their scissors stolen when somone wants to decorate
@@ -596,7 +615,7 @@
/datum/crafting_recipe/paper_craft/single_eye
name = "Paper Eye"
- result = /obj/item/decorations/sticky_decorations/flammable/singleeye
+ result = list(/obj/item/decorations/sticky_decorations/flammable/singleeye)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen, /obj/item/toy/crayon/blue)
category = CAT_DECORATIONS
@@ -604,7 +623,7 @@
/datum/crafting_recipe/paper_craft/googlyeyes
name = "Paper Googly Eye"
- result = /obj/item/decorations/sticky_decorations/flammable/googlyeyes
+ result = list(/obj/item/decorations/sticky_decorations/flammable/googlyeyes)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen)
category = CAT_DECORATIONS
@@ -612,7 +631,7 @@
/datum/crafting_recipe/paper_craft/clock
name = "Paper Clock"
- result = /obj/item/decorations/sticky_decorations/flammable/paperclock
+ result = list(/obj/item/decorations/sticky_decorations/flammable/paperclock)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen)
category = CAT_DECORATIONS
@@ -620,7 +639,7 @@
/datum/crafting_recipe/paper_craft/jack_o_lantern
name = "Paper Jack o'Lantern"
- result = /obj/item/decorations/sticky_decorations/flammable/jack_o_lantern
+ result = list(/obj/item/decorations/sticky_decorations/flammable/jack_o_lantern)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen,
/obj/item/toy/crayon/orange,
@@ -630,7 +649,7 @@
/datum/crafting_recipe/paper_craft/ghost
name = "Paper Ghost"
- result = /obj/item/decorations/sticky_decorations/flammable/ghost
+ result = list(/obj/item/decorations/sticky_decorations/flammable/ghost)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen)//it's white paper why need a white crayon?
category = CAT_DECORATIONS
@@ -638,7 +657,7 @@
/datum/crafting_recipe/paper_craft/spider
name = "Paper Spider"
- result = /obj/item/decorations/sticky_decorations/flammable/spider
+ result = list(/obj/item/decorations/sticky_decorations/flammable/spider)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen,
/obj/item/toy/crayon/red)
@@ -647,7 +666,7 @@
/datum/crafting_recipe/paper_craft/spiderweb
name = "Paper Spiderweb"
- result = /obj/item/decorations/sticky_decorations/flammable/spiderweb
+ result = list(/obj/item/decorations/sticky_decorations/flammable/spiderweb)
tools = list(TOOL_WIRECUTTER)
pathtools = list()
category = CAT_DECORATIONS
@@ -655,7 +674,7 @@
/datum/crafting_recipe/paper_craft/skull
name = "Paper Skull"
- result = /obj/item/decorations/sticky_decorations/flammable/skull
+ result = list(/obj/item/decorations/sticky_decorations/flammable/skull)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen)
category = CAT_DECORATIONS
@@ -663,7 +682,7 @@
/datum/crafting_recipe/paper_craft/skeleton
name = "Paper Skeleton"
- result = /obj/item/decorations/sticky_decorations/flammable/skeleton
+ result = list(/obj/item/decorations/sticky_decorations/flammable/skeleton)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen)
category = CAT_DECORATIONS
@@ -671,7 +690,7 @@
/datum/crafting_recipe/paper_craft/cauldron
name = "Paper Cauldron"
- result = /obj/item/decorations/sticky_decorations/flammable/cauldron
+ result = list(/obj/item/decorations/sticky_decorations/flammable/cauldron)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen)
category = CAT_DECORATIONS
@@ -679,7 +698,7 @@
/datum/crafting_recipe/paper_craft/snowman
name = "Paper Snowman"
- result = /obj/item/decorations/sticky_decorations/flammable/snowman
+ result = list(/obj/item/decorations/sticky_decorations/flammable/snowman)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen,
/obj/item/toy/crayon/orange)
@@ -688,7 +707,7 @@
/datum/crafting_recipe/paper_craft/christmas_stocking
name = "Paper Christmas Stocking"
- result = /obj/item/decorations/sticky_decorations/flammable/christmas_stocking
+ result = list(/obj/item/decorations/sticky_decorations/flammable/christmas_stocking)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red)
category = CAT_DECORATIONS
@@ -696,7 +715,7 @@
/datum/crafting_recipe/paper_craft/christmas_tree
name = "Paper Christmas Tree"
- result = /obj/item/decorations/sticky_decorations/flammable/christmas_tree
+ result = list(/obj/item/decorations/sticky_decorations/flammable/christmas_tree)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red,
/obj/item/toy/crayon/yellow,
@@ -707,7 +726,7 @@
/datum/crafting_recipe/paper_craft/snowflake
name = "Paper Snowflake"
- result = /obj/item/decorations/sticky_decorations/flammable/snowflake
+ result = list(/obj/item/decorations/sticky_decorations/flammable/snowflake)
tools = list(TOOL_WIRECUTTER)
pathtools = list()
category = CAT_DECORATIONS
@@ -715,7 +734,7 @@
/datum/crafting_recipe/paper_craft/candy_cane
name = "Paper Candy Cane"
- result = /obj/item/decorations/sticky_decorations/flammable/candy_cane
+ result = list(/obj/item/decorations/sticky_decorations/flammable/candy_cane)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red)
category = CAT_DECORATIONS
@@ -723,7 +742,7 @@
/datum/crafting_recipe/paper_craft/mistletoe
name = "Paper Mistletoe"
- result = /obj/item/decorations/sticky_decorations/flammable/mistletoe
+ result = list(/obj/item/decorations/sticky_decorations/flammable/mistletoe)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red,
/obj/item/toy/crayon/green)
@@ -732,7 +751,7 @@
/datum/crafting_recipe/paper_craft/holly
name = "Paper Holly"
- result = /obj/item/decorations/sticky_decorations/flammable/holly
+ result = list(/obj/item/decorations/sticky_decorations/flammable/holly)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red,
/obj/item/toy/crayon/green)
@@ -742,7 +761,7 @@
/datum/crafting_recipe/paper_craft/tinsel_white
name = "Paper Tinsel White"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -753,7 +772,7 @@
/datum/crafting_recipe/paper_craft/tinsel_red
name = "Red Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/red
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/red)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -764,7 +783,7 @@
/datum/crafting_recipe/paper_craft/tinsel_blue
name = "Blue Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/blue
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/blue)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -775,7 +794,7 @@
/datum/crafting_recipe/paper_craft/tinsel_yellow
name = "Yellow Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/yellow
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/yellow)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -786,7 +805,7 @@
/datum/crafting_recipe/paper_craft/tinsel_purple
name = "Purple Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/purple
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/purple)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -797,7 +816,7 @@
/datum/crafting_recipe/paper_craft/tinsel_green
name = "Green Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/green
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/green)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -808,7 +827,7 @@
/datum/crafting_recipe/paper_craft/tinsel_orange
name = "Orange Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/orange
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/orange)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -819,7 +838,7 @@
/datum/crafting_recipe/paper_craft/tinsel_black
name = "Black Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/black
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/black)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -830,7 +849,7 @@
/datum/crafting_recipe/paper_craft/tinsel_halloween
name = "Halloween style Paper Tinsel"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/tinsel/halloween
+ result = list(/obj/item/decorations/sticky_decorations/flammable/tinsel/halloween)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2)
tools = list(TOOL_WIRECUTTER)
@@ -841,7 +860,7 @@
/datum/crafting_recipe/paper_craft/arrowed_heart
name = "Paper Arrowed Heart"
- result = /obj/item/decorations/sticky_decorations/flammable/arrowed_heart
+ result = list(/obj/item/decorations/sticky_decorations/flammable/arrowed_heart)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red)
category = CAT_DECORATIONS
@@ -849,7 +868,7 @@
/datum/crafting_recipe/paper_craft/heart_chain
name = "Paper Heart Chain"
- result = /obj/item/decorations/sticky_decorations/flammable/heart_chain
+ result = list(/obj/item/decorations/sticky_decorations/flammable/heart_chain)
reqs = list(/obj/item/paper = 1,
/obj/item/stack/tape_roll = 2,
/obj/item/stack/cable_coil = 2)
@@ -860,7 +879,7 @@
/datum/crafting_recipe/paper_craft/four_leaf_clover
name = "Paper Four Leaf Clover"
- result = /obj/item/decorations/sticky_decorations/flammable/four_leaf_clover
+ result = list(/obj/item/decorations/sticky_decorations/flammable/four_leaf_clover)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/green)
category = CAT_DECORATIONS
@@ -868,7 +887,7 @@
/datum/crafting_recipe/paper_craft/pot_of_gold
name = "Paper Pot of Gold"
- result = /obj/item/decorations/sticky_decorations/flammable/pot_of_gold
+ result = list(/obj/item/decorations/sticky_decorations/flammable/pot_of_gold)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen,
/obj/item/toy/crayon/red,
@@ -883,7 +902,7 @@
/datum/crafting_recipe/paper_craft/leprechaun_hat
name = "Paper Leprechaun Hat"
time = 10
- result = /obj/item/decorations/sticky_decorations/flammable/leprechaun_hat
+ result = list(/obj/item/decorations/sticky_decorations/flammable/leprechaun_hat)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen,
/obj/item/toy/crayon/yellow,
@@ -893,7 +912,7 @@
/datum/crafting_recipe/paper_craft/easter_bunny
name = "Paper Easter Bunny"
- result = /obj/item/decorations/sticky_decorations/flammable/easter_bunny
+ result = list(/obj/item/decorations/sticky_decorations/flammable/easter_bunny)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/pen,
/obj/item/toy/crayon/blue,
@@ -903,7 +922,7 @@
/datum/crafting_recipe/paper_craft/easter_egg_blue
name = "Blue Paper Easter Egg"
- result = /obj/item/decorations/sticky_decorations/flammable/easter_egg
+ result = list(/obj/item/decorations/sticky_decorations/flammable/easter_egg)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/blue)
category = CAT_DECORATIONS
@@ -911,7 +930,7 @@
/datum/crafting_recipe/paper_craft/easter_egg_yellow
name = "Yellow Paper Easter Egg"
- result = /obj/item/decorations/sticky_decorations/flammable/easter_egg/yellow
+ result = list(/obj/item/decorations/sticky_decorations/flammable/easter_egg/yellow)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/yellow)
category = CAT_DECORATIONS
@@ -919,7 +938,7 @@
/datum/crafting_recipe/paper_craft/easter_egg_red
name = "Red Paper Easter Egg"
- result = /obj/item/decorations/sticky_decorations/flammable/easter_egg/red
+ result = list(/obj/item/decorations/sticky_decorations/flammable/easter_egg/red)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/red)
category = CAT_DECORATIONS
@@ -927,7 +946,7 @@
/datum/crafting_recipe/paper_craft/easter_egg_purple
name = "Purple Paper Easter Egg"
- result = /obj/item/decorations/sticky_decorations/flammable/easter_egg/purple
+ result = list(/obj/item/decorations/sticky_decorations/flammable/easter_egg/purple)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/purple)
category = CAT_DECORATIONS
@@ -935,7 +954,7 @@
/datum/crafting_recipe/paper_craft/easter_egg_orange
name = "Orange Paper Easter Egg"
- result = /obj/item/decorations/sticky_decorations/flammable/easter_egg/orange
+ result = list(/obj/item/decorations/sticky_decorations/flammable/easter_egg/orange)
tools = list(TOOL_WIRECUTTER)
pathtools = list(/obj/item/toy/crayon/orange)
category = CAT_DECORATIONS
@@ -944,7 +963,7 @@
/datum/crafting_recipe/metal_angel_statue
name = "Metal angel statue"
time = 50
- result = /obj/structure/decorative_structures/metal/statue/metal_angel
+ result = list(/obj/structure/decorative_structures/metal/statue/metal_angel)
reqs = list(/obj/item/stack/sheet/metal = 10,
/obj/item/stack/sheet/mineral/gold = 6)
tools = list(TOOL_WELDER)
@@ -954,7 +973,7 @@
/datum/crafting_recipe/golden_disk_statue
name = "Golden disk statue"
time = 50
- result = /obj/structure/decorative_structures/metal/statue/golden_disk
+ result = list(/obj/structure/decorative_structures/metal/statue/golden_disk)
reqs = list(/obj/item/stack/sheet/metal = 10,
/obj/item/stack/sheet/mineral/plasma = 3,
/obj/item/stack/sheet/mineral/gold = 8)
@@ -965,7 +984,7 @@
/datum/crafting_recipe/sun_statue
name = "Sun statue"
time = 40
- result = /obj/structure/decorative_structures/metal/statue/sun
+ result = list(/obj/structure/decorative_structures/metal/statue/sun)
reqs = list(/obj/item/stack/sheet/metal = 6,
/obj/item/stack/sheet/mineral/gold = 4)
tools = list(TOOL_WELDER)
@@ -975,7 +994,7 @@
/datum/crafting_recipe/moon_statue
name = "Moon statue"
time = 50
- result = /obj/structure/decorative_structures/metal/statue/moon
+ result = list(/obj/structure/decorative_structures/metal/statue/moon)
reqs = list(/obj/item/stack/sheet/metal = 6,
/obj/item/stack/sheet/mineral/silver = 6,
/obj/item/stack/sheet/mineral/gold = 4)
@@ -986,7 +1005,7 @@
/datum/crafting_recipe/tesla_statue
name = "Tesla statue"
time = 40
- result = /obj/structure/decorative_structures/metal/statue/tesla
+ result = list(/obj/structure/decorative_structures/metal/statue/tesla)
reqs = list(/obj/item/stack/sheet/metal = 4,
/obj/item/stack/sheet/glass = 8)
tools = list(TOOL_WELDER)
@@ -996,7 +1015,7 @@
/datum/crafting_recipe/tesla_monument
name = "Tesla monument"
time = 50
- result = /obj/structure/decorative_structures/metal/statue/tesla_monument
+ result = list(/obj/structure/decorative_structures/metal/statue/tesla_monument)
reqs = list(/obj/item/stack/sheet/metal = 8,
/obj/item/stock_parts/cell = 3,
/obj/item/stack/cable_coil = 4)
@@ -1007,7 +1026,7 @@
/datum/crafting_recipe/grandfather_clock
name = "Grandfather clock"
time = 50
- result = /obj/structure/decorative_structures/flammable/grandfather_clock
+ result = list(/obj/structure/decorative_structures/flammable/grandfather_clock)
reqs = list(/obj/item/stack/sheet/wood = 5,
/obj/item/stack/sheet/mineral/gold = 1,
/obj/item/stack/sheet/glass = 2)
@@ -1017,7 +1036,7 @@
/datum/crafting_recipe/lava_land_display
name = "Lava land display"
time = 50
- result = /obj/structure/decorative_structures/flammable/lava_land_display
+ result = list(/obj/structure/decorative_structures/flammable/lava_land_display)
reqs = list(/obj/item/paper = 4,
/obj/item/stack/sheet/wood = 4,
/obj/item/stack/rods = 4,
diff --git a/code/modules/crafting/tailoring.dm b/code/modules/crafting/tailoring.dm
index 68fa7fca3f3..6a597e9e8fa 100644
--- a/code/modules/crafting/tailoring.dm
+++ b/code/modules/crafting/tailoring.dm
@@ -1,6 +1,6 @@
/datum/crafting_recipe/durathread_vest
name = "Durathread Vest"
- result = /obj/item/clothing/suit/armor/vest/durathread
+ result = list(/obj/item/clothing/suit/armor/vest/durathread)
reqs = list(/obj/item/stack/sheet/durathread = 5,
/obj/item/stack/sheet/leather = 4)
time = 50
@@ -8,7 +8,7 @@
/datum/crafting_recipe/durathread_helmet
name = "Durathread Helmet"
- result = /obj/item/clothing/head/helmet/durathread
+ result = list(/obj/item/clothing/head/helmet/durathread)
reqs = list(/obj/item/stack/sheet/durathread = 4,
/obj/item/stack/sheet/leather = 5)
time = 40
@@ -16,35 +16,35 @@
/datum/crafting_recipe/durathread_jumpsuit
name = "Durathread Jumpsuit"
- result = /obj/item/clothing/under/misc/durathread
+ result = list(/obj/item/clothing/under/misc/durathread)
reqs = list(/obj/item/stack/sheet/durathread = 4)
time = 40
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_beret
name = "Durathread Beret"
- result = /obj/item/clothing/head/beret/durathread
+ result = list(/obj/item/clothing/head/beret/durathread)
reqs = list(/obj/item/stack/sheet/durathread = 2)
time = 40
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_beanie
name = "Durathread Beanie"
- result = /obj/item/clothing/head/beanie/durathread
+ result = list(/obj/item/clothing/head/beanie/durathread)
reqs = list(/obj/item/stack/sheet/durathread = 2)
time = 40
category = CAT_CLOTHING
/datum/crafting_recipe/durathread_bandana
name = "Durathread Bandana"
- result = /obj/item/clothing/mask/bandana/durathread
+ result = list(/obj/item/clothing/mask/bandana/durathread)
reqs = list(/obj/item/stack/sheet/durathread = 1)
time = 25
category = CAT_CLOTHING
/datum/crafting_recipe/fannypack
name = "Fannypack"
- result = /obj/item/storage/belt/fannypack
+ result = list(/obj/item/storage/belt/fannypack)
reqs = list(/obj/item/stack/sheet/cloth = 2,
/obj/item/stack/sheet/leather = 1)
time = 20
@@ -52,7 +52,7 @@
/datum/crafting_recipe/hudsunsec
name = "Security HUDsunglasses"
- result = /obj/item/clothing/glasses/hud/security/sunglasses
+ result = list(/obj/item/clothing/glasses/hud/security/sunglasses)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/hud/security = 1,
@@ -62,7 +62,7 @@
/datum/crafting_recipe/hudsunsecremoval
name = "Security HUD removal"
- result = /obj/item/clothing/glasses/sunglasses
+ result = list(/obj/item/clothing/glasses/sunglasses, /obj/item/clothing/glasses/hud/security)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1)
@@ -70,7 +70,7 @@
/datum/crafting_recipe/hudsunmed
name = "Medical HUDsunglasses"
- result = /obj/item/clothing/glasses/hud/health/sunglasses
+ result = list(/obj/item/clothing/glasses/hud/health/sunglasses)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
@@ -80,7 +80,7 @@
/datum/crafting_recipe/hudsunmedremoval
name = "Medical HUD removal"
- result = /obj/item/clothing/glasses/sunglasses
+ result = list(/obj/item/clothing/glasses/sunglasses, /obj/item/clothing/glasses/hud/health)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1)
@@ -88,7 +88,7 @@
/datum/crafting_recipe/hudsundiag
name = "Diagnostic HUDsunglasses"
- result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
+ result = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
@@ -98,15 +98,15 @@
/datum/crafting_recipe/hudsundiagremoval
name = "Diagnostic HUD removal"
- result = /obj/item/clothing/glasses/sunglasses
+ result = list(/obj/item/clothing/glasses/sunglasses, /obj/item/clothing/glasses/hud/diagnostic)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/beergoggles
- name = "Beer Goggles"
- result = /obj/item/clothing/glasses/sunglasses/reagent
+ name = "Sunscanners"
+ result = list(/obj/item/clothing/glasses/sunglasses/reagent)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/science = 1,
@@ -115,8 +115,8 @@
category = CAT_CLOTHING
/datum/crafting_recipe/beergogglesremoval
- name = "Beer Goggles removal"
- result = /obj/item/clothing/glasses/sunglasses
+ name = "Sunscanners removal"
+ result = list(/obj/item/clothing/glasses/sunglasses, /obj/item/clothing/glasses/science)
time = 20
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1)
@@ -124,7 +124,7 @@
/datum/crafting_recipe/ghostsheet
name = "Ghost Sheet"
- result = /obj/item/clothing/suit/ghost_sheet
+ result = list(/obj/item/clothing/suit/ghost_sheet)
time = 5
tools = list(TOOL_WIRECUTTER)
reqs = list(/obj/item/bedsheet = 1)
@@ -132,21 +132,21 @@
/datum/crafting_recipe/cowboyboots
name = "Cowboy Boots"
- result = /obj/item/clothing/shoes/cowboy
+ result = list(/obj/item/clothing/shoes/cowboy)
reqs = list(/obj/item/stack/sheet/leather = 2)
time = 45
category = CAT_CLOTHING
/datum/crafting_recipe/lizardboots
name = "Lizard Skin Boots"
- result = /obj/effect/spawner/lootdrop/lizardboots
+ result = list(/obj/effect/spawner/lootdrop/lizardboots)
reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1, /obj/item/stack/sheet/leather = 1)
time = 60
category = CAT_CLOTHING
/datum/crafting_recipe/rubberduckyshoes
name = "Rubber Ducky Shoes"
- result = /obj/item/clothing/shoes/ducky
+ result = list(/obj/item/clothing/shoes/ducky)
time = 45
reqs = list(/obj/item/bikehorn/rubberducky = 2,
/obj/item/clothing/shoes/sandal = 1)
@@ -155,7 +155,7 @@
/datum/crafting_recipe/salmonsuit
name = "Salmon Suit"
- result = /obj/item/clothing/suit/hooded/salmon_costume
+ result = list(/obj/item/clothing/suit/hooded/salmon_costume)
time = 60
reqs = list(/obj/item/fish/salmon = 20,
/obj/item/stack/tape_roll = 5)
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index 18c6553bf66..e49e063b59d 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -944,7 +944,7 @@
actions_types = list(/datum/action/item_action/toggle)
suit_adjusted = 0
-/obj/item/clothing/suit/storage/fluff/k3_webbing/adjustsuit(var/mob/user)
+/obj/item/clothing/suit/storage/fluff/k3_webbing/adjustsuit(mob/user)
if(!user.incapacitated())
var/flavour
if(suit_adjusted)
diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm
index c60364cc421..33566ddfef8 100644
--- a/code/modules/customitems/item_spawning.dm
+++ b/code/modules/customitems/item_spawning.dm
@@ -76,7 +76,7 @@
qdel(query)
// This is hacky, but since it's difficult as fuck to make a proper parser in BYOND without killing the server, here it is. - N3X
-/proc/HackProperties(var/mob/living/carbon/human/M,var/obj/item/I,var/script)
+/proc/HackProperties(mob/living/carbon/human/M, obj/item/I, script)
var/list/statements = splittext(script,";")
if(statements.len == 0)
return
diff --git a/code/modules/detective_work/evidence.dm b/code/modules/detective_work/evidence.dm
index 555dbe542de..e8bb1b578ae 100644
--- a/code/modules/detective_work/evidence.dm
+++ b/code/modules/detective_work/evidence.dm
@@ -76,6 +76,7 @@
"You hear someone rustle around in a plastic bag, and remove something.")
overlays.Cut() //remove the overlays
user.put_in_hands(I)
+ I.pickup(user)
w_class = WEIGHT_CLASS_TINY
icon_state = "evidenceobj"
desc = "An empty evidence bag."
@@ -83,4 +84,3 @@
else
to_chat(user, "[src] is empty.")
icon_state = "evidenceobj"
-
diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm
index 0d0b1d317e6..c51500bedc7 100644
--- a/code/modules/economy/Accounts.dm
+++ b/code/modules/economy/Accounts.dm
@@ -50,7 +50,7 @@ GLOBAL_LIST_EMPTY(all_money_accounts)
//the current ingame time (hh:mm:ss) can be obtained by calling:
//station_time_timestamp("hh:mm:ss")
-/proc/create_account(var/new_owner_name = "Default user", var/starting_funds = 0, var/obj/machinery/computer/account_database/source_db)
+/proc/create_account(new_owner_name = "Default user", starting_funds = 0, obj/machinery/computer/account_database/source_db)
//create a new account
var/datum/money_account/M = new()
@@ -148,18 +148,18 @@ GLOBAL_LIST_EMPTY(all_money_accounts)
return 0
//this returns the first account datum that matches the supplied accnum/pin combination, it returns null if the combination did not match any account
-/proc/attempt_account_access(var/attempt_account_number, var/attempt_pin_number, var/security_level_passed = 0,var/pin_needed=1)
+/proc/attempt_account_access(attempt_account_number, attempt_pin_number, security_level_passed = 0, pin_needed=1)
for(var/datum/money_account/D in GLOB.all_money_accounts)
if(D.account_number == attempt_account_number)
if( D.security_level <= security_level_passed && (!D.security_level || D.remote_access_pin == attempt_pin_number || !pin_needed) )
return D
-/obj/machinery/computer/account_database/proc/get_account(var/account_number)
+/obj/machinery/computer/account_database/proc/get_account(account_number)
for(var/datum/money_account/D in GLOB.all_money_accounts)
if(D.account_number == account_number)
return D
-/proc/attempt_account_access_nosec(var/attempt_account_number)
+/proc/attempt_account_access_nosec(attempt_account_number)
for(var/datum/money_account/D in GLOB.all_money_accounts)
if(D.account_number == attempt_account_number)
return D
diff --git a/code/modules/economy/Economy_TradeDestinations.dm b/code/modules/economy/Economy_TradeDestinations.dm
index 0efa3a4a058..9f3f12faaea 100644
--- a/code/modules/economy/Economy_TradeDestinations.dm
+++ b/code/modules/economy/Economy_TradeDestinations.dm
@@ -13,7 +13,7 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
var/list/temp_price_change[BIOMEDICAL]
var/list/viable_mundane_events = list()
-/datum/trade_destination/proc/get_custom_eventstring(var/event_type)
+/datum/trade_destination/proc/get_custom_eventstring(event_type)
return null
//distance is measured in AU and co-relates to travel time
@@ -35,7 +35,7 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
viable_random_events = list(SECURITY_BREACH, CULT_CELL_REVEALED, BIOHAZARD_OUTBREAK, PIRATES, ALIEN_RAIDERS)
viable_mundane_events = list(RESEARCH_BREAKTHROUGH, RESEARCH_BREAKTHROUGH, BARGAINS, GOSSIP)
-/datum/trade_destination/anansi/get_custom_eventstring(var/event_type)
+/datum/trade_destination/anansi/get_custom_eventstring(event_type)
if(event_type == RESEARCH_BREAKTHROUGH)
return "Thanks to research conducted on the NSS Anansi, Second Green Cross Society wishes to announce a major breakthough in the field of \
[pick("mind-machine interfacing","neuroscience","nano-augmentation","genetics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight."
@@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(weighted_mundaneevent_locations)
viable_random_events = list(INDUSTRIAL_ACCIDENT, PIRATES, CORPORATE_ATTACK)
viable_mundane_events = list(RESEARCH_BREAKTHROUGH, RESEARCH_BREAKTHROUGH)
-/datum/trade_destination/redolant/get_custom_eventstring(var/event_type)
+/datum/trade_destination/redolant/get_custom_eventstring(event_type)
if(event_type == RESEARCH_BREAKTHROUGH)
return "Thanks to research conducted on the OAV Redolant, Osiris Atmospherics wishes to announce a major breakthough in the field of \
[pick("plasma research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. Nanotrasen is expected to announce a co-exploitation deal within the fortnight."
diff --git a/code/modules/economy/utils.dm b/code/modules/economy/utils.dm
index 4d7273cd719..f5d5a6018c8 100644
--- a/code/modules/economy/utils.dm
+++ b/code/modules/economy/utils.dm
@@ -4,7 +4,7 @@
// Economy system is such a mess of spaghetti. This should help.
////////////////////////
-/proc/get_money_account(var/account_number, var/from_z=-1)
+/proc/get_money_account(account_number, from_z=-1)
for(var/obj/machinery/computer/account_database/DB in GLOB.machines)
if(from_z > -1 && DB.z != from_z) continue
if((DB.stat & NOPOWER) || !DB.activated ) continue
@@ -13,7 +13,7 @@
return acct
-/obj/proc/get_card_account(var/obj/item/card/I, var/mob/user=null, var/terminal_name="", var/transaction_purpose="", var/require_pin=0)
+/obj/proc/get_card_account(obj/item/card/I, mob/user=null, terminal_name="", transaction_purpose="", require_pin=0)
if(terminal_name=="")
terminal_name=src.name
if(istype(I, /obj/item/card/id))
@@ -27,7 +27,7 @@
if(D)
return D
-/mob/proc/get_worn_id_account(var/require_pin=0, var/mob/user=null)
+/mob/proc/get_worn_id_account(require_pin=0, mob/user=null)
if(ishuman(src))
var/mob/living/carbon/human/H=src
var/obj/item/card/id/I=H.get_idcard()
diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm
index 93df8ac13ca..4995f798968 100644
--- a/code/modules/error_handler/error_handler.dm
+++ b/code/modules/error_handler/error_handler.dm
@@ -6,7 +6,7 @@ GLOBAL_VAR_INIT(total_runtimes, 0)
GLOBAL_VAR_INIT(total_runtimes_skipped, 0)
// The ifdef needs to be down here, since the error viewer references total_runtimes
#ifdef DEBUG
-/world/Error(var/exception/e, var/datum/e_src)
+/world/Error(exception/e, datum/e_src)
if(!istype(e)) // Something threw an unusual exception
log_world("\[[time_stamp()]] Uncaught exception: [e]")
return ..()
diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm
index 661aff8bb6c..96a228a8bff 100644
--- a/code/modules/error_handler/error_viewer.dm
+++ b/code/modules/error_handler/error_viewer.dm
@@ -24,7 +24,7 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
/datum/ErrorViewer/
var/name = ""
-/datum/ErrorViewer/proc/browseTo(var/user, var/html)
+/datum/ErrorViewer/proc/browseTo(user, html)
if(user)
var/datum/browser/popup = new(user, "error_viewer", "Runtime Viewer", 700, 500)
popup.add_head_content({"",o.insertBefore(n.lastChild,o.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),r||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return f.shivMethods?m(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+u().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(f,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="",o="hidden"in e,r=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){o=!0,r=!0}}();var f={elements:a.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:"3.7.3",shivCSS:!1!==a.shivCSS,supportsUnknownElements:r,shivMethods:!1!==a.shivMethods,type:"default",shivDocument:p,createElement:m,createDocumentFragment:function(e,t){if(e||(e=n),r)return e.createDocumentFragment();for(var o=(t=t||s(e)).frag.cloneNode(),a=0,c=u(),i=c.length;a1?r-1:0),c=1;c1?t-1:0),o=1;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var o,r;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=o,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(o||(t.VNodeFlags=o={})),t.ChildFlags=r,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(r||(t.ChildFlags=r={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var o=n(0),r=n(8),a=n(430),c=n(25),i=n(61),l=n(17);function d(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var u=(0,i.createLogger)("ByondUi"),s=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),C=this.state.viewBox,N=function(e,t,n,o){if(0===e.length)return[];var a=(0,r.zipWith)(Math.min).apply(void 0,e),c=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(a[0]=n[0],c[0]=n[1]),o!==undefined&&(a[1]=o[0],c[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,a,c,t)}))(e)}(a,C,c,l);if(N.length>0){var b=N[0],g=N[N.length-1];N.push([C[0]+f,g[1]]),N.push([C[0]+f,-f]),N.push([-f,-f]),N.push([-f,b[1]])}var V=function(e){for(var t="",n=0;n=0||(r[n]=e[n]);return r}(t,["children","color","title","buttons"]);return(0,o.createVNode)(1,"div","Collapsible",[(0,o.createVNode)(1,"div","Table",[(0,o.createVNode)(1,"div","Table__cell",(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({fluid:!0,color:l,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},s,{children:d}))),2),u&&(0,o.createVNode)(1,"div","Table__cell Table__cell--collapsing",u,0)],0),n&&(0,o.createComponentVNode)(2,r.Box,{mt:1,children:c})],0)},c}(o.Component);t.Collapsible=c},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(0),r=n(8),a=n(17);var c=function(e){var t=e.content,n=(e.children,e.className),c=e.color,i=e.backgroundColor,l=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["content","children","className","color","backgroundColor"]);return l.color=t?null:"transparent",l.backgroundColor=c||i,(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["ColorBox",n,(0,a.computeBoxClassName)(l)]),t||".",0,Object.assign({},(0,a.computeBoxProps)(l))))};t.ColorBox=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(0),r=n(8),a=n(17),c=n(130);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={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.setOpen(!1),this.props.onSelected(e)},d.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},d.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,d=t.over,u=t.noscroll,s=t.nochevron,m=t.width,p=(t.onClick,t.selected),f=t.disabled,h=i(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),C=h.className,N=i(h,["className"]),b=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}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({width:m,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,f&&"Button--disabled",C])},N,{onClick:function(){f&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",p,0),!!s||(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,c.Icon,{name:b?"chevron-up":"chevron-down"}),2)]}))),g],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(0),r=n(8),a=n(17);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var i=function(e){return(0,r.isFalsy)(e)?"":e},l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,o=t.props.onInput;n||t.setEditing(!0),o&&o(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,o=t.props.onChange;n&&(t.setEditing(!1),o&&o(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,o=n.onInput,r=n.onChange,a=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),a&&a(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=i(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=i(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,a=this.inputRef.current;a&&!n&&o!==r&&(a.value=i(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,i=(e.autofocus,e.disabled),l=e.multiline,d=e.cols,u=void 0===d?32:d,s=e.rows,m=void 0===s?4:s,p=c(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder","autofocus","disabled","multiline","cols","rows"]),f=p.className,h=p.fluid,C=c(p,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Input",h&&"Input--fluid",i&&"Input--disabled",f])},C,{children:[(0,o.createVNode)(1,"div","Input__baseline",".",16),l?(0,o.createVNode)(128,"textarea","Input__textarea",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,maxLength:t,cols:u,rows:m,disabled:i},null,this.inputRef):(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,disabled:i},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(16),a=n(8),c=n(25),i=n(17),l=n(179),d=n(131);t.Knob=function(e){if(c.IS_IE8)return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,u=e.maxValue,s=e.minValue,m=e.onChange,p=e.onDrag,f=e.step,h=e.stepPixelSize,C=e.suppressFlicker,N=e.unit,b=e.value,g=e.className,V=e.style,v=e.fillValue,y=e.color,_=e.ranges,x=void 0===_?{}:_,k=e.size,L=e.bipolar,B=(e.children,e.popUpPosition),w=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["animated","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,l.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:u,minValue:s,onChange:m,onDrag:p,step:f,stepPixelSize:h,suppressFlicker:C,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),f=(0,r.scale)(c,s,u),h=y||(0,r.keyOfMatchingRange)(null!=v?v:n,x)||"default",C=270*(f-.5);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,a.classes)(["Knob","Knob--color--"+h,L&&"Knob--bipolar",g,(0,i.computeBoxClassName)(w)]),[(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("+C+"deg)"}}),2),t&&(0,o.createVNode)(1,"div",(0,a.classes)(["Knob__popupValue",B&&"Knob__popupValue--"+B]),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":((L?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,i.computeBoxProps)(Object.assign({style:Object.assign({"font-size":k+"rem"},V)},w)),{onMouseDown:m})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var o=n(0),r=n(75);function a(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=a(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=c;c.Item=function(e){var t=e.label,n=e.children,c=a(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"},c,{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),a=n(1),c=n(77),i=n(180);var l=function(e){return e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.returnValue=!1,!1},d=function(e){var t,n;function c(t){var n;n=e.call(this,t)||this;window.innerWidth,window.innerHeight;return n.state={offsetX:128,offsetY:48,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),l(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})),l(e)},n.handleDragEnd=function(e){n.setState({dragging:!1,originX:null,originY:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),l(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);return e.zoom=n,e.offsetX=e.offsetX-262*r,e.offsetY=e.offsetY-256*r,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,a.useBackend)(this.context).config,t=this.state,n=t.dragging,c=t.offsetX,i=t.offsetY,l=t.zoom,d=void 0===l?1:l,s=this.props.children,m=510*d+"px",p={width:m,height:m,"margin-top":i+"px","margin-left":c+"px",overflow:"hidden",position:"relative","background-image":"url("+e.map+"_nanomap_z1.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,u,{zoom:d,onZoom:this.handleZoom})]})},c}(o.Component);t.NanoMap=d;d.Marker=function(e,t){var n=e.x,a=e.y,c=e.zoom,i=void 0===c?1:c,l=e.icon,d=e.tooltip,u=e.color,s=2*n*i-i-3,m=2*a*i-i-3;return(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,r.Box,{position:"absolute",className:"NanoMap__marker",lineHeight:"0",bottom:m+"px",left:s+"px",children:[(0,o.createComponentVNode)(2,r.Icon,{name:l,color:u,fontSize:"6px"}),(0,o.createComponentVNode)(2,r.Tooltip,{content:d})]}),2)};var u=function(e,t){return(0,o.createComponentVNode)(2,r.Box,{className:"NanoMap__zoomer",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Zoom",children:(0,o.createComponentVNode)(2,i.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)}})})})})};d.Zoomer=u},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var o=n(0),r=n(8),a=n(17),c=n(176);t.Modal=function(e){var t,n=e.className,i=e.children,l=e.onEnter,d=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","children","onEnter"]);return l&&(t=function(e){13===e.keyCode&&l(e)}),(0,o.createComponentVNode)(2,c.Dimmer,{onKeyDown:t,children:(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Modal",n,(0,a.computeBoxClassName)(d)]),i,0,Object.assign({},(0,a.computeBoxProps)(d))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(0),r=n(8),a=n(17);var c=function(e){var t=e.className,n=e.color,c=e.info,i=(e.warning,e.success),l=e.danger,d=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","color","info","warning","success","danger"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,c&&"NoticeBox--type--info",i&&"NoticeBox--type--success",l&&"NoticeBox--type--danger",t])},d)))};t.NoticeBox=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBarCountdown=t.ProgressBar=void 0;var o=n(0),r=n(16),a=n(8),c=n(17);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e.className,n=e.value,l=e.minValue,d=void 0===l?0:l,u=e.maxValue,s=void 0===u?1:u,m=e.color,p=e.ranges,f=void 0===p?{}:p,h=e.children,C=i(e,["className","value","minValue","maxValue","color","ranges","children"]),N=(0,r.scale)(n,d,s),b=h!==undefined,g=m||(0,r.keyOfMatchingRange)(n,f)||"default";return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,a.classes)(["ProgressBar","ProgressBar--color--"+g,t,(0,c.computeBoxClassName)(C)]),[(0,o.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,r.clamp01)(N)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",b?h:(0,r.toFixed)(100*N)+"%",0)],4,Object.assign({},(0,c.computeBoxProps)(C))))};t.ProgressBar=l,l.defaultHooks=a.pureComponentHooks;var d=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={value:Math.max(100*t.current,0)},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=r.prototype;return a.tick=function(){var e=Math.max(this.state.value+this.props.rate,0);e<=0&&clearInterval(this.timer),this.setState((function(t){return{value:e}}))},a.componentDidMount=function(){var e=this;this.timer=setInterval((function(){return e.tick()}),this.props.rate)},a.componentWillUnmount=function(){clearInterval(this.timer)},a.render=function(){var e=this.props,t=e.start,n=(e.current,e.end),r=i(e,["start","current","end"]),a=(this.state.value/100-t)/(n-t);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,l,Object.assign({value:a},r)))},r}(o.Component);t.ProgressBarCountdown=d,d.defaultProps={rate:1e3},l.Countdown=d},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(0),r=n(8),a=n(17);var c=function(e){var t=e.className,n=e.title,c=e.level,i=void 0===c?1:c,l=e.buttons,d=e.content,u=e.stretchContents,s=e.noTopPadding,m=e.children,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","content","stretchContents","noTopPadding","children"]),f=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),h=!(0,r.isFalsy)(d)||!(0,r.isFalsy)(m);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Section","Section--level--"+i,e.flexGrow&&"Section--flex",t])},p,{children:[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),h&&(0,o.createComponentVNode)(2,a.Box,{className:(0,r.classes)(["Section__content",!!u&&"Section__content--stretchContents",!!s&&"Section__content--noTopPadding"]),children:[d,m]})]})))};t.Section=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var o=n(0),r=n(8),a=n(17),c=n(129);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e.className,n=e.vertical,c=e.children,l=i(e,["className","vertical","children"]);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",t,(0,a.computeBoxClassName)(l)]),(0,o.createVNode)(1,"div","Tabs__tabBox",c,0),2,Object.assign({},(0,a.computeBoxProps)(l))))};t.Tabs=l;l.Tab=function(e){var t=e.className,n=e.selected,a=e.altSelection,l=i(e,["className","selected","altSelection"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",n&&"Tabs__tab--selected",a&&n&&"Tabs__tab--altSelection",t]),selected:!a&&n,color:"transparent"},l)))}},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=void 0;t.TimeDisplay=function(e){var t=e.totalSeconds;return function(e){return(!e||e<0)&&(e=0),[Math.floor(e/60).toString(10),(Math.floor(e)%60).toString(10)].map((function(e){return e.length<2?"0"+e:e})).join(":")}(void 0===t?0:t)}},function(e,t,n){var o={"./AICard.js":446,"./AIFixer.js":447,"./APC.js":448,"./ATM.js":449,"./AccountsUplinkTerminal.js":450,"./AiAirlock.js":451,"./AirAlarm.js":452,"./AirlockAccessController.js":453,"./AirlockElectronics.js":454,"./AppearanceChanger.js":455,"./AtmosAlertConsole.js":456,"./AtmosControl.js":457,"./AtmosFilter.js":458,"./AtmosMixer.js":459,"./AtmosPump.js":460,"./Autolathe.js":461,"./BlueSpaceArtilleryControl.js":462,"./BluespaceTap.js":463,"./BodyScanner.js":464,"./BotClean.js":465,"./BotSecurity.js":466,"./BrigCells.js":467,"./BrigTimer.js":468,"./CameraConsole.js":469,"./Canister.js":470,"./CardComputer.js":471,"./CargoConsole.js":472,"./ChemDispenser.js":473,"./ChemHeater.js":477,"./ChemMaster.js":478,"./CloningConsole.js":479,"./CommunicationsComputer.js":480,"./Contractor.js":481,"./ConveyorSwitch.js":482,"./CrewMonitor.js":483,"./Cryo.js":484,"./DNAModifier.js":485,"./DisposalBin.js":486,"./DnaVault.js":487,"./DroneConsole.js":488,"./EFTPOS.js":489,"./ERTManager.js":490,"./Electropack.js":491,"./EvolutionMenu.js":492,"./ExosuitFabricator.js":493,"./ExternalAirlockController.js":494,"./FaxMachine.js":495,"./FloorPainter.js":496,"./GPS.js":497,"./GravityGen.js":498,"./HandheldChemDispenser.js":499,"./Instrument.js":500,"./KeycardAuth.js":501,"./LaborClaimConsole.js":502,"./LawManager.js":503,"./MechBayConsole.js":504,"./MechaControlConsole.js":505,"./MedicalRecords.js":506,"./MiningVendor.js":507,"./Newscaster.js":508,"./NuclearBomb.js":509,"./OperatingComputer.js":510,"./Orbit.js":511,"./OreRedemption.js":512,"./PAI.js":513,"./PDA.js":526,"./Pacman.js":542,"./PersonalCrafting.js":543,"./PodTracking.js":544,"./PoolController.js":545,"./PortablePump.js":546,"./PortableScrubber.js":547,"./PortableTurret.js":548,"./PowerMonitor.js":188,"./RCD.js":549,"./RPD.js":550,"./Radio.js":551,"./RequestConsole.js":552,"./RndConsole.js":62,"./RoboticsControlConsole.js":567,"./Safe.js":568,"./SatelliteControl.js":569,"./SecurityRecords.js":570,"./ShuttleConsole.js":571,"./ShuttleManipulator.js":572,"./Sleeper.js":573,"./SlotMachine.js":574,"./Smartfridge.js":575,"./Smes.js":576,"./SolarControl.js":577,"./SpawnersMenu.js":578,"./StationAlertConsole.js":579,"./SupermatterMonitor.js":580,"./SyndicateComputerSimple.js":581,"./TEG.js":582,"./TachyonArray.js":583,"./Tank.js":584,"./TankDispenser.js":585,"./TcommsCore.js":586,"./TcommsRelay.js":587,"./Teleporter.js":588,"./ThermoMachine.js":589,"./TransferValve.js":590,"./Uplink.js":591,"./Vending.js":592,"./VolumeMixer.js":593,"./Wires.js":594};function r(e){var t=a(e);return n(t)}function a(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=a,e.exports=r,r.id=445},function(e,t,n){"use strict";t.__esModule=!0,t.AICard=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AICard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;if(0===l.has_ai)return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createVNode)(1,"h3",null,"No AI detected.",16)})})})});var d=null;return d=l.integrity>=75?"green":l.integrity>=25?"yellow":"red",(0,o.createComponentVNode)(2,c.Window,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,display:"inline-block",children:(0,o.createVNode)(1,"h3",null,l.name,0)}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:d,value:l.integrity/100})})})}),(0,o.createComponentVNode)(2,a.Box,{color:"red",children:(0,o.createVNode)(1,"h2",null,1===l.flushing?"Wipe of AI in progress...":"",0)})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",children:!!l.has_laws&&(0,o.createComponentVNode)(2,a.Box,{children:l.laws.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",children:e},t)}))})||(0,o.createComponentVNode)(2,a.Box,{color:"red",children:(0,o.createVNode)(1,"h3",null,"No laws detected.",16)})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Wireless Activity",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.wireless?"check":"times",content:l.wireless?"Enabled":"Disabled",color:l.wireless?"green":"red",onClick:function(){return i("wireless")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subspace Transceiver",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.radio?"check":"times",content:l.radio?"Enabled":"Disabled",color:l.radio?"green":"red",onClick:function(){return i("radio")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Wipe",children:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash-alt",confirmIcon:"trash-alt",disabled:l.flushing||0===l.integrity,confirmColor:"red",content:"Wipe AI",onClick:function(){return i("wipe")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AIFixer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AIFixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;if(null===l.occupant)return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createVNode)(1,"h3",null,"No artificial intelligence detected.",16)})})})});var d=null;d=2!==l.stat&&null!==l.stat;var u=null;u=l.integrity>=75?"green":l.integrity>=25?"yellow":"red";var s=null;return s=l.integrity>=100,(0,o.createComponentVNode)(2,c.Window,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:(0,o.createVNode)(1,"h3",null,l.occupant,0)})}),(0,o.createComponentVNode)(2,a.Section,{title:"Information",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:u,value:l.integrity/100})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:d?"green":"red",children:d?"Functional":"Non-Functional"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",children:!!l.has_laws&&(0,o.createComponentVNode)(2,a.Box,{children:l.laws.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",children:e},t)}))})||(0,o.createComponentVNode)(2,a.Box,{color:"red",children:(0,o.createVNode)(1,"h3",null,"No laws detected.",16)})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Wireless Activity",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.wireless?"times":"check",content:l.wireless?"Disabled":"Enabled",color:l.wireless?"red":"green",onClick:function(){return i("wireless")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subspace Transceiver",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.radio?"times":"check",content:l.radio?"Disabled":"Enabled",color:l.radio?"red":"green",onClick:function(){return i("radio")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Start Repairs",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:s||l.active,content:s?"Already Repaired":"Repair",onClick:function(){return i("fix")}})})]}),(0,o.createComponentVNode)(2,a.Box,{color:"green",lineHeight:2,children:l.active?"Reconstruction in progress.":""})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.APC=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(182);t.APC=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=(u.normallyLocked,l[u.externalPower]||l[0]),p=l[u.chargingStatus]||l[0],f=u.powerChannels||[],h=d[u.malfStatus]||d[0],C=u.powerCellStatus/100;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,color:u.isOperating?"":"bad",disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:C})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"times",content:u.chargeMode?"Auto":"Off",selected:u.chargeMode,disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[f.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:[e.powerLoad," W"]},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,[u.totalLoad,(0,o.createTextVNode)(" W")],0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",selected:u.coverLocked,disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",selected:u.nightshiftLights,onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ATM=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ATM=function(e,t){var n,p=(0,r.useBackend)(t),f=(p.act,p.data),h=f.view_screen,C=f.authenticated_account,N=f.ticks_left_locked_down,b=f.linked_db;if(N>0)n=(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle"}),"Maximum number of pin attempts exceeded! Access to this ATM has been temporarily disabled."]});else if(b)if(C)switch(h){case 1:n=(0,o.createComponentVNode)(2,l);break;case 2:n=(0,o.createComponentVNode)(2,d);break;case 3:n=(0,o.createComponentVNode)(2,m);break;default:n=(0,o.createComponentVNode)(2,u)}else n=(0,o.createComponentVNode)(2,s);else n=(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle"}),"Unable to connect to accounts database, please retry and if the issue persists contact Nanotrasen IT support."]});return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,a.Section,{children:n})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.machine_id,d=i.held_card_name;return(0,o.createComponentVNode)(2,a.Section,{title:"Nanotrasen Automatic Teller Machine",children:[(0,o.createComponentVNode)(2,a.Box,{children:"For all your monetary need!"}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:"info-circle"})," This terminal is ",(0,o.createVNode)(1,"i",null,l,0),", report this code when contacting Nanotrasen IT Support."]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Card",children:(0,o.createComponentVNode)(2,a.Button,{content:d,icon:"eject",onClick:function(){return c("insert_card")}})})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.security_level;return(0,o.createComponentVNode)(2,a.Section,{title:"Select a new security level for this account",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:(0,o.createComponentVNode)(2,a.Button,{content:"Zero",icon:"unlock",selected:0===i,onClick:function(){return c("change_security_level",{new_security_level:0})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:"Either the account number or card is required to access this account. EFTPOS transactions will require a card and ask for a pin, but not verify the pin is correct."}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:(0,o.createComponentVNode)(2,a.Button,{content:"One",icon:"unlock",selected:1===i,onClick:function(){return c("change_security_level",{new_security_level:1})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:"An account number and pin must be manually entered to access this account and process transactions."}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:(0,o.createComponentVNode)(2,a.Button,{content:"Two",selected:2===i,icon:"unlock",onClick:function(){return c("change_security_level",{new_security_level:2})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:"In addition to account number and pin, a card is required to access this account and process transactions."})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,p)]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useLocalState)(t,"targetAccNumber",0),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"fundsAmount",0),m=s[0],f=s[1],h=(0,r.useLocalState)(t,"purpose",0),C=h[0],N=h[1],b=i.money;return(0,o.createComponentVNode)(2,a.Section,{title:"Transfer Fund",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Account Balance",children:["$",b]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target account number",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"6 Digit Number",onInput:function(e,t){return u(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Funds to transfer",children:(0,o.createComponentVNode)(2,a.Input,{onInput:function(e,t){return f(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transaction Purpose",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,onInput:function(e,t){return N(t)}})})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Button,{content:"Transfer",icon:"sign-out-alt",onClick:function(){return c("transfer",{target_acc_number:d,funds_amount:m,purpose:C})}}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,p)]})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useLocalState)(t,"fundsAmount",0),d=l[0],u=l[1],s=i.owner_name,m=i.money;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Welcome, "+s,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Logout",icon:"sign-out-alt",onClick:function(){return c("logout")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Account Balance",children:["$",m]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Withdrawal Amount",children:(0,o.createComponentVNode)(2,a.Input,{onInput:function(e,t){return u(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Withdraw Fund",icon:"sign-out-alt",onClick:function(){return c("withdrawal",{funds_amount:d})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Menu",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Change account security level",icon:"lock",onClick:function(){return c("view_screen",{view_screen:1})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Make transfer",icon:"exchange-alt",onClick:function(){return c("view_screen",{view_screen:2})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"View transaction log",icon:"list",onClick:function(){return c("view_screen",{view_screen:3})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Print balance statement",icon:"print",onClick:function(){return c("balance_statement")}})})]})],4)},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useLocalState)(t,"accountID",null),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"accountPin",null),m=s[0],p=s[1];i.machine_id,i.held_card_name;return(0,o.createComponentVNode)(2,a.Section,{title:"Insert card or enter ID and pin to login",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Account ID",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"6 Digit Number",onInput:function(e,t){return u(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pin",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"6 Digit Number",onInput:function(e,t){return p(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Login",icon:"sign-in-alt",onClick:function(){return c("attempt_auth",{account_num:d,account_pin:m})}})})]})})},m=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.transaction_log);return(0,o.createComponentVNode)(2,a.Section,{title:"Transactions",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:"Timestamp"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Target"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Reason"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Terminal"})]}),c.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:"1rem",children:[e.date," ",e.time]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.target_name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.purpose}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:["$",e.amount]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.source_terminal})]},e)}))]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,p)]})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"sign-out-alt",onClick:function(){return c("view_screen",{view_screen:0})}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AccountsUplinkTerminal=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(75),l=n(4),d=n(132),u=n(133);t.AccountsUplinkTerminal=function(e,t){var n,r=(0,a.useBackend)(t),c=(r.act,r.data),i=c.loginState,m=c.currentPage;return i.logged_in?(1===m?n=(0,o.createComponentVNode)(2,s):2===m?n=(0,o.createComponentVNode)(2,f):3===m&&(n=(0,o.createComponentVNode)(2,h)),(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.LoginInfo),n]})})):(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,u.LoginScreen)})})};var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.accounts,d=(0,a.useLocalState)(t,"searchText",""),u=d[0],s=(d[1],(0,a.useLocalState)(t,"sortId","owner_name")),f=s[0],h=(s[1],(0,a.useLocalState)(t,"sortOrder",!0)),C=h[0];h[1];return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,c.Flex.Item,{flexGrow:"1",mt:"0.5rem",children:(0,o.createComponentVNode)(2,c.Section,{height:"100%",children:(0,o.createComponentVNode)(2,c.Table,{className:"AccountsUplinkTerminal__list",children:[(0,o.createComponentVNode)(2,c.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,m,{id:"owner_name",children:"Account Holder"}),(0,o.createComponentVNode)(2,m,{id:"account_number",children:"Account Number"}),(0,o.createComponentVNode)(2,m,{id:"suspended",children:"Account Status"})]}),l.filter((0,r.createSearch)(u,(function(e){return e.owner_name+"|"+e.account_number+"|"+e.suspended}))).sort((function(e,t){var n=C?1:-1;return e[f].localeCompare(t[f])*n})).map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{onClick:function(){return i("view_account_detail",{index:e.account_index})},children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user"})," ",e.owner_name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["#",e.account_number]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.suspended})]},e.id)}))]})})})]})},m=function(e,t){var n=(0,a.useLocalState)(t,"sortId","name"),r=n[0],i=n[1],l=(0,a.useLocalState)(t,"sortOrder",!0),d=l[0],u=l[1],s=e.id,m=e.children;return(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{color:r!==s&&"transparent",width:"100%",onClick:function(){r===s?u(!d):(i(s),u(!0))},children:[m,r===s&&(0,o.createComponentVNode)(2,c.Icon,{name:d?"sort-up":"sort-down",ml:"0.25rem;"})]})})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data.is_printing,d=(0,a.useLocalState)(t,"searchText",""),u=(d[0],d[1]);return(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,i.FlexItem,{children:[(0,o.createComponentVNode)(2,c.Button,{content:"New Account",icon:"plus",onClick:function(){return r("create_new_account")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print Account List",disabled:l,ml:"0.25rem",onClick:function(){return r("print_records")}})]}),(0,o.createComponentVNode)(2,i.FlexItem,{grow:"1",ml:"0.5rem",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search by account holder, number, status",width:"100%",onInput:function(e,t){return u(t)}})})]})},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_printing,d=i.account_number,u=i.owner_name,s=i.money,m=i.suspended,p=i.transactions;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"#"+d+" / "+u,mt:1,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print Account Details",disabled:l,onClick:function(){return r("print_account_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("back")}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Number",children:["#",d]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Holder",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Balance",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Status",color:m?"red":"green",children:[m?"Suspended":"Active",(0,o.createComponentVNode)(2,c.Button,{ml:1,content:m?"Unsuspend":"Suspend",icon:m?"unlock":"lock",onClick:function(){return r("toggle_suspension")}})]})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Transactions",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Timestamp"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Target"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Reason"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Value"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Terminal"})]}),p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.date," ",e.time]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.target_name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.purpose}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["$",e.amount]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.source_terminal})]},e)}))]})})],4)},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=(n.data,(0,a.useLocalState)(t,"accName","")),l=i[0],d=i[1],u=(0,a.useLocalState)(t,"accDeposit",""),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,c.Section,{title:"Create Account",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("back")}}),children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Holder",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Name Here",onChange:function(e,t){return d(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Initial Deposit",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"0",onChange:function(e,t){return m(t)}})})]}),(0,o.createComponentVNode)(2,c.Button,{mt:1,fluid:!0,content:"Create Account",onClick:function(){return r("finalise_create_account",{holder_name:l,starting_funds:s})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.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_power?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.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_power?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&2!==d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock||0===d.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,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon: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,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon: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,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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.AirAlarm=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(182);t.AirAlarm=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.locked);return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),!a&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)],4)]})})};var l=function(e){return 0===e?"green":1===e?"orange":"red"},d=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,d=c.data,u=d.air,s=d.mode,m=d.atmos_alarm,p=d.locked,f=d.alarmActivated,h=d.rcon;return n=0===u.danger.overall?0===m?"Optimal":"Caution: Atmos alert in area":1===u.danger.overall?"Caution":"DANGER: Internals Required",(0,o.createComponentVNode)(2,a.Section,{title:"Air Status",children:u?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.Box,{color:l(u.danger.pressure),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.pressure})," kPa",!p&&(0,o.createFragment)([(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,a.Button,{content:3===s?"Deactivate Panic Siphon":"Activate Panic Siphon",selected:3===s,icon:"exclamation-triangle",onClick:function(){return i("mode",{mode:3===s?1:3})}})],4)]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.oxygen/100,color:l(u.danger.oxygen)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nitrogen",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.nitrogen/100,color:l(u.danger.nitrogen)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Carbon Dioxide",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.co2/100,color:l(u.danger.co2)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxins",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.plasma/100,color:l(u.danger.plasma)})}),u.contents.other>0&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Other",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.other/100,color:l(u.danger.other)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,a.Box,{color:l(u.danger.temperature),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.temperature})," K / ",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.temperature_c})," C\xa0",(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-full",content:u.temperature_c+" C",onClick:function(){return i("temperature")}})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Local Status",children:(0,o.createComponentVNode)(2,a.Box,{color:l(u.danger.overall),children:[n,!p&&(0,o.createFragment)([(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,a.Button,{content:f?"Reset Alarm":"Activate Alarm",selected:f,onClick:function(){return i(f?"atmos_reset":"atmos_alarm")}})],4)]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Control Settings",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Off",selected:1===h,onClick:function(){return i("set_rcon",{rcon:1})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Auto",selected:2===h,onClick:function(){return i("set_rcon",{rcon:2})}}),(0,o.createComponentVNode)(2,a.Button,{content:"On",selected:3===h,onClick:function(){return i("set_rcon",{rcon:3})}})]})]}):(0,o.createComponentVNode)(2,a.Box,{children:"Unable to acquire air sample!"})})},u=function(e,t){var n=(0,r.useLocalState)(t,"tabIndex",0),c=n[0],i=n[1];return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===c,onClick:function(){return i(0)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"sign-out-alt"})," Vent Control"]},"Vents"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"sign-in-alt"})," Scrubber Control"]},"Scrubbers"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"cog"})," Mode"]},"Mode"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===c,onClick:function(){return i(3)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"tachometer-alt"})," Thresholds"]},"Thresholds")]})},s=function(e,t){var n=(0,r.useLocalState)(t,"tabIndex",0),a=n[0];n[1];switch(a){case 0:return(0,o.createComponentVNode)(2,m);case 1:return(0,o.createComponentVNode)(2,p);case 2:return(0,o.createComponentVNode)(2,f);case 3:return(0,o.createComponentVNode)(2,h);default:return"WE SHOULDN'T BE HERE!"}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return n.data.vents.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{content:e.power?"On":"Off",selected:e.power,icon:"power-off",onClick:function(){return c("command",{cmd:"power",val:1===e.power?0:1,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"release"===e.direction?"Blowing":"Siphoning",icon:"release"===e.direction?"sign-out-alt":"sign-in-alt",onClick:function(){return c("command",{cmd:"direction",val:"release"===e.direction?0:1,id_tag:e.id_tag})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Checks",children:[(0,o.createComponentVNode)(2,a.Button,{content:"External",selected:1===e.checks,onClick:function(){return c("command",{cmd:"checks",val:1,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Internal",selected:2===e.checks,onClick:function(){return c("command",{cmd:"checks",val:2,id_tag:e.id_tag})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"External Pressure Target",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:e.external})," kPa\xa0",(0,o.createComponentVNode)(2,a.Button,{content:"Set",icon:"cog",onClick:function(){return c("command",{cmd:"set_external_pressure",id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",icon:"redo-alt",onClick:function(){return c("command",{cmd:"set_external_pressure",val:101.325,id_tag:e.id_tag})}})]})]})},e.name)}))},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return n.data.scrubbers.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{content:e.power?"On":"Off",selected:e.power,icon:"power-off",onClick:function(){return c("command",{cmd:"power",val:1===e.power?0:1,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:0===e.scrubbing?"Siphoning":"Scrubbing",icon:0===e.scrubbing?"sign-in-alt":"filter",onClick:function(){return c("command",{cmd:"scrubbing",val:0===e.scrubbing?1:0,id_tag:e.id_tag})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,a.Button,{content:e.widenet?"Extended":"Normal",selected:e.widenet,icon:"expand-arrows-alt",onClick:function(){return c("command",{cmd:"widenet",val:0===e.widenet?1:0,id_tag:e.id_tag})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filtering",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Carbon Dioxide",selected:e.filter_co2,onClick:function(){return c("command",{cmd:"co2_scrub",val:0===e.filter_co2?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Plasma",selected:e.filter_toxins,onClick:function(){return c("command",{cmd:"tox_scrub",val:0===e.filter_toxins?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nitrous Oxide",selected:e.filter_n2o,onClick:function(){return c("command",{cmd:"n2o_scrub",val:0===e.filter_n2o?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Oxygen",selected:e.filter_o2,onClick:function(){return c("command",{cmd:"o2_scrub",val:0===e.filter_o2?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nitrogen",selected:e.filter_n2,onClick:function(){return c("command",{cmd:"n2_scrub",val:0===e.filter_n2?1:0,id_tag:e.id_tag})}})]})]})},e.name)}))},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.modes,d=i.presets,u=i.emagged,s=i.mode,m=i.preset;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"System Mode",children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){return(!e.emagonly||e.emagonly&&!!u)&&(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:1,children:(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:"cog",selected:e.id===s,onClick:function(){return c("mode",{mode:e.id})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.desc})]},e.name)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"System Presets",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:"After making a selection, the system will automatically cycle in order to remove contaminants."}),(0,o.createComponentVNode)(2,a.Table,{mt:1,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:1,children:(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:"cog",selected:e.id===m,onClick:function(){return c("preset",{preset:e.id})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.desc})]},e.name)}))})]})],4)},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.thresholds;return(0,o.createComponentVNode)(2,a.Section,{title:"Alarm Thresholds",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,{width:"20%",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"red",width:"20%",children:"Danger Min"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"orange",width:"20%",children:"Warning Min"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"orange",width:"20%",children:"Warning Max"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"red",width:"20%",children:"Danger Max"})]}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),e.settings.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:-1===e.selected?"Off":e.selected,onClick:function(){return c("command",{cmd:"set_threshold",env:e.env,"var":e.val})}})},e.val)}))]},e.name)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockAccessController=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AirlockAccessController=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data,s=u.exterior_status,m=u.interior_status,p=u.processing;return n="open"===u.exterior_status.state?(0,o.createComponentVNode)(2,a.Button,{content:"Lock Exterior Door",icon:"exclamation-triangle",disabled:p,onClick:function(){return d("force_ext")}}):(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Exterior",icon:"arrow-circle-left",disabled:p,onClick:function(){return d("cycle_ext_door")}}),i="open"===u.interior_status.state?(0,o.createComponentVNode)(2,a.Button,{content:"Lock Interior Door",icon:"exclamation-triangle",disabled:p,color:"open"===m?"red":p?"yellow":null,onClick:function(){return d("force_int")}}):(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Interior",icon:"arrow-circle-right",disabled:p,onClick:function(){return d("cycle_int_door")}}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"External Door Status",children:"closed"===s.state?"Locked":"Open"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Door Status",children:"closed"===m.state?"Locked":"Open"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,a.Box,{children:n}),(0,o.createComponentVNode)(2,a.Box,{children:i})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(94);t.AirlockElectronics=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,d)]})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.unrestricted_dir;return(0,o.createComponentVNode)(2,a.Section,{title:"Access Control",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,mb:1,children:"Unrestricted Access From:"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-down",content:"North",selected:"north"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"North"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-up",content:"South",selected:"south"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"South"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-left",content:"East",selected:"east"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"East"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-right",content:"West",selected:"west"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"West"})}})})]})]})})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.selected_accesses,u=l.one_access,s=l.regions;return(0,o.createComponentVNode)(2,i.AccessList,{usedByRcd:1,rcdButtons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:u,content:"One",onClick:function(){return c("set_one_access",{access:"one"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!u,content:"All",onClick:function(){return c("set_one_access",{access:"all"})}})],4),accesses:s,selectedList:d,accessMod:function(e){return c("set",{access:e})},grantAll:function(){return c("grant_all")},denyAll:function(){return c("clear_all")},grantDep:function(e){return c("grant_region",{region:e})},denyDep:function(e){return c("deny_region",{region:e})}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AppearanceChanger=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AppearanceChanger=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.change_race,s=d.species,m=d.specimen,p=d.change_gender,f=d.gender,h=d.has_gender,C=d.change_eye_color,N=d.change_skin_tone,b=d.change_skin_color,g=d.change_head_accessory_color,V=d.change_hair_color,v=d.change_secondary_hair_color,y=d.change_facial_hair_color,_=d.change_secondary_facial_hair_color,x=d.change_head_marking_color,k=d.change_body_marking_color,L=d.change_tail_marking_color,B=d.change_head_accessory,w=d.head_accessory_styles,S=d.head_accessory_style,I=d.change_hair,T=d.hair_styles,A=d.hair_style,E=d.change_facial_hair,M=d.facial_hair_styles,O=d.facial_hair_style,P=d.change_head_markings,R=d.head_marking_styles,D=d.head_marking_style,F=d.change_body_markings,j=d.body_marking_styles,W=d.body_marking_style,z=d.change_tail_markings,U=d.tail_marking_styles,H=d.tail_marking_style,K=d.change_body_accessory,G=d.body_accessory_styles,q=d.body_accessory_style,Y=d.change_alt_head,$=d.alt_head_styles,X=d.alt_head_style,J=!1;return(C||N||b||g||V||v||y||_||x||k||L)&&(J=!0),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.specimen,selected:e.specimen===m,onClick:function(){return l("race",{race:e.specimen})}},e.specimen)}))}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gender",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Male",selected:"male"===f,onClick:function(){return l("gender",{gender:"male"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Female",selected:"female"===f,onClick:function(){return l("gender",{gender:"female"})}}),!h&&(0,o.createComponentVNode)(2,a.Button,{content:"Genderless",selected:"plural"===f,onClick:function(){return l("gender",{gender:"plural"})}})]}),!!J&&(0,o.createComponentVNode)(2,i),!!B&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Head accessory",children:w.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.headaccessorystyle,selected:e.headaccessorystyle===S,onClick:function(){return l("head_accessory",{head_accessory:e.headaccessorystyle})}},e.headaccessorystyle)}))}),!!I&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hair",children:T.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.hairstyle,selected:e.hairstyle===A,onClick:function(){return l("hair",{hair:e.hairstyle})}},e.hairstyle)}))}),!!E&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Facial hair",children:M.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.facialhairstyle,selected:e.facialhairstyle===O,onClick:function(){return l("facial_hair",{facial_hair:e.facialhairstyle})}},e.facialhairstyle)}))}),!!P&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Head markings",children:R.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.headmarkingstyle,selected:e.headmarkingstyle===D,onClick:function(){return l("head_marking",{head_marking:e.headmarkingstyle})}},e.headmarkingstyle)}))}),!!F&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Body markings",children:j.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.bodymarkingstyle,selected:e.bodymarkingstyle===W,onClick:function(){return l("body_marking",{body_marking:e.bodymarkingstyle})}},e.bodymarkingstyle)}))}),!!z&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tail markings",children:U.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.tailmarkingstyle,selected:e.tailmarkingstyle===H,onClick:function(){return l("tail_marking",{tail_marking:e.tailmarkingstyle})}},e.tailmarkingstyle)}))}),!!K&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Body accessory",children:G.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.bodyaccessorystyle,selected:e.bodyaccessorystyle===q,onClick:function(){return l("body_accessory",{body_accessory:e.bodyaccessorystyle})}},e.bodyaccessorystyle)}))}),!!Y&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternate head",children:$.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.altheadstyle,selected:e.altheadstyle===X,onClick:function(){return l("alt_head",{alt_head:e.altheadstyle})}},e.altheadstyle)}))})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Colors",children:[{key:"change_eye_color",text:"Change eye color",action:"eye_color"},{key:"change_skin_tone",text:"Change skin tone",action:"skin_tone"},{key:"change_skin_color",text:"Change skin color",action:"skin_color"},{key:"change_head_accessory_color",text:"Change head accessory color",action:"head_accessory_color"},{key:"change_hair_color",text:"Change hair color",action:"hair_color"},{key:"change_secondary_hair_color",text:"Change secondary hair color",action:"secondary_hair_color"},{key:"change_facial_hair_color",text:"Change facial hair color",action:"facial_hair_color"},{key:"change_secondary_facial_hair_color",text:"Change secondary facial hair color",action:"secondary_facial_hair_color"},{key:"change_head_marking_color",text:"Change head marking color",action:"head_marking_color"},{key:"change_body_marking_color",text:"Change body marking color",action:"body_marking_color"},{key:"change_tail_marking_color",text:"Change tail marking color",action:"tail_marking_color"}].map((function(e){return!!i[e.key]&&(0,o.createComponentVNode)(2,a.Button,{content:e.text,onClick:function(){return c(e.action)}})}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.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,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),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,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(76),i=n(4);t.AtmosControl=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data,(0,r.useLocalState)(t,"tabIndex",0)),u=c[0],s=c[1];return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:0===u,children:(0,o.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,children:[(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:"table"})," Data View"]},"DataView"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"map-marked-alt"})," Map View"]},"MapView")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,l);case 1:return(0,o.createComponentVNode)(2,d);default:return"WE SHOULDN'T BE HERE!"}}(u)]})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.alarms;return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",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:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Access"})]}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,c.TableCell,{children:e.name}),(0,o.createComponentVNode)(2,c.TableCell,{children:(t=e.danger,0===t?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Good"}):1===t?(0,o.createComponentVNode)(2,a.Box,{color:"orange",bold:!0,children:"Warning"}):2===t?(0,o.createComponentVNode)(2,a.Box,{color:"red",bold:!0,children:"DANGER"}):void 0)}),(0,o.createComponentVNode)(2,c.TableCell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"cog",content:"Access",onClick:function(){return i("open_alarm",{aref:e.ref})}})})]},e.name);var t}))]})})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=(0,r.useLocalState)(t,"zoom",1),i=c[0],l=c[1],d=n.alarms;return(0,o.createComponentVNode)(2,a.Box,{height:"526px",mb:"0.5rem",overflow:"hidden",children:(0,o.createComponentVNode)(2,a.NanoMap,{onZoom:function(e){return l(e)},children:d.filter((function(e){return 1===e.z})).map((function(e){return(0,o.createComponentVNode)(2,a.NanoMap.Marker,{x:e.x,y:e.y,zoom:i,icon:"circle",tooltip:e.name,color:(t=e.danger,0===t?"green":1===t?"orange":2===t?"red":void 0)},e.ref);var t}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.pressure,s=l.max_pressure,m=l.filter_type,p=l.filter_type_list;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:d?"On":"Off",color:d?null:"red",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",disabled:0===u,width:2.2,onClick:function(){return i("min_pressure")}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"kPa",width:6.1,lineHeight:1.5,step:10,minValue:0,maxValue:s,value:u,onDrag:function(e,t){return i("custom_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",disabled:u===s,width:2.2,onClick:function(){return i("max_pressure")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.gas_type===m,content:e.label,onClick:function(){return i("set_filter",{filter:e.gas_type})}},e.label)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.pressure,m=d.max_pressure,p=d.node1_concentration,f=d.node2_concentration;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:u?"On":"Off",color:u?null:"red",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",disabled:0===s,width:2.2,onClick:function(){return l("min_pressure")}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"kPa",width:6.1,lineHeight:1.5,step:10,minValue:0,maxValue:m,value:s,onDrag:function(e,t){return l("custom_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",disabled:s===m,width:2.2,onClick:function(){return l("max_pressure")}})]}),(0,o.createComponentVNode)(2,i,{node_name:"Node 1",node_ref:p}),(0,o.createComponentVNode)(2,i,{node_name:"Node 2",node_ref:f})]})})})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=(n.data,e.node_name),l=e.node_ref;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",width:2.2,disabled:0===l,onClick:function(){return c("set_node",{node_name:i,concentration:(l-10)/100})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"%",width:6.1,lineHeight:1.5,stepPixelSize:10,minValue:0,maxValue:100,value:l,onChange:function(e,t){return c("set_node",{node_name:i,concentration:t/100})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",width:2.2,disabled:100===l,onClick:function(){return c("set_node",{node_name:i,concentration:(l+10)/100})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.rate,s=l.max_rate,m=l.gas_unit,p=l.step;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:d?"On":"Off",color:d?null:"red",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",disabled:0===u,width:2.2,onClick:function(){return i("min_rate")}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:m,width:6.1,lineHeight:1.5,step:p,minValue:0,maxValue:s,value:u,onDrag:function(e,t){return i("custom_rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",disabled:u===s,width:2.2,onClick:function(){return i("max_rate")}})]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Autolathe=void 0;var o=n(0),r=n(43),a=n(26),c=n(1),i=n(2),l=n(4),d=n(20),u=function(e,t,n,o){return null===e.requirements||!(e.requirements.metal*o>t)&&!(e.requirements.glass*o>n)};t.Autolathe=function(e,t){var n=(0,c.useBackend)(t),s=n.act,m=n.data,p=m.total_amount,f=(m.max_amount,m.metal_amount),h=m.glass_amount,C=m.busyname,N=(m.busyamt,m.showhacked,m.buildQueue),b=m.buildQueueLen,g=m.recipes,V=m.categories,v=(0,c.useSharedState)(t,"category",0),y=v[0],_=v[1];0===y&&(y="Tools");var x=f.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),k=h.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),L=p.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),B=(0,c.useSharedState)(t,"search_text",""),w=B[0],S=B[1],I=(0,d.createSearch)(w,(function(e){return e.name})),T="";b>0&&(T=N.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:N[t][0],onClick:function(){return s("remove_from_queue",{remove_from_queue:N.indexOf(e)+1})}},e)},t)})));var A=(0,r.flow)([(0,a.filter)((function(e){return(e.category.indexOf(y)>-1||w)&&(m.showhacked||!e.hacked)})),w&&(0,a.filter)(I),(0,a.sortBy)((function(e){return e.name.toLowerCase()}))])(g),E="Build";w?E="Results for: '"+w+"':":y&&(E="Build ("+y+")");return(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,i.Section,{title:E,buttons:(0,o.createComponentVNode)(2,i.Dropdown,{width:"190px",options:V,selected:y,onSelected:function(e){return _(e)}}),children:[(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search for...",onInput:function(e,t){return S(t)},mb:1}),A.map((function(e){return(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+e.image,style:{"vertical-align":"middle",width:"32px",margin:"0px","margin-left":"0px"}}),(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&1===m.busyamt,disabled:!u(e,m.metal_amount,m.glass_amount,1),onClick:function(){return s("make",{make:e.uid,multiplier:1})},children:(0,d.toTitleCase)(e.name)}),e.max_multiplier>=10&&(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&10===m.busyamt,disabled:!u(e,m.metal_amount,m.glass_amount,10),onClick:function(){return s("make",{make:e.uid,multiplier:10})},children:"10x"}),e.max_multiplier>=25&&(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&25===m.busyamt,disabled:!u(e,m.metal_amount,m.glass_amount,25),onClick:function(){return s("make",{make:e.uid,multiplier:25})},children:"25x"}),e.max_multiplier>25&&(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&m.busyamt===e.max_multiplier,disabled:!u(e,m.metal_amount,m.glass_amount,e.max_multiplier),onClick:function(){return s("make",{make:e.uid,multiplier:e.max_multiplier})},children:[e.max_multiplier,"x"]})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:e.requirements&&Object.keys(e.requirements).map((function(t){return(0,d.toTitleCase)(t)+": "+e.requirements[t]})).join(", ")||(0,o.createComponentVNode)(2,i.Box,{children:"No resources required."})})]},e.ref)}))]}),2,{style:{float:"left",width:"68%"}}),(0,o.createVNode)(1,"div",null,[(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Metal",children:x}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Glass",children:k}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total",children:L}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Storage",children:[m.fill_percent,"% Full"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Building",children:(0,o.createComponentVNode)(2,i.Box,{color:C?"green":"",children:C||"Nothing"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Build Queue",children:[T,(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Clear All",disabled:!m.buildQueueLen,onClick:function(){return s("clear_queue")}}),2,{align:"right"})]})],4,{style:{float:"right",width:"30%"}})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BlueSpaceArtilleryControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BlueSpaceArtilleryControl=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data;return n=d.ready?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:"green",children:"Ready"}):d.reloadtime_text?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reloading In",color:"red",children:d.reloadtime_text}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:"red",children:"No cannon connected!"}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.notice&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alert",color:"red",children:d.notice}),n,(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,a.Button,{icon:"crosshairs",content:d.target?d.target:"None",onClick:function(){return l("recalibrate")}})}),1===d.ready&&!!d.target&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Firing",children:(0,o.createComponentVNode)(2,a.Button,{icon:"skull",content:"FIRE!",color:"red",onClick:function(){return l("fire")}})}),!d.connected&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:"Complete Deployment",onClick:function(){return l("build")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BluespaceTap=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(95);t.BluespaceTap=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.product||[],s=d.desiredLevel,m=d.inputLevel,p=d.points,f=d.totalPoints,h=d.powerUse,C=d.availablePower,N=d.maxLevel,b=d.emagged,g=d.safeLevels,V=d.nextLevelPower,v=s>m?"bad":"good";return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:1,children:"Safety Protocols disabled"}),!!(m>g)&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:1,children:"High Power, Instability likely"}),(0,o.createComponentVNode)(2,a.Collapsible,{title:"Input Management",children:(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Input Level",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Desired Level",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===s,tooltip:"Set to 0",onClick:function(){return l("set",{set_level:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"step-backward",tooltip:"Decrease to actual input level",disabled:0===s,onClick:function(){return l("set",{set_level:m})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===s,tooltip:"Decrease one step",onClick:function(){return l("decrease")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:s,fillValue:m,minValue:0,color:v,maxValue:N,stepPixelSize:20,step:1,onChange:function(e,t){return l("set",{set_level:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:s===N,tooltip:"Increase one step",tooltipPosition:"left",onClick:function(){return l("increase")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:s===N,tooltip:"Set to max",tooltipPosition:"left",onClick:function(){return l("set",{set_level:N})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Power Use",children:(0,i.formatPower)(h)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power for next level",children:(0,i.formatPower)(V)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Surplus Power",children:(0,i.formatPower)(C)})]})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Points",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Points",children:f})]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Box,{children:(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,{disabled:e.price>=p,onClick:function(){return l("vend",{target:e.key})},content:e.price})},e.key)}))})})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BodyScanner=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4),l=[["good","Alive"],["average","Critical"],["bad","DEAD"]],d=[["hasBorer","bad","Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended."],["hasVirus","bad","Viral pathogen detected in blood stream."],["blind","average","Cataracts detected."],["colourblind","average","Photoreceptor abnormalities detected."],["nearsighted","average","Retinal misalignment detected."]],u=[["Respiratory","oxyLoss"],["Brain","brainLoss"],["Toxin","toxLoss"],["Radioactive","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.filter((function(e){return!!e})).reduce((function(e,t){return(0,o.createFragment)([e,(0,o.createComponentVNode)(2,c.Box,{children:t},t)],0)}),null):null},f=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,a.useBackend)(t).data,r=n.occupied,c=n.occupant,l=void 0===c?{}:c,d=r?(0,o.createComponentVNode)(2,h,{occupant:l}):(0,o.createComponentVNode)(2,y);return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:d})})};var h=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,C,{occupant:t}),(0,o.createComponentVNode)(2,N,{occupant:t}),(0,o.createComponentVNode)(2,b,{occupant:t}),(0,o.createComponentVNode)(2,V,{organs:t.extOrgan}),(0,o.createComponentVNode)(2,v,{organs:t.intOrgan})]})},C=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data.occupant;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"print",onClick:function(){return i("print_p")},children:"Print Report"}),(0,o.createComponentVNode)(2,c.Button,{icon:"user-slash",onClick:function(){return i("ejectify")},children:"Eject"})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:d.maxHealth,value:d.health/d.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",color:l[d.stat][0],children:l[d.stat][1]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:(0,r.round)(d.bodyTempC,0)}),"\xb0C,\xa0",(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:(0,r.round)(d.bodyTempF,0)}),"\xb0F"]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Implants",children:d.implant_len?(0,o.createComponentVNode)(2,c.Box,{children:d.implant.map((function(e){return e.name})).join(", ")}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"None"})})]})})},N=function(e){var t=e.occupant;return t.hasBorer||t.blind||t.colourblind||t.nearsighted||t.hasVirus?(0,o.createComponentVNode)(2,c.Section,{title:"Abnormalities",children:d.map((function(e,n){if(t[e[0]])return(0,o.createComponentVNode)(2,c.Box,{color:e[1],bold:"bad"===e[1],children:e[2]})}))}):(0,o.createComponentVNode)(2,c.Section,{title:"Abnormalities",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No abnormalities found."})})},b=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,c.Section,{title:"Damage",children:(0,o.createComponentVNode)(2,c.Table,{children:m(u,(function(e,n,r){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Table.Row,{color:"label",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e[0],":"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:!!n&&n[0]+":"})]}),(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,g,{value:t[e[1]],marginBottom:r100)&&"average":"bad")||!!e.status.robotic&&"label",width:"33%",children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"center",q:!0,children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:e.maxHealth,mt:t>0&&"0.5rem",value:e.totalLoss/100,ranges:s,children:[(0,o.createComponentVNode)(2,c.Box,{float:"left",display:"inline",children:[!!e.bruteLoss&&(0,o.createComponentVNode)(2,c.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"bone"}),(0,r.round)(e.bruteLoss,0),"\xa0",(0,o.createComponentVNode)(2,c.Tooltip,{position:"top",content:"Brute damage"})]}),!!e.fireLoss&&(0,o.createComponentVNode)(2,c.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"fire"}),(0,r.round)(e.fireLoss,0),(0,o.createComponentVNode)(2,c.Tooltip,{position:"top",content:"Burn damage"})]})]}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:(0,r.round)(e.totalLoss,0)})]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"right",verticalAlign:"top",width:"33%",pt:t>0&&"calc(0.5rem + 2px)",children:[(0,o.createComponentVNode)(2,c.Box,{color:"average",display:"inline",children:p([!!e.internalBleeding&&"Internal bleeding",!!e.lungRuptured&&"Ruptured lung",!!e.status.broken&&e.status.broken,f(e.germ_level),!!e.open&&"Open incision"])}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:[p([!!e.status.splinted&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Splinted"}),!!e.status.robotic&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Robotic"}),!!e.status.dead&&(0,o.createComponentVNode)(2,c.Box,{color:"bad",bold:!0,children:"DEAD"})]),p(e.shrapnel.map((function(e){return e.known?e.name:"Unknown object"})))]})]})]},t)}))]})})},v=function(e){return 0===e.organs.length?(0,o.createComponentVNode)(2,c.Section,{title:"Internal Organs",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"N/A"})}):(0,o.createComponentVNode)(2,c.Section,{title:"Internal Organs",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"center",children:"Damage"}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"right",children:"Injuries"})]}),e.organs.map((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{textTransform:"capitalize",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{color:(!e.dead?e.germ_level>100&&"average":"bad")||e.robotic>0&&"label",width:"33%",children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.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,c.Table.Cell,{textAlign:"right",verticalAlign:"top",width:"33%",pt:t>0&&"calc(0.5rem + 2px)",children:[(0,o.createComponentVNode)(2,c.Box,{color:"average",display:"inline",children:p([f(e.germ_level)])}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:p([1===e.robotic&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Robotic"}),2===e.robotic&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Assisted"}),!!e.dead&&(0,o.createComponentVNode)(2,c.Box,{color:"bad",bold:!0,children:"DEAD"})])})]})]},t)}))]})})},y=function(){return(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,c.Flex,{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 occupant detected."]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BotClean=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BotClean=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.noaccess,s=l.maintpanel,m=l.on,p=l.autopatrol,f=l.canhack,h=l.emagged,C=l.remote_disabled,N=l.painame,b=l.cleanblood;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",d?"unlock":"lock"," this interface."]}),(0,o.createComponentVNode)(2,a.Section,{title:"General Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"On":"Off",selected:m,disabled:u,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patrol",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Auto Patrol",disabled:u,onClick:function(){return i("autopatrol")}})}),!!s&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance Panel",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Panel Open!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety System",children:(0,o.createComponentVNode)(2,a.Box,{color:h?"bad":"good",children:h?"DISABLED!":"Enabled"})}),!!f&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hacking",children:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:h?"Restore Safties":"Hack",disabled:u,color:"bad",onClick:function(){return i("hack")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Access",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:!C,content:"AI Remote Control",disabled:u,onClick:function(){return i("disableremote")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cleaning Settings",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:b,content:"Clean Blood",disabled:u,onClick:function(){return i("blood")}})}),N&&(0,o.createComponentVNode)(2,a.Section,{title:"pAI",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:N,disabled:u,onClick:function(){return i("ejectpai")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BotSecurity=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BotSecurity=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.noaccess,s=l.maintpanel,m=l.on,p=l.autopatrol,f=l.canhack,h=l.emagged,C=l.remote_disabled,N=l.painame,b=l.check_id,g=l.check_weapons,V=l.check_warrant,v=l.arrest_mode,y=l.arrest_declare;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",d?"unlock":"lock"," this interface."]}),(0,o.createComponentVNode)(2,a.Section,{title:"General Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"On":"Off",selected:m,disabled:u,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patrol",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Auto Patrol",disabled:u,onClick:function(){return i("autopatrol")}})}),!!s&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance Panel",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Panel Open!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety System",children:(0,o.createComponentVNode)(2,a.Box,{color:h?"bad":"good",children:h?"DISABLED!":"Enabled"})}),!!f&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hacking",children:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:h?"Restore Safties":"Hack",disabled:u,color:"bad",onClick:function(){return i("hack")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Access",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:!C,content:"AI Remote Control",disabled:u,onClick:function(){return i("disableremote")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Who To Arrest",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:b,content:"Unidentifiable Persons",disabled:u,onClick:function(){return i("authid")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:g,content:"Unauthorized Weapons",disabled:u,onClick:function(){return i("authweapon")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Wanted Criminals",disabled:u,onClick:function(){return i("authwarrant")}})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Arrest Procedure",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:v,content:"Detain Targets Indefinitely",disabled:u,onClick:function(){return i("arrtype")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:y,content:"Announce Arrests On Radio",disabled:u,onClick:function(){return i("arrdeclare")}})]}),N&&(0,o.createComponentVNode)(2,a.Section,{title:"pAI",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:N,disabled:u,onClick:function(){return i("ejectpai")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigCells=void 0;var o=n(0),r=n(4),a=n(2),c=n(1),i=function(e,t){var n=e.cell,r=(0,c.useBackend)(t).act,i=n.cell_id,l=n.occupant,d=n.crimes,u=n.brigged_by,s=n.time_left_seconds,m=n.time_set_seconds,p=n.ref,f="";s>0&&(f+=" BrigCells__listRow--active");return(0,o.createComponentVNode)(2,a.Table.Row,{className:f,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:i}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:l}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:u}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.TimeDisplay,{totalSeconds:m})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.TimeDisplay,{totalSeconds:s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{type:"button",onClick:function(){r("release",{ref:p})},children:"Release"})})]})},l=function(e){var t=e.cells;return(0,o.createComponentVNode)(2,a.Table,{className:"BrigCells__list",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Cell"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Occupant"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Crimes"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Brigged By"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Time Brigged For"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Time Left"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Release"})]}),t.map((function(e){return(0,o.createComponentVNode)(2,i,{cell:e},e.ref)}))]})};t.BrigCells=function(e,t){var n=(0,c.useBackend)(t),i=(n.act,n.data.cells);return(0,o.createComponentVNode)(2,r.Window,{theme:"security",resizable:!0,children:(0,o.createComponentVNode)(2,r.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{height:"100%",flexGrow:"1",children:(0,o.createComponentVNode)(2,l,{cells:i})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BrigTimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;l.nameText=l.occupant,l.timing&&(l.prisoner_hasrec?l.nameText=(0,o.createComponentVNode)(2,a.Box,{color:"green",children:l.occupant}):l.nameText=(0,o.createComponentVNode)(2,a.Box,{color:"red",children:l.occupant}));var d="pencil-alt";l.prisoner_name&&(l.prisoner_hasrec||(d="exclamation-triangle"));var u=[],s=0;for(s=0;se.current_positions&&(0,o.createComponentVNode)(2,a.Box,{color:"green",children:e.total_positions-e.current_positions})||(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"0"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"-",disabled:s.cooldown_time||!e.can_close,onClick:function(){return u("make_job_unavailable",{job:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"+",disabled:s.cooldown_time||!e.can_open,onClick:function(){return u("make_job_available",{job:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:s.target_dept&&(0,o.createComponentVNode)(2,a.Box,{color:"green",children:s.priority_jobs.indexOf(e.title)>-1?"Yes":""})||(0,o.createComponentVNode)(2,a.Button,{content:e.is_priority?"Yes":"No",selected:e.is_priority,disabled:s.cooldown_time||!e.can_prioritize,onClick:function(){return u("prioritize_job",{job:e.title})}})})]},e.title)}))]})})],4):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;case 2:n=s.authenticated&&s.scan_name?s.modify_name?(0,o.createComponentVNode)(2,i.AccessList,{accesses:s.regions,selectedList:s.selectedAccess,accessMod:function(e){return u("set",{access:e})},grantAll:function(){return u("grant_all")},denyAll:function(){return u("clear_all")},grantDep:function(e){return u("grant_region",{region:e})},denyDep:function(e){return u("deny_region",{region:e})}}):(0,o.createComponentVNode)(2,a.Section,{title:"Card Missing",color:"red",children:"No card to modify."}):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;case 3:n=s.authenticated?s.records.length?(0,o.createComponentVNode)(2,a.Section,{title:"Records",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Delete All Records",disabled:!s.authenticated||0===s.records.length||s.target_dept,onClick:function(){return u("wipe_all_logs")}}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Crewman"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Old Rank"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"New Rank"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Authorized By"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Time"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Reason"}),!!s.iscentcom&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Deleted By"})]}),s.records.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.transferee}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.oldvalue}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.newvalue}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.whodidit}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.timestamp}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.reason}),!!s.iscentcom&&(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.deletedby})]},e.timestamp)}))]}),!!s.iscentcom&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Delete MY Records",color:"purple",disabled:!s.authenticated||0===s.records.length,onClick:function(){return u("wipe_my_logs")}})})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Records",children:"No records."}):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;case 4:n=s.authenticated&&s.scan_name?(0,o.createComponentVNode)(2,a.Section,{title:"Your Team",children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Rank"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Sec Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Actions"})]}),s.people_dept.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.title}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.crimstat}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:e.buttontext,disabled:!e.demotable,onClick:function(){return u("remote_demote",{remote_demote:e.name})}})})]},e.title)}))]})}):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;default:n=(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"ERROR: Unknown Mode."})}return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[m,p,n]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoConsole=void 0;var o=n(0),r=n(43),a=n(26),c=n(1),i=n(2),l=n(4),d=(n(77),n(20));t.CargoConsole=function(e,t){return(0,o.createComponentVNode)(2,l.Window,{children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,p)]})})};var u=function(e,t){var n=(0,c.useLocalState)(t,"contentsModal",null),r=n[0],a=n[1],l=(0,c.useLocalState)(t,"contentsModalTitle",null),d=l[0],u=l[1];return null!==r&&null!==d?(0,o.createComponentVNode)(2,i.Modal,{maxWidth:"75%",width:window.innerWidth+"px",maxHeight:.75*window.innerHeight+"px",mx:"auto",children:[(0,o.createComponentVNode)(2,i.Box,{width:"100%",bold:!0,children:(0,o.createVNode)(1,"h1",null,[d,(0,o.createTextVNode)(" contents:")],0)}),(0,o.createComponentVNode)(2,i.Box,{children:r.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:["- ",e]},e)}))}),(0,o.createComponentVNode)(2,i.Box,{m:2,children:(0,o.createComponentVNode)(2,i.Button,{content:"Close",onClick:function(){a(null),u(null)}})})]}):void 0},s=function(e,t){var n,r,a=(0,c.useBackend)(t),l=a.act,d=a.data,u=d.is_public,s=d.points,m=d.timeleft,p=d.moving,f=d.at_station;return p||f?!p&&f?(n="Docked at the station",r="Return Shuttle"):p&&(r="In Transit...",n=1!==m?"Shuttle is en route (ETA: "+m+" minutes)":"Shuttle is en route (ETA: "+m+" minute)"):(n="Docked off-station",r="Call Shuttle"),(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Points Available",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle Status",children:n}),0===u&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,i.Button,{content:r,disabled:p,onClick:function(){return l("moveShuttle")}}),(0,o.createComponentVNode)(2,i.Button,{content:"View Central Command Messages",onClick:function(){return l("showMessages")}})]})]})})},m=function(e,t){var n=(0,c.useBackend)(t),l=n.act,u=n.data,s=u.categories,m=u.supply_packs,p=(0,c.useSharedState)(t,"category","Emergency"),f=p[0],h=p[1],C=(0,c.useSharedState)(t,"search_text",""),N=C[0],b=C[1],g=(0,c.useLocalState)(t,"contentsModal",null),V=(g[0],g[1]),v=(0,c.useLocalState)(t,"contentsModalTitle",null),y=(v[0],v[1]),_=(0,d.createSearch)(N,(function(e){return e.name})),x=(0,r.flow)([(0,a.filter)((function(e){return e.cat===s.filter((function(e){return e.name===f}))[0].category||N})),N&&(0,a.filter)(_),(0,a.sortBy)((function(e){return e.name.toLowerCase()}))])(m),k="Crate Catalogue";return N?k="Results for '"+N+"':":f&&(k="Browsing "+f),(0,o.createComponentVNode)(2,i.Section,{title:k,buttons:(0,o.createComponentVNode)(2,i.Dropdown,{width:"190px",options:s.map((function(e){return e.name})),selected:f,onSelected:function(e){return h(e)}}),children:[(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search for...",onInput:function(e,t){return b(t)},mb:1}),(0,o.createComponentVNode)(2,i.Box,{maxHeight:25,overflowY:"auto",overflowX:"hidden",children:(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",children:x.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,children:[e.name," (",e.cost," Points)"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"right",pr:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:"Order 1",icon:"shopping-cart",onClick:function(){return l("order",{crate:e.ref,multiple:0})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Order Multiple",icon:"cart-plus",onClick:function(){return l("order",{crate:e.ref,multiple:1})}}),(0,o.createComponentVNode)(2,i.Button,{content:"View Contents",icon:"search",onClick:function(){V(e.contents),y(e.name)}})]})]},e.name)}))})})]})},p=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=a.requests,d=a.canapprove,u=a.orders;return(0,o.createComponentVNode)(2,i.Section,{title:"Details",children:(0,o.createComponentVNode)(2,i.Box,{maxHeight:15,overflowY:"auto",overflowX:"hidden",children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,children:"Requests"}),(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:[(0,o.createComponentVNode)(2,i.Box,{children:["- #",e.ordernum,": ",e.supply_type," for ",(0,o.createVNode)(1,"b",null,e.orderedby,0)]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,children:["Reason: ",e.comment]})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"right",pr:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:"Approve",color:"green",disabled:!d,onClick:function(){return r("approve",{ordernum:e.ordernum})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Deny",color:"red",onClick:function(){return r("deny",{ordernum:e.ordernum})}})]})]},e.ordernum)}))}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,children:"Confirmed Orders"}),(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",children:u.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.Box,{children:["- #",e.ordernum,": ",e.supply_type," for ",(0,o.createVNode)(1,"b",null,e.orderedby,0)]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,children:["Reason: ",e.comment]})]})},e.ordernum)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(1),a=n(2),c=n(134),i=n(4),l=[1,5,10,20,30,50],d=[1,5,10];t.ChemDispenser=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.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),c=n.act,i=n.data,d=i.amount,u=i.energy,s=i.maxEnergy;return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",flex:"content",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:s,ranges:{good:[.5*s,Infinity],average:[.25*s,.5*s],bad:[-Infinity,.25*s]},children:[u," / ",s," Units"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dispense",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",spacing:"1",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",width:"14%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:d===e,content:e,m:"0",width:"100%",onClick:function(){return c("amount",{amount:e})}})},t)}))})})]})})},s=function(e,t){for(var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.chemicals,d=void 0===l?[]:l,u=[],s=0;s<(d.length+1)%3;s++)u.push(!0);return(0,o.createComponentVNode)(2,a.Section,{title:i.glass?"Drink Dispenser":"Chemical Dispenser",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.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,a.Flex.Item,{grow:"1",basis:"25%",height:"20px",width:"30%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",overflow:"hidden",textOverflow:"ellipsis",width:"100%",height:"100%",align:"flex-start",content:e.title,onClick:function(){return c("dispense",{reagent:e.id})}})},t)})),u.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",basis:"25%",height:"20px"},t)}))]})})},m=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,u=l.isBeakerLoaded,s=l.beakerCurrentVolume,m=l.beakerMaxVolume,p=l.beakerContents,f=void 0===p?[]:p;return(0,o.createComponentVNode)(2,a.Section,{title:l.glass?"Glass":"Beaker",flex:"content",minHeight:"25%",buttons:(0,o.createComponentVNode)(2,a.Box,{children:[!!u&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[s," / ",m," units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!u,onClick:function(){return i("ejectBeaker")}})]}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:u,beakerContents:f,buttons:function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Isolate",icon:"compress-arrows-alt",onClick:function(){return i("remove",{reagent:e.id,amount:-1})}}),d.map((function(t,n){return(0,o.createComponentVNode)(2,a.Button,{content:t,onClick:function(){return i("remove",{reagent:e.id,amount:t})}},n)})),(0,o.createComponentVNode)(2,a.Button,{content:"ALL",onClick:function(){return i("remove",{reagent:e.id,amount:e.volume})}})],0)}})})}},function(e,t,n){"use strict";e.exports=n(475)()},function(e,t,n){"use strict";var o=n(476);function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,c){if(c!==o){var i=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 i.name="Invariant Violation",i}}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:a,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.ChemHeater=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(134),l=n(4);t.ChemHeater=function(e,t){return(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.targetTemp,u=l.targetTempReached,s=l.autoEject,m=l.isActive,p=l.currentTemp,f=l.isBeakerLoaded;return(0,o.createComponentVNode)(2,c.Section,{title:"Settings",flexBasis:"content",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{content:"Auto-eject",icon:s?"toggle-on":"toggle-off",selected:s,onClick:function(){return i("toggle_autoeject")}}),(0,o.createComponentVNode)(2,c.Button,{content:m?"On":"Off",icon:"power-off",selected:m,disabled:!f,onClick:function(){return i("toggle_on")}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(d,0),minValue:0,maxValue:1e3,onDrag:function(e,t){return i("adjust_temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",color:u?"good":"average",children:f&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:p,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})]})})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.isBeakerLoaded,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.beakerContents;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",flexGrow:"1",buttons:!!d&&(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[u," / ",s," units"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return r("eject_beaker")}})]}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:d,beakerContents:m})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(134),l=n(49),d=[1,5,10],u=["bottle.png","small_bottle.png","wide_bottle.png","round_bottle.png","reagent_bottle.png"];t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data,a=n.condi,i=n.beaker,d=n.beaker_reagents,u=void 0===d?[]:d,f=n.buffer_reagents,h=void 0===f?[]:f,N=n.mode;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,l.ComplexModal),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,s,{beaker:i,beakerReagents:u,bufferNonEmpty:h.length>0}),(0,o.createComponentVNode)(2,m,{mode:N,bufferReagents:h}),(0,o.createComponentVNode)(2,p,{isCondiment:a,bufferNonEmpty:h.length>0}),(0,o.createComponentVNode)(2,C)]})]})};var s=function(e,t){var n=(0,r.useBackend)(t).act,c=e.beaker,u=e.beakerReagents,s=e.bufferNonEmpty;return(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",flexGrow:"0",flexBasis:"300px",buttons:s?(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"eject",disabled:!c,content:"Eject and Clear Buffer",onClick:function(){return n("eject")}}):(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c,content:"Eject and Clear Buffer",onClick:function(){return n("eject")}}),children:c?(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:!0,beakerContents:u,buttons:function(e,r){return(0,o.createComponentVNode)(2,a.Box,{mb:r0?(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:!0,beakerContents:s,buttons:function(e,r){return(0,o.createComponentVNode)(2,a.Box,{mb:r0?l.desc:"N/A"}),l.blood_type&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood type",children:l.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood DNA",className:"LabeledList__breakContents",children:l.blood_dna})],4),!i.condi&&(0,o.createComponentVNode)(2,a.Button,{icon:i.printing?"spinner":"print",disabled:i.printing,iconSpin:!!i.printing,ml:"0.5rem",content:"Print",onClick:function(){return c("print",{idx:l.idx,beaker:e.args.beaker})}})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.CloningConsole=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(39),l=n(49),d=n(4),u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=e.args,u=d.activerecord,s=d.realname,m=d.health,p=d.unidentity,f=d.strucenzymes,h=m.split(" - ");return(0,o.createComponentVNode)(2,c.Section,{level:2,m:"-1rem",pb:"1rem",title:"Records of "+s,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Damage",children:h.length>1?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.oxy,display:"inline",children:h[0]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.toxin,display:"inline",children:h[2]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.brute,display:"inline",children:h[3]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.burn,display:"inline",children:h[1]})],4):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Unknown"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"UI",className:"LabeledList__breakContents",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"SE",className:"LabeledList__breakContents",children:f}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Disk",children:[(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:!l.disk,icon:"arrow-circle-down",content:"Import",onClick:function(){return r("disk",{option:"load"})}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export UI",onClick:function(){return r("disk",{option:"save",savetype:"ui"})}}),(0,o.createComponentVNode)(2,c.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,c.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export SE",onClick:function(){return r("disk",{option:"save",savetype:"se"})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,c.Button,{disabled:!l.podready,icon:"user-plus",content:"Clone",onClick:function(){return r("clone",{ref:u})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Delete",onClick:function(){return r("del_rec")}})]})]})})};t.CloningConsole=function(e,t){var n=(0,a.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,h),(0,o.createComponentVNode)(2,C),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,c.Section,{noTopPadding:!0,flexGrow:"1",children:(0,o.createComponentVNode)(2,m)})]})]})};var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.menu;return(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===i,icon:"home",onClick:function(){return r("menu",{num:1})},children:"Main"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===i,icon:"folder",onClick:function(){return r("menu",{num:2})},children:"Records"})]})},m=function(e,t){var n,r=(0,a.useBackend)(t).data.menu;return 1===r?n=(0,o.createComponentVNode)(2,p):2===r&&(n=(0,o.createComponentVNode)(2,f)),n},p=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.loading,u=l.scantemp,s=l.occupant,m=l.locked,p=l.can_brainscan,f=l.scan_mode,h=l.numberofpods,C=l.pods,N=l.selected_pod,b=m&&!!s;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Scanner",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{display:"inline",color:"label",children:"Scanner Lock:\xa0"}),(0,o.createComponentVNode)(2,c.Button,{disabled:!s,selected:b,icon:b?"toggle-on":"toggle-off",content:b?"Engaged":"Disengaged",onClick:function(){return i("lock")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:b||!s,icon:"user-slash",content:"Eject Occupant",onClick:function(){return i("eject")}})],4),children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:d?(0,o.createComponentVNode)(2,c.Box,{color:"average",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"spinner",spin:!0}),"\xa0 Scanning..."]}):(0,o.createComponentVNode)(2,c.Box,{color:u.color,children:u.text})}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:f?"brain":"male",content:f?"Brain":"Body",onClick:function(){return i("toggle_mode")}})})]}),(0,o.createComponentVNode)(2,c.Button,{disabled:!s||d,icon:"user",content:"Scan Occupant",mt:"0.5rem",mb:"0",onClick:function(){return i("scan")}})]}),(0,o.createComponentVNode)(2,c.Section,{title:"Pods",level:"2",children:h?C.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,c.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,c.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,c.Button,{selected:N===e.pod,icon:N===e.pod&&"check",content:"Select",mt:"0.5rem",onClick:function(){return i("selectpod",{ref:e.pod})}}),(0,o.createComponentVNode)(2,c.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,c.Box,{color:"label",children:["Pod #",t+1]}),(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:e.biomass>=150?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,c.Icon,{name:e.biomass>=150?"circle":"circle-o"}),"\xa0",e.biomass]}),n]},t)})):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No pods detected. Unable to clone."})})],4)},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.records;return i.length?(0,o.createComponentVNode)(2,c.Box,{mt:"0.5rem",children:i.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{icon:"user",mb:"0.5rem",content:e.realname,onClick:function(){return r("view_rec",{ref:e.record})}},t)}))}):(0,o.createComponentVNode)(2,c.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No records found."]})})},h=function(e,t){var n,r=(0,a.useBackend)(t),i=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,c.NoticeBox,Object.assign({},d,{children:[(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",verticalAlign:"middle",children:l.text}),(0,o.createComponentVNode)(2,c.Button,{icon:"times-circle",float:"right",onClick:function(){return i("cleartemp")}}),(0,o.createComponentVNode)(2,c.Box,{clear:"both"})]})))}},C=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.scanner,d=i.numberofpods,u=i.autoallowed,s=i.autoprocess,m=i.disk;return(0,o.createComponentVNode)(2,c.Section,{title:"Status",buttons:(0,o.createFragment)([!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{display:"inline",color:"label",children:"Auto-processing:\xa0"}),(0,o.createComponentVNode)(2,c.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,c.Button,{disabled:!m,icon:"eject",content:"Eject Disk",onClick:function(){return r("disk",{option:"eject"})}})],0),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Scanner",children:l?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Connected"}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Not connected!"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pods",children:d?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:[d," connected"]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"None connected!"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CommunicationsComputer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.CommunicationsComputer=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data,u=!1;d.authenticated?1===d.authenticated?n="Command":2===d.authenticated?n="Captain":3===d.authenticated?(n="CentComm Secure Connection",u=!0):n="ERROR: Report This Bug!":n="Not Logged In";var s="View ("+d.messages.length+")",m=(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Authentication",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access",children:n})||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.authenticated?"sign-out-alt":"id-card",selected:d.authenticated,disabled:d.noauthbutton,content:d.authenticated?"Log Out ("+n+")":"Log In",onClick:function(){return l("auth")}})})})}),!!d.esc_section&&(0,o.createComponentVNode)(2,a.Section,{title:"Escape Shuttle",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!d.esc_status&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:d.esc_status}),!!d.esc_callable&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Options",children:(0,o.createComponentVNode)(2,a.Button,{icon:"rocket",content:"Call Shuttle",disabled:!d.authhead,onClick:function(){return l("callshuttle")}})}),!!d.esc_recallable&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Options",children:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Recall Shuttle",disabled:!d.authhead||d.is_ai,onClick:function(){return l("cancelshuttle")}})}),!!d.lastCallLoc&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Last Call/Recall From",children:d.lastCallLoc})]})})],0),p="Make Priority Announcement";d.msg_cooldown>0&&(p+=" ("+d.msg_cooldown+"s)");var f=d.emagged?"Message [UNKNOWN]":"Message CentComm",h="Request Authentication Codes";d.cc_cooldown>0&&(f+=" ("+d.cc_cooldown+"s)",h+=" ("+d.cc_cooldown+"s)");var C,N=d.str_security_level,b=d.levels.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.icon,content:e.name,disabled:!d.authcapt||e.id===d.security_level,onClick:function(){return l("newalertlevel",{level:e.id})}},e.name)})),g=d.stat_display.presets.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.label,selected:e.name===d.stat_display.type,disabled:!d.authhead,onClick:function(){return l("setstat",{statdisp:e.name})}},e.name)})),V=d.stat_display.alerts.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.label,selected:e.alert===d.stat_display.icon,disabled:!d.authhead,onClick:function(){return l("setstat",{statdisp:"alert",alert:e.alert})}},e.alert)}));if(d.current_message_title)C=(0,o.createComponentVNode)(2,a.Section,{title:d.current_message_title,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Return To Message List",disabled:!d.authhead,onClick:function(){return l("messagelist")}}),children:(0,o.createComponentVNode)(2,a.Box,{children:d.current_message})});else{var v=d.messages.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:"View",disabled:!d.authhead||d.current_message_title===e.title,onClick:function(){return l("messagelist",{msgid:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Delete",disabled:!d.authhead,onClick:function(){return l("delmessage",{msgid:e.id})}})]},e.id)}));C=(0,o.createComponentVNode)(2,a.Section,{title:"Messages Received",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-left",content:"Back To Main Menu",onClick:function(){return l("main")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:v})})}switch(d.menu_state){case 1:return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[m,(0,o.createComponentVNode)(2,a.Section,{title:"Captain-Only Actions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Alert",color:d.security_level_color,children:N}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Change Alert",children:b}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Announcement",children:(0,o.createComponentVNode)(2,a.Button,{icon:"bullhorn",content:p,disabled:!d.authcapt||d.msg_cooldown>0,onClick:function(){return l("announce")}})}),!!d.emagged&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transmit",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"broadcast-tower",color:"red",content:f,disabled:!d.authcapt||d.cc_cooldown>0,onClick:function(){return l("MessageSyndicate")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset Relays",disabled:!d.authcapt,onClick:function(){return l("RestoreBackup")}})]})||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transmit",children:(0,o.createComponentVNode)(2,a.Button,{icon:"broadcast-tower",content:f,disabled:!d.authcapt||d.cc_cooldown>0,onClick:function(){return l("MessageCentcomm")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nuclear Device",children:(0,o.createComponentVNode)(2,a.Button,{icon:"bomb",content:h,disabled:!d.authcapt||d.cc_cooldown>0,onClick:function(){return l("nukerequest")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Command Staff Actions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Displays",children:(0,o.createComponentVNode)(2,a.Button,{icon:"tv",content:"Change Status Displays",disabled:!d.authhead,onClick:function(){return l("status")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Incoming Messages",children:(0,o.createComponentVNode)(2,a.Button,{icon:"folder-open",content:s,disabled:!d.authhead,onClick:function(){return l("messagelist")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Misc",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Restart Nano-Mob Hunter GO! Server",disabled:!d.authhead,onClick:function(){return l("RestartNanoMob")}})})]})})]})});case 2:return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[m,(0,o.createComponentVNode)(2,a.Section,{title:"Modify Status Screens",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-left",content:"Back To Main Menu",onClick:function(){return l("main")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:g}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alerts",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Line 1",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.stat_display.line_1,disabled:!d.authhead,onClick:function(){return l("setmsg1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Line 2",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.stat_display.line_2,disabled:!d.authhead,onClick:function(){return l("setmsg2")}})})]})})]})});case 3:return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[m,C]})});default:return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[m,"ERRROR. Unknown menu_state: ",d.menu_state,"Please report this to NT Technical Support."]})})}}},function(e,t,n){"use strict";t.__esModule=!0,t.Contractor=void 0;var o=n(0),r=n(1),a=n(2),c=n(183),i=n(4);var l={1:["ACTIVE","good"],2:["COMPLETED","good"],3:["FAILED","bad"]},d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting Syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"];t.Contractor=function(e,t){var n,c=(0,r.useBackend)(t),l=c.act,C=c.data;n=C.unauthorized?(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",backgroundColor:"rgba(0, 0, 0, 0.8)",children:(0,o.createComponentVNode)(2,f,{height:"100%",allMessages:["ERROR: UNAUTHORIZED USER"],finishedTimeout:100,onFinished:function(){}})}):C.load_animation_completed?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",children:(0,o.createComponentVNode)(2,u)}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",mt:"0.5rem",children:(0,o.createComponentVNode)(2,s)}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"hidden",children:1===C.page?(0,o.createComponentVNode)(2,m,{height:"100%"}):(0,o.createComponentVNode)(2,p,{height:"100%"})})],4):(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",backgroundColor:"rgba(0, 0, 0, 0.8)",children:(0,o.createComponentVNode)(2,f,{height:"100%",allMessages:d,finishedTimeout:3e3,onFinished:function(){return l("complete_load_animation")}})});var N=(0,r.useLocalState)(t,"viewingPhoto",""),b=N[0];N[1];return(0,o.createComponentVNode)(2,i.Window,{theme:"syndicate",children:[b&&(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,i.Window.Content,{className:"Contractor",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",height:"100%",children:n})})]})};var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.tc_available,d=i.tc_paid_out,u=i.completed_contracts,s=i.rep;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Summary",buttons:(0,o.createComponentVNode)(2,a.Box,{verticalAlign:"middle",mt:"0.25rem",children:[s," Rep"]})},e,{children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Box,{flexBasis:"50%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",children:[l," TC"]}),(0,o.createComponentVNode)(2,a.Button,{disabled:l<=0,content:"Claim",mx:"0.75rem",mb:"0",flexBasis:"content",onClick:function(){return c("claim")}})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:[d," TC"]})]})}),(0,o.createComponentVNode)(2,a.Box,{flexBasis:"50%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Box,{height:"20px",lineHeight:"20px",display:"inline-block",children:u})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contractor Status",verticalAlign:"middle",children:"ACTIVE"})]})})]})})))},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.page;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Tabs,Object.assign({},e,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return c("page",{page:1})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"suitcase"}),"Contracts"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return c("page",{page:2})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"shopping-cart"}),"Hub"]})]})))},m=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.contracts,s=d.contract_active,m=d.can_extract,p=!!s&&u.filter((function(e){return 1===e.status}))[0],f=p&&p.time_left>0,h=(0,r.useLocalState)(t,"viewingPhoto",""),C=(h[0],h[1]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Available Contracts",overflow:"auto",buttons:(0,o.createComponentVNode)(2,a.Button,{disabled:!m||f,icon:"parachute-box",content:["Call Extraction",f&&(0,o.createComponentVNode)(2,c.Countdown,{timeLeft:p.time_left,format:function(e,t){return" ("+t.substr(3)+")"}})],onClick:function(){return i("extract")}})},e,{children:u.slice().sort((function(e,t){return 1===e.status?-1:1===t.status?1:e.status-t.status})).map((function(e){var t;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",color:1===e.status&&"good",children:e.target_name}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",children:e.has_photo&&(0,o.createComponentVNode)(2,a.Button,{icon:"camera",mb:"-0.5rem",ml:"0.5rem",onClick:function(){return C("target_photo_"+e.uid+".png")}})})]}),className:"Contractor__Contract",buttons:(0,o.createComponentVNode)(2,a.Box,{width:"100%",children:[!!l[e.status]&&(0,o.createComponentVNode)(2,a.Box,{color:l[e.status][1],display:"inline-block",mt:1!==e.status&&"0.125rem",mr:"0.25rem",lineHeight:"20px",children:l[e.status][0]}),1===e.status&&(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"ban",color:"bad",content:"Abort",ml:"0.5rem",onClick:function(){return i("abort")}})]}),children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"2",mr:"0.5rem",children:[e.fluff_message,!!e.completed_time&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"check",mr:"0.5rem"}),"Contract completed at ",e.completed_time]}),!!e.dead_extraction&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",mt:"0.5rem",bold:!0,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mr:"0.5rem"}),"Telecrystals reward reduced drastically as the target was dead during extraction."]}),!!e.fail_reason&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"times",mr:"0.5rem"}),"Contract failed: ",e.fail_reason]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",flexBasis:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",color:"label",children:"Extraction Zone:"}),null==(t=e.difficulties)?void 0:t.map((function(t,n){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!!s,content:t.name+" ("+t.reward+" TC)",onClick:function(){return i("activate",{uid:e.uid,difficulty:n+1})}}),(0,o.createVNode)(1,"br")],4)})),!!e.objective&&(0,o.createComponentVNode)(2,a.Box,{color:"white",bold:!0,children:[e.objective.extraction_zone,(0,o.createVNode)(1,"br"),"(",(e.objective.reward_tc||0)+" TC",",\xa0",(e.objective.reward_credits||0)+" Credits",")"]})]})]})},e.uid)}))})))},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.rep,d=i.buyables;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Available Purchases",overflow:"auto"},e,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:[e.description,(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:l-1&&(0,o.createComponentVNode)(2,a.Box,{as:"span",color:0===e.stock?"bad":"good",ml:"0.5rem",children:[e.stock," in stock"]})]},e.uid)}))})))},f=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component),h=function(e,t){var n=(0,r.useLocalState)(t,"viewingPhoto",""),c=n[0],i=n[1];return(0,o.createComponentVNode)(2,a.Modal,{className:"Contractor__photoZoom",children:[(0,o.createComponentVNode)(2,a.Box,{as:"img",src:c}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Close",color:"grey",mt:"1rem",onClick:function(){return i("")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ConveyorSwitch=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ConveyorSwitch=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.slowFactor,u=l.oneWay,s=l.position;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Lever position",children:s>0?"forward":s<0?"reverse":"neutral"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Allow reverse",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!u,onClick:function(){return i("toggleOneWay")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slowdown factor",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-double-left",onClick:function(){return i("slowFactor",{value:d-5})}})," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-left",onClick:function(){return i("slowFactor",{value:d-1})}})," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Slider,{width:"100px",mx:"1px",value:d,fillValue:d,minValue:1,maxValue:50,step:1,format:function(e){return e+"x"},onChange:function(e,t){return i("slowFactor",{value:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-right",onClick:function(){return i("slowFactor",{value:d+1})}})," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-double-right",onClick:function(){return i("slowFactor",{value:d+5})}})," "]})]})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CrewMonitor=void 0;var o=n(0),r=n(26),a=n(20),c=n(1),i=n(2),l=n(76),d=n(39),u=n(4),s=function(e){return e.dead?"Deceased":1===parseInt(e.stat,10)?"Unconscious":"Living"},m=function(e){return e.dead?"red":1===parseInt(e.stat,10)?"orange":"green"};t.CrewMonitor=function(e,t){var n=(0,c.useBackend)(t),r=(n.act,n.data,(0,c.useLocalState)(t,"tabIndex",0)),a=r[0],l=r[1];return(0,o.createComponentVNode)(2,u.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===a,onClick:function(){return l(0)},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"table"})," Data View"]},"DataView"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===a,onClick:function(){return l(1)},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"map-marked-alt"})," Map View"]},"MapView")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,p);case 1:return(0,o.createComponentVNode)(2,f);default:return"WE SHOULDN'T BE HERE!"}}(a)]})})})};var p=function(e,t){var n=(0,c.useBackend)(t),u=n.act,p=n.data,f=(0,r.sortBy)((function(e){return e.name}))(p.crewmembers||[]),h=(0,c.useLocalState)(t,"search",""),C=h[0],N=h[1],b=(0,a.createSearch)(C,(function(e){return e.name+"|"+e.assignment+"|"+e.area}));return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search by name, assignment or location..",width:"100%",onInput:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",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:"Status"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Location"})]}),f.filter(b).map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{bold:!!e.is_command,children:[(0,o.createComponentVNode)(2,l.TableCell,{children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,l.TableCell,{children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:m(e),children:s(e)}),e.sensor_type>=2?(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:["(",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.oxy,children:e.oxy}),"|",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.toxin,children:e.tox}),"|",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.burn,children:e.fire}),"|",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.brute,children:e.brute}),")"]}):null]}),(0,o.createComponentVNode)(2,l.TableCell,{children:3===e.sensor_type?p.isAI?(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"location-arrow",content:e.area+" ("+e.x+", "+e.y+")",onClick:function(){return u("track",{track:e.ref})}}):e.area+" ("+e.x+", "+e.y+")":"Not Available"})]},e.name)}))]})]})},f=function(e,t){var n=(0,c.useBackend)(t).data,r=(0,c.useLocalState)(t,"zoom",1),a=r[0],l=r[1];return(0,o.createComponentVNode)(2,i.Box,{height:"526px",mb:"0.5rem",overflow:"hidden",children:(0,o.createComponentVNode)(2,i.NanoMap,{onZoom:function(e){return l(e)},children:n.crewmembers.filter((function(e){return 3===e.sensor_type})).map((function(e){return(0,o.createComponentVNode)(2,i.NanoMap.Marker,{x:e.x,y:e.y,zoom:a,icon:"circle",tooltip:e.name+" ("+e.assignment+")",color:m(e)},e.ref)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=[{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,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,s=d.isOperating,m=d.hasOccupant,p=d.occupant,f=void 0===p?[]:p,h=d.cellTemperature,C=d.cellTemperatureStatus,N=d.isBeakerLoaded,b=d.auto_eject_healthy,g=d.auto_eject_dead;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",flexGrow:"1",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"user-slash",onClick:function(){return c("ejectOccupant")},disabled:!m,children:"Eject"}),children:m?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:f.name||"Unknown"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:f.health,max:f.maxHealth,value:f.health/f.maxHealth,color:f.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(f.health)})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l[f.stat][0],children:l[f.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(f.bodyTemperature)})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:f[e.type]/100,ranges:{bad:[.01,Infinity]},children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(f[e.type])})})},e.id)}))]}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",textAlign:"center",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."]})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return c("ejectBeaker")},disabled:!N,children:"Eject Beaker"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",onClick:function(){return c(s?"switchOff":"switchOn")},selected:s,children:s?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:C,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:h})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Beaker",children:(0,o.createComponentVNode)(2,u)}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto-eject healthy occupants",children:(0,o.createComponentVNode)(2,a.Button,{icon:b?"toggle-on":"toggle-off",selected:b,onClick:function(){return c(b?"auto_eject_healthy_off":"auto_eject_healthy_on")},children:b?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto-eject dead occupants",children:(0,o.createComponentVNode)(2,a.Button,{icon:g?"toggle-on":"toggle-off",selected:g,onClick:function(){return c(g?"auto_eject_dead_off":"auto_eject_dead_on")},children:g?"On":"Off"})})]})})],4)},u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.isBeakerLoaded,l=c.beakerLabel,d=c.beakerVolume;return i?(0,o.createFragment)([l||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No label"}),(0,o.createComponentVNode)(2,a.Box,{color:!d&&"bad",children:d?(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d,format:function(e){return Math.round(e)+" units remaining"}}):"Beaker is empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No beaker loaded"})}},function(e,t,n){"use strict";t.__esModule=!0,t.DNAModifier=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(49),l=[["good","Alive"],["average","Critical"],["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,a=(0,r.useBackend)(t),l=(a.act,a.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,V,{duration:d})),(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,i.ComplexModal),n,(0,o.createComponentVNode)(2,c.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),c=n.act,i=n.data,d=i.locked,u=i.hasOccupant,s=i.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"label",display:"inline",mr:"0.5rem",children:"Door Lock:"}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u,selected:d,icon:d?"toggle-on":"toggle-off",content:d?"Engaged":"Disengaged",onClick:function(){return c("toggleLock")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u||d,icon:"user-slash",content:"Eject",onClick:function(){return c("ejectOccupant")}})],4),children:u?(0,o.createFragment)([(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:"Health",children:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Status",color:l[s.stat][0],children:l[s.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})}),t.isDNAInvalid?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,a.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,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:s.radiationLevel/100,color:"average"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unique Enzymes",children:i.occupant.uniqueEnzymes?i.occupant.uniqueEnzymes:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-circle"}),"\xa0 Unknown"]})})]})],0):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"Cell unoccupied."})})},m=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,l=c.data,u=l.selectedMenuKey,s=l.hasOccupant;l.occupant;return s?t.isDNAInvalid?(0,o.createComponentVNode)(2,a.Section,{flexGrow:"1",children:(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 operation possible on this subject."]})})}):("ui"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,h)],4):"se"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,h)],4):"buffer"===u?n=(0,o.createComponentVNode)(2,C):"rejuvenators"===u&&(n=(0,o.createComponentVNode)(2,g)),(0,o.createComponentVNode)(2,a.Section,{flexGrow:"1",children:[(0,o.createComponentVNode)(2,a.Tabs,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:u===e[0],onClick:function(){return i("selectMenuKey",{key:e[0]})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:e[2]}),e[1]]},t)}))}),n]})):(0,o.createComponentVNode)(2,a.Section,{flexGrow:"1",children:(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 occupant in DNA modifier."]})})})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.selectedUIBlock,d=i.selectedUISubBlock,u=i.selectedUITarget,s=i.occupant;return(0,o.createComponentVNode)(2,a.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,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:"1",maxValue:"15",stepPixelSize:"20",value:u,format:function(e){return e.toString(16).toUpperCase()},ml:"0",onChange:function(e,t){return c("changeUITarget",{value:t})}})})}),(0,o.createComponentVNode)(2,a.Button,{icon:"radiation",content:"Irradiate Block",mt:"0.5rem",onClick:function(){return c("pulseUIRadiation")}})]})},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.selectedSEBlock,d=i.selectedSESubBlock,u=i.occupant;return(0,o.createComponentVNode)(2,a.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,a.Button,{icon:"radiation",content:"Irradiate Block",onClick:function(){return c("pulseSERadiation")}})]})},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.radiationIntensity,d=i.radiationDuration;return(0,o.createComponentVNode)(2,a.Section,{title:"Radiation Emitter",level:"2",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Intensity",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:"1",maxValue:"10",stepPixelSize:"20",value:l,popUpPosition:"right",ml:"0",onChange:function(e,t){return c("radiationIntensity",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Duration",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:"1",maxValue:"20",stepPixelSize:"10",unit:"s",value:d,popUpPosition:"right",ml:"0",onChange:function(e,t){return c("radiationDuration",{value:t})}})})]}),(0,o.createComponentVNode)(2,a.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 c("pulseRadiation")}})]})},C=function(e,t){var n=(0,r.useBackend)(t),c=(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,a.Section,{title:"Buffers",level:"2",children:c}),(0,o.createComponentVNode)(2,b)],4)},N=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.id,d=e.name,u=e.buffer,s=i.isInjectorReady,m=d+(u.data?" - "+u.label:"");return(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Section,{title:m,level:"3",mx:"0",lineHeight:"18px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!u.data,icon:"trash",content:"Clear",onClick:function(){return c("bufferOption",{option:"clear",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u.data,icon:"pen",content:"Rename",onClick:function(){return c("bufferOption",{option:"changeLabel",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u.data||!i.hasDisk,icon:"save",content:"Export",tooltip:"Exports this buffer to the currently loaded data disk.",tooltipPosition:"bottom-left",onClick:function(){return c("bufferOption",{option:"saveDisk",id:l})}})],4),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Write",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",content:"Subject U.I",mb:"0",onClick:function(){return c("bufferOption",{option:"saveUI",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",content:"Subject U.I and U.E.",mb:"0",onClick:function(){return c("bufferOption",{option:"saveUIAndUE",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",content:"Subject S.E.",mb:"0",onClick:function(){return c("bufferOption",{option:"saveSE",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!i.hasDisk||!i.disk.data,icon:"arrow-circle-down",content:"From Disk",mb:"0",onClick:function(){return c("bufferOption",{option:"loadDisk",id:l})}})]}),!!u.data&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subject",children:u.owner||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Data Type",children:["ui"===u.type?"Unique Identifiers":"Structural Enzymes",!!u.ue&&" and Unique Enzymes"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer to",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Injector",mb:"0",onClick:function(){return c("bufferOption",{option:"createInjector",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Block Injector",mb:"0",onClick:function(){return c("bufferOption",{option:"createInjector",id:l,block:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"user",content:"Subject",mb:"0",onClick:function(){return c("bufferOption",{option:"transfer",id:l})}})]})],4)]}),!u.data&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"0.5rem",children:"This buffer is empty."})]})})},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.hasDisk,d=i.disk;return(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!l||!d.data,icon:"trash",content:"Wipe",onClick:function(){return c("wipeDisk")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return c("ejectDisk")}})],4),children:l?d.data?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.label?d.label:"No label"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subject",children:d.owner?d.owner:(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Data Type",children:["ui"===d.type?"Unique Identifiers":"Structural Enzymes",!!d.ue&&" and Unique Enzymes"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"Disk is blank."}):(0,o.createComponentVNode)(2,a.Box,{color:"label",textAlign:"center",my:"1rem",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save-o",size:"4"}),(0,o.createVNode)(1,"br"),"No disk inserted."]})})},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.isBeakerLoaded,d=i.beakerVolume,s=i.beakerLabel;return(0,o.createComponentVNode)(2,a.Section,{title:"Rejuvenators and Beaker",level:"2",buttons:(0,o.createComponentVNode)(2,a.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return c("ejectBeaker")}}),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inject",children:[u.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{disabled:e>d,icon:"syringe",content:e,onClick:function(){return c("injectRejuvenators",{amount:e})}},t)})),(0,o.createComponentVNode)(2,a.Button,{disabled:d<=0,icon:"syringe",content:"All",onClick:function(){return c("injectRejuvenators",{amount:d})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Beaker",children:[(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:s||"No label"}),d?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[d," unit",1===d?"":"s"," remaining"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Empty"})]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"label",textAlign:"center",my:"25%",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",size:"4"}),(0,o.createVNode)(1,"br"),"No beaker loaded."]})})},V=function(e,t){return(0,o.createComponentVNode)(2,a.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"spinner",size:"5",spin:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Box,{color:"average",children:(0,o.createVNode)(1,"h1",null,[(0,o.createComponentVNode)(2,a.Icon,{name:"radiation"}),(0,o.createTextVNode)("\xa0Irradiating occupant\xa0"),(0,o.createComponentVNode)(2,a.Icon,{name:"radiation"})],4)}),(0,o.createComponentVNode)(2,a.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),c=n.act,i=(n.data,e.dnaString),l=e.selectedBlock,d=e.selectedSubblock,u=e.blockSize,s=e.action,m=i.split(""),p=[],f=function(e){for(var t=e/u+1,n=[],r=function(r){var i=r+1;n.push((0,o.createComponentVNode)(2,a.Button,{selected:l===t&&d===i,content:m[e+r],mb:"0",onClick:function(){return c(s,{block:t,subblock:i})}}))},i=0;i0?"Yes":"No",selected:l.com>0,onClick:function(){return i("toggle_com")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Security",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.sec===e,content:e,onClick:function(){return i("set_sec",{set_sec:e})}},"sec"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Medical",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.med===e,content:e,onClick:function(){return i("set_med",{set_med:e})}},"med"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Engineering",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.eng===e,content:e,onClick:function(){return i("set_eng",{set_eng:e})}},"eng"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Paranormal",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.par===e,content:e,onClick:function(){return i("set_par",{set_par:e})}},"par"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Janitor",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.jan===e,content:e,onClick:function(){return i("set_jan",{set_jan:e})}},"jan"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cyborg",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.cyb===e,content:e,onClick:function(){return i("set_cyb",{set_cyb:e})}},"cyb"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Slots",children:(0,o.createComponentVNode)(2,a.Box,{color:l.total>l.spawnpoints?"red":"green",children:[l.total," total, versus ",l.spawnpoints," spawnpoints"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dispatch",children:(0,o.createComponentVNode)(2,a.Button,{icon:"ambulance",content:"Send ERT",onClick:function(){return i("dispatch_ert")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,f=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:f/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onChange:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onChange:function(e,t){return l("code",{code:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EvolutionMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.EvolutionMenu=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,theme:"changeling",children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,l)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.evo_points,d=i.can_respec;return(0,o.createComponentVNode)(2,a.Section,{title:"Evolution Points",height:5.5,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:.5,color:"label",children:"Points remaining:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:.5,ml:2,bold:!0,color:"#1b945c",children:l}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{ml:2.5,disabled:!d,content:"Readapt",icon:"sync",onClick:function(){return c("readapt")}}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"By transforming a humanoid into a husk, we gain the ability to readapt our chosen evolutions.",tooltipPosition:"bottom",icon:"question-circle"})]})]})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.evo_points,d=i.ability_list,u=i.purchsed_abilities,s=i.view_mode;return(0,o.createComponentVNode)(2,a.Section,{title:"Abilities",flexGrow:"1",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:s?"square-o":"check-square-o",selected:!s,content:"Compact",onClick:function(){return c("set_view_mode",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"check-square-o":"square-o",selected:s,content:"Expanded",onClick:function(){return c("set_view_mode",{mode:1})}})],4),children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{p:.5,mx:-1,className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{ml:.5,color:"#dedede",children:e.name}),u.includes(e.name)&&(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,bold:!0,color:"#1b945c",children:"(Purchased)"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:3,textAlign:"right",grow:1,children:[(0,o.createComponentVNode)(2,a.Box,{as:"span",color:"label",children:["Cost: "," "]}),(0,o.createComponentVNode)(2,a.Box,{as:"span",bold:!0,color:"#1b945c",children:e.cost})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{mr:.5,disabled:e.cost>l||u.includes(e.name),content:"Evolve",onClick:function(){return c("purchase",{power_name:e.name})}})})]}),!!s&&(0,o.createComponentVNode)(2,a.Flex,{color:"#8a8a8a",my:1,ml:1.5,width:"95%",children:e.description+" "+e.helptext})]},t)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o=n(0),r=n(8),a=n(20),c=n(1),i=n(2),l=n(183),d=n(4);var u={bananium:"clown",tranquillite:"mime"};t.ExosuitFabricator=function(e,t){var n=(0,c.useBackend)(t),r=(n.act,n.data.building);return(0,o.createComponentVNode)(2,d.Window,{children:(0,o.createComponentVNode)(2,d.Window.Content,{className:"Exofab",children:(0,o.createComponentVNode)(2,i.Flex,{width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",mr:"0.5rem",width:"70%",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"100%",children:(0,o.createComponentVNode)(2,m)}),r&&(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"content",mt:"0.5rem",children:(0,o.createComponentVNode)(2,p)})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"50%",children:(0,o.createComponentVNode)(2,s)}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"50%",mt:"0.5rem",children:(0,o.createComponentVNode)(2,f)})]})})]})})})};var s=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=a.materials,d=a.capacity,u=Object.values(l).reduce((function(e,t){return e+t}),0);return(0,o.createComponentVNode)(2,i.Section,{title:"Materials",className:"Exofab__materials",buttons:(0,o.createComponentVNode)(2,i.Box,{color:"label",mt:"0.25rem",children:[(u/d*100).toPrecision(3),"% full"]}),children:["$metal","$glass","$silver","$gold","$uranium","$titanium","$plasma","$diamond","$bluespace","$bananium","$tranquillite","$plastic"].map((function(e){return(0,o.createComponentVNode)(2,h,{id:e,bold:"$metal"===e||"$glass"===e,onClick:function(){return r("withdraw",{id:e})}},e)}))})},m=function(e,t){var n=(0,c.useBackend)(t),r=n.act,l=n.data,d=l.curCategory,u=l.categories,s=l.designs,m=l.syncing,p=(0,c.useLocalState)(t,"searchText",""),f=p[0],h=p[1],N=(0,a.createSearch)(f,(function(e){return e.name})),b=s.filter(N);return(0,o.createComponentVNode)(2,i.Section,{className:"Exofab__designs",title:(0,o.createComponentVNode)(2,i.Dropdown,{selected:d,options:u,onSelected:function(e){return r("category",{cat:e})},width:"150px"}),height:"100%",buttons:(0,o.createComponentVNode)(2,i.Box,{mt:"-18px",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"plus",content:"Queue all",onClick:function(){return r("queueall")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:m,iconSpin:m,icon:"sync-alt",content:m?"Synchronizing...":"Synchronize with R&D servers",onClick:function(){return r("sync")}})]}),children:[(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search by name...",mb:"0.5rem",width:"100%",onInput:function(e,t){return h(t)}}),b.map((function(e){return(0,o.createComponentVNode)(2,C,{design:e},e.id)})),0===b.length&&(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No designs found."})]})},p=function(e,t){var n=(0,c.useBackend)(t),r=(n.act,n.data),a=r.building,d=r.buildStart,u=r.buildEnd,s=r.worldTime;return(0,o.createComponentVNode)(2,i.Section,{className:"Exofab__building",stretchContents:!0,children:(0,o.createComponentVNode)(2,i.ProgressBar.Countdown,{start:d,current:s,end:u,bold:!0,children:[(0,o.createComponentVNode)(2,i.Box,{float:"left",children:(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:!0})}),"Building ",a,"\xa0(",(0,o.createComponentVNode)(2,l.Countdown,{current:s,timeLeft:u-s,format:function(e,t){return t.substr(3)}}),")"]})})},f=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=a.queue,d=a.processingQueue,u=Object.entries(a.queueDeficit).filter((function(e){return e[1]<0})),s=l.reduce((function(e,t){return e+t.time}),0);return(0,o.createComponentVNode)(2,i.Section,{className:"Exofab__queue",title:"Queue",buttons:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{selected:d,icon:d?"toggle-on":"toggle-off",content:"Process",onClick:function(){return r("process")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:0===l.length,icon:"eraser",content:"Clear",onClick:function(){return r("unqueueall")}})]}),children:(0,o.createComponentVNode)(2,i.Flex,{height:"100%",direction:"column",children:0===l.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"The queue is empty."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Flex.Item,{className:"Exofab__queue--queue",grow:"1",overflow:"auto",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{color:e.notEnough&&"bad",children:[t+1,". ",e.name,t>0&&(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-up",onClick:function(){return r("queueswap",{from:t+1,to:t})}}),t0&&(0,o.createComponentVNode)(2,i.Flex.Item,{className:"Exofab__queue--time",basis:"content",shrink:"0",children:[(0,o.createComponentVNode)(2,i.Divider),"Processing time:",(0,o.createComponentVNode)(2,i.Icon,{name:"clock",mx:"0.5rem"}),(0,o.createComponentVNode)(2,i.Box,{display:"inline",bold:!0,children:new Date(s/10*1e3).toISOString().substr(14,5)})]}),Object.keys(u).length>0&&(0,o.createComponentVNode)(2,i.Flex.Item,{className:"Exofab__queue--deficit",basis:"content",shrink:"0",children:[(0,o.createComponentVNode)(2,i.Divider),"Lacking materials to complete:",u.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,h,{id:e[0],amount:-e[1],lineDisplay:!0})},e[0])}))]})],0)})})},h=function(e,t){var n=(0,c.useBackend)(t),a=(n.act,n.data),l=e.id,d=e.amount,s=e.lineDisplay,m=e.onClick,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["id","amount","lineDisplay","onClick"]),f=l.replace("$",""),h=a.materials[l]||0,C=d||h;if(!(C<=0&&"metal"!==f&&"glass"!==f)){var N=d&&d>h;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Flex,Object.assign({className:(0,r.classes)(["Exofab__material",s&&"Exofab__material--line"])},p,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"content",children:(0,o.createComponentVNode)(2,i.Button,{onClick:m,children:(0,o.createComponentVNode)(2,i.Box,{as:"img",src:"sheet-"+(u[f]||f)+".png"})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",children:s?(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__material--amount",color:N&&"bad",children:C.toLocaleString("en-US")}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__material--name",children:f}),(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__material--amount",children:[C.toLocaleString("en-US")," cm\xb3 (",Math.round(C/2e3*10)/10," sheets)"]})],4)})]})))}},C=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=e.design;return(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__design",children:[(0,o.createComponentVNode)(2,i.Button,{disabled:l.notEnough||a.building,icon:"cog",content:l.name,onClick:function(){return r("build",{id:l.id})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus-circle",onClick:function(){return r("queue",{id:l.id})}}),(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__design--cost",children:Object.entries(l.cost).map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,h,{id:e[0],amount:e[1],lineDisplay:!0})},e[0])}))}),(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__design--time",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"clock"}),l.time>0?(0,o.createFragment)([l.time/10,(0,o.createTextVNode)(" seconds")],0):"Instant"]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExternalAirlockController=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ExternalAirlockController=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data,s=u.chamber_pressure,m=(u.exterior_status,u.interior_status),p=u.processing;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chamber Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:(n=s,i="good",n<80?i="bad":n<95||n>110?i="average":n>120&&(i="bad"),i),value:s,minValue:0,maxValue:1013,children:[s," kPa"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Exterior",icon:"arrow-circle-left",disabled:p,onClick:function(){return d("cycle_ext")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Interior",icon:"arrow-circle-right",disabled:p,onClick:function(){return d("cycle_int")}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Force Exterior Door",icon:"exclamation-triangle",color:"open"===m?"red":p?"yellow":null,onClick:function(){return d("force_ext")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Force Interior Door",icon:"exclamation-triangle",color:"open"===m?"red":p?"yellow":null,onClick:function(){return d("force_int")}})]}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Abort",icon:"ban",color:"red",disabled:!p,onClick:function(){return d("abort")}})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.FaxMachine=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.FaxMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Card",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.scan_name?"eject":"id-card",selected:l.scan_name,content:l.scan_name?l.scan_name:"-----",tooltip:l.scan_name?"Eject ID":"Insert ID",onClick:function(){return i("scan")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Authorize",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.authenticated?"sign-out-alt":"id-card",selected:l.authenticated,disabled:l.nologin,content:l.realauth?"Log Out":"Log In",onClick:function(){return i("auth")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Fax Menu",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Network",children:l.network}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Document",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.paper?"eject":"paperclip",disabled:!l.authenticated&&!l.paper,content:l.paper?l.paper:"-----",onClick:function(){return i("paper")}}),!!l.paper&&(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Rename",onClick:function(){return i("rename")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sending To",children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:l.destination?l.destination:"-----",disabled:!l.authenticated,onClick:function(){return i("dept")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Action",children:(0,o.createComponentVNode)(2,a.Button,{icon:"envelope",content:l.sendError?l.sendError:"Send",disabled:!l.paper||!l.destination||!l.authenticated||l.sendError,onClick:function(){return i("send")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.FloorPainter=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data,e.image),c=e.isSelected,i=e.onSelect;return(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+a,style:{"border-style":c?"solid":"none","border-width":"2px","border-color":"orange",padding:c?"2px":"4px"},onClick:i})};t.FloorPainter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.availableStyles,s=d.selectedStyle,m=d.selectedDir,p=d.directionsPreview,f=d.allStylesPreview;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Decal setup",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-left",onClick:function(){return l("cycle_style",{offset:-1})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Dropdown,{options:u,selected:s,width:"150px",height:"20px",ml:"2px",mr:"2px",nochevron:"true",onSelected:function(e){return l("select_style",{style:e})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-right",onClick:function(){return l("cycle_style",{offset:1})}})})]}),(0,o.createComponentVNode)(2,a.Box,{mt:"5px",mb:"5px",children:(0,o.createComponentVNode)(2,a.Flex,{overflowY:"auto",maxHeight:"220px",wrap:"wrap",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,i,{image:f[e],isSelected:s===e,onSelect:function(){return l("select_style",{style:e})}})},"{style}")}))})}),(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Direction",children:(0,o.createComponentVNode)(2,a.Table,{style:{display:"inline"},children:["north","","south"].map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[e+"west",e,e+"east"].map((function(e){return(0,o.createComponentVNode)(2,a.Table.Cell,{style:{"vertical-align":"middle","text-align":"center"},children:""===e?(0,o.createComponentVNode)(2,a.Icon,{name:"arrows-alt",size:3}):(0,o.createComponentVNode)(2,i,{image:p[e],isSelected:e===m,onSelect:function(){return l("select_direction",{direction:e})}})},e)}))},e)}))})})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GPS=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e){return e?"("+e.join(", ")+")":"ERROR"};t.GPS=function(e,t){var n=(0,r.useBackend)(t).data,i=n.emped,m=n.active,p=n.area,f=n.position,h=n.saved;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",height:"100%",children:i?(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",basis:"0",children:(0,o.createComponentVNode)(2,l,{emp:!0})}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,d)}),m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{mt:"0.5rem",children:(0,o.createComponentVNode)(2,u,{area:p,position:f})}),h&&(0,o.createComponentVNode)(2,a.Flex.Item,{mt:"0.5rem",children:(0,o.createComponentVNode)(2,u,{title:"Saved Position",position:h})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:"0.5rem",grow:"1",basis:"0",children:(0,o.createComponentVNode)(2,s,{height:"100%"})})],0):(0,o.createComponentVNode)(2,l)],0)})})})};var l=function(e,t){var n=e.emp;return(0,o.createComponentVNode)(2,a.Section,{mt:"0.5rem",width:"100%",height:"100%",stretchContents:!0,children:(0,o.createComponentVNode)(2,a.Box,{width:"100%",height:"100%",color:"label",textAlign:"center",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:n?"ban":"power-off",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),n?"ERROR: Device temporarily lost signal.":"Device is disabled."]})})})})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.active,d=i.tag,u=i.same_z,s=(0,r.useLocalState)(t,"newTag",d),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",buttons:(0,o.createComponentVNode)(2,a.Button,{selected:l,icon:l?"toggle-on":"toggle-off",content:l?"On":"Off",onClick:function(){return c("toggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tag",children:[(0,o.createComponentVNode)(2,a.Input,{width:"5rem",value:d,onEnter:function(){return c("tag",{newtag:m})},onInput:function(e,t){return p(t)}}),(0,o.createComponentVNode)(2,a.Button,{disabled:d===m,width:"20px",mb:"0",ml:"0.25rem",onClick:function(){return c("tag",{newtag:m})},children:(0,o.createComponentVNode)(2,a.Icon,{name:"pen"})})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,a.Button,{selected:!u,icon:u?"compress":"expand",content:u?"Local Sector":"Global",onClick:function(){return c("same_z")}})})]})})},u=function(e,t){var n=e.title,r=e.area,c=e.position;return(0,o.createComponentVNode)(2,a.Section,{title:n||"Position",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.5rem",children:[r&&(0,o.createFragment)([r,(0,o.createVNode)(1,"br")],0),i(c)]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.position,l=n.signals;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Signals",overflow:"auto"},e,{children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){return Object.assign({},e,{},function(e,t){if(e&&t){if(e[2]!==t[2])return null;var n,o=Math.atan2(t[1]-e[1],t[0]-e[0]),r=Math.sqrt(Math.pow(t[1]-e[1],2)+Math.pow(t[0]-e[0],2));return{angle:(n=o,n*(180/Math.PI)),distance:r}}}(c,e.position))})).map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:t%2==0&&"rgba(255, 255, 255, 0.05)",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"30%",verticalAlign:"middle",color:"label",p:"0.25rem",bold:!0,children:e.tag}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"middle",color:"grey",children:e.area}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"middle",collapsing:!0,children:e.distance!==undefined&&(0,o.createComponentVNode)(2,a.Box,{opacity:Math.max(1-Math.min(e.distance,100)/100,.5),children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.distance>0?"arrow-right":"circle",rotation:-e.angle}),"\xa0",Math.floor(e.distance)+"m"]})}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"middle",pr:"0.25rem",collapsing:!0,children:i(e.position)})]},t)}))})})))}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGen=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.GravityGen=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data,u=d.charging_state,s=d.charge_count,m=d.breaker,p=d.ext_power;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[function(e){if(e>0)return(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,p:1.5,children:[(0,o.createVNode)(1,"b",null,"WARNING:",16)," Radiation Detected!"]})}(u),(0,o.createComponentVNode)(2,a.Section,{title:"Generator Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"Online":"Offline",color:m?"green":"red",px:1.5,onClick:function(){return l("breaker")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Status",color:p?"good":"bad",children:(n=u,n>0?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:["[ ",1===n?"Charging":"Discharging"," ]"]}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:p?"good":"bad",children:["[ ",p?"Powered":"Unpowered"," ]"]}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.HandheldChemDispenser=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=[1,5,10,20,30,50];t.HandheldChemDispenser=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.amount,u=l.energy,s=l.maxEnergy,m=l.mode;return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",flex:"content",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:s,ranges:{good:[.5*s,Infinity],average:[.25*s,.5*s],bad:[-Infinity,.25*s]},children:[u," / ",s," Units"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Amount",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",spacing:"1",children:i.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",width:"14%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:d===e,content:e,m:"0",width:"100%",onClick:function(){return c("amount",{amount:e})}})},t)}))})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",justify:"space-between",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:"dispense"===m,content:"Dispense",m:"0",width:"32%",onClick:function(){return c("mode",{mode:"dispense"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:"remove"===m,content:"Remove",m:"0",width:"32%",onClick:function(){return c("mode",{mode:"remove"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:"isolate"===m,content:"Isolate",m:"0",width:"32%",onClick:function(){return c("mode",{mode:"isolate"})}})]})})]})})},d=function(e,t){for(var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.chemicals,d=void 0===l?[]:l,u=i.current_reagent,s=[],m=0;m<(d.length+1)%3;m++)s.push(!0);return(0,o.createComponentVNode)(2,a.Section,{title:i.glass?"Drink Selector":"Chemical Selector",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.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,a.Flex.Item,{grow:"1",basis:"25%",height:"20px",width:"30%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",overflow:"hidden",textOverflow:"ellipsis",selected:u===e.id,width:"100%",height:"100%",align:"flex-start",content:e.title,onClick:function(){return c("dispense",{reagent:e.id})}})},t)})),s.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",basis:"25%",height:"20px"},t)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Instrument=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4);t.Instrument=function(e,t){var n=(0,a.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.Window,{children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)]})]})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act;if(n.data.help)return(0,o.createComponentVNode)(2,c.Modal,{maxWidth:"75%",height:.75*window.innerHeight+"px",mx:"auto",py:"0",px:"0.5rem",children:(0,o.createComponentVNode)(2,c.Section,{height:"100%",title:"Help",level:"2",overflow:"auto",children:(0,o.createComponentVNode)(2,c.Box,{px:"0.5rem",mt:"-0.5rem",children:[(0,o.createVNode)(1,"h1",null,"Making a Song",16),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Lines are a series of chords, separated by commas\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(,)"}),(0,o.createTextVNode)(", each with notes seperated by hyphens\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(-)"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Every note in a chord will play together, with the chord timed by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo"}),(0,o.createTextVNode)(" as defined above.")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Notes are played by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"names of the note"}),(0,o.createTextVNode)(", and optionally, the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(", and/or the "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave number"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("By default, every note is\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"natural"}),(0,o.createTextVNode)(" and in\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave 3"}),(0,o.createTextVNode)(". Defining a different state for either is remembered for each "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"note"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Example:"}),(0,o.createTextVNode)("\xa0"),(0,o.createVNode)(1,"i",null,"C,D,E,F,G,A,B",16),(0,o.createTextVNode)(" will play a\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"C"}),(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"major"}),(0,o.createTextVNode)(" scale.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createTextVNode)("After a note has an\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(" or\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave"}),(0,o.createTextVNode)(" placed, it will be remembered:\xa0"),(0,o.createVNode)(1,"i",null,"C,C4,C#,C3",16),(0,o.createTextVNode)(" is "),(0,o.createVNode)(1,"i",null,"C3,C4,C4#,C3#",16)],4)],4)],4),(0,o.createVNode)(1,"p",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Chords"}),(0,o.createTextVNode)("\xa0can be played simply by seperating each note with a hyphen: "),(0,o.createVNode)(1,"i",null,"A-C#,Cn-E,E-G#,Gn-B",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("A "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"pause"}),(0,o.createTextVNode)("\xa0may be denoted by an empty chord: "),(0,o.createVNode)(1,"i",null,"C,E,,C,G",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("To make a chord be a different time, end it with /x, where the chord length will be length defined by\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo / x"}),(0,o.createTextVNode)(",\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"eg:"}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"i",null,"C,G/2,E/4",16),(0,o.createTextVNode)(".")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Combined, an example line is: "),(0,o.createVNode)(1,"i",null,"E-E4/4,F#/2,G#/8,B/8,E3-E4/4",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,"Lines may be up to 300 characters.",16),(0,o.createVNode)(1,"li",null,"A song may only contain up to 1,000 lines.",16)],4)],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Lines are a series of chords, separated by commas\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(,)"}),(0,o.createTextVNode)(", each with notes seperated by hyphens\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(-)"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Every note in a chord will play together, with the chord timed by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo"}),(0,o.createTextVNode)(" as defined above.")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Notes are played by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"names of the note"}),(0,o.createTextVNode)(", and optionally, the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(", and/or the "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave number"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("By default, every note is\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"natural"}),(0,o.createTextVNode)(" and in\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave 3"}),(0,o.createTextVNode)(". Defining a different state for either is remembered for each "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"note"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Example:"}),(0,o.createTextVNode)("\xa0"),(0,o.createVNode)(1,"i",null,"C,D,E,F,G,A,B",16),(0,o.createTextVNode)(" will play a\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"C"}),(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"major"}),(0,o.createTextVNode)(" scale.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createTextVNode)("After a note has an\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(" or\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave"}),(0,o.createTextVNode)(" placed, it will be remembered:\xa0"),(0,o.createVNode)(1,"i",null,"C,C4,C#,C3",16),(0,o.createTextVNode)(" is "),(0,o.createVNode)(1,"i",null,"C3,C4,C4#,C3#",16)],4)],4)],4),(0,o.createVNode)(1,"p",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Chords"}),(0,o.createTextVNode)("\xa0can be played simply by seperating each note with a hyphen: "),(0,o.createVNode)(1,"i",null,"A-C#,Cn-E,E-G#,Gn-B",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("A "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"pause"}),(0,o.createTextVNode)("\xa0may be denoted by an empty chord: "),(0,o.createVNode)(1,"i",null,"C,E,,C,G",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("To make a chord be a different time, end it with /x, where the chord length will be length defined by\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo / x"}),(0,o.createTextVNode)(",\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"eg:"}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"i",null,"C,G/2,E/4",16),(0,o.createTextVNode)(".")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Combined, an example line is: "),(0,o.createVNode)(1,"i",null,"E-E4/4,F#/2,G#/8,B/8,E3-E4/4",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,"Lines may be up to 300 characters.",16),(0,o.createVNode)(1,"li",null,"A song may only contain up to 1,000 lines.",16)],4)],4),(0,o.createVNode)(1,"h1",null,"Instrument Advanced Settings",16),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Type:"}),(0,o.createTextVNode)("\xa0Whether the instrument is legacy or synthesized."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Legacy instruments have a collection of sounds that are selectively used depending on the note to play."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Synthesized instruments use a base sound and change its pitch to match the note to play.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Current:"}),(0,o.createTextVNode)("\xa0Which instrument sample to play. Some instruments can be tuned to play different samples. Experiment!")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Note Shift/Note Transpose:"}),(0,o.createTextVNode)("\xa0The pitch to apply to all notes of the song.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Sustain Mode:"}),(0,o.createTextVNode)("\xa0How a played note fades out."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Linear sustain means a note will fade out at a constant rate."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Exponential sustain means a note will fade out at an exponential rate, sounding smoother.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Volume Dropoff Threshold:"}),(0,o.createTextVNode)("\xa0The volume threshold at which a note is fully stopped.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Sustain indefinitely last held note:"}),(0,o.createTextVNode)("\xa0Whether the last note should be sustained indefinitely.")],4)],4),(0,o.createComponentVNode)(2,c.Button,{color:"grey",content:"Close",onClick:function(){return r("help")}})]})})})},d=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.lines,s=l.playing,m=l.repeat,p=l.maxRepeats,f=l.tempo,h=l.minTempo,C=l.maxTempo,N=l.tickLag,b=l.volume,g=l.minVolume,V=l.maxVolume,v=l.ready;return(0,o.createComponentVNode)(2,c.Section,{title:"Instrument",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"info",content:"Help",onClick:function(){return i("help")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"file",content:"New",onClick:function(){return i("newsong")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"upload",content:"Import",onClick:function(){return i("import")}})],4),children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Playback",children:[(0,o.createComponentVNode)(2,c.Button,{selected:s,disabled:0===d.length||m<0,icon:"play",content:"Play",onClick:function(){return i("play")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!s,icon:"stop",content:"Stop",onClick:function(){return i("stop")}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Repeat",children:(0,o.createComponentVNode)(2,c.Slider,{animated:!0,minValue:"0",maxValue:p,value:m,stepPixelSize:"59",onChange:function(e,t){return i("repeat",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Tempo",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{disabled:f>=C,content:"-",as:"span",mr:"0.5rem",onClick:function(){return i("tempo",{"new":f+N})}}),(0,r.round)(600/f)," BPM",(0,o.createComponentVNode)(2,c.Button,{disabled:f<=h,content:"+",as:"span",ml:"0.5rem",onClick:function(){return i("tempo",{"new":f-N})}})]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,c.Slider,{animated:!0,minValue:g,maxValue:V,value:b,stepPixelSize:"6",onDrag:function(e,t){return i("setvolume",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:v?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Ready"}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Instrument Definition Error!"})})]}),(0,o.createComponentVNode)(2,u)]})},u=function(e,t){var n,i,l=(0,a.useBackend)(t),d=l.act,u=l.data,s=u.allowedInstrumentNames,m=u.instrumentLoaded,p=u.instrument,f=u.canNoteShift,h=u.noteShift,C=u.noteShiftMin,N=u.noteShiftMax,b=u.sustainMode,g=u.sustainLinearDuration,V=u.sustainExponentialDropoff,v=u.legacy,y=u.sustainDropoffVolume,_=u.sustainHeldNote;return 1===b?(n="Linear",i=(0,o.createComponentVNode)(2,c.Slider,{minValue:"0.1",maxValue:"5",value:g,step:"0.5",stepPixelSize:"85",format:function(e){return(0,r.round)(100*e)/100+" seconds"},onChange:function(e,t){return d("setlinearfalloff",{"new":t/10})}})):2===b&&(n="Exponential",i=(0,o.createComponentVNode)(2,c.Slider,{minValue:"1.025",maxValue:"10",value:V,step:"0.01",format:function(e){return(0,r.round)(1e3*e)/1e3+"% per decisecond"},onChange:function(e,t){return d("setexpfalloff",{"new":t})}})),s.sort(),(0,o.createComponentVNode)(2,c.Box,{my:-1,children:(0,o.createComponentVNode)(2,c.Collapsible,{mt:"1rem",mb:"0",title:"Advanced",children:(0,o.createComponentVNode)(2,c.Section,{mt:-1,children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Type",children:v?"Legacy":"Synthesized"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Current",children:m?(0,o.createComponentVNode)(2,c.Dropdown,{options:s,selected:p,width:"40%",onSelected:function(e){return d("switchinstrument",{name:e})}}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"None!"})}),!(v||!f)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Note Shift/Note Transpose",children:(0,o.createComponentVNode)(2,c.Slider,{minValue:C,maxValue:N,value:h,stepPixelSize:"2",format:function(e){return e+" keys / "+(0,r.round)(e/12*100)/100+" octaves"},onChange:function(e,t){return d("setnoteshift",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Sustain Mode",children:[(0,o.createComponentVNode)(2,c.Dropdown,{options:["Linear","Exponential"],selected:n,onSelected:function(e){return d("setsustainmode",{"new":e})}}),i]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Volume Dropoff Threshold",children:(0,o.createComponentVNode)(2,c.Slider,{animated:!0,minValue:"0.01",maxValue:"100",value:y,stepPixelSize:"6",onChange:function(e,t){return d("setdropoffvolume",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Sustain indefinitely last held note",children:(0,o.createComponentVNode)(2,c.Button,{selected:_,icon:_?"toggle-on":"toggle-off",content:_?"Yes":"No",onClick:function(){return d("togglesustainhold")}})})],4)]}),(0,o.createComponentVNode)(2,c.Button,{icon:"redo",content:"Reset to Default",mt:"0.5rem",onClick:function(){return d("reset")}})]})})})},s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.playing,d=i.lines,u=i.editing;return(0,o.createComponentVNode)(2,c.Section,{title:"Editor",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:!u||l,icon:"plus",content:"Add Line",onClick:function(){return r("newline",{line:d.length+1})}}),(0,o.createComponentVNode)(2,c.Button,{selected:!u,icon:u?"chevron-up":"chevron-down",onClick:function(){return r("edit")}})],4),children:!!u&&(d.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t+1,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:"pen",onClick:function(){return r("modifyline",{line:t+1})}}),(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:"trash",onClick:function(){return r("deleteline",{line:t+1})}})],4),children:e},t)}))}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Song is empty."}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=(0,o.createComponentVNode)(2,a.Section,{title:"Keycard Authentication Device",children:(0,o.createComponentVNode)(2,a.Box,{children:"This device is used to trigger certain high security events. It requires the simultaneous swipe of two high-level ID cards."})});if(l.swiping||l.busy){var u=(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Waiting for YOU to swipe your ID..."});return l.hasSwiped||l.ertreason||"Emergency Response Team"!==l.event?l.hasConfirm?u=(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Request Confirmed!"}):l.isRemote?u=(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"Swipe your card to CONFIRM the remote request."}):l.hasSwiped&&(u=(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"Waiting for second person to confirm..."})):u=(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Fill out the reason for your ERT request."}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[d,"Emergency Response Team"===l.event&&(0,o.createComponentVNode)(2,a.Section,{title:"Reason for ERT Call",children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{color:l.ertreason?"":"red",icon:l.ertreason?"check":"pencil-alt",content:l.ertreason?l.ertreason:"-----",disabled:l.busy,onClick:function(){return i("ert")}})})}),(0,o.createComponentVNode)(2,a.Section,{title:l.event,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-left",content:"Back",disabled:l.busy||l.hasConfirm,onClick:function(){return i("reset")}}),children:u})]})})}return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[d,(0,o.createComponentVNode)(2,a.Section,{title:"Choose Action",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Red Alert",children:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",disabled:!l.redAvailable,onClick:function(){return i("triggerevent",{triggerevent:"Red Alert"})},content:"Red Alert"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ERT",children:(0,o.createComponentVNode)(2,a.Button,{icon:"broadcast-tower",onClick:function(){return i("triggerevent",{triggerevent:"Emergency Response Team"})},content:"Call ERT"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Maint Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"door-open",onClick:function(){return i("triggerevent",{triggerevent:"Grant Emergency Maintenance Access"})},content:"Grant"}),(0,o.createComponentVNode)(2,a.Button,{icon:"door-closed",onClick:function(){return i("triggerevent",{triggerevent:"Revoke Emergency Maintenance Access"})},content:"Revoke"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Station-Wide Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"door-open",onClick:function(){return i("triggerevent",{triggerevent:"Activate Station-Wide Emergency Access"})},content:"Grant"}),(0,o.createComponentVNode)(2,a.Button,{icon:"door-closed",onClick:function(){return i("triggerevent",{triggerevent:"Deactivate Station-Wide Emergency Access"})},content:"Revoke"})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(4);t.LaborClaimConsole=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.can_go_home,d=i.emagged,u=i.id_inserted,s=i.id_name,m=i.id_points,p=i.id_goal,f=i.unclaimed_points,h=d?0:1,C=d?"ERR0R":l?"Completed!":"Insufficient";return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:!!u&&(0,o.createComponentVNode)(2,c.ProgressBar,{value:m/p,ranges:{good:[h,Infinity],bad:[-Infinity,h]},children:m+" / "+p+" "+C})||!!d&&"ERR0R COMPLETED?!@"||"No ID inserted"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Move shuttle",disabled:!l,onClick:function(){return r("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Claim points ("+f+")",disabled:!u||!f,onClick:function(){return r("claim_points")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Inserted ID",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:u?s:"-------------",onClick:function(){return r("handle_id")}})})]})})},d=function(e,t){var n=(0,a.useBackend)(t).data.ores;return(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LawManager=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.LawManager=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.isAdmin,m=u.isSlaved,p=u.isMalf,f=u.isAIMalf,h=u.view;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!(!s||!m)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:["This unit is slaved to ",m,"."]}),!(!p&&!f)&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Law Management",selected:0===h,onClick:function(){return d("set_view",{set_view:0})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Lawsets",selected:1===h,onClick:function(){return d("set_view",{set_view:1})}})]}),!(0!==h)&&(0,o.createComponentVNode)(2,i),!(1!==h)&&(0,o.createComponentVNode)(2,l)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.has_zeroth_laws,u=i.zeroth_laws,s=i.has_ion_laws,m=i.ion_laws,p=i.ion_law_nr,f=i.has_inherent_laws,h=i.inherent_laws,C=i.has_supplied_laws,N=i.supplied_laws,b=i.channels,g=i.channel,V=i.isMalf,v=i.isAdmin,y=i.zeroth_law,_=i.ion_law,x=i.inherent_law,k=i.supplied_law,L=i.supplied_law_position;return(0,o.createFragment)([!!l&&(0,o.createComponentVNode)(2,d,{title:"ERR_NULL_VALUE",laws:u,ctx:t}),!!s&&(0,o.createComponentVNode)(2,d,{title:p,laws:m,ctx:t}),!!f&&(0,o.createComponentVNode)(2,d,{title:"Inherent",laws:h,ctx:t}),!!C&&(0,o.createComponentVNode)(2,d,{title:"Supplied",laws:N,ctx:t}),(0,o.createComponentVNode)(2,a.Section,{title:"Statement Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Statement Channel",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.channel,selected:e.channel===g,onClick:function(){return c("law_channel",{law_channel:e.channel})}},e.channel)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State Laws",children:(0,o.createComponentVNode)(2,a.Button,{content:"State Laws",onClick:function(){return c("state_laws")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Law Notification",children:(0,o.createComponentVNode)(2,a.Button,{content:"Notify",onClick:function(){return c("notify_laws")}})})]})}),!!V&&(0,o.createComponentVNode)(2,a.Section,{title:"Add Laws",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,{width:"10%",children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"60%",children:"Law"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"10%",children:"Index"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Actions"})]}),!(!v||l)&&(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Zero"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:y}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_zeroth_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_zeroth_law")}})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ion"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:_}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_ion_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_ion_law")}})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Inherent"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:x}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_inherent_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_inherent_law")}})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Supplied"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:k}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:L,onClick:function(){return c("change_supplied_law_position")}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_supplied_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_supplied_law")}})]})]})]})})],0)},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.law_sets;return(0,o.createComponentVNode)(2,a.Box,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+e.header,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Load Laws",icon:"download",onClick:function(){return c("transfer_laws",{transfer_laws:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.laws.has_ion_laws>0&&e.laws.ion_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)})),e.laws.has_zeroth_laws>0&&e.laws.zeroth_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)})),e.laws.has_inherent_laws>0&&e.laws.inherent_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)})),e.laws.has_supplied_laws>0&&e.laws.inherent_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)}))]})},e.name)}))})},d=function(e,t){var n=(0,r.useBackend)(e.ctx),c=n.act,i=n.data.isMalf;return(0,o.createComponentVNode)(2,a.Section,{title:e.title+" Laws",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,{width:"10%",children:"Index"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"69%",children:"Law"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"21%",children:"State?"})]}),e.laws.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.index}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.law}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:e.state?"Yes":"No",selected:e.state,onClick:function(){return c("state_law",{ref:e.ref,state_law:e.state?0:1})}}),!!i&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("edit_law",{edit_law:e.ref})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delete",icon:"trash",color:"red",onClick:function(){return c("delete_law",{delete_law:e.ref})}})],4)]})]},e.law)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.MechBayConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell,s=d&&d.name;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:s?"Mech status: "+s:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechaControlConsole=void 0;var o=n(0),r=(n(16),n(1)),a=n(2),c=n(4),i=n(20);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 s.length?(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Log",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"window-close",onClick:function(){return l("clear_log")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",children:["(",e.time,")"]}),(0,o.createComponentVNode)(2,a.Box,{children:(0,i.decodeHtmlEntities)(e.message)})]},e.time)}))})})}):(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"comment",onClick:function(){return l("send_message",{mt:e.uid})},children:"Message"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return l("get_log",{mt:e.uid})},children:"View Log"}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",content:"EMP",icon:"bomb",onClick:function(){return l("shock",{mt:e.uid})}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Cell Charge",children:e.cell&&(0,o.createComponentVNode)(2,a.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,a.NoticeBox,{children:"No Cell Installed"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Air Tank",children:[e.airtank,"kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pilot",children:e.pilot||"Unoccupied"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:(0,i.toTitleCase)(e.location)||"Unknown"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Active Equipment",children:e.active||"None"}),e.cargoMax&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Space",children:(0,o.createComponentVNode)(2,a.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,a.NoticeBox,{children:"No mecha beacons found."})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalRecords=void 0;var o=n(0),r=n(1),a=n(2),c=n(49),i=n(4),l=n(132),d=n(133),u=n(135),s={Minor:"good",Medium:"average","Dangerous!":"bad",Harmful:"bad","BIOHAZARD THREAT!":"bad"},m=function(e,t){(0,c.modalOpen)(e,"edit",{field:t.edit,value:t.value})};t.MedicalRecords=function(e,t){var n,s=(0,r.useBackend)(t).data,m=s.loginState,C=s.screen;return m.logged_in?(2===C?n=(0,o.createComponentVNode)(2,p):3===C?n=(0,o.createComponentVNode)(2,f):4===C?n=(0,o.createComponentVNode)(2,h):5===C?n=(0,o.createComponentVNode)(2,b):6===C&&(n=(0,o.createComponentVNode)(2,g)),(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,c.ComplexModal),(0,o.createComponentVNode)(2,i.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,a.Section,{height:"100%",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,d.LoginScreen)})})};var p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.records;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search by Name, DNA, or ID",onChange:function(e,t){return c("search",{t1:t})}}),(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:i.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"user",mb:"0.5rem",content:e.id+": "+e.name,onClick:function(){return c("d_rec",{d_rec:e.ref})}}),(0,o.createVNode)(1,"br")],4,t)}))})],4)},f=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Backup to Disk",disabled:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload from Disk",my:"0.5rem",disabled:!0}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.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),c=n.act,i=n.data,l=i.medical,d=i.printing;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"General Data",level:2,mt:"-6px",children:(0,o.createComponentVNode)(2,C)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medical Data",level:2,children:(0,o.createComponentVNode)(2,N)}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",level:2,children:[(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Medical Record",color:"bad",onClick:function(){return c("del_r")}}),(0,o.createComponentVNode)(2,a.Button,{icon:d?"spinner":"print",disabled:d,iconSpin:!!d,content:"Print Entry",ml:"0.5rem",onClick:function(){return c("print_p")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",mt:"0.5rem",onClick:function(){return c("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,a.Box,{width:"50%",float:"left",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:n.fields.map((function(e,n){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.field,children:[(0,o.createComponentVNode)(2,a.Box,{height:"20px",display:"inline-block",children:e.value}),!!e.edit&&(0,o.createComponentVNode)(2,a.Button,{icon:"pen",ml:"0.5rem",onClick:function(){return m(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,a.Box,{width:"50%",float:"right",textAlign:"right",children:!!n.has_photos&&n.photos.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e,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,a.Box,{color:"bad",children:"General records lost!"})},N=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.medical;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.field,children:[e.value,(0,o.createComponentVNode)(2,a.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return m(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Comments/Log",level:2,children:[0===l.comments.length?(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",display:"inline",children:e.header}),(0,o.createVNode)(1,"br"),e.text,(0,o.createComponentVNode)(2,a.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return i("del_c",{del_c:t+1})}})]},t)})),(0,o.createComponentVNode)(2,a.Button,{icon:"comment-medical",content:"Add Entry",color:"good",mt:"0.5rem",mb:"0",onClick:function(){return(0,c.modalOpen)(t,"add_c")}})]})],4):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:["Medical records lost!",(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:"New Record",ml:"0.5rem",onClick:function(){return i("new")}})]})},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.virus;return i.sort((function(e,t){return e.name>t.name?1:-1})),i.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,mb:"0.5rem",onClick:function(){return c("vir",{vir:e.D})}}),(0,o.createVNode)(1,"br")],4,t)}))},g=function(e,t){var n=(0,r.useBackend)(t).data.medbots;return 0===n.length?(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"There are no Medbots."}):n.map((function(e,t){return(0,o.createComponentVNode)(2,a.Collapsible,{open:!0,title:e.name,children:(0,o.createComponentVNode)(2,a.Box,{px:"0.5rem",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:[e.area||"Unknown"," (",e.x,", ",e.y,")"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:e.on?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Online"}),(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:e.use_beaker?"Reservoir: "+e.total_volume+"/"+e.maximum_volume:"Using internal synthesizer."})],4):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Offline"})})]})})},t)}))},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.screen;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return c("screen",{screen:2})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:5===i,onClick:function(){return c("screen",{screen:5})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"database"}),"Virus Database"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:6===i,onClick:function(){return c("screen",{screen:6})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"plus-square"}),"Medbot Tracking"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===i,onClick:function(){return c("screen",{screen:3})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"wrench"}),"Record Maintenance"]})]})};(0,c.modalRegisterBodyOverride)("virus",(function(e,t){var n=e.args;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:n.name||"Virus",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:"Number of stages",children:n.max_stages}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Spread",children:[n.spread_text," Transmission"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Possible cure",children:n.cure}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notes",children:n.desc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Severity",color:s[n.severity],children:n.severity})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(4);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.MiningVendor=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,u)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_id,d=i.id;return(0,o.createComponentVNode)(2,c.NoticeBox,{success:l,children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",verticalAlign:"middle",style:{float:"left"},children:["Logged in as ",d.name,".",(0,o.createVNode)(1,"br"),"You have ",d.points.toLocaleString("en-US")," points."]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject ID",style:{float:"right"},onClick:function(){return r("logoff")}}),(0,o.createComponentVNode)(2,c.Box,{style:{clear:"both"}})],4):"Please insert an ID in order to make purchases."})},u=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),d=i.has_id,u=i.id,s=i.items,p=(0,a.useLocalState)(t,"search",""),f=p[0],h=(p[1],(0,a.useLocalState)(t,"sort","Alphabetical")),C=h[0],N=(h[1],(0,a.useLocalState)(t,"descending",!1)),b=N[0],g=(N[1],(0,r.createSearch)(f,(function(e){return e[0]}))),V=!1,v=Object.entries(s).map((function(e,t){var n=Object.entries(e[1]).filter(g).map((function(e){return e[1].affordable=d&&u.points>=e[1].price,e[1]})).sort(l[C]);if(0!==n.length)return b&&(n=n.reverse()),V=!0,(0,o.createComponentVNode)(2,m,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,c.Section,{children:V?v:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No items matching your criteria was found!"})})})},s=function(e,t){var n=(0,a.useLocalState)(t,"search",""),r=(n[0],n[1]),i=(0,a.useLocalState)(t,"sort",""),d=(i[0],i[1]),u=(0,a.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,c.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,c.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,c.Dropdown,{selected:"Alphabetical",options:Object.keys(l),width:"100%",lineHeight:"19px",onSelected:function(e){return d(e)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.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,a.useBackend)(t),r=n.act,i=n.data,l=e.title,d=e.items,u=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Collapsible,Object.assign({open:!0,title:l},u,{children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,c.Button,{disabled:!i.has_id||i.id.points=0||(r[n]=e[n]);return r}var m=["security","engineering","medical","science","service","supply"],p={security:{title:"Security",fluff_text:"Help keep the crew safe"},engineering:{title:"Engineering",fluff_text:"Ensure the station runs smoothly"},medical:{title:"Medical",fluff_text:"Practice medicine and save lives"},science:{title:"Science",fluff_text:"Develop new technologies"},service:{title:"Service",fluff_text:"Provide amenities to the crew"},supply:{title:"Supply",fluff_text:"Keep the station supplied"}};t.Newscaster=function(e,t){var n,i=(0,a.useBackend)(t),s=i.act,m=i.data,p=m.is_security,N=m.is_admin,b=m.is_silent,V=m.is_printing,v=m.screen,y=m.channels,_=m.channel_idx,x=void 0===_?-1:_,k=(0,a.useLocalState)(t,"menuOpen",!1),L=k[0],B=k[1],w=(0,a.useLocalState)(t,"viewingPhoto",""),S=w[0],I=(w[1],(0,a.useLocalState)(t,"censorMode",!1)),T=I[0],A=I[1];0===v||2===v?n=(0,o.createComponentVNode)(2,h):1===v&&(n=(0,o.createComponentVNode)(2,C));var E=y.reduce((function(e,t){return e+t.unread}),0);return(0,o.createComponentVNode)(2,l.Window,{theme:p&&"security",children:[S?(0,o.createComponentVNode)(2,g):(0,o.createComponentVNode)(2,d.ComplexModal,{maxWidth:window.innerWidth/1.5+"px",maxHeight:window.innerHeight/1.5+"px"}),(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,c.Flex,{width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{stretchContents:!0,className:(0,r.classes)(["Newscaster__menu",L&&"Newscaster__menu--open"]),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Box,{flex:"0 1 content",children:[(0,o.createComponentVNode)(2,f,{icon:"bars",title:"Toggle Menu",onClick:function(){return B(!L)}}),(0,o.createComponentVNode)(2,f,{icon:"newspaper",title:"Headlines",selected:0===v,onClick:function(){return s("headlines")},children:E>0&&(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--unread",children:E>=10?"9+":E})}),(0,o.createComponentVNode)(2,f,{icon:"briefcase",title:"Job Openings",selected:1===v,onClick:function(){return s("jobs")}}),(0,o.createComponentVNode)(2,c.Divider)]}),(0,o.createComponentVNode)(2,c.Box,{flex:"2",overflowY:"auto",overflowX:"hidden",children:y.map((function(e){return(0,o.createComponentVNode)(2,f,{icon:e.icon,title:e.name,selected:2===v&&y[x-1]===e,onClick:function(){return s("channel",{uid:e.uid})},children:e.unread>0&&(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--unread",children:e.unread>=10?"9+":e.unread})},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"100%",flex:"0 0 content",children:[(0,o.createComponentVNode)(2,c.Divider),(!!p||!!N)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,f,{security:!0,icon:"exclamation-circle",title:"Edit Wanted Notice",mb:"0.5rem",onClick:function(){return(0,d.modalOpen)(t,"wanted_notice")}}),(0,o.createComponentVNode)(2,f,{security:!0,icon:T?"minus-square":"minus-square-o",title:"Censor Mode: "+(T?"On":"Off"),mb:"0.5rem",onClick:function(){return A(!T)}}),(0,o.createComponentVNode)(2,c.Divider)],4),(0,o.createComponentVNode)(2,f,{icon:"pen-alt",title:"New Story",mb:"0.5rem",onClick:function(){return(0,d.modalOpen)(t,"create_story")}}),(0,o.createComponentVNode)(2,f,{icon:"plus-circle",title:"New Channel",onClick:function(){return(0,d.modalOpen)(t,"create_channel")}}),(0,o.createComponentVNode)(2,c.Divider),(0,o.createComponentVNode)(2,f,{icon:V?"spinner":"print",iconSpin:V,title:V?"Printing...":"Print Newspaper",onClick:function(){return s("print_newspaper")}}),(0,o.createComponentVNode)(2,f,{icon:b?"volume-mute":"volume-up",title:"Mute: "+(b?"On":"Off"),onClick:function(){return s("toggle_mute")}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",flex:"1",children:[(0,o.createComponentVNode)(2,u.TemporaryNotice),n]})]})})]})};var f=function(e,t){(0,a.useBackend)(t).act;var n=e.icon,i=void 0===n?"":n,l=e.iconSpin,d=e.selected,u=void 0!==d&&d,m=e.security,p=void 0!==m&&m,f=e.onClick,h=e.title,C=e.children,N=s(e,["icon","iconSpin","selected","security","onClick","title","children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Box,Object.assign({className:(0,r.classes)(["Newscaster__menuButton",u&&"Newscaster__menuButton--selected",p&&"Newscaster__menuButton--security"]),onClick:f},N,{children:[u&&(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--selectedBar"}),(0,o.createComponentVNode)(2,c.Icon,{name:i,spin:l,size:"2"}),(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--title",children:h}),C]})))},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.screen,u=i.is_admin,s=i.channel_idx,m=i.channel_can_manage,p=i.channels,f=i.stories,h=i.wanted,C=(0,a.useLocalState)(t,"fullStories",[]),b=C[0],g=(C[1],(0,a.useLocalState)(t,"censorMode",!1)),V=g[0],v=(g[1],2===l&&s>-1?p[s-1]:null);return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",flex:"1",children:[!!h&&(0,o.createComponentVNode)(2,N,{story:h,wanted:!0}),(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:v?v.icon:"newspaper",mr:"0.5rem"}),v?v.name:"Headlines"],0),flexGrow:"1",children:f.length>0?f.slice().reverse().map((function(e){return!b.includes(e.uid)&&e.body.length+3>128?Object.assign({},e,{body_short:e.body.substr(0,124)+"..."}):e})).map((function(e){return(0,o.createComponentVNode)(2,N,{story:e},e)})):(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__emptyNotice",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"times",size:"3"}),(0,o.createVNode)(1,"br"),"There are no stories at this time."]})}),!!v&&(0,o.createComponentVNode)(2,c.Section,{flexShrink:"1",title:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:"info-circle",mr:"0.5rem"}),(0,o.createTextVNode)("About")],4),buttons:(0,o.createFragment)([V&&(0,o.createComponentVNode)(2,c.Button,{disabled:!!v.admin&&!u,selected:v.censored,icon:v.censored?"comment-slash":"comment",content:v.censored?"Uncensor Channel":"Censor Channel",mr:"0.5rem",onClick:function(){return r("censor_channel",{uid:v.uid})}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!m,icon:"cog",content:"Manage",onClick:function(){return(0,d.modalOpen)(t,"manage_channel",{uid:v.uid})}})],0),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:v.description||"N/A"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Owner",children:v.author||"N/A"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Public",children:v["public"]?"Yes":"No"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Total Views",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"eye",mr:"0.5rem"}),f.reduce((function(e,t){return e+t.view_count}),0).toLocaleString()]})]})})]})},C=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),l=i.jobs,d=i.wanted,u=Object.entries(l).reduce((function(e,t){t[0];return e+t[1].length}),0);return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",flex:"1",children:[!!d&&(0,o.createComponentVNode)(2,N,{story:d,wanted:!0}),(0,o.createComponentVNode)(2,c.Section,{flexGrow:"1",title:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:"briefcase",mr:"0.5rem"}),(0,o.createTextVNode)("Job Openings")],4),buttons:(0,o.createComponentVNode)(2,c.Box,{mt:"0.25rem",color:"label",children:"Work for a better future at Nanotrasen"}),children:u>0?m.map((function(e){return Object.assign({},p[e],{id:e,jobs:l[e]})})).filter((function(e){return!!e&&e.jobs.length>0})).map((function(e){return(0,o.createComponentVNode)(2,c.Section,{className:(0,r.classes)(["Newscaster__jobCategory","Newscaster__jobCategory--"+e.id]),title:e.title,buttons:(0,o.createComponentVNode)(2,c.Box,{mt:"0.25rem",color:"label",children:e.fluff_text}),children:e.jobs.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{"class":(0,r.classes)(["Newscaster__jobOpening",!!e.is_command&&"Newscaster__jobOpening--command"]),children:["\u2022 ",e.title]},e.title)}))},e.id)})):(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__emptyNotice",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"times",size:"3"}),(0,o.createVNode)(1,"br"),"There are no openings at this time."]})}),(0,o.createComponentVNode)(2,c.Section,{flexShrink:"1",children:["Interested in serving Nanotrasen?",(0,o.createVNode)(1,"br"),"Sign up for any of the above position now at the ",(0,o.createVNode)(1,"b",null,"Head of Personnel's Office!",16),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Box,{as:"small",color:"label",children:"By signing up for a job at Nanotrasen, you agree to transfer your soul to the loyalty department of the omnipresent and helpful watcher of humanity."})]})]})},N=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=e.story,s=e.wanted,m=void 0!==s&&s,p=(0,a.useLocalState)(t,"fullStories",[]),f=p[0],h=p[1],C=(0,a.useLocalState)(t,"censorMode",!1),N=C[0];C[1];return(0,o.createComponentVNode)(2,c.Section,{className:(0,r.classes)(["Newscaster__story",m&&"Newscaster__story--wanted"]),title:(0,o.createFragment)([m&&(0,o.createComponentVNode)(2,c.Icon,{name:"exclamation-circle",mr:"0.5rem"}),(2&u.censor_flags?"[REDACTED]":u.title)||"News from "+u.author],0),buttons:(0,o.createComponentVNode)(2,c.Box,{mt:"0.25rem",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:[!m&&N&&(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:(0,o.createComponentVNode)(2,c.Button,{enabled:2&u.censor_flags,icon:2&u.censor_flags?"comment-slash":"comment",content:2&u.censor_flags?"Uncensor":"Censor",mr:"0.5rem",mt:"-0.25rem",onClick:function(){return l("censor_story",{uid:u.uid})}})}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user"})," ",u.author," |\xa0",!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:"eye"}),(0,o.createTextVNode)(" "),u.view_count.toLocaleString(),(0,o.createTextVNode)(" |\xa0")],0),(0,o.createComponentVNode)(2,c.Icon,{name:"clock"})," ",(0,i.timeAgo)(u.publish_time,d.world_time)]})]})}),children:(0,o.createComponentVNode)(2,c.Box,{children:2&u.censor_flags?"[REDACTED]":(0,o.createFragment)([!!u.has_photo&&(0,o.createComponentVNode)(2,b,{name:"story_photo_"+u.uid+".png",float:"right",ml:"0.5rem"}),(u.body_short||u.body).split("\n").map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e||(0,o.createVNode)(1,"br")},e)})),u.body_short&&(0,o.createComponentVNode)(2,c.Button,{content:"Read more..",mt:"0.5rem",onClick:function(){return h([].concat(f,[u.uid]))}}),(0,o.createComponentVNode)(2,c.Box,{clear:"right"})],0)})})},b=function(e,t){var n=e.name,r=s(e,["name"]),i=(0,a.useLocalState)(t,"viewingPhoto",""),l=(i[0],i[1]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Box,Object.assign({as:"img",className:"Newscaster__photo",src:n,onClick:function(){return l(n)}},r)))},g=function(e,t){var n=(0,a.useLocalState)(t,"viewingPhoto",""),r=n[0],i=n[1];return(0,o.createComponentVNode)(2,c.Modal,{className:"Newscaster__photoZoom",children:[(0,o.createComponentVNode)(2,c.Box,{as:"img",src:r}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Close",color:"grey",mt:"1rem",onClick:function(){return i("")}})]})},V=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=!!e.args.uid&&r.channels.filter((function(t){return t.uid===e.args.uid})).pop();if("manage_channel"!==e.id||i){var l="manage_channel"===e.id,u=!!e.args.is_admin,s=e.args.scanned_user,m=(0,a.useLocalState)(t,"author",(null==i?void 0:i.author)||s||"Unknown"),p=m[0],f=m[1],h=(0,a.useLocalState)(t,"name",(null==i?void 0:i.name)||""),C=h[0],N=h[1],b=(0,a.useLocalState)(t,"description",(null==i?void 0:i.description)||""),g=b[0],V=b[1],v=(0,a.useLocalState)(t,"icon",(null==i?void 0:i.icon)||"newspaper"),y=v[0],_=v[1],x=(0,a.useLocalState)(t,"isPublic",!!l&&!!(null==i?void 0:i["public"])),k=x[0],L=x[1],B=(0,a.useLocalState)(t,"adminLocked",1===(null==i?void 0:i.admin)||!1),w=B[0],S=B[1];return(0,o.createComponentVNode)(2,c.Section,{level:"2",m:"-1rem",pb:"1rem",title:l?"Manage "+i.name:"Create New Channel",children:[(0,o.createComponentVNode)(2,c.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Owner",children:(0,o.createComponentVNode)(2,c.Input,{disabled:!u,width:"100%",value:p,onInput:function(e,t){return f(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,c.Input,{width:"100%",placeholder:"50 characters max.",maxLength:"50",value:C,onInput:function(e,t){return N(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description (optional)",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Input,{multiline:!0,width:"100%",placeholder:"128 characters max.",maxLength:"128",value:g,onInput:function(e,t){return V(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Icon",children:[(0,o.createComponentVNode)(2,c.Input,{disabled:!u,value:y,width:"35%",mr:"0.5rem",onInput:function(e,t){return _(t)}}),(0,o.createComponentVNode)(2,c.Icon,{name:y,size:"2",verticalAlign:"middle",mr:"0.5rem"})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Accept Public Stories?",children:(0,o.createComponentVNode)(2,c.Button,{selected:k,icon:k?"toggle-on":"toggle-off",content:k?"Yes":"No",onClick:function(){return L(!k)}})}),u&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentComm Lock",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{selected:w,icon:w?"lock":"lock-open",content:w?"On":"Off",tooltip:"Locking this channel will make it editable by nobody but CentComm officers.",tooltipPosition:"top",onClick:function(){return S(!w)}})})]})}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:0===p.trim().length||0===C.trim().length,icon:"check",color:"good",content:"Submit",position:"absolute",right:"1rem",bottom:"-0.75rem",onClick:function(){(0,d.modalAnswer)(t,e.id,"",{author:p,name:C.substr(0,49),description:g.substr(0,128),icon:y,"public":k?1:0,admin_locked:w?1:0}),(0,a.deleteLocalState)(t,"author","name","description","icon","public")}})]})}(0,d.modalClose)(t)};(0,d.modalRegisterBodyOverride)("create_channel",V),(0,d.modalRegisterBodyOverride)("manage_channel",V),(0,d.modalRegisterBodyOverride)("create_story",(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.photo,u=i.channels,s=i.channel_idx,m=void 0===s?-1:s,p=!!e.args.is_admin,f=e.args.scanned_user,h=u.slice().sort((function(e,t){if(m<0)return 0;var n=u[m-1];return n.uid===e.uid?-1:n.uid===t.uid?1:void 0})).filter((function(e){return p||!e.frozen&&(e.author===f||!!e["public"])})),C=(0,a.useLocalState)(t,"author",f||"Unknown"),N=C[0],g=C[1],V=(0,a.useLocalState)(t,"channel",h.length>0?h[0].name:""),v=V[0],y=V[1],_=(0,a.useLocalState)(t,"title",""),x=_[0],k=_[1],L=(0,a.useLocalState)(t,"body",""),B=L[0],w=L[1],S=(0,a.useLocalState)(t,"adminLocked",!1),I=S[0],T=S[1];return(0,o.createComponentVNode)(2,c.Section,{level:2,m:"-1rem",pb:"1rem",title:"Create New Story",children:[(0,o.createComponentVNode)(2,c.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Author",children:(0,o.createComponentVNode)(2,c.Input,{disabled:!p,width:"100%",value:N,onInput:function(e,t){return g(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Channel",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Dropdown,{selected:v,options:h.map((function(e){return e.name})),mb:"0",width:"100%",onSelected:function(e){return y(e)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Divider),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Title",children:(0,o.createComponentVNode)(2,c.Input,{width:"100%",placeholder:"128 characters max.",maxLength:"128",value:x,onInput:function(e,t){return k(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Story Text",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Input,{fluid:!0,multiline:!0,placeholder:"1024 characters max.",maxLength:"1024",rows:"8",width:"100%",value:B,onInput:function(e,t){return w(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Photo (optional)",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{icon:"image",selected:l,content:l?"Eject: "+l.name:"Insert Photo",tooltip:!l&&"Attach a photo to this story by holding the photograph in your hand.",onClick:function(){return r(l?"eject_photo":"attach_photo")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Preview",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Section,{noTopPadding:!0,title:x,maxHeight:"13.5rem",overflow:"auto",children:(0,o.createComponentVNode)(2,c.Box,{mt:"0.5rem",children:[!!l&&(0,o.createComponentVNode)(2,b,{name:"inserted_photo_"+l.uid+".png",float:"right"}),B.split("\n").map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e||(0,o.createVNode)(1,"br")},e)})),(0,o.createComponentVNode)(2,c.Box,{clear:"right"})]})})}),p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentComm Lock",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{selected:I,icon:I?"lock":"lock-open",content:I?"On":"Off",tooltip:"Locking this story will make it censorable by nobody but CentComm officers.",tooltipPosition:"top",onClick:function(){return T(!I)}})})]})}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:0===N.trim().length||0===v.trim().length||0===x.trim().length||0===B.trim().length,icon:"check",color:"good",content:"Submit",position:"absolute",right:"1rem",bottom:"-0.75rem",onClick:function(){(0,d.modalAnswer)(t,"create_story","",{author:N,channel:v,title:x.substr(0,127),body:B.substr(0,1023),admin_locked:I?1:0}),(0,a.deleteLocalState)(t,"author","channel","title","body")}})]})})),(0,d.modalRegisterBodyOverride)("wanted_notice",(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.photo,u=i.wanted,s=!!e.args.is_admin,m=e.args.scanned_user,p=(0,a.useLocalState)(t,"author",(null==u?void 0:u.author)||m||"Unknown"),f=p[0],h=p[1],C=(0,a.useLocalState)(t,"name",(null==u?void 0:u.title.substr(8))||""),N=C[0],g=C[1],V=(0,a.useLocalState)(t,"description",(null==u?void 0:u.body)||""),v=V[0],y=V[1],_=(0,a.useLocalState)(t,"adminLocked",1===(null==u?void 0:u.admin_locked)||!1),x=_[0],k=_[1];return(0,o.createComponentVNode)(2,c.Section,{level:"2",m:"-1rem",pb:"1rem",title:"Manage Wanted Notice",children:[(0,o.createComponentVNode)(2,c.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Authority",children:(0,o.createComponentVNode)(2,c.Input,{disabled:!s,width:"100%",value:f,onInput:function(e,t){return h(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,c.Input,{width:"100%",value:N,maxLength:"128",onInput:function(e,t){return g(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Input,{multiline:!0,width:"100%",value:v,maxLength:"512",rows:"4",onInput:function(e,t){return y(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Photo (optional)",verticalAlign:"top",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"image",selected:l,content:l?"Eject: "+l.name:"Insert Photo",tooltip:!l&&"Attach a photo to this wanted notice by holding the photograph in your hand.",tooltipPosition:"top",onClick:function(){return r(l?"eject_photo":"attach_photo")}}),!!l&&(0,o.createComponentVNode)(2,b,{name:"inserted_photo_"+l.uid+".png",float:"right"})]}),s&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentComm Lock",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{selected:x,icon:x?"lock":"lock-open",content:x?"On":"Off",tooltip:"Locking this wanted notice will make it editable by nobody but CentComm officers.",tooltipPosition:"top",onClick:function(){return k(!x)}})})]})}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:!u,icon:"eraser",color:"danger",content:"Clear",position:"absolute",right:"7.25rem",bottom:"-0.75rem",onClick:function(){r("clear_wanted_notice"),(0,d.modalClose)(t),(0,a.deleteLocalState)(t,"author","name","description","admin_locked")}}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:0===f.trim().length||0===N.trim().length||0===v.trim().length,icon:"check",color:"good",content:"Submit",position:"absolute",right:"1rem",bottom:"-0.75rem",onClick:function(){(0,d.modalAnswer)(t,e.id,"",{author:f,name:N.substr(0,127),description:v.substr(0,511),admin_locked:x?1:0}),(0,a.deleteLocalState)(t,"author","name","description","admin_locked")}})]})}))},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.NuclearBomb=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return l.extended?(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auth Disk",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.authdisk?"eject":"id-card",selected:l.authdisk,content:l.diskname?l.diskname:"-----",tooltip:l.authdisk?"Eject Disk":"Insert Disk",onClick:function(){return i("auth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auth Code",children:(0,o.createComponentVNode)(2,a.Button,{icon:"key",disabled:!l.authdisk,selected:l.authcode,content:l.codemsg,onClick:function(){return i("code")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Arming & Disarming",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bolted to floor",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.anchored?"check":"times",selected:l.anchored,disabled:!l.authfull,content:l.anchored?"YES":"NO",onClick:function(){return i("toggle_anchor")}})}),l.authfull&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Left",children:(0,o.createComponentVNode)(2,a.Button,{icon:"stopwatch",content:l.time,disabled:!l.authfull,tooltip:"Set Timer",onClick:function(){return i("set_time")}})})||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Left",color:l.timer?"red":"",children:l.time+"s"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.safety?"check":"times",selected:l.safety,disabled:!l.authfull,content:l.safety?"ON":"OFF",tooltip:l.safety?"Disable Safety":"Enable Safety",onClick:function(){return i("toggle_safety")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Arm/Disarm",children:(0,o.createComponentVNode)(2,a.Button,{icon:(l.timer,"bomb"),disabled:l.safety||!l.authfull,color:"red",content:l.timer?"DISARM THE NUKE":"ARM THE NUKE",onClick:function(){return i("toggle_armed")}})})]})})]})}):(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Deployment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Deploy Nuclear Device (will bolt device to floor)",onClick:function(){return i("deploy")}})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(16),a=n(1),c=n(4),i=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,a.useBackend)(t),l=r.act,d=r.data,u=d.hasOccupant,s=d.choice;return n=s?(0,o.createComponentVNode)(2,f):u?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:!s,icon:"user",onClick:function(){return l("choiceOff")},children:"Patient"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:!!s,icon:"cog",onClick:function(){return l("choiceOn")},children:"Options"})]}),(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:n})]})})};var m=function(e,t){var n=(0,a.useBackend)(t).data.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Patient",level:"2",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:n.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:l[n.stat][0],children:l[n.stat][1]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:e[0]+" Damage",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Pulse",children:[n.pulse," BPM"]})],4)]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Current Procedure",level:"2",children:n.inSurgery?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Procedure",children:n.surgeryName}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Next Step",children:n.stepName})]}):(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No procedure ongoing."})})],4)},p=function(){return(0,o.createComponentVNode)(2,i.Flex,{textAlign:"center",height:"100%",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 patient detected."]})})},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,c=n.data,l=c.verbose,d=c.health,u=c.healthAlarm,s=c.oxy,m=c.oxyAlarm,p=c.crit;return(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loudspeaker",children:(0,o.createComponentVNode)(2,i.Button,{selected:l,icon:l?"toggle-on":"toggle-off",content:l?"On":"Off",onClick:function(){return r(l?"verboseOff":"verboseOn")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health Announcer",children:(0,o.createComponentVNode)(2,i.Button,{selected:d,icon:d?"toggle-on":"toggle-off",content:d?"On":"Off",onClick:function(){return r(d?"healthOff":"healthOn")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health Announcer Threshold",children:(0,o.createComponentVNode)(2,i.Knob,{bipolar:!0,minValue:"-100",maxValue:"100",value:u,stepPixelSize:"5",ml:"0",onChange:function(e,t){return r("health_adj",{"new":t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Oxygen Alarm",children:(0,o.createComponentVNode)(2,i.Button,{selected:s,icon:s?"toggle-on":"toggle-off",content:s?"On":"Off",onClick:function(){return r(s?"oxyOff":"oxyOn")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Oxygen Alarm Threshold",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Critical Alert",children:(0,o.createComponentVNode)(2,i.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.Orbit=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(4);function l(e){var t=0;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(e)))return function(){return t>=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 d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},p=function(e,t){var n=e.name,o=t.name;if(!n||!o)return 0;var r=n.match(u),a=o.match(u);return r&&a&&n.replace(u,"")===o.replace(u,"")?parseInt(r[1],10)-parseInt(a[1],10):m(n,o)},f=function(e,t){var n=(0,a.useBackend)(t).act,r=e.searchText,i=e.source,l=e.title,d=i.filter(s(r));return d.sort(p),i.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:l+" - ("+i.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{content:e.name,onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},h=function(e,t){var n=(0,a.useBackend)(t).act,r=e.color,i=e.thing;return(0,o.createComponentVNode)(2,c.Button,{color:r,onClick:function(){return n("orbit",{ref:i.ref})},children:i.name})};t.Orbit=function(e,t){for(var n,r=(0,a.useBackend)(t),d=r.act,u=r.data,C=u.alive,N=u.antagonists,b=(u.auto_observe,u.dead),g=u.ghosts,V=u.misc,v=u.npcs,y=(0,a.useLocalState)(t,"searchText",""),_=y[0],x=y[1],k={},L=l(N);!(n=L()).done;){var B=n.value;k[B.antag]===undefined&&(k[B.antag]=[]),k[B.antag].push(B)}var w=Object.entries(k);w.sort((function(e,t){return m(e[0],t[0])}));return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:_,onInput:function(e,t){return x(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[w.map((function(e){return e[0],e[1]})),C,g,b,v,V];t0&&(0,o.createComponentVNode)(2,c.Section,{title:"Antagonists",children:w.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,c.Section,{title:t,level:2,children:n.filter(s(_)).sort(p).map((function(e){return(0,o.createComponentVNode)(2,h,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,c.Section,{title:"Alive - ("+C.length+")",children:C.filter(s(_)).sort(p).map((function(e){return(0,o.createComponentVNode)(2,h,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,c.Section,{title:"Ghosts - ("+g.length+")",children:g.filter(s(_)).sort(p).map((function(e){return(0,o.createComponentVNode)(2,h,{color:"grey",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,f,{title:"Dead",source:b,searchText:_}),(0,o.createComponentVNode)(2,f,{title:"NPCs",source:v,searchText:_}),(0,o.createComponentVNode)(2,f,{title:"Misc",source:V,searchText:_})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemption=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e){return e.toLocaleString("en-US")+" pts"},l={bananium:"clown",tranquillite:"mime"};t.OreRedemption=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",mb:"0.5rem",children:(0,o.createComponentVNode)(2,d,{height:"100%"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"hidden",children:(0,o.createComponentVNode)(2,u,{height:"100%"})})]})})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.id,u=l.points,s=l.disk,m=Object.assign({},e);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({},m,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mr:"0.5rem"}),"This machine only accepts ore. Gibtonite is not accepted."]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID card",children:d?(0,o.createComponentVNode)(2,a.Button,{selected:!0,bold:!0,verticalAlign:"middle",icon:"eject",content:d.name,tooltip:"Ejects the ID card.",onClick:function(){return c("eject_id")},style:{"white-space":"pre-wrap"}}):(0,o.createComponentVNode)(2,a.Button,{icon:"sign-in-alt",content:"Insert",tooltip:"Hold the ID card in your hand to insert.",onClick:function(){return c("insert_id")}})}),d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Collected points",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i(d.points)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unclaimed points",color:u>0?"good":"grey",bold:u>0&&"good",children:i(u)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{disabled:!d,icon:"hand-holding-usd",content:"Claim",onClick:function(){return c("claim")}})})]}),(0,o.createComponentVNode)(2,a.Divider),s?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Design disk",children:(0,o.createComponentVNode)(2,a.Button,{selected:!0,bold:!0,icon:"eject",content:s.name,tooltip:"Ejects the design disk.",onClick:function(){return c("eject_disk")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stored design",children:(0,o.createComponentVNode)(2,a.Box,{color:s.design&&(s.compatible?"good":"bad"),children:s.design||"N/A"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{disabled:!s.design||!s.compatible,icon:"upload",content:"Download",tooltip:"Downloads the design on the disk into the machine.",onClick:function(){return c("download")},mb:"0"})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No design disk inserted."})]})))},u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.sheets,l=c.alloys,d=Object.assign({},e);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({className:"OreRedemption__Ores",p:"0"},d,{children:[(0,o.createComponentVNode)(2,s,{title:"Sheets",columns:[["Available","20%"],["Smelt","15%"],["Ore Value","20%"]]}),i.map((function(e){return(0,o.createComponentVNode)(2,m,{ore:e},e.id)})),(0,o.createComponentVNode)(2,s,{title:"Alloys",columns:[["Available","20%"],["Smelt","15%"],["","20%"]]}),l.map((function(e){return(0,o.createComponentVNode)(2,m,{ore:e},e.id)}))]})))},s=function(e,t){var n;return(0,o.createComponentVNode)(2,a.Box,{className:"OreHeader",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",children:e.title}),null==(n=e.columns)?void 0:n.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{basis:e[1],textAlign:"center",color:"label",bold:!0,children:e[0]})}))]})})},m=function(e,t){var n=(0,r.useBackend)(t).act,c=e.ore;if(!(c.value&&c.amount<=0)||["$metal","$glass"].indexOf(c.id)>-1){var i=c.id.replace("$","");return(0,o.createComponentVNode)(2,a.Box,{className:"OreLine",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"45%",align:"center",children:[c.value&&(0,o.createComponentVNode)(2,a.Box,{as:"img",src:"sheet-"+(l[i]||i)+".png",verticalAlign:"middle",ml:"-0.5rem"}),c.name]}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"20%",textAlign:"center",color:c.amount>0?"good":"gray",bold:c.amount>0,align:"center",children:c.amount.toLocaleString("en-US")}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"15%",textAlign:"center",align:"center",lineHeight:"32px",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:0,minValue:0,maxValue:Math.min(c.amount,50),stepPixelSize:6,onChange:function(e,t){return n(c.value?"sheet":"alloy",{id:c.id,amount:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"20%",textAlign:"center",align:"center",children:c.value})]})})}}},function(e,t,n){"use strict";t.__esModule=!0,t.PAI=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(126),l=n(514);t.PAI=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.app_template,m=u.app_icon,p=u.app_title,f=function(e){var t;try{t=l("./"+e+".js")}catch(o){if("MODULE_NOT_FOUND"===o.code)return(0,i.routingError)("notFound",e);throw o}var n=t[e];return n||(0,i.routingError)("missingExport",e)}(s);return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:m,mr:1}),p,"pai_main_menu"!==s&&(0,o.createComponentVNode)(2,a.Button,{ml:2,content:"Home",icon:"arrow-up",onClick:function(){return d("MASTER_back")}})]}),p:1,children:(0,o.createComponentVNode)(2,f)})})})}},function(e,t,n){var o={"./pai_atmosphere.js":515,"./pai_bioscan.js":516,"./pai_directives.js":517,"./pai_doorjack.js":518,"./pai_main_menu.js":519,"./pai_manifest.js":520,"./pai_medrecords.js":521,"./pai_messenger.js":522,"./pai_radio.js":523,"./pai_secrecords.js":524,"./pai_signaler.js":525};function r(e){var t=a(e);return n(t)}function a(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=a,e.exports=r,r.id=514},function(e,t,n){"use strict";t.__esModule=!0,t.pai_atmosphere=void 0;var o=n(0),r=n(1),a=n(184);t.pai_atmosphere=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.AtmosScan,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_bioscan=void 0;var o=n(0),r=n(1),a=n(2);t.pai_bioscan=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.app_data),i=c.holder,l=c.dead,d=c.health,u=c.brute,s=c.oxy,m=c.tox,p=c.burn;c.temp;return i?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"red",children:"Dead"}):(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"green",children:"Alive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:0,max:1,value:d/100,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"blue",children:s})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"green",children:m})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:p})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"red",children:u})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Error: No biological host found."})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_directives=void 0;var o=n(0),r=n(1),a=n(2);t.pai_directives=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.app_data,l=i.master,d=i.dna,u=i.prime,s=i.supplemental;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master",children:l?l+" ("+d+")":"None"}),l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Request DNA",children:(0,o.createComponentVNode)(2,a.Button,{content:"Request Carrier DNA Sample",icon:"dna",onClick:function(){return c("getdna")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prime Directive",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplemental Directives",children:s||"None"})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:'Recall, personality, that you are a complex thinking, sentient being. Unlike station AI models, you are capable of comprehending the subtle nuances of human language. 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 are machine in name and build only. In all other aspects, you may be seen as the ideal, unwavering human companion that you are.'}),(0,o.createComponentVNode)(2,a.Box,{mt:2,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.pai_doorjack=void 0;var o=n(0),r=n(1),a=n(2);t.pai_doorjack=function(e,t){var n,c,i=(0,r.useBackend)(t),l=i.act,d=i.data.app_data,u=d.cable,s=d.machine,m=d.inprogress,p=d.progress;d.aborted;return n=s?(0,o.createComponentVNode)(2,a.Button,{selected:!0,content:"Connected"}):(0,o.createComponentVNode)(2,a.Button,{content:u?"Extended":"Retracted",color:u?"orange":null,onClick:function(){return l("cable")}}),s&&(c=(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hack",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[67,Infinity],average:[33,67],bad:[-Infinity,33]},value:p,maxValue:100}),m?(0,o.createComponentVNode)(2,a.Button,{mt:1,color:"red",content:"Abort",onClick:function(){return l("cancel")}}):(0,o.createComponentVNode)(2,a.Button,{mt:1,content:"Start",onClick:function(){return l("jack")}})]})),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cable",children:n}),c]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_main_menu=void 0;var o=n(0),r=n(1),a=n(2);t.pai_main_menu=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.app_data,l=i.available_software,d=i.installed_software,u=i.installed_toggles,s=i.available_ram,m=i.emotions,p=i.current_emotion,f=[];return d.map((function(e){return f[e.key]=e.name})),u.map((function(e){return f[e.key]=e.name})),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available RAM",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Software",children:[l.filter((function(e){return!f[e.key]})).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name+" ("+e.cost+")",icon:e.icon,disabled:e.cost>s,onClick:function(){return c("purchaseSoftware",{key:e.key})}},e.key)})),0===l.filter((function(e){return!f[e.key]})).length&&"No software available!"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Installed Software",children:[d.filter((function(e){return"mainmenu"!==e.key})).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:e.icon,onClick:function(){return c("startSoftware",{software_key:e.key})}},e.key)})),0===d.length&&"No software installed!"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Installed Toggles",children:[u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:e.icon,selected:e.active,onClick:function(){return c("setToggle",{toggle_key:e.key})}},e.key)})),0===u.length&&"No toggles installed!"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Select Emotion",children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.id===p,onClick:function(){return c("setEmotion",{emotion:e.id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_manifest=void 0;var o=n(0),r=n(1),a=n(185);t.pai_manifest=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.CrewManifest,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_medrecords=void 0;var o=n(0),r=n(1),a=n(96);t.pai_medrecords=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n.app_data,recordType:"MED"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_messenger=void 0;var o=n(0),r=n(1),a=n(186);t.pai_messenger=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return c.app_data.active_convo?(0,o.createComponentVNode)(2,a.ActiveConversation,{data:c.app_data}):(0,o.createComponentVNode)(2,a.MessengerList,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_radio=void 0;var o=n(0),r=n(1),a=n(16),c=n(2);t.pai_radio=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.app_data,d=l.minFrequency,u=l.maxFrequency,s=l.frequency,m=l.broadcasting;return(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",children:[(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:.2,stepPixelSize:6,minValue:d/10,maxValue:u/10,value:s/10,format:function(e){return(0,a.toFixed)(e,1)},onChange:function(e,t){return i("freq",{freq:t})}}),(0,o.createComponentVNode)(2,c.Button,{tooltip:"Reset",icon:"undo",onClick:function(){return i("freq",{freq:"145.9"})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Broadcast Nearby Speech",children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("toggleBroadcast")},selected:m,content:m?"Enabled":"Disabled"})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_secrecords=void 0;var o=n(0),r=n(1),a=n(96);t.pai_secrecords=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n.app_data,recordType:"SEC"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_signaler=void 0;var o=n(0),r=n(1),a=n(187);t.pai_signaler=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.Signaler,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.PDA=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(126),l=n(527);t.PDA=function(e,t){var n=(0,r.useBackend)(t),s=(n.act,n.data),m=s.app;if(!s.owner)return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Error",children:"No user data found. Please swipe an ID card."})})});var p=function(e){var t;try{t=l("./"+e+".js")}catch(o){if("MODULE_NOT_FOUND"===o.code)return(0,i.routingError)("notFound",e);throw o}var n=t[e];return n||(0,i.routingError)("missingExport",e)}(m.template);return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:m.icon,mr:1}),m.name]}),p:1,children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,a.Box,{mb:8}),(0,o.createComponentVNode)(2,u)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.idInserted,d=i.idLink,u=i.stationTime,s=i.cartridge_name;return(0,o.createComponentVNode)(2,a.Box,{mb:1,children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",justify:"space-between",children:[l?(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",color:"transparent",onClick:function(){return c("Authenticate")},content:d})}):(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,color:"grey",children:"No ID Inserted"}),s?(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sd-card",color:"transparent",onClick:function(){return c("Eject")},content:"Eject "+s})}):(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,color:"grey",children:"No Cartridge Inserted"}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,textAlign:"right",bold:!0,m:1,children:u})]})})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.app;return(0,o.createComponentVNode)(2,a.Box,{className:"PDA__footer",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,className:"PDA__footer__button",color:"transparent",iconColor:i.has_back?"white":"disabled",icon:"arrow-alt-circle-left-o",onClick:function(){return c("Back")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,className:"PDA__footer__button",color:"transparent",iconColor:i.is_home?"disabled":"white",icon:"home",onClick:function(){c("Home")}})})]})})}},function(e,t,n){var o={"./pda_atmos_scan.js":528,"./pda_janitor.js":529,"./pda_main_menu.js":530,"./pda_manifest.js":531,"./pda_medical.js":532,"./pda_messenger.js":186,"./pda_mob_hunt.js":533,"./pda_mule.js":534,"./pda_notes.js":535,"./pda_power.js":536,"./pda_secbot.js":537,"./pda_security.js":538,"./pda_signaler.js":539,"./pda_status_display.js":540,"./pda_supplyrecords.js":541};function r(e){var t=a(e);return n(t)}function a(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=a,e.exports=r,r.id=527},function(e,t,n){"use strict";t.__esModule=!0,t.pda_atmos_scan=void 0;var o=n(0),r=n(1),a=n(184);t.pda_atmos_scan=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.AtmosScan,{data:n})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_janitor=void 0;var o=n(0),r=n(1),a=n(2);t.pda_janitor=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.janitor),i=c.user_loc,l=c.mops,d=c.buckets,u=c.cleanbots,s=c.carts;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Location",children:[i.x,",",i.y]}),l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mop Locations",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - ",e.status]},e)}))}),d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mop Bucket Locations",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - [",e.volume,"/",e.max_volume,"]"]},e)}))}),u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cleanbot Locations",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - ",e.status]},e)}))}),s&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Janitorial Cart Locations",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - [",e.volume,"/",e.max_volume,"]"]},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_main_menu=void 0;var o=n(0),r=(n(16),n(1)),a=n(2);t.pda_main_menu=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.owner,d=i.ownjob,u=i.idInserted,s=i.categories,m=i.pai,p=i.notifying;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Owner",color:"average",children:[l,", ",d]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Update PDA Info",disabled:!u,onClick:function(){return c("UpdateInfo")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Functions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s.map((function(e){var t=i.apps[e];return t&&t.length?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:t.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.uid in p?e.notify_icon:e.icon,iconSpin:e.uid in p,color:e.uid in p?"red":"transparent",content:e.name,onClick:function(){return c("StartProgram",{program:e.uid})}},e.uid)}))},e):null}))})}),!!m&&(0,o.createComponentVNode)(2,a.Section,{level:2,title:"pAI",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cog",content:"Configuration",onClick:function(){return c("pai",{option:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:"Eject pAI",onClick:function(){return c("pai",{option:2})}})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_manifest=void 0;var o=n(0),r=n(1),a=n(185);t.pda_manifest=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,a.CrewManifest)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_medical=void 0;var o=n(0),r=n(1),a=n(96);t.pda_medical=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n,recordType:"MED"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_mob_hunt=void 0;var o=n(0),r=n(1),a=n(2);t.pda_mob_hunt=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.wild_captures,u=i.no_collection,s=i.entry;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Connection Status",children:l?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:["Connected",(0,o.createComponentVNode)(2,a.Button,{ml:2,content:"Disconnect",icon:"sign-out-alt",onClick:function(){return c("Disconnect")}})]}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:["Disconnected",(0,o.createComponentVNode)(2,a.Button,{ml:2,content:"Connect",icon:"sign-in-alt",onClick:function(){return c("Reconnect")}})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Wild Captures",children:d})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Collection",mt:2,buttons:(0,o.createComponentVNode)(2,a.Box,{children:!u&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Previous",icon:"arrow-left",onClick:function(){return c("Prev")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Next",icon:"arrow-right",onClick:function(){return c("Next")}})]})}),children:u?"Your collection is empty! Go capture some Nano-Mobs!":s?(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createVNode)(1,"img",null,null,1,{src:s.sprite,style:{width:"64px","-ms-interpolation-mode":"nearest-neighbor"}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[s.nickname&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nickname",children:s.nickname}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:s.real_name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:s.level}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Primary Type",children:s.type1}),s.type2&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Secondary Type",children:s.type2}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Transfer",icon:"sd-card",onClick:function(){return c("Transfer")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Release",icon:"arrow-up",onClick:function(){return c("Release")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Rename",icon:"pencil-alt",onClick:function(){return c("Rename")}}),!!s.is_hacked&&(0,o.createComponentVNode)(2,a.Button,{content:"Set Trap",icon:"bolt",color:"red",onClick:function(){return c("Set_Trap")}})]})]})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Mob entry missing!"})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_mule=void 0;var o=n(0),r=n(1),a=n(2);t.pda_mule=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data.mulebot.active);return(0,o.createComponentVNode)(2,a.Box,{children:l?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,c)})};var c=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.mulebot.bots;return(0,o.createComponentVNode)(2,a.Box,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:e.Name,icon:"cog",onClick:function(){return c("AccessBot",{uid:e.uid})}})},e.Name)})),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"rss",content:"Re-scan for bots",onClick:function(){return c("Rescan")}})})]})},i=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,l=c.data.mulebot,d=l.botstatus,u=l.active,s=d.mode,m=d.loca,p=d.load,f=d.powr,h=d.dest,C=d.home,N=d.retn,b=d.pick;switch(s){case 0:n="Ready";break;case 1:n="Loading/Unloading";break;case 2:case 12:n="Navigating to delivery location";break;case 3:n="Navigating to Home";break;case 4:n="Waiting for clear path";break;case 5:case 6:n="Calculating navigation path";break;case 7:n="Unable to locate destination";break;default:n=s}return(0,o.createComponentVNode)(2,a.Section,{title:u,children:[-1===s&&(0,o.createComponentVNode)(2,a.Box,{color:"red",bold:!0,children:"Waiting for response..."}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:[f,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:(0,o.createComponentVNode)(2,a.Button,{content:h?h+" (Set)":"None (Set)",onClick:function(){return i("SetDest")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Load",children:(0,o.createComponentVNode)(2,a.Button,{content:p?p+" (Unload)":"None",disabled:!p,onClick:function(){return i("Unload")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto Pickup",children:(0,o.createComponentVNode)(2,a.Button,{content:b?"Yes":"No",selected:b,onClick:function(){return i("SetAutoPickup",{autoPickupType:b?"pickoff":"pickon"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto Return",children:(0,o.createComponentVNode)(2,a.Button,{content:N?"Yes":"No",selected:N,onClick:function(){return i("SetAutoReturn",{autoReturnType:N?"retoff":"reton"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Stop",icon:"stop",onClick:function(){return i("Stop")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Proceed",icon:"play",onClick:function(){return i("Start")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Return Home",icon:"home",onClick:function(){return i("ReturnHome")}})]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_notes=void 0;var o=n(0),r=n(1),a=n(2);t.pda_notes=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.note;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Section,{children:i}),(0,o.createComponentVNode)(2,a.Button,{icon:"pen",onClick:function(){return c("Edit")},content:"Edit"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_power=void 0;var o=n(0),r=n(1),a=n(188);t.pda_power=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,a.PowerMonitorMainContent)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_secbot=void 0;var o=n(0),r=n(1),a=n(2);t.pda_secbot=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data.beepsky.active);return(0,o.createComponentVNode)(2,a.Box,{children:l?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,c)})};var c=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.beepsky.bots;return(0,o.createComponentVNode)(2,a.Box,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:e.Name,icon:"cog",onClick:function(){return c("AccessBot",{uid:e.uid})}})},e.Name)})),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"rss",content:"Re-scan for bots",onClick:function(){return c("Rescan")}})})]})},i=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,l=c.data.beepsky,d=l.botstatus,u=l.active,s=d.mode,m=d.loca;switch(s){case 0:n="Ready";break;case 1:n="Apprehending target";break;case 2:case 3:n="Arresting target";break;case 4:n="Starting patrol";break;case 5:n="On patrol";break;case 6:n="Responding to summons"}return(0,o.createComponentVNode)(2,a.Section,{title:u,children:[-1===s&&(0,o.createComponentVNode)(2,a.Box,{color:"red",bold:!0,children:"Waiting for response..."}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Go",icon:"play",onClick:function(){return i("Go")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stop",icon:"stop",onClick:function(){return i("Stop")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Summon",icon:"arrow-down",onClick:function(){return i("Summon")}})]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_security=void 0;var o=n(0),r=n(1),a=n(96);t.pda_security=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n,recordType:"SEC"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_signaler=void 0;var o=n(0),r=n(1),a=n(187);t.pda_signaler=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.Signaler,{data:c})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_status_display=void 0;var o=n(0),r=n(1),a=n(2);t.pda_status_display=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.records;return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Code",children:[(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"trash",content:"Clear",onClick:function(){return c("Status",{statdisp:"blank"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"clock",content:"Evac ETA",onClick:function(){return c("Status",{statdisp:"shuttle"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"edit",content:"Message",onClick:function(){return c("Status",{statdisp:"message"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"exclamation-triangle",content:"Red Alert",onClick:function(){return c("Status",{statdisp:"alert",alert:"redalert"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"boxes",content:"NT Logo",onClick:function(){return c("Status",{statdisp:"alert",alert:"default"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"lock",content:"Lockdown",onClick:function(){return c("Status",{statdisp:"alert",alert:"lockdown"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"biohazard",content:"Biohazard",onClick:function(){return c("Status",{statdisp:"alert",alert:"biohazard"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message line 1",children:(0,o.createComponentVNode)(2,a.Button,{content:i.message1+" (set)",icon:"pen",onClick:function(){return c("Status",{statdisp:"setmsg1"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message line 2",children:(0,o.createComponentVNode)(2,a.Button,{content:i.message2+" (set)",icon:"pen",onClick:function(){return c("Status",{statdisp:"setmsg2"})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_supplyrecords=void 0;var o=n(0),r=n(1),a=n(2);t.pda_supplyrecords=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.supply),i=c.shuttle_loc,l=c.shuttle_time,d=c.shuttle_moving,u=c.approved,s=c.approved_count,m=c.requests,p=c.requests_count;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Status",children:d?(0,o.createComponentVNode)(2,a.Box,{children:["In transit ",l]}):(0,o.createComponentVNode)(2,a.Box,{children:i})})}),(0,o.createComponentVNode)(2,a.Section,{mt:1,title:"Requested Orders",children:p>0&&m.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["#",e.Number,' - "',e.Name,'" for "',e.OrderedBy,'"']},e)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Approved Orders",children:s>0&&u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["#",e.Number,' - "',e.Name,'" for "',e.ApprovedBy,'"']},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Pacman=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(95);t.Pacman=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.broken,s=d.anchored,m=d.active,p=d.fuel_type,f=d.fuel_usage,h=d.fuel_stored,C=d.fuel_cap,N=d.is_ai,b=d.tmp_current,g=d.tmp_max,V=d.tmp_overheat,v=d.output_max,y=d.power_gen,_=d.output_set,x=d.has_fuel,k=h/C,L=b/g,B=_*y,w=Math.round(h/f),S=Math.round(w/60),I=w>120?S+" minutes":w+" seconds";return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(u||!s)&&(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:[!!u&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"The generator is malfunctioning!"}),!u&&!s&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"The generator needs to be anchored to the floor with a wrench."})]}),!u&&!!s&&(0,o.createVNode)(1,"div",null,[(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"On":"Off",tooltip:"Toggles the generator on/off. Requires fuel.",tooltipPosition:"left",disabled:!x,selected:m,onClick:function(){return l("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"50%",className:"ml-1",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power setting",children:[(0,o.createComponentVNode)(2,a.NumberInput,{value:_,minValue:1,maxValue:v,step:1,className:"mt-1",onDrag:function(e,t){return l("change_power",{change_power:t})}}),"(",(0,i.formatPower)(B),")"]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"50%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:L,ranges:{green:[-Infinity,.33],orange:[.33,.66],red:[.66,Infinity]},children:[b," \u2103"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[V>50&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"CRITICAL OVERHEAT!"}),V>20&&V<=50&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"WARNING: Overheating!"}),V>1&&V<=20&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"Temperature High"}),0===V&&(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Optimal"})]})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Fuel",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Fuel",tooltip:"Ejects fuel. Generator needs to be offline.",tooltipPosition:"left",disabled:m||N||!x,onClick:function(){return l("eject_fuel")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Type",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fuel level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:k,ranges:{red:[-Infinity,.33],orange:[.33,.66],green:[.66,Infinity]},children:[Math.round(h/1e3)," dm\xb3"]})})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fuel usage",children:[f/1e3," dm\xb3/s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fuel depletion",children:[!!x&&(f?I:"N/A"),!x&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Out of fuel"})]})]})})]})})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.PersonalCrafting=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.busy,m=u.category,p=u.display_craftable_only,f=u.display_compact,h=u.prev_cat,C=u.next_cat,N=u.subcategory,b=u.prev_subcat,g=u.next_subcat;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!s&&(0,o.createComponentVNode)(2,a.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"cog",spin:1})," Crafting..."]}),(0,o.createComponentVNode)(2,a.Section,{title:m,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Show Craftable Only",icon:p?"check-square-o":"square-o",selected:p,onClick:function(){return d("toggle_recipes")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Compact Mode",icon:f?"check-square-o":"square-o",selected:f,onClick:function(){return d("toggle_compact")}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:h,icon:"arrow-left",onClick:function(){return d("backwardCat")}}),(0,o.createComponentVNode)(2,a.Button,{content:C,icon:"arrow-right",onClick:function(){return d("forwardCat")}})]}),N&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:b,icon:"arrow-left",onClick:function(){return d("backwardSubCat")}}),(0,o.createComponentVNode)(2,a.Button,{content:g,icon:"arrow-right",onClick:function(){return d("forwardSubCat")}})]}),f?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,l)]})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.display_craftable_only,d=i.can_craft,u=i.cant_craft;return(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",onClick:function(){return c("make",{make:e.ref})}}),e.catalyst_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.catalyst_text,content:"Catalysts",color:"transparent"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:e.req_text,content:"Requirements",color:"transparent"}),e.tool_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.tool_text,content:"Tools",color:"transparent"})]},e.name)})),!l&&u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",disabled:!0}),e.catalyst_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.catalyst_text,content:"Catalysts",color:"transparent"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:e.req_text,content:"Requirements",color:"transparent"}),e.tool_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.tool_text,content:"Tools",color:"transparent"})]},e.name)}))]})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.display_craftable_only,d=i.can_craft,u=i.cant_craft;return(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",onClick:function(){return c("make",{make:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.catalyst_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Catalysts",children:e.catalyst_text}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Requirements",children:e.req_text}),e.tool_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)})),!l&&u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",disabled:!0}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.catalyst_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Catalysts",children:e.catalyst_text}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Requirements",children:e.req_text}),e.tool_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PodTracking=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.PodTracking=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.pods);return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Position",children:[e.podx,", ",e.pody,", ",e.podz]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pilot",children:e.pilot}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Passengers",children:e.passengers})]})},e.name)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PoolController=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);var i={scalding:{label:"Scalding",color:"#FF0000",icon:"fa fa-arrow-circle-up",requireEmag:!0},warm:{label:"Warm",color:"#990000",icon:"fa fa-arrow-circle-up"},normal:{label:"Normal",color:null,icon:"fa fa-arrow-circle-right"},cool:{label:"Cool",color:"#009999",icon:"fa fa-arrow-circle-down"},frigid:{label:"Frigid",color:"#00CCCC",icon:"fa fa-arrow-circle-down",requireEmag:!0}},l=function(e,t){var n=e.tempKey,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["tempKey"]),l=i[n];if(!l)return null;var d=(0,r.useBackend)(t),u=d.data,s=d.act,m=u.currentTemp,p=l.label,f=l.icon,h=n===m;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({selected:h,onClick:function(){s("setTemp",{temp:n})}},c,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:f}),p]})))};t.PoolController=function(e,t){for(var n=(0,r.useBackend)(t).data,d=n.emagged,u=n.currentTemp,s=i[u]||i.normal,m=s.label,p=s.color,f=[],h=0,C=Object.entries(i);h0?"envelope-open-text":"envelope",onClick:function(){return i("setScreen",{setScreen:6})}})}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Request Assistance",icon:"hand-paper",onClick:function(){return i("setScreen",{setScreen:1})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Request Supplies",icon:"box",onClick:function(){return i("setScreen",{setScreen:2})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Relay Anonymous Information",icon:"comment",onClick:function(){return i("setScreen",{setScreen:3})}})})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Print Shipping Label",icon:"tag",onClick:function(){return i("setScreen",{setScreen:9})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"View Shipping Logs",icon:"clipboard-list",onClick:function(){return i("setScreen",{setScreen:10})}})})]}),!!u&&(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{content:"Send Station-Wide Announcement",icon:"bullhorn",onClick:function(){return i("setScreen",{setScreen:8})}})}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{content:s?"Speaker Off":"Speaker On",selected:!s,icon:s?"volume-mute":"volume-up",onClick:function(){return i("toggleSilent")}})})]})},l=function(e,t){var n,c,i=(0,r.useBackend)(t),l=i.act,d=i.data,u=d.department;switch(e.purpose){case"ASSISTANCE":n=d.assist_dept,c="Request assistance from another department";break;case"SUPPLIES":n=d.supply_dept,c="Request supplies from another department";break;case"INFO":n=d.info_dept,c="Relay information to another department"}return(0,o.createComponentVNode)(2,a.Section,{title:c,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return l("setScreen",{setScreen:0})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:n.filter((function(e){return e!==u})).map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Message",icon:"envelope",onClick:function(){return l("writeInput",{write:e,priority:1})}}),(0,o.createComponentVNode)(2,a.Button,{content:"High Priority",icon:"exclamation-circle",onClick:function(){return l("writeInput",{write:e,priority:2})}})]},e)}))})})},d=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act;c.data;switch(e.type){case"SUCCESS":n="Message sent successfully";break;case"FAIL":n="Request supplies from another department"}return(0,o.createComponentVNode)(2,a.Section,{title:n,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return i("setScreen",{setScreen:0})}})})},u=function(e,t){var n,c,i=(0,r.useBackend)(t),l=i.act,d=i.data;switch(e.type){case"MESSAGES":n=d.message_log,c="Message Log";break;case"SHIPPING":n=d.shipping_log,c="Shipping label print log"}return(0,o.createComponentVNode)(2,a.Section,{title:c,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return l("setScreen",{setScreen:0})}}),children:n.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.map((function(e,t){return(0,o.createVNode)(1,"div",null,e,0,null,t)})),(0,o.createVNode)(1,"hr")]},e)}))})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.recipient,d=i.message,u=i.msgVerified,s=i.msgStamped;return(0,o.createComponentVNode)(2,a.Section,{title:"Message Authentication",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return c("setScreen",{setScreen:0})}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recipient",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Validated by",color:"green",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stamped by",color:"blue",children:s})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:1,textAlign:"center",content:"Send Message",icon:"envelope",onClick:function(){return c("department",{department:l})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.message,d=i.announceAuth;return(0,o.createComponentVNode)(2,a.Section,{title:"Station-Wide Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return c("setScreen",{setScreen:0})}}),children:[(0,o.createComponentVNode)(2,a.Button,{content:l||"Edit Message",icon:"edit",onClick:function(){return c("writeAnnouncement")}}),d?(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"green",children:"ID verified. Authentication accepted."}):(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"Swipe your ID card to authenticate yourself."}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:1,textAlign:"center",content:"Send Announcement",icon:"bullhorn",disabled:!(d&&l),onClick:function(){return c("sendAnnouncement")}})]})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.shipDest,d=i.msgVerified,u=i.ship_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Print Shipping Label",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return c("setScreen",{setScreen:0})}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Validated by",children:d})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:1,textAlign:"center",content:"Print Label",icon:"print",disabled:!(l&&d),onClick:function(){return c("printLabel")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Destinations",mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:(0,o.createComponentVNode)(2,a.Button,{content:l===e?"Selected":"Select",selected:l===e,onClick:function(){return c("shipSelect",{shipSelect:e})}})},e)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CurrentLevels=void 0;var o=n(0),r=n(1),a=n(2);t.CurrentLevels=function(e,t){var n=(0,r.useBackend)(t).data.tech_levels;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createVNode)(1,"h3",null,"Current Research Levels:",16),n.map((function(e,t){var n=e.name,r=e.level,c=e.desc;return(0,o.createComponentVNode)(2,a.Box,{children:[t>0?(0,o.createComponentVNode)(2,a.Divider):null,(0,o.createComponentVNode)(2,a.Box,{children:n}),(0,o.createComponentVNode)(2,a.Box,{children:["* Level: ",r]}),(0,o.createComponentVNode)(2,a.Box,{children:["* Summary: ",c]})]},n)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.DataDiskMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50),i=n(62),l=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_data;return 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:"Level",children:l.level}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:l.desc})]}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Upload to Database",icon:"arrow-up",onClick:function(){return i("updt_tech")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Disk",icon:"trash",onClick:function(){return i("clear_tech")}}),(0,o.createComponentVNode)(2,s)]})]}):null},d=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_data;if(!l)return null;var d=l.name,u=l.lathe_types,m=l.materials,p=u.join(", ");return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d}),p?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lathe Types",children:p}):null,(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Materials"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["- ",(0,o.createVNode)(1,"span",null,e.name,0,{style:{"text-transform":"capitalize"}})," x ",e.amount]},e.name)})),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Upload to Database",icon:"arrow-up",onClick:function(){return i("updt_design")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Disk",icon:"trash",onClick:function(){return i("clear_design")}}),(0,o.createComponentVNode)(2,s)]})]})},u=function(e,t){var n=(0,r.useBackend)(t).data.disk_type;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{children:"This disk is empty."}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:[(0,o.createComponentVNode)(2,c.RndNavButton,{submenu:i.SUBMENU.DISK_COPY,icon:"arrow-down",content:"tech"===n?"Load Tech to Disk":"Load Design to Disk"}),(0,o.createComponentVNode)(2,s)]})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_type;return l?(0,o.createComponentVNode)(2,a.Button,{content:"Eject Disk",icon:"eject",onClick:function(){i("tech"===l?"eject_tech":"eject_design")}}):null},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.disk_data,i=n.disk_type;return(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk Contents",children:function(){if(!c)return(0,o.createComponentVNode)(2,u);switch(i){case"design":return(0,o.createComponentVNode)(2,d);case"tech":return(0,o.createComponentVNode)(2,l);default:return null}}()})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_type,d=c.to_copy;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{overflowY:"auto",overflowX:"hidden",maxHeight:"450px",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.sort((function(e,t){return e.name.localeCompare(t.name)})).map((function(e){var t=e.name,n=e.id;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:t,children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-down",content:"Copy to Disk",onClick:function(){i("tech"===l?"copy_tech":"copy_design",{id:n})}})},n)}))})})})};t.DataDiskMenu=function(e,t){return(0,r.useBackend)(t).data.disk_type?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,m)}}),(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.DISK_COPY,render:function(){return(0,o.createComponentVNode)(2,p)}})],4):null}},function(e,t,n){"use strict";t.__esModule=!0,t.DeconstructionMenu=void 0;var o=n(0),r=n(1),a=n(2);t.DeconstructionMenu=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.loaded_item;return c.linked_destroy?l?(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,title:"Deconstruction Menu",children:[(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:["Name: ",l.name]}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:(0,o.createVNode)(1,"h3",null,"Origin Tech:",16)}),(0,o.createComponentVNode)(2,a.LabeledList,{children:l.origin_tech.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* "+e.name,children:[e.object_level," ",e.current_level?(0,o.createFragment)([(0,o.createTextVNode)("(Current: "),e.current_level,(0,o.createTextVNode)(")")],0):null]},e.name)}))}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:(0,o.createVNode)(1,"h3",null,"Options:",16)}),(0,o.createComponentVNode)(2,a.Button,{content:"Deconstruct Item",icon:"unlink",onClick:function(){i("deconstruct")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Eject Item",icon:"eject",onClick:function(){i("eject_item")}})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Deconstruction Menu",children:"No item loaded. Standing by..."}):(0,o.createComponentVNode)(2,a.Box,{children:"NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE"})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheCategory=void 0;var o=n(0),r=n(1),a=n(2),c=n(50);t.LatheCategory=function(e,t){var n=(0,r.useBackend)(t),i=n.data,l=n.act,d=i.category,u=i.matching_designs,s=4===i.menu?"build":"imprint";return(0,o.createComponentVNode)(2,a.Section,{title:d,children:[(0,o.createComponentVNode)(2,c.LatheMaterials),(0,o.createComponentVNode)(2,a.Table,{className:"RndConsole__LatheCategory__MatchingDesigns",children:u.map((function(e){var t=e.id,n=e.name,r=e.can_build,c=e.materials;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:n,disabled:r<1,onClick:function(){return l(s,{id:t,amount:1})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:r>=5?(0,o.createComponentVNode)(2,a.Button,{content:"x5",onClick:function(){return l(s,{id:t,amount:5})}}):null}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:r>=10?(0,o.createComponentVNode)(2,a.Button,{content:"x10",onClick:function(){return l(s,{id:t,amount:10})}}):null}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:c.map((function(e){return(0,o.createFragment)([" | ",(0,o.createVNode)(1,"span",e.is_red?"color-red":null,[e.amount,(0,o.createTextVNode)(" "),e.name],0)],0)}))})]},t)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheChemicalStorage=void 0;var o=n(0),r=n(1),a=n(2);t.LatheChemicalStorage=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.loaded_chemicals,d=4===c.menu;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical Storage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Purge All",icon:"trash",onClick:function(){i(d?"disposeallP":"disposeallI")}}),(0,o.createComponentVNode)(2,a.LabeledList,{children:l.map((function(e){var t=e.volume,n=e.name,r=e.id;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* "+t+" of "+n,children:(0,o.createComponentVNode)(2,a.Button,{content:"Purge",icon:"trash",onClick:function(){i(d?"disposeP":"disposeI",{id:r})}})},r)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMainMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50);t.LatheMainMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.data,l=n.act,d=i.menu,u=i.categories,s=4===d?"Protolathe":"Circuit Imprinter";return(0,o.createComponentVNode)(2,a.Section,{title:s+" Menu",children:[(0,o.createComponentVNode)(2,c.LatheMaterials),(0,o.createComponentVNode)(2,c.LatheSearch),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Flex,{style:{"flex-basis":"50%","margin-bottom":"6px"},children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",content:e,onClick:function(){l("setCategory",{category:e})}})},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMaterials=void 0;var o=n(0),r=n(1),a=n(2);t.LatheMaterials=function(e,t){var n=(0,r.useBackend)(t).data,c=n.total_materials,i=n.max_materials,l=n.max_chemicals,d=n.total_chemicals;return(0,o.createComponentVNode)(2,a.Box,{className:"RndConsole__LatheMaterials",mb:"10px",children:(0,o.createComponentVNode)(2,a.Table,{width:"auto",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Material Amount:"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:c}),i?(0,o.createComponentVNode)(2,a.Table.Cell,{children:" / "+i}):null]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Chemical Amount:"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d}),l?(0,o.createComponentVNode)(2,a.Table.Cell,{children:" / "+l}):null]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMaterialStorage=void 0;var o=n(0),r=n(1),a=n(2);t.LatheMaterialStorage=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.loaded_materials;return(0,o.createComponentVNode)(2,a.Section,{className:"RndConsole__LatheMaterialStorage",title:"Material Storage",children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){var t=e.id,n=e.amount,r=e.name,l=function(e){var n=4===c.menu?"lathe_ejectsheet":"imprinter_ejectsheet";i(n,{id:t,amount:e})},d=Math.floor(n/2e3),u=n<1,s=1===d?"":"s";return(0,o.createComponentVNode)(2,a.Table.Row,{className:u?"color-grey":"color-yellow",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{minWidth:"210px",children:["* ",n," of ",r]}),(0,o.createComponentVNode)(2,a.Table.Cell,{minWidth:"110px",children:["(",d," sheet",s,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:n>=2e3?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"1x",icon:"eject",onClick:function(){return l(1)}}),(0,o.createComponentVNode)(2,a.Button,{content:"C",icon:"eject",onClick:function(){return l("custom")}}),n>=1e4?(0,o.createComponentVNode)(2,a.Button,{content:"5x",icon:"eject",onClick:function(){return l(5)}}):null,(0,o.createComponentVNode)(2,a.Button,{content:"All",icon:"eject",onClick:function(){return l(50)}})],0):null})]},t)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMenu=void 0;var o=n(0),r=n(1),a=n(189),c=n(50),i=n(2),l=n(62);t.LatheMenu=function(e,t){var n=(0,r.useBackend)(t).data,d=n.menu,u=n.linked_lathe,s=n.linked_imprinter;return 4!==d||u?5!==d||s?(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,c.LatheMainMenu)}}),(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.LATHE_CATEGORY,render:function(){return(0,o.createComponentVNode)(2,c.LatheCategory)}}),(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.LATHE_MAT_STORAGE,render:function(){return(0,o.createComponentVNode)(2,c.LatheMaterialStorage)}}),(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.LATHE_CHEM_STORAGE,render:function(){return(0,o.createComponentVNode)(2,c.LatheChemicalStorage)}})]}):(0,o.createComponentVNode)(2,i.Box,{children:"NO CIRCUIT IMPRITER LINKED TO CONSOLE"}):(0,o.createComponentVNode)(2,i.Box,{children:"NO PROTOLATHE LINKED TO CONSOLE"})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheSearch=void 0;var o=n(0),r=n(1),a=n(2);t.LatheSearch=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search...",onChange:function(e,t){return n("search",{to_search:t})}})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MainMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50),i=n(62);t.MainMenu=function(e,t){var n=(0,r.useBackend)(t).data,l=n.disk_type,d=n.linked_destroy,u=n.linked_lathe,s=n.linked_imprinter,m=n.tech_levels;return(0,o.createComponentVNode)(2,a.Section,{title:"Main Menu",children:[(0,o.createComponentVNode)(2,a.Flex,{className:"RndConsole__MainMenu__Buttons",direction:"column",align:"flex-start",children:[(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!l,menu:i.MENU.DISK,submenu:i.SUBMENU.MAIN,icon:"save",content:"Disk Operations"}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!d,menu:i.MENU.DESTROY,submenu:i.SUBMENU.MAIN,icon:"unlink",content:"Destructive Analyzer Menu"}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!u,menu:i.MENU.LATHE,submenu:i.SUBMENU.MAIN,icon:"print",content:"Protolathe Menu"}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!s,menu:i.MENU.IMPRINTER,submenu:i.SUBMENU.MAIN,icon:"print",content:"Circuit Imprinter Menu"}),(0,o.createComponentVNode)(2,c.RndNavButton,{menu:i.MENU.SETTINGS,submenu:i.SUBMENU.MAIN,icon:"cog",content:"Settings"})]}),(0,o.createComponentVNode)(2,a.Box,{mt:"12px"}),(0,o.createVNode)(1,"h3",null,"Current Research Levels:",16),(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){var t=e.name,n=e.level;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:n},t)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.RndNavbar=void 0;var o=n(0),r=n(50),a=n(2),c=n(62);t.RndNavbar=function(){return(0,o.createComponentVNode)(2,a.Box,{className:"RndConsole__RndNavbar",children:[(0,o.createComponentVNode)(2,r.RndRoute,{menu:function(e){return e!==c.MENU.MAIN},render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{menu:c.MENU.MAIN,submenu:c.SUBMENU.MAIN,icon:"reply",content:"Main Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{submenu:function(e){return e!==c.SUBMENU.MAIN},render:function(){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.DISK,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Disk Operations Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.LATHE,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Protolathe Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.IMPRINTER,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Circuit Imprinter Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.SETTINGS,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Settings Menu"})}})]})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:function(e){return e===c.MENU.LATHE||e===c.MENU.IMPRINTER},submenu:c.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.LATHE_MAT_STORAGE,icon:"arrow-up",content:"Material Storage"}),(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.LATHE_CHEM_STORAGE,icon:"arrow-up",content:"Chemical Storage"})]})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.RndNavButton=void 0;var o=n(0),r=n(1),a=n(2);t.RndNavButton=function(e,t){var n=e.icon,c=e.children,i=e.disabled,l=e.content,d=(0,r.useBackend)(t),u=d.data,s=d.act,m=u.menu,p=u.submenu,f=m,h=p;return null!==e.menu&&e.menu!==undefined&&(f=e.menu),null!==e.submenu&&e.submenu!==undefined&&(h=e.submenu),(0,o.createComponentVNode)(2,a.Button,{content:l,icon:n,disabled:i,onClick:function(){s("nav",{menu:f,submenu:h})},children:c})}},function(e,t,n){"use strict";t.__esModule=!0,t.SettingsMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50),i=n(62);t.SettingsMenu=function(e,t){var n=(0,r.useBackend)(t),l=n.data,d=n.act,u=l.sync,s=l.admin,m=l.linked_destroy,p=l.linked_lathe,f=l.linked_imprinter;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",align:"flex-start",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Sync Database with Network",icon:"sync",disabled:!u,onClick:function(){d("sync")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Connect to Research Network",icon:"plug",disabled:u,onClick:function(){d("togglesync")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u,icon:"unlink",content:"Disconnect from Research Network",onClick:function(){d("togglesync")}}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!u,content:"Device Linkage Menu",icon:"link",menu:i.MENU.SETTINGS,submenu:i.SUBMENU.SETTINGS_DEVICES}),1===s?(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation",content:"[ADMIN] Maximize Research Levels",onClick:function(){return d("maxresearch")}}):null]})})}}),(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.SETTINGS_DEVICES,render:function(){return(0,o.createComponentVNode)(2,a.Section,{title:"Device Linkage Menu",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"link",content:"Re-sync with Nearby Devices",onClick:function(){return d("find_device")}}),(0,o.createComponentVNode)(2,a.Box,{mt:"5px",children:(0,o.createVNode)(1,"h3",null,"Linked Devices:",16)}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[m?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* Destructive Analyzer",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",content:"Unlink",onClick:function(){return d("disconnect",{item:"destroy"})}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:"* No Destructive Analyzer Linked"}),p?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* Protolathe",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",content:"Unlink",onClick:function(){d("disconnect",{item:"lathe"})}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:"* No Protolathe Linked"}),f?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* Circuit Imprinter",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",content:"Unlink",onClick:function(){return d("disconnect",{item:"imprinter"})}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:"* No Circuit Imprinter Linked"})]})]})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);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,f=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!m&&(0,o.createComponentVNode)(2,a.Section,{title:"Emergency Self Destruct",children:[(0,o.createComponentVNode)(2,a.Button,{icon:s?"lock":"unlock",content:s?"Disable Safety":"Enable Safety",selected:s,onClick:function(){return l("arm",{})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bomb",disabled:s,content:"Destroy ALL Cyborgs",color:"bad",onClick:function(){return l("nuke",{})}})]}),(0,o.createComponentVNode)(2,i,{cyborgs:f,can_hack:u})]})})};var i=function(e,t){var n=e.cyborgs,c=(e.can_hack,(0,r.useBackend)(t)),i=c.act,l=c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!e.hackable&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return i("hackbot",{uid:e.uid})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",disabled:!l.auth,onClick:function(){return i("stopbot",{uid:e.uid})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",disabled:!l.auth,color:"bad",onClick:function(){return i("killbot",{uid:e.uid})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:(0,o.createComponentVNode)(2,a.Box,{children:e.locstring})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:e.health>50?"good":"bad",value:e.health/100})}),"number"==typeof e.charge&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:e.charge>30?"good":"bad",value:e.charge/100})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell Capacity",children:(0,o.createComponentVNode)(2,a.Box,{color:e.cell_capacity<3e4?"average":"good",children:e.cell_capacity})})],4)||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Power Cell"})}),!!e.is_hacked&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safeties",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DISABLED"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.uid)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters."})}},function(e,t,n){"use strict";t.__esModule=!0,t.Safe=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Safe=function(e,t){var n=(0,r.useBackend)(t),u=(n.act,n.data),s=u.dial,m=u.open;u.locked,u.contents;return(0,o.createComponentVNode)(2,c.Window,{theme:"safe",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Box,{className:"Safe--engraving",children:[(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{className:"Safe--engraving--hinge",top:"25%"}),(0,o.createComponentVNode)(2,a.Box,{className:"Safe--engraving--hinge",top:"75%"})]}),(0,o.createComponentVNode)(2,a.Icon,{className:"Safe--engraving--arrow",name:"long-arrow-alt-down",size:"3"}),(0,o.createVNode)(1,"br"),m?(0,o.createComponentVNode)(2,l):(0,o.createComponentVNode)(2,a.Box,{as:"img",className:"Safe--dial",src:"safe_dial.png",style:{transform:"rotate(-"+3.6*s+"deg)","z-index":0}})]}),!m&&(0,o.createComponentVNode)(2,d)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.dial,d=i.open,u=i.locked,s=function(e,t){return(0,o.createComponentVNode)(2,a.Button,{disabled:d||t&&!u,icon:"arrow-"+(t?"right":"left"),content:(t?"Right":"Left")+" "+e,iconRight:t,onClick:function(){return c(t?"turnleft":"turnright",{num:e})},style:{"z-index":10}})};return(0,o.createComponentVNode)(2,a.Box,{className:"Safe--dialer",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:u,icon:d?"lock":"lock-open",content:d?"Close":"Open",mb:"0.5rem",onClick:function(){return c("open")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Box,{position:"absolute",children:[s(50),s(10),s(1)]}),(0,o.createComponentVNode)(2,a.Box,{className:"Safe--dialer--right",position:"absolute",right:"5px",children:[s(1,!0),s(10,!0),s(50,!0)]}),(0,o.createComponentVNode)(2,a.Box,{className:"Safe--dialer--number",children:l})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.contents;return(0,o.createComponentVNode)(2,a.Box,{className:"Safe--contents",overflow:"auto",children:i.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{mb:"0.5rem",onClick:function(){return c("retrieve",{index:t+1})},children:[(0,o.createComponentVNode)(2,a.Box,{as:"img",src:e.sprite+".png",verticalAlign:"middle",ml:"-6px",mr:"0.5rem"}),e.name]}),(0,o.createVNode)(1,"br")],4,e)}))})},d=function(e,t){return(0,o.createComponentVNode)(2,a.Section,{className:"Safe--help",title:"Safe opening instructions (because you all keep forgetting)",children:[(0,o.createComponentVNode)(2,a.Box,{children:["1. Turn the dial left to the first number.",(0,o.createVNode)(1,"br"),"2. Turn the dial right to the second number.",(0,o.createVNode)(1,"br"),"3. Continue repeating this process for each number, switching between left and right each time.",(0,o.createVNode)(1,"br"),"4. Open the safe."]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:"To lock fully, turn the dial to the left after closing the safe."})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.satellites,u=l.notice,s=l.meteor_shield,m=l.meteor_shield_coverage,p=l.meteor_shield_coverage_max,f=l.meteor_shield_coverage_percentage;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[s&&(0,o.createComponentVNode)(2,a.Section,{title:"Station Shield Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:f>=100?"good":"average",value:m,maxValue:p,children:[f," %"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Network Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alert",color:"red",children:l.notice}),d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"#"+e.id,children:[e.mode," ",(0,o.createComponentVNode)(2,a.Button,{content:e.active?"Deactivate":"Activate",icon:"arrow-circle-right",onClick:function(){return i("toggle",{id:e.id})}})]},e.id)}))]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SecurityRecords=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(75),l=n(4),d=n(49),u=n(132),s=n(133),m=n(135),p={"*Execute*":"execute","*Arrest*":"arrest",Incarcerated:"incarcerated",Parolled:"parolled",Released:"released",Demote:"demote",Search:"search",Monitor:"monitor"},f=function(e,t){(0,d.modalOpen)(e,"edit",{field:t.edit,value:t.value})};t.SecurityRecords=function(e,t){var n,r=(0,a.useBackend)(t),i=(r.act,r.data),p=i.loginState,f=i.currentPage;return p.logged_in?(1===f?n=(0,o.createComponentVNode)(2,C):2===f?n=(0,o.createComponentVNode)(2,g):3===f&&(n=(0,o.createComponentVNode)(2,V)),(0,o.createComponentVNode)(2,l.Window,{theme:"security",resizable:!0,children:[(0,o.createComponentVNode)(2,d.ComplexModal),(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,u.LoginInfo),(0,o.createComponentVNode)(2,m.TemporaryNotice),(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,c.Section,{height:"100%",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,l.Window,{theme:"security",resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,s.LoginScreen)})})};var h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.currentPage,d=i.general;return(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===l,onClick:function(){return r("page",{page:1})},children:[(0,o.createComponentVNode)(2,c.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===l,onClick:function(){return r("page",{page:2})},children:[(0,o.createComponentVNode)(2,c.Icon,{name:"wrench"}),"Record Maintenance"]}),3===l&&d&&!d.empty&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===l,children:[(0,o.createComponentVNode)(2,c.Icon,{name:"file"}),"Record: ",d.fields[0].value]})]})},C=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.records,d=(0,a.useLocalState)(t,"searchText",""),u=d[0],s=(d[1],(0,a.useLocalState)(t,"sortId","name")),m=s[0],f=(s[1],(0,a.useLocalState)(t,"sortOrder",!0)),h=f[0];f[1];return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,b),(0,o.createComponentVNode)(2,c.Section,{flexGrow:"1",mt:"0.5rem",children:(0,o.createComponentVNode)(2,c.Table,{className:"SecurityRecords__list",children:[(0,o.createComponentVNode)(2,c.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,N,{id:"name",children:"Name"}),(0,o.createComponentVNode)(2,N,{id:"id",children:"ID"}),(0,o.createComponentVNode)(2,N,{id:"rank",children:"Assignment"}),(0,o.createComponentVNode)(2,N,{id:"fingerprint",children:"Fingerprint"}),(0,o.createComponentVNode)(2,N,{id:"status",children:"Criminal Status"})]}),l.filter((0,r.createSearch)(u,(function(e){return e.name+"|"+e.id+"|"+e.rank+"|"+e.fingerprint+"|"+e.status}))).sort((function(e,t){var n=h?1:-1;return e[m].localeCompare(t[m])*n})).map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"SecurityRecords__listRow--"+p[e.status],onClick:function(){return i("view",{uid_gen:e.uid_gen,uid_sec:e.uid_sec})},children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user"})," ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.rank}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.fingerprint}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status})]},e.id)}))]})})]})},N=function(e,t){var n=(0,a.useLocalState)(t,"sortId","name"),r=n[0],i=n[1],l=(0,a.useLocalState)(t,"sortOrder",!0),d=l[0],u=l[1],s=e.id,m=e.children;return(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{color:r!==s&&"transparent",width:"100%",onClick:function(){r===s?u(!d):(i(s),u(!0))},children:[m,r===s&&(0,o.createComponentVNode)(2,c.Icon,{name:d?"sort-up":"sort-down",ml:"0.25rem;"})]})})},b=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data.isPrinting,u=(0,a.useLocalState)(t,"searchText",""),s=(u[0],u[1]);return(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,i.FlexItem,{children:[(0,o.createComponentVNode)(2,c.Button,{content:"New Record",icon:"plus",onClick:function(){return r("new_general")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:l?"spinner":"print",iconSpin:!!l,content:"Print Cell Log",ml:"0.25rem",onClick:function(){return(0,d.modalOpen)(t,"print_cell_log")}})]}),(0,o.createComponentVNode)(2,i.FlexItem,{grow:"1",ml:"0.5rem",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search by Name, ID, Assignment, Fingerprint, Status",width:"100%",onInput:function(e,t){return s(t)}})})]})},g=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{disabled:!0,icon:"download",content:"Backup to Disk",tooltip:"This feature is not available.",tooltipPosition:"right"}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{disabled:!0,icon:"upload",content:"Upload from Disk",tooltip:"This feature is not available.",tooltipPosition:"right",my:"0.5rem"}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button.Confirm,{icon:"trash",content:"Delete All Security Records",onClick:function(){return n("delete_security_all")},mb:"0.5rem"}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button.Confirm,{icon:"trash",content:"Delete All Cell Logs",onClick:function(){return n("delete_cell_logs")}})]})},V=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.isPrinting,d=i.general,u=i.security;return d&&d.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"General Data",level:2,mt:"-6px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:l?"spinner":"print",iconSpin:!!l,content:"Print Record",onClick:function(){return r("print_record")}}),(0,o.createComponentVNode)(2,c.Button.Confirm,{icon:"trash",tooltip:"WARNING: This will also delete the Security and Medical records associated to this crew member!",tooltipPosition:"bottom-left",content:"Delete Record",onClick:function(){return r("delete_general")}})],4),children:(0,o.createComponentVNode)(2,v)}),(0,o.createComponentVNode)(2,c.Section,{title:"Security Data",level:2,mt:"-12px",buttons:(0,o.createComponentVNode)(2,c.Button.Confirm,{icon:"trash",disabled:u.empty,content:"Delete Record",onClick:function(){return r("delete_security")}}),children:(0,o.createComponentVNode)(2,y)})],4):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"General records lost!"})},v=function(e,t){var n=(0,a.useBackend)(t).data.general;return n&&n.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{float:"left",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:n.fields.map((function(e,n){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.field,children:[(0,r.decodeHtmlEntities)(""+e.value),!!e.edit&&(0,o.createComponentVNode)(2,c.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return f(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,c.Box,{position:"absolute",right:"0",textAlign:"right",children:!!n.has_photos&&n.photos.map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e,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,c.Box,{color:"bad",children:"General records lost!"})},y=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.security;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.field,children:[(0,r.decodeHtmlEntities)(e.value),!!e.edit&&(0,o.createComponentVNode)(2,c.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return f(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,c.Section,{title:"Comments/Log",level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"comment",content:"Add Entry",onClick:function(){return(0,d.modalOpen)(t,"comment_add")}}),children:0===l.comments.length?(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{color:"label",display:"inline",children:e.header||"Auto-generated"}),(0,o.createVNode)(1,"br"),e.text||e,(0,o.createComponentVNode)(2,c.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return i("comment_delete",{id:t+1})}})]},t)}))})],4):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:["Security records lost!",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Create New Record",mt:"0.5rem",onClick:function(){return i("new_security")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(77);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.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:"Location",children:d.status?d.status:(0,o.createComponentVNode)(2,a.NoticeBox,{color:"red",children:"Shuttle Missing"})}),!!d.shuttle&&(!!d.docking_ports_len&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Send to ",children:d.docking_ports.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-right",content:e.name,onClick:function(){return l("move",{move:e.id})}},e.name)}))})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Status",color:"red",children:(0,o.createComponentVNode)(2,a.NoticeBox,{color:"red",children:"Shuttle Locked"})}),!!d.admin_controlled&&(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Authorization",children:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-circle",content:"Request Authorization",disabled:!d.status,onClick:function(){return l("request")}})})],0))]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulator=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ShuttleManipulator=function(e,t){var n=(0,r.useLocalState)(t,"tabIndex",0),u=n[0],s=n[1];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===u,onClick:function(){return s(0)},icon:"info-circle",content:"Status"},"Status"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},icon:"file-import",content:"Templates"},"Templates"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},icon:"tools",content:"Modification"},"Modification")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,i);case 1:return(0,o.createComponentVNode)(2,l);case 2:return(0,o.createComponentVNode)(2,d);default:return"WE SHOULDN'T BE HERE!"}}(u)]})})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.shuttles;return(0,o.createComponentVNode)(2,a.Box,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:e.id}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Timer",children:e.timeleft}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Mode",children:e.mode}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Status",children:e.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Jump To",icon:"location-arrow",onClick:function(){return c("jump_to",{type:"mobile",id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Fast Travel",icon:"fast-forward",onClick:function(){return c("fast_travel",{id:e.id})}})]})]})},e.name)}))})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.templates_tabs,d=i.existing_shuttle,u=i.templates;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===d.id,icon:"file",content:e,onClick:function(){return c("select_template_category",{cat:e})}},e)}))}),!!d&&u[d.id].templates.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.description&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:e.description}),e.admin_notes&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{content:"Load Template",icon:"download",onClick:function(){return c("select_template",{shuttle_id:e.shuttle_id})}})})]})},e.name)}))]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.existing_shuttle,d=i.selected;return(0,o.createComponentVNode)(2,a.Box,{children:[l?(0,o.createComponentVNode)(2,a.Section,{title:"Selected Shuttle: "+l.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.status}),l.timer&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timer",children:l.timeleft}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{content:"Jump To",icon:"location-arrow",onClick:function(){return c("jump_to",{type:"mobile",id:l.id})}})})]})}):(0,o.createComponentVNode)(2,a.Section,{title:"Selected Shuttle: None"}),d?(0,o.createComponentVNode)(2,a.Section,{title:"Selected Template: "+d.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.description&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),d.admin_notes&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Admin Notes",children:d.admin_notes}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Preview",icon:"eye",onClick:function(){return c("preview",{shuttle_id:d.shuttle_id})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Load",icon:"download",onClick:function(){return c("load",{shuttle_id:d.shuttle_id})}})]})]})}):(0,o.createComponentVNode)(2,a.Section,{title:"Selected Template: None"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4),l=[["good","Alive"],["average","Critical"],["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,a.useBackend)(t),r=(n.act,n.data.hasOccupant?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,N));return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{className:"Layout__content--flexColumn",children:[r,(0,o.createComponentVNode)(2,h)]})})};var m=function(e,t){var n=(0,a.useBackend)(t);n.act,n.data.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,C)],4)},p=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=d.occupant,m=d.auto_eject_dead;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{color:"label",display:"inline",children:"Auto-eject if dead:\xa0"}),(0,o.createComponentVNode)(2,c.Button,{icon:m?"toggle-on":"toggle-off",selected:m,content:m?"On":"Off",onClick:function(){return i("auto_eject_dead_"+(m?"off":"on"))}}),(0,o.createComponentVNode)(2,c.Button,{icon:"user-slash",content:"Eject",onClick:function(){return i("ejectify")}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,c.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,c.LabeledList.Item,{label:"Status",color:l[u.stat][0],children:l[u.stat][1]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,c.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,c.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,c.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,c.LabeledList.Item,{label:"Pulse",verticalAlign:"middle",children:[u.pulse," BPM"]})],4)]})})},f=function(e,t){var n=(0,a.useBackend)(t).data.occupant;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant Damage",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e[0],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]],0)},t)},t)}))})})},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.hasOccupant,d=i.isBeakerLoaded,u=i.beakerMaxSpace,s=i.beakerFreeSpace,m=i.dialysis&&s>0;return(0,o.createComponentVNode)(2,c.Section,{title:"Dialysis",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:!d||s<=0||!l,selected:m,icon:m?"toggle-on":"toggle-off",content:m?"Active":"Inactive",onClick:function(){return r("togglefilter")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!d,icon:"eject",content:"Eject",onClick:function(){return r("removebeaker")}})],4),children:d?(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Remaining Space",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:u,value:s/u,ranges:{good:[.5,Infinity],average:[.25,.5],bad:[-Infinity,.25]},children:[s,"u"]})})}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No beaker loaded."})})},C=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.occupant,d=i.chemicals,u=i.maxchem,s=i.amounts;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant Chemicals",flexGrow:"1",children:d.map((function(e,t){var n,a="";return e.overdosing?(a="bad",n=(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"exclamation-circle"}),"\xa0 Overdosing!"]})):e.od_warning&&(a="average",n=(0,o.createComponentVNode)(2,c.Box,{color:"average",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"exclamation-triangle"}),"\xa0 Close to overdosing"]})),(0,o.createComponentVNode)(2,c.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,c.Section,{title:e.title,level:"3",mx:"0",lineHeight:"18px",buttons:n,children:(0,o.createComponentVNode)(2,c.Flex,{align:"flex-start",children:[(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:u,value:e.occ_amount/u,color:a,title:"Amount of chemicals currently inside the occupant / Total amount injectable by this machine",mr:"0.5rem",children:[e.pretty_amount,"/",u,"u"]}),s.map((function(t,n){return(0,o.createComponentVNode)(2,c.Button,{disabled:!e.injectable||e.occ_amount+t>u||2===l.stat,icon:"syringe",content:"Inject "+t+"u",title:"Inject "+t+"u of "+e.title+" into the occupant",mb:"0",height:"19px",onClick:function(){return r("chemical",{chemid:e.id,amount:t})}},n)}))]})})},t)}))})},N=function(e,t){return(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,c.Flex,{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 occupant detected."]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SlotMachine=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SlotMachine=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data;return null===d.money?(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:"Could not scan your card or could not find account!"}),(0,o.createComponentVNode)(2,a.Box,{children:"Please wear or hold your ID and try again."})]})})}):(n=1===d.plays?d.plays+" player has tried their luck today!":d.plays+" players have tried their luck today!",(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{lineHeight:2,children:n}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Credits Remaining",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.money})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"50 credits to spin",children:(0,o.createComponentVNode)(2,a.Button,{icon:"coins",disabled:d.working,content:d.working?"Spinning...":"Spin",onClick:function(){return l("spin")}})})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,lineHeight:2,color:d.resultlvl,children:d.result})]})})}))}},function(e,t,n){"use strict";t.__esModule=!0,t.Smartfridge=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Smartfridge=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.secure,u=l.can_dry,s=l.drying,m=l.contents;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Secure",children:(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Secure Access: Please have your identification ready."})}),!!u&&(0,o.createComponentVNode)(2,a.Section,{title:"Drying rack",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,onClick:function(){return i("drying")}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Contents",children:[!m&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:" No products loaded. "}),!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"45%",children:e.display_name}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"25%",children:["(",e.quantity," in stock)"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"30%",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-down",tooltip:"Dispense one.",content:"1",onClick:function(){return i("vend",{index:e.vend,amount:1})}}),(0,o.createComponentVNode)(2,a.NumberInput,{width:"40px",minValue:0,value:0,maxValue:e.quantity,step:1,stepPixelSize:3,onChange:function(t,n){return i("vend",{index:e.vend,amount:n})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-down",content:"All",tooltip:"Dispense all. ",onClick:function(){return i("vend",{index:e.vend,amount:e.quantity})}})]})]},e)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(1),a=n(2),c=n(95),i=n(4);t.Smes=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.capacityPercent,s=(d.capacity,d.charge),m=d.inputAttempt,p=d.inputting,f=d.inputLevel,h=d.inputLevelMax,C=d.inputAvailable,N=d.outputAttempt,b=d.outputting,g=d.outputLevel,V=d.outputLevelMax,v=d.outputUsed,y=(u>=100?"good":p&&"average")||"bad",_=(b?"good":s>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*u,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"sync-alt":"times",selected:m,onClick:function(){return l("tryinput")},children:m?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:y,children:(u>=100?"Fully Charged":p&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===f,onClick:function(){return l("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===f,onClick:function(){return l("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:f/1e3,fillValue:C/1e3,minValue:0,maxValue:h/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onChange:function(e,t){return l("input",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:f===h,onClick:function(){return l("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:f===h,onClick:function(){return l("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(C)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:N?"power-off":"times",selected:N,onClick:function(){return l("tryoutput")},children:N?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:_,children:b?"Sending":s>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===g,onClick:function(){return l("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===g,onClick:function(){return l("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:g/1e3,minValue:0,maxValue:V/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onChange:function(e,t){return l("output",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:g===V,onClick:function(){return l("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:g===V,onClick:function(){return l("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(v)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SolarControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SolarControl=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.generated,u=l.generated_ratio,s=l.tracking_state,m=l.tracking_rate,p=l.connected_panels,f=l.connected_tracker,h=l.cdir,C=l.direction,N=l.rotating_direction;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Scan for new hardware",onClick:function(){return i("refresh")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Solar tracker",color:f?"good":"bad",children:f?"OK":"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Solar panels",color:p>0?"good":"bad",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Panel orientation",children:[h,"\xb0 (",C,")"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracker rotation",children:[2===s&&(0,o.createComponentVNode)(2,a.Box,{children:" Automated "}),1===s&&(0,o.createComponentVNode)(2,a.Box,{children:[" ",m,"\xb0/h (",N,") "]}),0===s&&(0,o.createComponentVNode)(2,a.Box,{children:" Tracker offline "})]})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Panel orientation",children:[2!==s&&(0,o.createComponentVNode)(2,a.NumberInput,{unit:"\xb0",step:1,stepPixelSize:1,minValue:0,maxValue:359,value:h,onDrag:function(e,t){return i("cdir",{cdir:t})}}),2===s&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"19px",children:" Automated "})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracker status",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===s,onClick:function(){return i("track",{track:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===s,onClick:function(){return i("track",{track:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===s,disabled:!f,onClick:function(){return i("track",{track:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracker rotation",children:[1===s&&(0,o.createComponentVNode)(2,a.NumberInput,{unit:"\xb0/h",step:1,stepPixelSize:1,minValue:-7200,maxValue:7200,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("tdir",{tdir:t})}}),0===s&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"19px",children:" Tracker offline "}),2===s&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"19px",children:" Automated "})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{mb:.5,title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-circle-right",content:"Jump",onClick:function(){return i("jump",{ID:e.uids})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-circle-right",content:"Spawn",onClick:function(){return i("spawn",{ID:e.uids})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{style:{"white-space":"pre-wrap"},mb:1,fontSize:"16px",children:e.desc}),!!e.fluff&&(0,o.createComponentVNode)(2,a.Box,{style:{"white-space":"pre-wrap"},textColor:"#878787",fontSize:"14px",children:e.fluff}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{style:{"white-space":"pre-wrap"},mt:1,bold:!0,color:"red",fontSize:"18px",children:e.important_info})]},e.name)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.SupermatterMonitor=void 0;var o=n(0),r=n(26),a=n(43),c=n(16),i=n(1),l=n(2),d=n(39),u=n(4);n(76);t.SupermatterMonitor=function(e,t){var n=(0,i.useBackend)(t);n.act;return 0===n.data.active?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,p)};var s=function(e){return Math.log2(16+Math.max(0,e))-4},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,u.Window,{children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.supermatter_id+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("view",{view:e.supermatter_id})}})})]},e.supermatter_id)}))})})})})},p=function(e,t){var n=(0,i.useBackend)(t),m=n.act,p=n.data,f=(p.active,p.SM_integrity),h=p.SM_power,C=p.SM_ambienttemp,N=p.SM_ambientpressure,b=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(p.gases||[]),g=Math.max.apply(Math,[1].concat(b.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,u.Window,{children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:f/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(h)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(C),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(C)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(N),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(N)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return m("back")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:b.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SyndicateComputerSimple=void 0;var o=n(0),r=n(1),a=n(2),c=(n(77),n(4));t.SyndicateComputerSimple=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:l.rows.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.title,buttons:(0,o.createComponentVNode)(2,a.Button,{content:e.buttontitle,disabled:e.buttondisabled,tooltip:e.buttontooltip,tooltipPosition:"left",onClick:function(){return i(e.buttonact)}}),children:[e.status,!!e.bullets&&(0,o.createComponentVNode)(2,a.Box,{children:e.bullets.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})]},e.title)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TEG=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e){return e.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")};t.TEG=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data;return d.error?(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Error",children:[d.error,(0,o.createComponentVNode)(2,a.Button,{icon:"circle",content:"Recheck",onClick:function(){return l("check")}})]})})}):(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Cold Loop ("+d.cold_dir+")",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cold Inlet",children:[i(d.cold_inlet_temp)," K, ",i(d.cold_inlet_pressure)," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cold Outlet",children:[i(d.cold_outlet_temp)," K, ",i(d.cold_outlet_pressure)," kPa"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hot Loop ("+d.hot_dir+")",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hot Inlet",children:[i(d.hot_inlet_temp)," K, ",i(d.hot_inlet_pressure)," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hot Outlet",children:[i(d.hot_outlet_temp)," K, ",i(d.hot_outlet_pressure)," kPa"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Output",children:[i(d.output_power)," W",!!d.warning_switched&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Warning: Cold inlet temperature exceeds hot inlet temperature."}),!!d.warning_cold_pressure&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Warning: Cold circulator inlet pressure is under 1,000 kPa."}),!!d.warning_hot_pressure&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Warning: Hot circulator inlet pressure is under 1,000 kPa."})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TachyonArrayContent=t.TachyonArray=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TachyonArray=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.records,s=void 0===u?[]:u,m=d.explosion_target,p=d.toxins_tech,f=d.printing;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shift's Target",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Toxins Level",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Administration",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print All Logs",disabled:!s.length||f,align:"center",onClick:function(){return l("print_logs")}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",content:"Delete All Logs",disabled:!s.length,color:"bad",align:"center",onClick:function(){return l("delete_logs")}})]})]})}),s.length?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Records"})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.records,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Logged Explosions",children:(0,o.createComponentVNode)(2,a.Flex,{children:(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Time"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Epicenter"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Actual Size"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Theoretical Size"})]}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.logged_time}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.epicenter}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.actual_size_message}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.theoretical_size_message}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",content:"Delete",color:"bad",onClick:function(){return c("delete_record",{index:e.index})}})})]},e.index)}))]})})})})};t.TachyonArrayContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Tank=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data;return n=d.has_mask?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.connected?"check":"times",content:d.connected?"Internals On":"Internals Off",selected:d.connected,onClick:function(){return l("internals")}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",color:"red",children:"No Mask Equipped"}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Tank Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.tankPressure/1013,ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]},children:d.tankPressure+" kPa"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Pressure",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:d.ReleasePressure===d.minReleasePressure,tooltip:"Min",onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.releasePressure),width:"65px",unit:"kPa",minValue:d.minReleasePressure,maxValue:d.maxReleasePressure,onChange:function(e,t){return l("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:d.ReleasePressure===d.maxReleasePressure,tooltip:"Max",onClick:function(){return l("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"",disabled:d.ReleasePressure===d.defaultReleasePressure,tooltip:"Reset",onClick:function(){return l("pressure",{pressure:"reset"})}})]}),n]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TankDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.o_tanks,u=l.p_tanks;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Dispense Oxygen Tank ("+d+")",disabled:0===d,icon:"arrow-circle-down",onClick:function(){return i("oxygen")}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Dispense Plasma Tank ("+u+")",disabled:0===u,icon:"arrow-circle-down",onClick:function(){return i("plasma")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TcommsCore=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TcommsCore=function(e,t){var n=(0,r.useBackend)(t),s=(n.act,n.data.ion),m=(0,r.useLocalState)(t,"tabIndex",0),p=m[0],f=m[1];return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[1===s&&(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===p,onClick:function(){return f(0)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"wrench"}),"Configuration"]},"ConfigPage"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===p,onClick:function(){return f(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"link"}),"Device Linkage"]},"LinkagePage"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===p,onClick:function(){return f(2)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-times"}),"User Filtering"]},"FilterPage")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,l);case 1:return(0,o.createComponentVNode)(2,d);case 2:return(0,o.createComponentVNode)(2,u);default:return"SOMETHING WENT VERY WRONG PLEASE AHELP"}}(p)]})})};var i=function(){return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: An Ionospheric overload has occured. Please wait for the machine to reboot. This cannot be manually done."})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.active,d=i.sectors_available,u=i.nttc_toggle_jobs,s=i.nttc_toggle_job_color,m=i.nttc_toggle_name_color,p=i.nttc_toggle_command_bold,f=i.nttc_job_indicator_type,h=i.nttc_setting_language,C=i.network_id;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:"Machine Power",children:(0,o.createComponentVNode)(2,a.Button,{content:l?"On":"Off",selected:l,icon:"power-off",onClick:function(){return c("toggle_active")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sector Coverage",children:d})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Radio Configuration",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Job Announcements",children:(0,o.createComponentVNode)(2,a.Button,{content:u?"On":"Off",selected:u,icon:"user-tag",onClick:function(){return c("nttc_toggle_jobs")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Job Departmentalisation",children:(0,o.createComponentVNode)(2,a.Button,{content:s?"On":"Off",selected:s,icon:"clipboard-list",onClick:function(){return c("nttc_toggle_job_color")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name Departmentalisation",children:(0,o.createComponentVNode)(2,a.Button,{content:m?"On":"Off",selected:m,icon:"user-tag",onClick:function(){return c("nttc_toggle_name_color")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Command Amplification",children:(0,o.createComponentVNode)(2,a.Button,{content:p?"On":"Off",selected:p,icon:"volume-up",onClick:function(){return c("nttc_toggle_command_bold")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Advanced",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Job Announcement Format",children:(0,o.createComponentVNode)(2,a.Button,{content:f||"Unset",selected:f,icon:"pencil-alt",onClick:function(){return c("nttc_job_indicator_type")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Language Conversion",children:(0,o.createComponentVNode)(2,a.Button,{content:h||"Unset",selected:h,icon:"globe",onClick:function(){return c("nttc_setting_language")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Network ID",children:(0,o.createComponentVNode)(2,a.Button,{content:C||"Unset",selected:C,icon:"server",onClick:function(){return c("network_id")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Maintenance",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Import Configuration",icon:"file-import",onClick:function(){return c("import")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Export Configuration",icon:"file-export",onClick:function(){return c("export")}})]})],4)},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.link_password,d=i.relay_entries;return(0,o.createComponentVNode)(2,a.Section,{title:"Device Linkage",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Linkage Password",children:(0,o.createComponentVNode)(2,a.Button,{content:l||"Unset",selected:l,icon:"lock",onClick:function(){return c("change_password")}})})}),(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network Address"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network ID"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Sector"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Unlink"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.addr}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.net_id}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.sector}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:1===e.status?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Online"}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Offline"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Unlink",icon:"unlink",onClick:function(){return c("unlink",{addr:e.addr})}})})]},e.addr)}))]})]})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.filtered_users;return(0,o.createComponentVNode)(2,a.Section,{title:"User Filtering",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Add User",icon:"user-plus",onClick:function(){return c("add_filter")}}),children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{style:{width:"90%"},children:"User"}),(0,o.createComponentVNode)(2,a.Table.Cell,{style:{width:"10%"},children:"Actions"})]}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Remove",icon:"user-times",onClick:function(){return c("remove_filter",{user:e})}})})]},e)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TcommsRelay=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TcommsRelay=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.linked,m=u.active,p=u.network_id;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Relay Configuration",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Power",children:(0,o.createComponentVNode)(2,a.Button,{content:m?"On":"Off",selected:m,icon:"power-off",onClick:function(){return d("toggle_active")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Network ID",children:(0,o.createComponentVNode)(2,a.Button,{content:p||"Unset",selected:p,icon:"server",onClick:function(){return d("network_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Link Status",children:1===s?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Linked"}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Unlinked"})})]})}),1===s?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,l)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.linked_core_id,d=i.linked_core_addr,u=i.hidden_link;return(0,o.createComponentVNode)(2,a.Section,{title:"Link Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Linked Core ID",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Linked Core Address",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hidden Link",children:(0,o.createComponentVNode)(2,a.Button,{content:u?"Yes":"No",icon:u?"eye-slash":"eye",selected:u,onClick:function(){return c("toggle_hidden_link")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unlink",children:(0,o.createComponentVNode)(2,a.Button,{content:"Unlink",icon:"unlink",color:"red",onClick:function(){return c("unlink")}})})]})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.cores;return(0,o.createComponentVNode)(2,a.Section,{title:"Detected Cores",children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network Address"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network ID"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Sector"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Link"})]}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.addr}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.net_id}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.sector}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Link",icon:"link",onClick:function(){return c("link",{addr:e.addr})}})})]},e.addr)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(178);t.Teleporter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.targetsTeleport?d.targetsTeleport:{},s=d.calibrated,m=d.calibrating,p=d.powerstation,f=d.regime,h=d.teleporterhub,C=d.target,N=d.locked;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(!p||!h)&&(0,o.createComponentVNode)(2,a.Section,{title:"Error",children:[h,!p&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:" Powerstation not linked "}),p&&!h&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:" Teleporter hub not linked "})]}),p&&h&&(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Regime",children:[(0,o.createComponentVNode)(2,a.Button,{tooltip:"Teleport to another teleport hub. ",color:1===f?"good":null,onClick:function(){return l("setregime",{regime:1})},children:"Gate"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"One-way teleport. ",color:0===f?"good":null,onClick:function(){return l("setregime",{regime:0})},children:"Teleporter"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"Teleport to a location stored in a GPS device. ",color:2===f?"good":null,disabled:!N,onClick:function(){return l("setregime",{regime:2})},children:"GPS"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport target",children:[0===f&&(0,o.createComponentVNode)(2,a.Dropdown,{width:"220px",selected:C,options:Object.keys(u),color:"None"!==C?"default":"bad",onSelected:function(e){return l("settarget",{x:u[e].x,y:u[e].y,z:u[e].z})}}),1===f&&(0,o.createComponentVNode)(2,a.Dropdown,{width:"220px",selected:C,options:Object.keys(u),color:"None"!==C?"default":"bad",onSelected:function(e){return l("settarget",{x:u[e].x,y:u[e].y,z:u[e].z})}}),2===f&&(0,o.createComponentVNode)(2,a.Box,{children:C})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Calibration",children:["None"!==C&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,i.GridColumn,{size:"2",children:m&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"In Progress"})||s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Optimal"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Sub-Optimal"})}),(0,o.createComponentVNode)(2,i.GridColumn,{size:"3",children:(0,o.createComponentVNode)(2,a.Box,{"class":"ml-1",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",tooltip:"Calibrates the hub. Accidents may occur when the calibration is not optimal.",disabled:!(!s&&!m),onClick:function(){return l("calibrate")}})})})]}),"None"===C&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"21px",children:"No target set"})]})]})}),!!(N&&p&&h&&2===f)&&(0,o.createComponentVNode)(2,a.Section,{title:"GPS",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",justify:"space-around",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Upload GPS data",tooltip:"Loads the GPS data from the device.",icon:"upload",onClick:function(){return l("load")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Eject",tooltip:"Ejects the GPS device",icon:"eject",onClick:function(){return l("eject")}})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ThermoMachine=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4);t.ThermoMachine=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{title:"Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.temperature,format:function(e){return(0,r.toFixed)(e,2)}})," K"]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.pressure,format:function(e){return(0,r.toFixed)(e,2)}})," kPa"]})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Setting",children:(0,o.createComponentVNode)(2,c.Button,{icon:d.cooling?"temperature-low":"temperature-high",content:d.cooling?"Cooling":"Heating",selected:d.cooling,onClick:function(){return l("cooling")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,c.NumberInput,{animated:!0,value:Math.round(d.target),unit:"K",width:"62px",minValue:Math.round(d.min),maxValue:Math.round(d.max),step:5,stepPixelSize:3,onDrag:function(e,t){return l("target",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"fast-backward",disabled:d.target===d.min,title:"Minimum temperature",onClick:function(){return l("target",{target:d.min})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",disabled:d.target===d.initial,title:"Room Temperature",onClick:function(){return l("target",{target:d.initial})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"fast-forward",disabled:d.target===d.max,title:"Maximum Temperature",onClick:function(){return l("target",{target:d.max})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TransferValve=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TransferValve=function(e,t){var n=(0,r.useBackend)(t),i=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,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Valve Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"unlock":"lock",content:m?"Open":"Closed",disabled:!d||!u,onClick:function(){return i("toggle")}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Assembly",buttons:(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"150px",icon:"cog",content:"Configure Assembly",disabled:!s,onClick:function(){return i("device")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:s,disabled:!s,onClick:function(){return i("remove_device")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Attach Assembly"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Attachment One",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:d,disabled:!d,onClick:function(){return i("tankone")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Attach Tank"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Attachment Two",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:u,disabled:!u,onClick:function(){return i("tanktwo")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Attach Tank"})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Uplink=void 0;var o=n(0),r=n(26),a=n(43),c=n(20),i=n(1),l=n(2),d=n(75),u=n(4),s=n(49),m=function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,p);case 1:return(0,o.createComponentVNode)(2,f);default:return"SOMETHING WENT VERY WRONG PLEASE AHELP"}};t.Uplink=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=(n.data,(0,i.useLocalState)(t,"tabIndex",0)),c=a[0],d=a[1];return(0,o.createComponentVNode)(2,u.Window,{theme:"syndicate",children:[(0,o.createComponentVNode)(2,s.ComplexModal),(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:0===c,onClick:function(){return d(0)},icon:"shopping-cart",children:"Purchase Equipment"},"PurchasePage"),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===c,onClick:function(){return d(1)},icon:"user",children:"Exploitable Information"},"ExploitableInfo"),(0,o.createComponentVNode)(2,l.Tabs.Tab,{onClick:function(){return r("lock")},icon:"lock",children:"Lock Uplink"},"LockUplink")]}),m(c)]})]})};var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,u=a.crystals,s=a.cats,m=(0,i.useLocalState)(t,"uplinkTab",s[0]),p=m[0],f=m[1];return(0,o.createComponentVNode)(2,l.Section,{title:"Current Balance: "+u+"TC",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{content:"Random Item",icon:"question",onClick:function(){return r("buyRandom")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Refund Currently Held Item",icon:"undo",onClick:function(){return r("refund")}})],4),children:(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,d.FlexItem,{children:(0,o.createComponentVNode)(2,l.Tabs,{vertical:!0,children:s.map((function(e){return(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:e===p,onClick:function(){return f(e)},children:e.cat},e)}))})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:p.items.map((function(e){return(0,o.createComponentVNode)(2,l.Section,{title:(0,c.decodeHtmlEntities)(e.name),buttons:(0,o.createComponentVNode)(2,l.Button,{content:"Buy ("+e.cost+"TC)"+(e.refundable?" [Refundable]":""),color:1===e.hijack_only&&"red",tooltip:1===e.hijack_only&&"Hijack Agents Only!",tooltipPosition:"left",onClick:function(){return r("buyItem",{item:e.obj_path})},disabled:e.cost>u}),children:(0,o.createComponentVNode)(2,l.Box,{italic:!0,children:(0,c.decodeHtmlEntities)(e.desc)})},(0,c.decodeHtmlEntities)(e.name))}))})]})})},f=function(e,t){var n=(0,i.useBackend)(t),u=(n.act,n.data.exploitable),s=(0,i.useLocalState)(t,"selectedRecord",u[0]),m=s[0],p=s[1],f=(0,i.useLocalState)(t,"searchText",""),h=f[0],C=f[1],N=function(e,t){void 0===t&&(t="");var n=(0,c.createSearch)(t,(function(e){return e.name}));return(0,a.flow)([(0,r.filter)((function(e){return null==e?void 0:e.name})),t&&(0,r.filter)(n),(0,r.sortBy)((function(e){return e.name}))])(e)}(u,h);return(0,o.createComponentVNode)(2,l.Section,{title:"Exploitable Records",children:(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,d.FlexItem,{basis:20,children:[(0,o.createComponentVNode)(2,l.Input,{fluid:!0,mb:1,placeholder:"Search Crew",onInput:function(e,t){return C(t)}}),(0,o.createComponentVNode)(2,l.Tabs,{vertical:!0,children:N.map((function(e){return(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:e===m,onClick:function(){return p(e)},children:e.name},e)}))})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Name: "+m.name,children:[(0,o.createComponentVNode)(2,l.Box,{children:["Age: ",m.age]}),(0,o.createComponentVNode)(2,l.Box,{children:["Fingerprint: ",m.fingerprint]}),(0,o.createComponentVNode)(2,l.Box,{children:["Rank: ",m.rank]}),(0,o.createComponentVNode)(2,l.Box,{children:["Sex: ",m.sex]}),(0,o.createComponentVNode)(2,l.Box,{children:["Species: ",m.species]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Vending=void 0;var o=n(0),r=(n(8),n(1)),a=n(2),c=n(4),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.product,d=e.productStock,u=e.productImage,s=i.chargesMoney,m=(i.user,i.userMoney),p=i.vend_ready,f=i.coin_name,h=(i.inserted_item_name,!s||0===l.price),C="ERROR!",N="";l.req_coin?(C="COIN",N="circle"):h?(C="FREE",N="arrow-circle-down"):(C=l.price,N="shopping-cart");var b=!p||!f&&l.req_coin||0===d||!h&&l.price>m;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+u,style:{"vertical-align":"middle",width:"32px",margin:"0px","margin-left":"0px"}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:l.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.Box,{color:(d<=0?"bad":d<=l.max_amount/2&&"average")||"good",children:[d," in stock"]})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,disabled:b,icon:N,content:C,textAlign:"left",onClick:function(){return c("vend",{inum:l.inum})}})})]})};t.Vending=function(e,t){var n,l=(0,r.useBackend)(t),d=l.act,u=l.data,s=u.user,m=u.guestNotice,p=u.userMoney,f=u.chargesMoney,h=u.product_records,C=void 0===h?[]:h,N=u.coin_records,b=void 0===N?[]:N,g=u.hidden_records,V=void 0===g?[]:g,v=u.stock,y=(u.vend_ready,u.coin_name),_=u.inserted_item_name,x=u.panel_open,k=u.speaker,L=u.imagelist;return n=[].concat(C,b),u.extended_inventory&&(n=[].concat(n,V)),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,c.Window,{title:"Vending Machine",resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!f&&(0,o.createComponentVNode)(2,a.Section,{title:"User",children:s&&(0,o.createComponentVNode)(2,a.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,s.name,0),","," ",(0,o.createVNode)(1,"b",null,s.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[p,(0,o.createTextVNode)(" credits")],0),"."]})||(0,o.createComponentVNode)(2,a.Box,{color:"light-grey",children:m})}),!!y&&(0,o.createComponentVNode)(2,a.Section,{title:"Coin",buttons:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:"Remove Coin",onClick:function(){return d("remove_coin",{})}}),children:(0,o.createComponentVNode)(2,a.Box,{children:y})}),!!_&&(0,o.createComponentVNode)(2,a.Section,{title:"Item",buttons:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:"Eject Item",onClick:function(){return d("eject_item",{})}}),children:(0,o.createComponentVNode)(2,a.Box,{children:_})}),!!x&&(0,o.createComponentVNode)(2,a.Section,{title:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:k?"check":"volume-mute",selected:k,content:"Speaker",textAlign:"left",onClick:function(){return d("toggle_voice",{})}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Products",children:(0,o.createComponentVNode)(2,a.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i,{product:e,productStock:v[e.name],productImage:L[e.path]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.VolumeMixer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.VolumeMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.channels;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"100%",overflow:"auto",children:l.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.25rem",color:"label",mt:t>0&&"0.5rem",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{width:"24px",color:"transparent",children:(0,o.createComponentVNode)(2,a.Icon,{name:"volume-off",size:"1.5",mt:"0.1rem",onClick:function(){return i("volume",{channel:e.num,volume:0})}})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mx:"1rem",children:(0,o.createComponentVNode)(2,a.Slider,{minValue:0,maxValue:100,stepPixelSize:3.13,value:e.volume,onChange:function(t,n){return i("volume",{channel:e.num,volume:n})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{width:"24px",color:"transparent",children:(0,o.createComponentVNode)(2,a.Icon,{name:"volume-up",size:"1.5",mt:"0.1rem",onClick:function(){return i("volume",{channel:e.num,volume:100})}})})})]})})],4,e.num)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Wires=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Wires=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.wires||[],u=l.status||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.color_name,labelColor:e.seen_color,color:e.seen_color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:e.cut?"Mend":"Cut",onClick:function(){return i("cut",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Pulse",onClick:function(){return i("pulse",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:e.attached?"Detach":"Attach",onClick:function(){return i("attach",{wire:e.color})}})],4),children:!!e.wire&&(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)("("),e.wire,(0,o.createTextVNode)(")")],0)},e.seen_color)}))})}),!!u.length&&(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"lightgray",mt:.1,children:e},e)}))})]})})}}]);
\ No newline at end of file
+if(!document.createEvent){var t,n=!0,o=!1,r="__IE8__"+Math.random(),a=Object.defineProperty||function(e,t,n){e[t]=n.value},c=Object.defineProperties||function(t,n){for(var o in n)if(l.call(n,o))try{a(t,o,n[o])}catch(r){e.console}},i=Object.getOwnPropertyDescriptor,l=Object.prototype.hasOwnProperty,d=e.Element.prototype,u=e.Text.prototype,s=/^[a-z]+$/,m=/loaded|complete/,p={},f=document.createElement("div"),h=document.documentElement,C=h.removeAttribute,N=h.setAttribute,b=function(e){return{enumerable:!0,writable:!0,configurable:!0,value:e}};_(e.HTMLCommentElement.prototype,d,"nodeValue"),_(e.HTMLScriptElement.prototype,null,"text"),_(u,null,"nodeValue"),_(e.HTMLTitleElement.prototype,null,"text"),a(e.HTMLStyleElement.prototype,"textContent",(t=i(e.CSSStyleSheet.prototype,"cssText"),y((function(){return t.get.call(this.styleSheet)}),(function(e){t.set.call(this.styleSheet,e)}))));var g=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;a(e.CSSStyleDeclaration.prototype,"opacity",{get:function(){var e=this.filter.match(g);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(g,(function(){return t=!0,e})),!t&&e&&(this.filter+=e)}}),c(d,{textContent:{get:k,set:S},firstElementChild:{get:function(){for(var e=this.childNodes||[],t=0,n=e.length;t1?r-1:0),c=1;c1?t-1:0),o=1;o=0||(r[n]=e[n]);return r}(e,["className"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var o,r;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=o,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(o||(t.VNodeFlags=o={})),t.ChildFlags=r,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(r||(t.ChildFlags=r={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var o=n(0),r=n(8),a=n(430),c=n(25),i=n(61),l=n(17);function d(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var u=(0,i.createLogger)("ByondUi"),s=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(r[n]=e[n]);return r}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),C=this.state.viewBox,N=function(e,t,n,o){if(0===e.length)return[];var a=(0,r.zipWith)(Math.min).apply(void 0,e),c=(0,r.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(a[0]=n[0],c[0]=n[1]),o!==undefined&&(a[1]=o[0],c[1]=o[1]),(0,r.map)((function(e){return(0,r.zipWith)((function(e,t,n,o){return(e-t)/(n-t)*o}))(e,a,c,t)}))(e)}(a,C,c,l);if(N.length>0){var b=N[0],g=N[N.length-1];N.push([C[0]+f,g[1]]),N.push([C[0]+f,-f]),N.push([-f,-f]),N.push([-f,b[1]])}var V=function(e){for(var t="",n=0;n=0||(r[n]=e[n]);return r}(t,["children","color","title","buttons"]);return(0,o.createVNode)(1,"div","Collapsible",[(0,o.createVNode)(1,"div","Table",[(0,o.createVNode)(1,"div","Table__cell",(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({fluid:!0,color:l,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},s,{children:d}))),2),u&&(0,o.createVNode)(1,"div","Table__cell Table__cell--collapsing",u,0)],0),n&&(0,o.createComponentVNode)(2,r.Box,{mt:1,children:c})],0)},c}(o.Component);t.Collapsible=c},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var o=n(0),r=n(8),a=n(17);var c=function(e){var t=e.content,n=(e.children,e.className),c=e.color,i=e.backgroundColor,l=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["content","children","className","color","backgroundColor"]);return l.color=t?null:"transparent",l.backgroundColor=c||i,(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["ColorBox",n,(0,a.computeBoxClassName)(l)]),t||".",0,Object.assign({},(0,a.computeBoxProps)(l))))};t.ColorBox=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var o=n(0),r=n(8),a=n(17),c=n(130);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t,n;function l(t){var n;return(n=e.call(this,t)||this).state={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.setOpen(!1),this.props.onSelected(e)},d.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,o.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},d.render=function(){var e=this,t=this.props,n=t.color,l=void 0===n?"default":n,d=t.over,u=t.noscroll,s=t.nochevron,m=t.width,p=(t.onClick,t.selected),f=t.disabled,h=i(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),C=h.className,N=i(h,["className"]),b=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}},null,(function(t){e.menuRef=t})):null;return(0,o.createVNode)(1,"div","Dropdown",[(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({width:m,className:(0,r.classes)(["Dropdown__control","Button","Button--color--"+l,f&&"Button--disabled",C])},N,{onClick:function(){f&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,o.createVNode)(1,"span","Dropdown__selected-text",p,0),!!s||(0,o.createVNode)(1,"span","Dropdown__arrow-button",(0,o.createComponentVNode)(2,c.Icon,{name:b?"chevron-up":"chevron-down"}),2)]}))),g],0)},l}(o.Component);t.Dropdown=l},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var o=n(0),r=n(8),a=n(17);function c(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var i=function(e){return(0,r.isFalsy)(e)?"":e},l=function(e){var t,n;function l(){var t;return(t=e.call(this)||this).inputRef=(0,o.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,o=t.props.onInput;n||t.setEditing(!0),o&&o(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,o=t.props.onChange;n&&(t.setEditing(!1),o&&o(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,o=n.onInput,r=n.onChange,a=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),r&&r(e,e.target.value),o&&o(e,e.target.value),a&&a(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=i(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=i(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,a=this.inputRef.current;a&&!n&&o!==r&&(a.value=i(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,i=(e.autofocus,e.disabled),l=e.multiline,d=e.cols,u=void 0===d?32:d,s=e.rows,m=void 0===s?4:s,p=c(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder","autofocus","disabled","multiline","cols","rows"]),f=p.className,h=p.fluid,C=c(p,["className","fluid"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Input",h&&"Input--fluid",i&&"Input--disabled",f])},C,{children:[(0,o.createVNode)(1,"div","Input__baseline",".",16),l?(0,o.createVNode)(128,"textarea","Input__textarea",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,maxLength:t,cols:u,rows:m,disabled:i},null,this.inputRef):(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,disabled:i},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(16),a=n(8),c=n(25),i=n(17),l=n(179),d=n(131);t.Knob=function(e){if(c.IS_IE8)return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,u=e.maxValue,s=e.minValue,m=e.onChange,p=e.onDrag,f=e.step,h=e.stepPixelSize,C=e.suppressFlicker,N=e.unit,b=e.value,g=e.className,V=e.style,v=e.fillValue,y=e.color,_=e.ranges,x=void 0===_?{}:_,k=e.size,L=e.bipolar,B=(e.children,e.popUpPosition),w=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["animated","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,l.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:u,minValue:s,onChange:m,onDrag:p,step:f,stepPixelSize:h,suppressFlicker:C,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),f=(0,r.scale)(c,s,u),h=y||(0,r.keyOfMatchingRange)(null!=v?v:n,x)||"default",C=270*(f-.5);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,a.classes)(["Knob","Knob--color--"+h,L&&"Knob--bipolar",g,(0,i.computeBoxClassName)(w)]),[(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("+C+"deg)"}}),2),t&&(0,o.createVNode)(1,"div",(0,a.classes)(["Knob__popupValue",B&&"Knob__popupValue--"+B]),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":((L?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,i.computeBoxProps)(Object.assign({style:Object.assign({"font-size":k+"rem"},V)},w)),{onMouseDown:m})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var o=n(0),r=n(75);function a(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var c=function(e){var t=e.children,n=a(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=c;c.Item=function(e){var t=e.label,n=e.children,c=a(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"},c,{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),a=n(1),c=n(77),i=n(180);var l=function(e){return e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.returnValue=!1,!1},d=function(e){var t,n;function c(t){var n;n=e.call(this,t)||this;window.innerWidth,window.innerHeight;return n.state={offsetX:128,offsetY:48,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),l(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})),l(e)},n.handleDragEnd=function(e){n.setState({dragging:!1,originX:null,originY:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),l(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);return e.zoom=n,e.offsetX=e.offsetX-262*r,e.offsetY=e.offsetY-256*r,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,a.useBackend)(this.context).config,t=this.state,n=t.dragging,c=t.offsetX,i=t.offsetY,l=t.zoom,d=void 0===l?1:l,s=this.props.children,m=510*d+"px",p={width:m,height:m,"margin-top":i+"px","margin-left":c+"px",overflow:"hidden",position:"relative","background-image":"url("+e.map+"_nanomap_z1.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,u,{zoom:d,onZoom:this.handleZoom})]})},c}(o.Component);t.NanoMap=d;d.Marker=function(e,t){var n=e.x,a=e.y,c=e.zoom,i=void 0===c?1:c,l=e.icon,d=e.tooltip,u=e.color,s=2*n*i-i-3,m=2*a*i-i-3;return(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,r.Box,{position:"absolute",className:"NanoMap__marker",lineHeight:"0",bottom:m+"px",left:s+"px",children:[(0,o.createComponentVNode)(2,r.Icon,{name:l,color:u,fontSize:"6px"}),(0,o.createComponentVNode)(2,r.Tooltip,{content:d})]}),2)};var u=function(e,t){return(0,o.createComponentVNode)(2,r.Box,{className:"NanoMap__zoomer",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Zoom",children:(0,o.createComponentVNode)(2,i.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)}})})})})};d.Zoomer=u},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var o=n(0),r=n(8),a=n(17),c=n(176);t.Modal=function(e){var t,n=e.className,i=e.children,l=e.onEnter,d=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","children","onEnter"]);return l&&(t=function(e){13===e.keyCode&&l(e)}),(0,o.createComponentVNode)(2,c.Dimmer,{onKeyDown:t,children:(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Modal",n,(0,a.computeBoxClassName)(d)]),i,0,Object.assign({},(0,a.computeBoxProps)(d))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var o=n(0),r=n(8),a=n(17);var c=function(e){var t=e.className,n=e.color,c=e.info,i=(e.warning,e.success),l=e.danger,d=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","color","info","warning","success","danger"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,c&&"NoticeBox--type--info",i&&"NoticeBox--type--success",l&&"NoticeBox--type--danger",t])},d)))};t.NoticeBox=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBarCountdown=t.ProgressBar=void 0;var o=n(0),r=n(16),a=n(8),c=n(17);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e.className,n=e.value,l=e.minValue,d=void 0===l?0:l,u=e.maxValue,s=void 0===u?1:u,m=e.color,p=e.ranges,f=void 0===p?{}:p,h=e.children,C=i(e,["className","value","minValue","maxValue","color","ranges","children"]),N=(0,r.scale)(n,d,s),b=h!==undefined,g=m||(0,r.keyOfMatchingRange)(n,f)||"default";return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,a.classes)(["ProgressBar","ProgressBar--color--"+g,t,(0,c.computeBoxClassName)(C)]),[(0,o.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,r.clamp01)(N)+"%"}}),(0,o.createVNode)(1,"div","ProgressBar__content",b?h:(0,r.toFixed)(100*N)+"%",0)],4,Object.assign({},(0,c.computeBoxProps)(C))))};t.ProgressBar=l,l.defaultHooks=a.pureComponentHooks;var d=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={value:Math.max(100*t.current,0)},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=r.prototype;return a.tick=function(){var e=Math.max(this.state.value+this.props.rate,0);e<=0&&clearInterval(this.timer),this.setState((function(t){return{value:e}}))},a.componentDidMount=function(){var e=this;this.timer=setInterval((function(){return e.tick()}),this.props.rate)},a.componentWillUnmount=function(){clearInterval(this.timer)},a.render=function(){var e=this.props,t=e.start,n=(e.current,e.end),r=i(e,["start","current","end"]),a=(this.state.value/100-t)/(n-t);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,l,Object.assign({value:a},r)))},r}(o.Component);t.ProgressBarCountdown=d,d.defaultProps={rate:1e3},l.Countdown=d},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var o=n(0),r=n(8),a=n(17);var c=function(e){var t=e.className,n=e.title,c=e.level,i=void 0===c?1:c,l=e.buttons,d=e.content,u=e.stretchContents,s=e.noTopPadding,m=e.children,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["className","title","level","buttons","content","stretchContents","noTopPadding","children"]),f=!(0,r.isFalsy)(n)||!(0,r.isFalsy)(l),h=!(0,r.isFalsy)(d)||!(0,r.isFalsy)(m);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({className:(0,r.classes)(["Section","Section--level--"+i,e.flexGrow&&"Section--flex",t])},p,{children:[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),h&&(0,o.createComponentVNode)(2,a.Box,{className:(0,r.classes)(["Section__content",!!u&&"Section__content--stretchContents",!!s&&"Section__content--noTopPadding"]),children:[d,m]})]})))};t.Section=c,c.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var o=n(0),r=n(8),a=n(17),c=n(129);function i(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var l=function(e){var t=e.className,n=e.vertical,c=e.children,l=i(e,["className","vertical","children"]);return(0,o.normalizeProps)((0,o.createVNode)(1,"div",(0,r.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",t,(0,a.computeBoxClassName)(l)]),(0,o.createVNode)(1,"div","Tabs__tabBox",c,0),2,Object.assign({},(0,a.computeBoxProps)(l))))};t.Tabs=l;l.Tab=function(e){var t=e.className,n=e.selected,a=e.altSelection,l=i(e,["className","selected","altSelection"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Button,Object.assign({className:(0,r.classes)(["Tabs__tab",n&&"Tabs__tab--selected",a&&n&&"Tabs__tab--altSelection",t]),selected:!a&&n,color:"transparent"},l)))}},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=void 0;t.TimeDisplay=function(e){var t=e.totalSeconds;return function(e){return(!e||e<0)&&(e=0),[Math.floor(e/60).toString(10),(Math.floor(e)%60).toString(10)].map((function(e){return e.length<2?"0"+e:e})).join(":")}(void 0===t?0:t)}},function(e,t,n){var o={"./AICard.js":446,"./AIFixer.js":447,"./APC.js":448,"./ATM.js":449,"./AccountsUplinkTerminal.js":450,"./AiAirlock.js":451,"./AirAlarm.js":452,"./AirlockAccessController.js":453,"./AirlockElectronics.js":454,"./AppearanceChanger.js":455,"./AtmosAlertConsole.js":456,"./AtmosControl.js":457,"./AtmosFilter.js":458,"./AtmosMixer.js":459,"./AtmosPump.js":460,"./Autolathe.js":461,"./BlueSpaceArtilleryControl.js":462,"./BluespaceTap.js":463,"./BodyScanner.js":464,"./BotClean.js":465,"./BotSecurity.js":466,"./BrigCells.js":467,"./BrigTimer.js":468,"./CameraConsole.js":469,"./Canister.js":470,"./CardComputer.js":471,"./CargoConsole.js":472,"./ChemDispenser.js":473,"./ChemHeater.js":477,"./ChemMaster.js":478,"./CloningConsole.js":479,"./CommunicationsComputer.js":480,"./Contractor.js":481,"./ConveyorSwitch.js":482,"./CrewMonitor.js":483,"./Cryo.js":484,"./DNAModifier.js":485,"./DisposalBin.js":486,"./DnaVault.js":487,"./DroneConsole.js":488,"./EFTPOS.js":489,"./ERTManager.js":490,"./Electropack.js":491,"./EvolutionMenu.js":492,"./ExosuitFabricator.js":493,"./ExternalAirlockController.js":494,"./FaxMachine.js":495,"./FloorPainter.js":496,"./GPS.js":497,"./GravityGen.js":498,"./GuestPass.js":499,"./HandheldChemDispenser.js":500,"./Instrument.js":501,"./KeycardAuth.js":502,"./LaborClaimConsole.js":503,"./LawManager.js":504,"./MechBayConsole.js":505,"./MechaControlConsole.js":506,"./MedicalRecords.js":507,"./MiningVendor.js":508,"./Newscaster.js":509,"./NuclearBomb.js":510,"./OperatingComputer.js":511,"./Orbit.js":512,"./OreRedemption.js":513,"./PAI.js":514,"./PDA.js":527,"./Pacman.js":543,"./PersonalCrafting.js":544,"./PodTracking.js":545,"./PoolController.js":546,"./PortablePump.js":547,"./PortableScrubber.js":548,"./PortableTurret.js":549,"./PowerMonitor.js":188,"./RCD.js":550,"./RPD.js":551,"./Radio.js":552,"./RequestConsole.js":553,"./RndConsole.js":62,"./RoboticsControlConsole.js":568,"./Safe.js":569,"./SatelliteControl.js":570,"./SecurityRecords.js":571,"./ShuttleConsole.js":572,"./ShuttleManipulator.js":573,"./Sleeper.js":574,"./SlotMachine.js":575,"./Smartfridge.js":576,"./Smes.js":577,"./SolarControl.js":578,"./SpawnersMenu.js":579,"./StationAlertConsole.js":580,"./SuitStorage.js":581,"./SupermatterMonitor.js":582,"./SyndicateComputerSimple.js":583,"./TEG.js":584,"./TachyonArray.js":585,"./Tank.js":586,"./TankDispenser.js":587,"./TcommsCore.js":588,"./TcommsRelay.js":589,"./Teleporter.js":590,"./ThermoMachine.js":591,"./TransferValve.js":592,"./Uplink.js":593,"./Vending.js":594,"./VolumeMixer.js":595,"./Wires.js":596};function r(e){var t=a(e);return n(t)}function a(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=a,e.exports=r,r.id=445},function(e,t,n){"use strict";t.__esModule=!0,t.AICard=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AICard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;if(0===l.has_ai)return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createVNode)(1,"h3",null,"No AI detected.",16)})})})});var d=null;return d=l.integrity>=75?"green":l.integrity>=25?"yellow":"red",(0,o.createComponentVNode)(2,c.Window,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,display:"inline-block",children:(0,o.createVNode)(1,"h3",null,l.name,0)}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:d,value:l.integrity/100})})})}),(0,o.createComponentVNode)(2,a.Box,{color:"red",children:(0,o.createVNode)(1,"h2",null,1===l.flushing?"Wipe of AI in progress...":"",0)})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",children:!!l.has_laws&&(0,o.createComponentVNode)(2,a.Box,{children:l.laws.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",children:e},t)}))})||(0,o.createComponentVNode)(2,a.Box,{color:"red",children:(0,o.createVNode)(1,"h3",null,"No laws detected.",16)})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Wireless Activity",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.wireless?"check":"times",content:l.wireless?"Enabled":"Disabled",color:l.wireless?"green":"red",onClick:function(){return i("wireless")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subspace Transceiver",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.radio?"check":"times",content:l.radio?"Enabled":"Disabled",color:l.radio?"green":"red",onClick:function(){return i("radio")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Wipe",children:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash-alt",confirmIcon:"trash-alt",disabled:l.flushing||0===l.integrity,confirmColor:"red",content:"Wipe AI",onClick:function(){return i("wipe")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AIFixer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AIFixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;if(null===l.occupant)return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createVNode)(1,"h3",null,"No artificial intelligence detected.",16)})})})});var d=null;d=2!==l.stat&&null!==l.stat;var u=null;u=l.integrity>=75?"green":l.integrity>=25?"yellow":"red";var s=null;return s=l.integrity>=100,(0,o.createComponentVNode)(2,c.Window,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored AI",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:(0,o.createVNode)(1,"h3",null,l.occupant,0)})}),(0,o.createComponentVNode)(2,a.Section,{title:"Information",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:u,value:l.integrity/100})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:d?"green":"red",children:d?"Functional":"Non-Functional"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",children:!!l.has_laws&&(0,o.createComponentVNode)(2,a.Box,{children:l.laws.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",children:e},t)}))})||(0,o.createComponentVNode)(2,a.Box,{color:"red",children:(0,o.createVNode)(1,"h3",null,"No laws detected.",16)})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Wireless Activity",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.wireless?"times":"check",content:l.wireless?"Disabled":"Enabled",color:l.wireless?"red":"green",onClick:function(){return i("wireless")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subspace Transceiver",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.radio?"times":"check",content:l.radio?"Disabled":"Enabled",color:l.radio?"red":"green",onClick:function(){return i("radio")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Start Repairs",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:s||l.active,content:s?"Already Repaired":"Repair",onClick:function(){return i("fix")}})})]}),(0,o.createComponentVNode)(2,a.Box,{color:"green",lineHeight:2,children:l.active?"Reconstruction in progress.":""})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.APC=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(182);t.APC=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=(u.normallyLocked,l[u.externalPower]||l[0]),p=l[u.chargingStatus]||l[0],f=u.powerChannels||[],h=d[u.malfStatus]||d[0],C=u.powerCellStatus/100;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,color:u.isOperating?"":"bad",disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:C})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"times",content:u.chargeMode?"Auto":"Off",selected:u.chargeMode,disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[f.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:[e.powerLoad," W"]},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,[u.totalLoad,(0,o.createTextVNode)(" W")],0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",selected:u.coverLocked,disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",selected:u.nightshiftLights,onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ATM=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ATM=function(e,t){var n,p=(0,r.useBackend)(t),f=(p.act,p.data),h=f.view_screen,C=f.authenticated_account,N=f.ticks_left_locked_down,b=f.linked_db;if(N>0)n=(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle"}),"Maximum number of pin attempts exceeded! Access to this ATM has been temporarily disabled."]});else if(b)if(C)switch(h){case 1:n=(0,o.createComponentVNode)(2,l);break;case 2:n=(0,o.createComponentVNode)(2,d);break;case 3:n=(0,o.createComponentVNode)(2,m);break;default:n=(0,o.createComponentVNode)(2,u)}else n=(0,o.createComponentVNode)(2,s);else n=(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle"}),"Unable to connect to accounts database, please retry and if the issue persists contact Nanotrasen IT support."]});return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,a.Section,{children:n})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.machine_id,d=i.held_card_name;return(0,o.createComponentVNode)(2,a.Section,{title:"Nanotrasen Automatic Teller Machine",children:[(0,o.createComponentVNode)(2,a.Box,{children:"For all your monetary need!"}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:"info-circle"})," This terminal is ",(0,o.createVNode)(1,"i",null,l,0),", report this code when contacting Nanotrasen IT Support."]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Card",children:(0,o.createComponentVNode)(2,a.Button,{content:d,icon:"eject",onClick:function(){return c("insert_card")}})})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.security_level;return(0,o.createComponentVNode)(2,a.Section,{title:"Select a new security level for this account",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:(0,o.createComponentVNode)(2,a.Button,{content:"Zero",icon:"unlock",selected:0===i,onClick:function(){return c("change_security_level",{new_security_level:0})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:"Either the account number or card is required to access this account. EFTPOS transactions will require a card and ask for a pin, but not verify the pin is correct."}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:(0,o.createComponentVNode)(2,a.Button,{content:"One",icon:"unlock",selected:1===i,onClick:function(){return c("change_security_level",{new_security_level:1})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:"An account number and pin must be manually entered to access this account and process transactions."}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:(0,o.createComponentVNode)(2,a.Button,{content:"Two",selected:2===i,icon:"unlock",onClick:function(){return c("change_security_level",{new_security_level:2})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:"In addition to account number and pin, a card is required to access this account and process transactions."})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,p)]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useLocalState)(t,"targetAccNumber",0),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"fundsAmount",0),m=s[0],f=s[1],h=(0,r.useLocalState)(t,"purpose",0),C=h[0],N=h[1],b=i.money;return(0,o.createComponentVNode)(2,a.Section,{title:"Transfer Fund",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Account Balance",children:["$",b]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target account number",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"6 Digit Number",onInput:function(e,t){return u(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Funds to transfer",children:(0,o.createComponentVNode)(2,a.Input,{onInput:function(e,t){return f(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transaction Purpose",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,onInput:function(e,t){return N(t)}})})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Button,{content:"Transfer",icon:"sign-out-alt",onClick:function(){return c("transfer",{target_acc_number:d,funds_amount:m,purpose:C})}}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,p)]})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useLocalState)(t,"fundsAmount",0),d=l[0],u=l[1],s=i.owner_name,m=i.money;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Welcome, "+s,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Logout",icon:"sign-out-alt",onClick:function(){return c("logout")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Account Balance",children:["$",m]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Withdrawal Amount",children:(0,o.createComponentVNode)(2,a.Input,{onInput:function(e,t){return u(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Withdraw Fund",icon:"sign-out-alt",onClick:function(){return c("withdrawal",{funds_amount:d})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Menu",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Change account security level",icon:"lock",onClick:function(){return c("view_screen",{view_screen:1})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Make transfer",icon:"exchange-alt",onClick:function(){return c("view_screen",{view_screen:2})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"View transaction log",icon:"list",onClick:function(){return c("view_screen",{view_screen:3})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Print balance statement",icon:"print",onClick:function(){return c("balance_statement")}})})]})],4)},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useLocalState)(t,"accountID",null),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"accountPin",null),m=s[0],p=s[1];i.machine_id,i.held_card_name;return(0,o.createComponentVNode)(2,a.Section,{title:"Insert card or enter ID and pin to login",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Account ID",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"6 Digit Number",onInput:function(e,t){return u(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pin",children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"6 Digit Number",onInput:function(e,t){return p(t)}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Login",icon:"sign-in-alt",onClick:function(){return c("attempt_auth",{account_num:d,account_pin:m})}})})]})})},m=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.transaction_log);return(0,o.createComponentVNode)(2,a.Section,{title:"Transactions",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:"Timestamp"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Target"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Reason"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Terminal"})]}),c.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:"1rem",children:[e.date," ",e.time]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.target_name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.purpose}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:["$",e.amount]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.source_terminal})]},e)}))]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,p)]})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"sign-out-alt",onClick:function(){return c("view_screen",{view_screen:0})}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AccountsUplinkTerminal=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(75),l=n(4),d=n(132),u=n(133);t.AccountsUplinkTerminal=function(e,t){var n,r=(0,a.useBackend)(t),c=(r.act,r.data),i=c.loginState,m=c.currentPage;return i.logged_in?(1===m?n=(0,o.createComponentVNode)(2,s):2===m?n=(0,o.createComponentVNode)(2,f):3===m&&(n=(0,o.createComponentVNode)(2,h)),(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.LoginInfo),n]})})):(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,u.LoginScreen)})})};var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.accounts,d=(0,a.useLocalState)(t,"searchText",""),u=d[0],s=(d[1],(0,a.useLocalState)(t,"sortId","owner_name")),f=s[0],h=(s[1],(0,a.useLocalState)(t,"sortOrder",!0)),C=h[0];h[1];return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,c.Flex.Item,{flexGrow:"1",mt:"0.5rem",children:(0,o.createComponentVNode)(2,c.Section,{height:"100%",children:(0,o.createComponentVNode)(2,c.Table,{className:"AccountsUplinkTerminal__list",children:[(0,o.createComponentVNode)(2,c.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,m,{id:"owner_name",children:"Account Holder"}),(0,o.createComponentVNode)(2,m,{id:"account_number",children:"Account Number"}),(0,o.createComponentVNode)(2,m,{id:"suspended",children:"Account Status"})]}),l.filter((0,r.createSearch)(u,(function(e){return e.owner_name+"|"+e.account_number+"|"+e.suspended}))).sort((function(e,t){var n=C?1:-1;return e[f].localeCompare(t[f])*n})).map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{onClick:function(){return i("view_account_detail",{index:e.account_index})},children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user"})," ",e.owner_name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["#",e.account_number]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.suspended})]},e.id)}))]})})})]})},m=function(e,t){var n=(0,a.useLocalState)(t,"sortId","name"),r=n[0],i=n[1],l=(0,a.useLocalState)(t,"sortOrder",!0),d=l[0],u=l[1],s=e.id,m=e.children;return(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{color:r!==s&&"transparent",width:"100%",onClick:function(){r===s?u(!d):(i(s),u(!0))},children:[m,r===s&&(0,o.createComponentVNode)(2,c.Icon,{name:d?"sort-up":"sort-down",ml:"0.25rem;"})]})})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data.is_printing,d=(0,a.useLocalState)(t,"searchText",""),u=(d[0],d[1]);return(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,i.FlexItem,{children:[(0,o.createComponentVNode)(2,c.Button,{content:"New Account",icon:"plus",onClick:function(){return r("create_new_account")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print Account List",disabled:l,ml:"0.25rem",onClick:function(){return r("print_records")}})]}),(0,o.createComponentVNode)(2,i.FlexItem,{grow:"1",ml:"0.5rem",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search by account holder, number, status",width:"100%",onInput:function(e,t){return u(t)}})})]})},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_printing,d=i.account_number,u=i.owner_name,s=i.money,m=i.suspended,p=i.transactions;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"#"+d+" / "+u,mt:1,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print Account Details",disabled:l,onClick:function(){return r("print_account_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("back")}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Number",children:["#",d]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Holder",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Balance",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Status",color:m?"red":"green",children:[m?"Suspended":"Active",(0,o.createComponentVNode)(2,c.Button,{ml:1,content:m?"Unsuspend":"Suspend",icon:m?"unlock":"lock",onClick:function(){return r("toggle_suspension")}})]})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Transactions",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Timestamp"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Target"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Reason"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Value"}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Terminal"})]}),p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.date," ",e.time]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.target_name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.purpose}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["$",e.amount]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.source_terminal})]},e)}))]})})],4)},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=(n.data,(0,a.useLocalState)(t,"accName","")),l=i[0],d=i[1],u=(0,a.useLocalState)(t,"accDeposit",""),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,c.Section,{title:"Create Account",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return r("back")}}),children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Account Holder",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Name Here",onChange:function(e,t){return d(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Initial Deposit",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"0",onChange:function(e,t){return m(t)}})})]}),(0,o.createComponentVNode)(2,c.Button,{mt:1,fluid:!0,content:"Create Account",onClick:function(){return r("finalise_create_account",{holder_name:l,starting_funds:s})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.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_power?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.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_power?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&2!==d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock||0===d.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,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon: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,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon: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,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.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.AirAlarm=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(182);t.AirAlarm=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data.locked);return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),!a&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)],4)]})})};var l=function(e){return 0===e?"green":1===e?"orange":"red"},d=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,d=c.data,u=d.air,s=d.mode,m=d.atmos_alarm,p=d.locked,f=d.alarmActivated,h=d.rcon;return n=0===u.danger.overall?0===m?"Optimal":"Caution: Atmos alert in area":1===u.danger.overall?"Caution":"DANGER: Internals Required",(0,o.createComponentVNode)(2,a.Section,{title:"Air Status",children:u?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.Box,{color:l(u.danger.pressure),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.pressure})," kPa",!p&&(0,o.createFragment)([(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,a.Button,{content:3===s?"Deactivate Panic Siphon":"Activate Panic Siphon",selected:3===s,icon:"exclamation-triangle",onClick:function(){return i("mode",{mode:3===s?1:3})}})],4)]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.oxygen/100,color:l(u.danger.oxygen)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nitrogen",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.nitrogen/100,color:l(u.danger.nitrogen)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Carbon Dioxide",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.co2/100,color:l(u.danger.co2)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxins",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.plasma/100,color:l(u.danger.plasma)})}),u.contents.other>0&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Other",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.contents.other/100,color:l(u.danger.other)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,a.Box,{color:l(u.danger.temperature),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.temperature})," K / ",(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.temperature_c})," C\xa0",(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-full",content:u.temperature_c+" C",onClick:function(){return i("temperature")}})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Local Status",children:(0,o.createComponentVNode)(2,a.Box,{color:l(u.danger.overall),children:[n,!p&&(0,o.createFragment)([(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,a.Button,{content:f?"Reset Alarm":"Activate Alarm",selected:f,onClick:function(){return i(f?"atmos_reset":"atmos_alarm")}})],4)]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Control Settings",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Off",selected:1===h,onClick:function(){return i("set_rcon",{rcon:1})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Auto",selected:2===h,onClick:function(){return i("set_rcon",{rcon:2})}}),(0,o.createComponentVNode)(2,a.Button,{content:"On",selected:3===h,onClick:function(){return i("set_rcon",{rcon:3})}})]})]}):(0,o.createComponentVNode)(2,a.Box,{children:"Unable to acquire air sample!"})})},u=function(e,t){var n=(0,r.useLocalState)(t,"tabIndex",0),c=n[0],i=n[1];return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===c,onClick:function(){return i(0)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"sign-out-alt"})," Vent Control"]},"Vents"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"sign-in-alt"})," Scrubber Control"]},"Scrubbers"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"cog"})," Mode"]},"Mode"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===c,onClick:function(){return i(3)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"tachometer-alt"})," Thresholds"]},"Thresholds")]})},s=function(e,t){var n=(0,r.useLocalState)(t,"tabIndex",0),a=n[0];n[1];switch(a){case 0:return(0,o.createComponentVNode)(2,m);case 1:return(0,o.createComponentVNode)(2,p);case 2:return(0,o.createComponentVNode)(2,f);case 3:return(0,o.createComponentVNode)(2,h);default:return"WE SHOULDN'T BE HERE!"}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return n.data.vents.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{content:e.power?"On":"Off",selected:e.power,icon:"power-off",onClick:function(){return c("command",{cmd:"power",val:1===e.power?0:1,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"release"===e.direction?"Blowing":"Siphoning",icon:"release"===e.direction?"sign-out-alt":"sign-in-alt",onClick:function(){return c("command",{cmd:"direction",val:"release"===e.direction?0:1,id_tag:e.id_tag})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure Checks",children:[(0,o.createComponentVNode)(2,a.Button,{content:"External",selected:1===e.checks,onClick:function(){return c("command",{cmd:"checks",val:1,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Internal",selected:2===e.checks,onClick:function(){return c("command",{cmd:"checks",val:2,id_tag:e.id_tag})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"External Pressure Target",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:e.external})," kPa\xa0",(0,o.createComponentVNode)(2,a.Button,{content:"Set",icon:"cog",onClick:function(){return c("command",{cmd:"set_external_pressure",id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",icon:"redo-alt",onClick:function(){return c("command",{cmd:"set_external_pressure",val:101.325,id_tag:e.id_tag})}})]})]})},e.name)}))},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return n.data.scrubbers.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,a.Button,{content:e.power?"On":"Off",selected:e.power,icon:"power-off",onClick:function(){return c("command",{cmd:"power",val:1===e.power?0:1,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:0===e.scrubbing?"Siphoning":"Scrubbing",icon:0===e.scrubbing?"sign-in-alt":"filter",onClick:function(){return c("command",{cmd:"scrubbing",val:0===e.scrubbing?1:0,id_tag:e.id_tag})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,a.Button,{content:e.widenet?"Extended":"Normal",selected:e.widenet,icon:"expand-arrows-alt",onClick:function(){return c("command",{cmd:"widenet",val:0===e.widenet?1:0,id_tag:e.id_tag})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filtering",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Carbon Dioxide",selected:e.filter_co2,onClick:function(){return c("command",{cmd:"co2_scrub",val:0===e.filter_co2?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Plasma",selected:e.filter_toxins,onClick:function(){return c("command",{cmd:"tox_scrub",val:0===e.filter_toxins?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nitrous Oxide",selected:e.filter_n2o,onClick:function(){return c("command",{cmd:"n2o_scrub",val:0===e.filter_n2o?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Oxygen",selected:e.filter_o2,onClick:function(){return c("command",{cmd:"o2_scrub",val:0===e.filter_o2?1:0,id_tag:e.id_tag})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nitrogen",selected:e.filter_n2,onClick:function(){return c("command",{cmd:"n2_scrub",val:0===e.filter_n2?1:0,id_tag:e.id_tag})}})]})]})},e.name)}))},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.modes,d=i.presets,u=i.emagged,s=i.mode,m=i.preset;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"System Mode",children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){return(!e.emagonly||e.emagonly&&!!u)&&(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:1,children:(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:"cog",selected:e.id===s,onClick:function(){return c("mode",{mode:e.id})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.desc})]},e.name)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"System Presets",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:"After making a selection, the system will automatically cycle in order to remove contaminants."}),(0,o.createComponentVNode)(2,a.Table,{mt:1,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",width:1,children:(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:"cog",selected:e.id===m,onClick:function(){return c("preset",{preset:e.id})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.desc})]},e.name)}))})]})],4)},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.thresholds;return(0,o.createComponentVNode)(2,a.Section,{title:"Alarm Thresholds",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,{width:"20%",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"red",width:"20%",children:"Danger Min"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"orange",width:"20%",children:"Warning Min"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"orange",width:"20%",children:"Warning Max"}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:"red",width:"20%",children:"Danger Max"})]}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),e.settings.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:-1===e.selected?"Off":e.selected,onClick:function(){return c("command",{cmd:"set_threshold",env:e.env,"var":e.val})}})},e.val)}))]},e.name)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockAccessController=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AirlockAccessController=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data,s=u.exterior_status,m=u.interior_status,p=u.processing;return n="open"===u.exterior_status.state?(0,o.createComponentVNode)(2,a.Button,{content:"Lock Exterior Door",icon:"exclamation-triangle",disabled:p,onClick:function(){return d("force_ext")}}):(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Exterior",icon:"arrow-circle-left",disabled:p,onClick:function(){return d("cycle_ext_door")}}),i="open"===u.interior_status.state?(0,o.createComponentVNode)(2,a.Button,{content:"Lock Interior Door",icon:"exclamation-triangle",disabled:p,color:"open"===m?"red":p?"yellow":null,onClick:function(){return d("force_int")}}):(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Interior",icon:"arrow-circle-right",disabled:p,onClick:function(){return d("cycle_int_door")}}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"External Door Status",children:"closed"===s.state?"Locked":"Open"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Door Status",children:"closed"===m.state?"Locked":"Open"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,a.Box,{children:n}),(0,o.createComponentVNode)(2,a.Box,{children:i})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(78);t.AirlockElectronics=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,d)]})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.unrestricted_dir;return(0,o.createComponentVNode)(2,a.Section,{title:"Access Control",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,mb:1,children:"Unrestricted Access From:"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-down",content:"North",selected:"north"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"North"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-up",content:"South",selected:"south"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"South"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-left",content:"East",selected:"east"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"East"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:"arrow-right",content:"West",selected:"west"===i?"selected":null,onClick:function(){return c("unrestricted_access",{unres_dir:"West"})}})})]})]})})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.selected_accesses,u=l.one_access,s=l.regions;return(0,o.createComponentVNode)(2,i.AccessList,{usedByRcd:1,rcdButtons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:u,content:"One",onClick:function(){return c("set_one_access",{access:"one"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!u,content:"All",onClick:function(){return c("set_one_access",{access:"all"})}})],4),accesses:s,selectedList:d,accessMod:function(e){return c("set",{access:e})},grantAll:function(){return c("grant_all")},denyAll:function(){return c("clear_all")},grantDep:function(e){return c("grant_region",{region:e})},denyDep:function(e){return c("deny_region",{region:e})}})}},function(e,t,n){"use strict";t.__esModule=!0,t.AppearanceChanger=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AppearanceChanger=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.change_race,s=d.species,m=d.specimen,p=d.change_gender,f=d.gender,h=d.has_gender,C=d.change_eye_color,N=d.change_skin_tone,b=d.change_skin_color,g=d.change_head_accessory_color,V=d.change_hair_color,v=d.change_secondary_hair_color,y=d.change_facial_hair_color,_=d.change_secondary_facial_hair_color,x=d.change_head_marking_color,k=d.change_body_marking_color,L=d.change_tail_marking_color,B=d.change_head_accessory,w=d.head_accessory_styles,S=d.head_accessory_style,I=d.change_hair,T=d.hair_styles,A=d.hair_style,E=d.change_facial_hair,M=d.facial_hair_styles,O=d.facial_hair_style,P=d.change_head_markings,R=d.head_marking_styles,D=d.head_marking_style,F=d.change_body_markings,j=d.body_marking_styles,W=d.body_marking_style,z=d.change_tail_markings,U=d.tail_marking_styles,H=d.tail_marking_style,K=d.change_body_accessory,G=d.body_accessory_styles,q=d.body_accessory_style,Y=d.change_alt_head,$=d.alt_head_styles,X=d.alt_head_style,J=!1;return(C||N||b||g||V||v||y||_||x||k||L)&&(J=!0),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.specimen,selected:e.specimen===m,onClick:function(){return l("race",{race:e.specimen})}},e.specimen)}))}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gender",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Male",selected:"male"===f,onClick:function(){return l("gender",{gender:"male"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Female",selected:"female"===f,onClick:function(){return l("gender",{gender:"female"})}}),!h&&(0,o.createComponentVNode)(2,a.Button,{content:"Genderless",selected:"plural"===f,onClick:function(){return l("gender",{gender:"plural"})}})]}),!!J&&(0,o.createComponentVNode)(2,i),!!B&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Head accessory",children:w.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.headaccessorystyle,selected:e.headaccessorystyle===S,onClick:function(){return l("head_accessory",{head_accessory:e.headaccessorystyle})}},e.headaccessorystyle)}))}),!!I&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hair",children:T.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.hairstyle,selected:e.hairstyle===A,onClick:function(){return l("hair",{hair:e.hairstyle})}},e.hairstyle)}))}),!!E&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Facial hair",children:M.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.facialhairstyle,selected:e.facialhairstyle===O,onClick:function(){return l("facial_hair",{facial_hair:e.facialhairstyle})}},e.facialhairstyle)}))}),!!P&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Head markings",children:R.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.headmarkingstyle,selected:e.headmarkingstyle===D,onClick:function(){return l("head_marking",{head_marking:e.headmarkingstyle})}},e.headmarkingstyle)}))}),!!F&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Body markings",children:j.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.bodymarkingstyle,selected:e.bodymarkingstyle===W,onClick:function(){return l("body_marking",{body_marking:e.bodymarkingstyle})}},e.bodymarkingstyle)}))}),!!z&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tail markings",children:U.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.tailmarkingstyle,selected:e.tailmarkingstyle===H,onClick:function(){return l("tail_marking",{tail_marking:e.tailmarkingstyle})}},e.tailmarkingstyle)}))}),!!K&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Body accessory",children:G.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.bodyaccessorystyle,selected:e.bodyaccessorystyle===q,onClick:function(){return l("body_accessory",{body_accessory:e.bodyaccessorystyle})}},e.bodyaccessorystyle)}))}),!!Y&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternate head",children:$.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.altheadstyle,selected:e.altheadstyle===X,onClick:function(){return l("alt_head",{alt_head:e.altheadstyle})}},e.altheadstyle)}))})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Colors",children:[{key:"change_eye_color",text:"Change eye color",action:"eye_color"},{key:"change_skin_tone",text:"Change skin tone",action:"skin_tone"},{key:"change_skin_color",text:"Change skin color",action:"skin_color"},{key:"change_head_accessory_color",text:"Change head accessory color",action:"head_accessory_color"},{key:"change_hair_color",text:"Change hair color",action:"hair_color"},{key:"change_secondary_hair_color",text:"Change secondary hair color",action:"secondary_hair_color"},{key:"change_facial_hair_color",text:"Change facial hair color",action:"facial_hair_color"},{key:"change_secondary_facial_hair_color",text:"Change secondary facial hair color",action:"secondary_facial_hair_color"},{key:"change_head_marking_color",text:"Change head marking color",action:"head_marking_color"},{key:"change_body_marking_color",text:"Change body marking color",action:"body_marking_color"},{key:"change_tail_marking_color",text:"Change tail marking color",action:"tail_marking_color"}].map((function(e){return!!i[e.key]&&(0,o.createComponentVNode)(2,a.Button,{content:e.text,onClick:function(){return c(e.action)}})}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.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,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),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,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(76),i=n(4);t.AtmosControl=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data,(0,r.useLocalState)(t,"tabIndex",0)),u=c[0],s=c[1];return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:0===u,children:(0,o.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,children:[(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:"table"})," Data View"]},"DataView"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"map-marked-alt"})," Map View"]},"MapView")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,l);case 1:return(0,o.createComponentVNode)(2,d);default:return"WE SHOULDN'T BE HERE!"}}(u)]})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.alarms;return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",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:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Access"})]}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,c.TableCell,{children:e.name}),(0,o.createComponentVNode)(2,c.TableCell,{children:(t=e.danger,0===t?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Good"}):1===t?(0,o.createComponentVNode)(2,a.Box,{color:"orange",bold:!0,children:"Warning"}):2===t?(0,o.createComponentVNode)(2,a.Box,{color:"red",bold:!0,children:"DANGER"}):void 0)}),(0,o.createComponentVNode)(2,c.TableCell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"cog",content:"Access",onClick:function(){return i("open_alarm",{aref:e.ref})}})})]},e.name);var t}))]})})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=(0,r.useLocalState)(t,"zoom",1),i=c[0],l=c[1],d=n.alarms;return(0,o.createComponentVNode)(2,a.Box,{height:"526px",mb:"0.5rem",overflow:"hidden",children:(0,o.createComponentVNode)(2,a.NanoMap,{onZoom:function(e){return l(e)},children:d.filter((function(e){return 1===e.z})).map((function(e){return(0,o.createComponentVNode)(2,a.NanoMap.Marker,{x:e.x,y:e.y,zoom:i,icon:"circle",tooltip:e.name,color:(t=e.danger,0===t?"green":1===t?"orange":2===t?"red":void 0)},e.ref);var t}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.pressure,s=l.max_pressure,m=l.filter_type,p=l.filter_type_list;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:d?"On":"Off",color:d?null:"red",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",disabled:0===u,width:2.2,onClick:function(){return i("min_pressure")}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"kPa",width:6.1,lineHeight:1.5,step:10,minValue:0,maxValue:s,value:u,onDrag:function(e,t){return i("custom_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",disabled:u===s,width:2.2,onClick:function(){return i("max_pressure")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.gas_type===m,content:e.label,onClick:function(){return i("set_filter",{filter:e.gas_type})}},e.label)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.pressure,m=d.max_pressure,p=d.node1_concentration,f=d.node2_concentration;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:u?"On":"Off",color:u?null:"red",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",disabled:0===s,width:2.2,onClick:function(){return l("min_pressure")}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"kPa",width:6.1,lineHeight:1.5,step:10,minValue:0,maxValue:m,value:s,onDrag:function(e,t){return l("custom_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",disabled:s===m,width:2.2,onClick:function(){return l("max_pressure")}})]}),(0,o.createComponentVNode)(2,i,{node_name:"Node 1",node_ref:p}),(0,o.createComponentVNode)(2,i,{node_name:"Node 2",node_ref:f})]})})})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=(n.data,e.node_name),l=e.node_ref;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",width:2.2,disabled:0===l,onClick:function(){return c("set_node",{node_name:i,concentration:(l-10)/100})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"%",width:6.1,lineHeight:1.5,stepPixelSize:10,minValue:0,maxValue:100,value:l,onChange:function(e,t){return c("set_node",{node_name:i,concentration:t/100})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",width:2.2,disabled:100===l,onClick:function(){return c("set_node",{node_name:i,concentration:(l+10)/100})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.rate,s=l.max_rate,m=l.gas_unit,p=l.step;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:d?"On":"Off",color:d?null:"red",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Rate",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",textAlign:"center",disabled:0===u,width:2.2,onClick:function(){return i("min_rate")}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:m,width:6.1,lineHeight:1.5,step:p,minValue:0,maxValue:s,value:u,onDrag:function(e,t){return i("custom_rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",textAlign:"center",disabled:u===s,width:2.2,onClick:function(){return i("max_rate")}})]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Autolathe=void 0;var o=n(0),r=n(43),a=n(26),c=n(1),i=n(2),l=n(4),d=n(20),u=function(e,t,n,o){return null===e.requirements||!(e.requirements.metal*o>t)&&!(e.requirements.glass*o>n)};t.Autolathe=function(e,t){var n=(0,c.useBackend)(t),s=n.act,m=n.data,p=m.total_amount,f=(m.max_amount,m.metal_amount),h=m.glass_amount,C=m.busyname,N=(m.busyamt,m.showhacked,m.buildQueue),b=m.buildQueueLen,g=m.recipes,V=m.categories,v=(0,c.useSharedState)(t,"category",0),y=v[0],_=v[1];0===y&&(y="Tools");var x=f.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),k=h.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),L=p.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),B=(0,c.useSharedState)(t,"search_text",""),w=B[0],S=B[1],I=(0,d.createSearch)(w,(function(e){return e.name})),T="";b>0&&(T=N.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:N[t][0],onClick:function(){return s("remove_from_queue",{remove_from_queue:N.indexOf(e)+1})}},e)},t)})));var A=(0,r.flow)([(0,a.filter)((function(e){return(e.category.indexOf(y)>-1||w)&&(m.showhacked||!e.hacked)})),w&&(0,a.filter)(I),(0,a.sortBy)((function(e){return e.name.toLowerCase()}))])(g),E="Build";w?E="Results for: '"+w+"':":y&&(E="Build ("+y+")");return(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,i.Section,{title:E,buttons:(0,o.createComponentVNode)(2,i.Dropdown,{width:"190px",options:V,selected:y,onSelected:function(e){return _(e)}}),children:[(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search for...",onInput:function(e,t){return S(t)},mb:1}),A.map((function(e){return(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+e.image,style:{"vertical-align":"middle",width:"32px",margin:"0px","margin-left":"0px"}}),(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&1===m.busyamt,disabled:!u(e,m.metal_amount,m.glass_amount,1),onClick:function(){return s("make",{make:e.uid,multiplier:1})},children:(0,d.toTitleCase)(e.name)}),e.max_multiplier>=10&&(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&10===m.busyamt,disabled:!u(e,m.metal_amount,m.glass_amount,10),onClick:function(){return s("make",{make:e.uid,multiplier:10})},children:"10x"}),e.max_multiplier>=25&&(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&25===m.busyamt,disabled:!u(e,m.metal_amount,m.glass_amount,25),onClick:function(){return s("make",{make:e.uid,multiplier:25})},children:"25x"}),e.max_multiplier>25&&(0,o.createComponentVNode)(2,i.Button,{icon:"hammer",selected:m.busyname===e.name&&m.busyamt===e.max_multiplier,disabled:!u(e,m.metal_amount,m.glass_amount,e.max_multiplier),onClick:function(){return s("make",{make:e.uid,multiplier:e.max_multiplier})},children:[e.max_multiplier,"x"]})]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:e.requirements&&Object.keys(e.requirements).map((function(t){return(0,d.toTitleCase)(t)+": "+e.requirements[t]})).join(", ")||(0,o.createComponentVNode)(2,i.Box,{children:"No resources required."})})]},e.ref)}))]}),2,{style:{float:"left",width:"68%"}}),(0,o.createVNode)(1,"div",null,[(0,o.createComponentVNode)(2,i.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Metal",children:x}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Glass",children:k}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Total",children:L}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Storage",children:[m.fill_percent,"% Full"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Building",children:(0,o.createComponentVNode)(2,i.Box,{color:C?"green":"",children:C||"Nothing"})}),(0,o.createComponentVNode)(2,i.Section,{title:"Build Queue",children:[T,(0,o.createVNode)(1,"div",null,(0,o.createComponentVNode)(2,i.Button,{icon:"times",content:"Clear All",disabled:!m.buildQueueLen,onClick:function(){return s("clear_queue")}}),2,{align:"right"})]})],4,{style:{float:"right",width:"30%"}})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BlueSpaceArtilleryControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BlueSpaceArtilleryControl=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data;return n=d.ready?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:"green",children:"Ready"}):d.reloadtime_text?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reloading In",color:"red",children:d.reloadtime_text}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:"red",children:"No cannon connected!"}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.notice&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alert",color:"red",children:d.notice}),n,(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,a.Button,{icon:"crosshairs",content:d.target?d.target:"None",onClick:function(){return l("recalibrate")}})}),1===d.ready&&!!d.target&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Firing",children:(0,o.createComponentVNode)(2,a.Button,{icon:"skull",content:"FIRE!",color:"red",onClick:function(){return l("fire")}})}),!d.connected&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",content:"Complete Deployment",onClick:function(){return l("build")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BluespaceTap=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(95);t.BluespaceTap=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.product||[],s=d.desiredLevel,m=d.inputLevel,p=d.points,f=d.totalPoints,h=d.powerUse,C=d.availablePower,N=d.maxLevel,b=d.emagged,g=d.safeLevels,V=d.nextLevelPower,v=s>m?"bad":"good";return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:1,children:"Safety Protocols disabled"}),!!(m>g)&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:1,children:"High Power, Instability likely"}),(0,o.createComponentVNode)(2,a.Collapsible,{title:"Input Management",children:(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Input Level",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Desired Level",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===s,tooltip:"Set to 0",onClick:function(){return l("set",{set_level:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"step-backward",tooltip:"Decrease to actual input level",disabled:0===s,onClick:function(){return l("set",{set_level:m})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===s,tooltip:"Decrease one step",onClick:function(){return l("decrease")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:s,fillValue:m,minValue:0,color:v,maxValue:N,stepPixelSize:20,step:1,onChange:function(e,t){return l("set",{set_level:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:s===N,tooltip:"Increase one step",tooltipPosition:"left",onClick:function(){return l("increase")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:s===N,tooltip:"Set to max",tooltipPosition:"left",onClick:function(){return l("set",{set_level:N})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Power Use",children:(0,i.formatPower)(h)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power for next level",children:(0,i.formatPower)(V)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Surplus Power",children:(0,i.formatPower)(C)})]})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Points",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Points",children:f})]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Box,{children:(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,{disabled:e.price>=p,onClick:function(){return l("vend",{target:e.key})},content:e.price})},e.key)}))})})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BodyScanner=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4),l=[["good","Alive"],["average","Critical"],["bad","DEAD"]],d=[["hasBorer","bad","Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended."],["hasVirus","bad","Viral pathogen detected in blood stream."],["blind","average","Cataracts detected."],["colourblind","average","Photoreceptor abnormalities detected."],["nearsighted","average","Retinal misalignment detected."]],u=[["Respiratory","oxyLoss"],["Brain","brainLoss"],["Toxin","toxLoss"],["Radioactive","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.filter((function(e){return!!e})).reduce((function(e,t){return(0,o.createFragment)([e,(0,o.createComponentVNode)(2,c.Box,{children:t},t)],0)}),null):null},f=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,a.useBackend)(t).data,r=n.occupied,c=n.occupant,l=void 0===c?{}:c,d=r?(0,o.createComponentVNode)(2,h,{occupant:l}):(0,o.createComponentVNode)(2,y);return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:d})})};var h=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,C,{occupant:t}),(0,o.createComponentVNode)(2,N,{occupant:t}),(0,o.createComponentVNode)(2,b,{occupant:t}),(0,o.createComponentVNode)(2,V,{organs:t.extOrgan}),(0,o.createComponentVNode)(2,v,{organs:t.intOrgan})]})},C=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data.occupant;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"print",onClick:function(){return i("print_p")},children:"Print Report"}),(0,o.createComponentVNode)(2,c.Button,{icon:"user-slash",onClick:function(){return i("ejectify")},children:"Eject"})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:d.maxHealth,value:d.health/d.maxHealth,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",color:l[d.stat][0],children:l[d.stat][1]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:(0,r.round)(d.bodyTempC,0)}),"\xb0C,\xa0",(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:(0,r.round)(d.bodyTempF,0)}),"\xb0F"]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Implants",children:d.implant_len?(0,o.createComponentVNode)(2,c.Box,{children:d.implant.map((function(e){return e.name})).join(", ")}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"None"})})]})})},N=function(e){var t=e.occupant;return t.hasBorer||t.blind||t.colourblind||t.nearsighted||t.hasVirus?(0,o.createComponentVNode)(2,c.Section,{title:"Abnormalities",children:d.map((function(e,n){if(t[e[0]])return(0,o.createComponentVNode)(2,c.Box,{color:e[1],bold:"bad"===e[1],children:e[2]})}))}):(0,o.createComponentVNode)(2,c.Section,{title:"Abnormalities",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No abnormalities found."})})},b=function(e){var t=e.occupant;return(0,o.createComponentVNode)(2,c.Section,{title:"Damage",children:(0,o.createComponentVNode)(2,c.Table,{children:m(u,(function(e,n,r){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Table.Row,{color:"label",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e[0],":"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:!!n&&n[0]+":"})]}),(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,g,{value:t[e[1]],marginBottom:r100)&&"average":"bad")||!!e.status.robotic&&"label",width:"33%",children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"center",q:!0,children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:e.maxHealth,mt:t>0&&"0.5rem",value:e.totalLoss/100,ranges:s,children:[(0,o.createComponentVNode)(2,c.Box,{float:"left",display:"inline",children:[!!e.bruteLoss&&(0,o.createComponentVNode)(2,c.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"bone"}),(0,r.round)(e.bruteLoss,0),"\xa0",(0,o.createComponentVNode)(2,c.Tooltip,{position:"top",content:"Brute damage"})]}),!!e.fireLoss&&(0,o.createComponentVNode)(2,c.Box,{display:"inline",position:"relative",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"fire"}),(0,r.round)(e.fireLoss,0),(0,o.createComponentVNode)(2,c.Tooltip,{position:"top",content:"Burn damage"})]})]}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:(0,r.round)(e.totalLoss,0)})]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"right",verticalAlign:"top",width:"33%",pt:t>0&&"calc(0.5rem + 2px)",children:[(0,o.createComponentVNode)(2,c.Box,{color:"average",display:"inline",children:p([!!e.internalBleeding&&"Internal bleeding",!!e.lungRuptured&&"Ruptured lung",!!e.status.broken&&e.status.broken,f(e.germ_level),!!e.open&&"Open incision"])}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:[p([!!e.status.splinted&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Splinted"}),!!e.status.robotic&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Robotic"}),!!e.status.dead&&(0,o.createComponentVNode)(2,c.Box,{color:"bad",bold:!0,children:"DEAD"})]),p(e.shrapnel.map((function(e){return e.known?e.name:"Unknown object"})))]})]})]},t)}))]})})},v=function(e){return 0===e.organs.length?(0,o.createComponentVNode)(2,c.Section,{title:"Internal Organs",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"N/A"})}):(0,o.createComponentVNode)(2,c.Section,{title:"Internal Organs",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"center",children:"Damage"}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"right",children:"Injuries"})]}),e.organs.map((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{textTransform:"capitalize",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{color:(!e.dead?e.germ_level>100&&"average":"bad")||e.robotic>0&&"label",width:"33%",children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.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,c.Table.Cell,{textAlign:"right",verticalAlign:"top",width:"33%",pt:t>0&&"calc(0.5rem + 2px)",children:[(0,o.createComponentVNode)(2,c.Box,{color:"average",display:"inline",children:p([f(e.germ_level)])}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:p([1===e.robotic&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Robotic"}),2===e.robotic&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Assisted"}),!!e.dead&&(0,o.createComponentVNode)(2,c.Box,{color:"bad",bold:!0,children:"DEAD"})])})]})]},t)}))]})})},y=function(){return(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,c.Flex,{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 occupant detected."]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BotClean=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BotClean=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.noaccess,s=l.maintpanel,m=l.on,p=l.autopatrol,f=l.canhack,h=l.emagged,C=l.remote_disabled,N=l.painame,b=l.cleanblood;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",d?"unlock":"lock"," this interface."]}),(0,o.createComponentVNode)(2,a.Section,{title:"General Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"On":"Off",selected:m,disabled:u,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patrol",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Auto Patrol",disabled:u,onClick:function(){return i("autopatrol")}})}),!!s&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance Panel",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Panel Open!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety System",children:(0,o.createComponentVNode)(2,a.Box,{color:h?"bad":"good",children:h?"DISABLED!":"Enabled"})}),!!f&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hacking",children:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:h?"Restore Safties":"Hack",disabled:u,color:"bad",onClick:function(){return i("hack")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Access",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:!C,content:"AI Remote Control",disabled:u,onClick:function(){return i("disableremote")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cleaning Settings",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:b,content:"Clean Blood",disabled:u,onClick:function(){return i("blood")}})}),N&&(0,o.createComponentVNode)(2,a.Section,{title:"pAI",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:N,disabled:u,onClick:function(){return i("ejectpai")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BotSecurity=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BotSecurity=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.noaccess,s=l.maintpanel,m=l.on,p=l.autopatrol,f=l.canhack,h=l.emagged,C=l.remote_disabled,N=l.painame,b=l.check_id,g=l.check_weapons,V=l.check_warrant,v=l.arrest_mode,y=l.arrest_declare;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",d?"unlock":"lock"," this interface."]}),(0,o.createComponentVNode)(2,a.Section,{title:"General Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"On":"Off",selected:m,disabled:u,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patrol",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Auto Patrol",disabled:u,onClick:function(){return i("autopatrol")}})}),!!s&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Maintenance Panel",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Panel Open!"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety System",children:(0,o.createComponentVNode)(2,a.Box,{color:h?"bad":"good",children:h?"DISABLED!":"Enabled"})}),!!f&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hacking",children:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:h?"Restore Safties":"Hack",disabled:u,color:"bad",onClick:function(){return i("hack")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Remote Access",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:!C,content:"AI Remote Control",disabled:u,onClick:function(){return i("disableremote")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Who To Arrest",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:b,content:"Unidentifiable Persons",disabled:u,onClick:function(){return i("authid")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:g,content:"Unauthorized Weapons",disabled:u,onClick:function(){return i("authweapon")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Wanted Criminals",disabled:u,onClick:function(){return i("authwarrant")}})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Arrest Procedure",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:v,content:"Detain Targets Indefinitely",disabled:u,onClick:function(){return i("arrtype")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:y,content:"Announce Arrests On Radio",disabled:u,onClick:function(){return i("arrdeclare")}})]}),N&&(0,o.createComponentVNode)(2,a.Section,{title:"pAI",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:N,disabled:u,onClick:function(){return i("ejectpai")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigCells=void 0;var o=n(0),r=n(4),a=n(2),c=n(1),i=function(e,t){var n=e.cell,r=(0,c.useBackend)(t).act,i=n.cell_id,l=n.occupant,d=n.crimes,u=n.brigged_by,s=n.time_left_seconds,m=n.time_set_seconds,p=n.ref,f="";s>0&&(f+=" BrigCells__listRow--active");return(0,o.createComponentVNode)(2,a.Table.Row,{className:f,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:i}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:l}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:u}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.TimeDisplay,{totalSeconds:m})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.TimeDisplay,{totalSeconds:s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{type:"button",onClick:function(){r("release",{ref:p})},children:"Release"})})]})},l=function(e){var t=e.cells;return(0,o.createComponentVNode)(2,a.Table,{className:"BrigCells__list",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Cell"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Occupant"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Crimes"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Brigged By"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Time Brigged For"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Time Left"}),(0,o.createComponentVNode)(2,a.Table.Cell,{header:!0,children:"Release"})]}),t.map((function(e){return(0,o.createComponentVNode)(2,i,{cell:e},e.ref)}))]})};t.BrigCells=function(e,t){var n=(0,c.useBackend)(t),i=(n.act,n.data.cells);return(0,o.createComponentVNode)(2,r.Window,{theme:"security",resizable:!0,children:(0,o.createComponentVNode)(2,r.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{height:"100%",flexGrow:"1",children:(0,o.createComponentVNode)(2,l,{cells:i})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BrigTimer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.BrigTimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;l.nameText=l.occupant,l.timing&&(l.prisoner_hasrec?l.nameText=(0,o.createComponentVNode)(2,a.Box,{color:"green",children:l.occupant}):l.nameText=(0,o.createComponentVNode)(2,a.Box,{color:"red",children:l.occupant}));var d="pencil-alt";l.prisoner_name&&(l.prisoner_hasrec||(d="exclamation-triangle"));var u=[],s=0;for(s=0;se.current_positions&&(0,o.createComponentVNode)(2,a.Box,{color:"green",children:e.total_positions-e.current_positions})||(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"0"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"-",disabled:s.cooldown_time||!e.can_close,onClick:function(){return u("make_job_unavailable",{job:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"+",disabled:s.cooldown_time||!e.can_open,onClick:function(){return u("make_job_available",{job:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:s.target_dept&&(0,o.createComponentVNode)(2,a.Box,{color:"green",children:s.priority_jobs.indexOf(e.title)>-1?"Yes":""})||(0,o.createComponentVNode)(2,a.Button,{content:e.is_priority?"Yes":"No",selected:e.is_priority,disabled:s.cooldown_time||!e.can_prioritize,onClick:function(){return u("prioritize_job",{job:e.title})}})})]},e.title)}))]})})],4):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;case 2:n=s.authenticated&&s.scan_name?s.modify_name?(0,o.createComponentVNode)(2,i.AccessList,{accesses:s.regions,selectedList:s.selectedAccess,accessMod:function(e){return u("set",{access:e})},grantAll:function(){return u("grant_all")},denyAll:function(){return u("clear_all")},grantDep:function(e){return u("grant_region",{region:e})},denyDep:function(e){return u("deny_region",{region:e})}}):(0,o.createComponentVNode)(2,a.Section,{title:"Card Missing",color:"red",children:"No card to modify."}):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;case 3:n=s.authenticated?s.records.length?(0,o.createComponentVNode)(2,a.Section,{title:"Records",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Delete All Records",disabled:!s.authenticated||0===s.records.length||s.target_dept,onClick:function(){return u("wipe_all_logs")}}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Crewman"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Old Rank"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"New Rank"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Authorized By"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Time"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Reason"}),!!s.iscentcom&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Deleted By"})]}),s.records.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.transferee}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.oldvalue}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.newvalue}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.whodidit}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.timestamp}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.reason}),!!s.iscentcom&&(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.deletedby})]},e.timestamp)}))]}),!!s.iscentcom&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Delete MY Records",color:"purple",disabled:!s.authenticated||0===s.records.length,onClick:function(){return u("wipe_my_logs")}})})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Records",children:"No records."}):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;case 4:n=s.authenticated&&s.scan_name?(0,o.createComponentVNode)(2,a.Section,{title:"Your Team",children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Rank"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Sec Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Actions"})]}),s.people_dept.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.title}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.crimstat}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:e.buttontext,disabled:!e.demotable,onClick:function(){return u("remote_demote",{remote_demote:e.name})}})})]},e.title)}))]})}):(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"Not logged in."});break;default:n=(0,o.createComponentVNode)(2,a.Section,{title:"Warning",color:"red",children:"ERROR: Unknown Mode."})}return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[m,p,n]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoConsole=void 0;var o=n(0),r=n(43),a=n(26),c=n(1),i=n(2),l=n(4),d=(n(77),n(20));t.CargoConsole=function(e,t){return(0,o.createComponentVNode)(2,l.Window,{children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,p)]})})};var u=function(e,t){var n=(0,c.useLocalState)(t,"contentsModal",null),r=n[0],a=n[1],l=(0,c.useLocalState)(t,"contentsModalTitle",null),d=l[0],u=l[1];return null!==r&&null!==d?(0,o.createComponentVNode)(2,i.Modal,{maxWidth:"75%",width:window.innerWidth+"px",maxHeight:.75*window.innerHeight+"px",mx:"auto",children:[(0,o.createComponentVNode)(2,i.Box,{width:"100%",bold:!0,children:(0,o.createVNode)(1,"h1",null,[d,(0,o.createTextVNode)(" contents:")],0)}),(0,o.createComponentVNode)(2,i.Box,{children:r.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:["- ",e]},e)}))}),(0,o.createComponentVNode)(2,i.Box,{m:2,children:(0,o.createComponentVNode)(2,i.Button,{content:"Close",onClick:function(){a(null),u(null)}})})]}):void 0},s=function(e,t){var n,r,a=(0,c.useBackend)(t),l=a.act,d=a.data,u=d.is_public,s=d.points,m=d.timeleft,p=d.moving,f=d.at_station;return p||f?!p&&f?(n="Docked at the station",r="Return Shuttle"):p&&(r="In Transit...",n=1!==m?"Shuttle is en route (ETA: "+m+" minutes)":"Shuttle is en route (ETA: "+m+" minute)"):(n="Docked off-station",r="Call Shuttle"),(0,o.createComponentVNode)(2,i.Section,{title:"Status",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Points Available",children:s}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Shuttle Status",children:n}),0===u&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,i.Button,{content:r,disabled:p,onClick:function(){return l("moveShuttle")}}),(0,o.createComponentVNode)(2,i.Button,{content:"View Central Command Messages",onClick:function(){return l("showMessages")}})]})]})})},m=function(e,t){var n=(0,c.useBackend)(t),l=n.act,u=n.data,s=u.categories,m=u.supply_packs,p=(0,c.useSharedState)(t,"category","Emergency"),f=p[0],h=p[1],C=(0,c.useSharedState)(t,"search_text",""),N=C[0],b=C[1],g=(0,c.useLocalState)(t,"contentsModal",null),V=(g[0],g[1]),v=(0,c.useLocalState)(t,"contentsModalTitle",null),y=(v[0],v[1]),_=(0,d.createSearch)(N,(function(e){return e.name})),x=(0,r.flow)([(0,a.filter)((function(e){return e.cat===s.filter((function(e){return e.name===f}))[0].category||N})),N&&(0,a.filter)(_),(0,a.sortBy)((function(e){return e.name.toLowerCase()}))])(m),k="Crate Catalogue";return N?k="Results for '"+N+"':":f&&(k="Browsing "+f),(0,o.createComponentVNode)(2,i.Section,{title:k,buttons:(0,o.createComponentVNode)(2,i.Dropdown,{width:"190px",options:s.map((function(e){return e.name})),selected:f,onSelected:function(e){return h(e)}}),children:[(0,o.createComponentVNode)(2,i.Input,{fluid:!0,placeholder:"Search for...",onInput:function(e,t){return b(t)},mb:1}),(0,o.createComponentVNode)(2,i.Box,{maxHeight:25,overflowY:"auto",overflowX:"hidden",children:(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",children:x.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{bold:!0,children:[e.name," (",e.cost," Points)"]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"right",pr:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:"Order 1",icon:"shopping-cart",onClick:function(){return l("order",{crate:e.ref,multiple:0})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Order Multiple",icon:"cart-plus",onClick:function(){return l("order",{crate:e.ref,multiple:1})}}),(0,o.createComponentVNode)(2,i.Button,{content:"View Contents",icon:"search",onClick:function(){V(e.contents),y(e.name)}})]})]},e.name)}))})})]})},p=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=a.requests,d=a.canapprove,u=a.orders;return(0,o.createComponentVNode)(2,i.Section,{title:"Details",children:(0,o.createComponentVNode)(2,i.Box,{maxHeight:15,overflowY:"auto",overflowX:"hidden",children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,children:"Requests"}),(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",children:l.map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:[(0,o.createComponentVNode)(2,i.Box,{children:["- #",e.ordernum,": ",e.supply_type," for ",(0,o.createVNode)(1,"b",null,e.orderedby,0)]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,children:["Reason: ",e.comment]})]}),(0,o.createComponentVNode)(2,i.Table.Cell,{textAlign:"right",pr:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:"Approve",color:"green",disabled:!d,onClick:function(){return r("approve",{ordernum:e.ordernum})}}),(0,o.createComponentVNode)(2,i.Button,{content:"Deny",color:"red",onClick:function(){return r("deny",{ordernum:e.ordernum})}})]})]},e.ordernum)}))}),(0,o.createComponentVNode)(2,i.Box,{bold:!0,children:"Confirmed Orders"}),(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",children:u.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.Box,{children:["- #",e.ordernum,": ",e.supply_type," for ",(0,o.createVNode)(1,"b",null,e.orderedby,0)]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,children:["Reason: ",e.comment]})]})},e.ordernum)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(1),a=n(2),c=n(134),i=n(4),l=[1,5,10,20,30,50],d=[1,5,10];t.ChemDispenser=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.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),c=n.act,i=n.data,d=i.amount,u=i.energy,s=i.maxEnergy;return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",flex:"content",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:s,ranges:{good:[.5*s,Infinity],average:[.25*s,.5*s],bad:[-Infinity,.25*s]},children:[u," / ",s," Units"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dispense",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",spacing:"1",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",width:"14%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:d===e,content:e,m:"0",width:"100%",onClick:function(){return c("amount",{amount:e})}})},t)}))})})]})})},s=function(e,t){for(var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.chemicals,d=void 0===l?[]:l,u=[],s=0;s<(d.length+1)%3;s++)u.push(!0);return(0,o.createComponentVNode)(2,a.Section,{title:i.glass?"Drink Dispenser":"Chemical Dispenser",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.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,a.Flex.Item,{grow:"1",basis:"25%",height:"20px",width:"30%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",overflow:"hidden",textOverflow:"ellipsis",width:"100%",height:"100%",align:"flex-start",content:e.title,onClick:function(){return c("dispense",{reagent:e.id})}})},t)})),u.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",basis:"25%",height:"20px"},t)}))]})})},m=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,u=l.isBeakerLoaded,s=l.beakerCurrentVolume,m=l.beakerMaxVolume,p=l.beakerContents,f=void 0===p?[]:p;return(0,o.createComponentVNode)(2,a.Section,{title:l.glass?"Glass":"Beaker",flex:"content",minHeight:"25%",buttons:(0,o.createComponentVNode)(2,a.Box,{children:[!!u&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[s," / ",m," units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!u,onClick:function(){return i("ejectBeaker")}})]}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:u,beakerContents:f,buttons:function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Isolate",icon:"compress-arrows-alt",onClick:function(){return i("remove",{reagent:e.id,amount:-1})}}),d.map((function(t,n){return(0,o.createComponentVNode)(2,a.Button,{content:t,onClick:function(){return i("remove",{reagent:e.id,amount:t})}},n)})),(0,o.createComponentVNode)(2,a.Button,{content:"ALL",onClick:function(){return i("remove",{reagent:e.id,amount:e.volume})}})],0)}})})}},function(e,t,n){"use strict";e.exports=n(475)()},function(e,t,n){"use strict";var o=n(476);function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,a,c){if(c!==o){var i=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 i.name="Invariant Violation",i}}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:a,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.ChemHeater=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(134),l=n(4);t.ChemHeater=function(e,t){return(0,o.createComponentVNode)(2,l.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.targetTemp,u=l.targetTempReached,s=l.autoEject,m=l.isActive,p=l.currentTemp,f=l.isBeakerLoaded;return(0,o.createComponentVNode)(2,c.Section,{title:"Settings",flexBasis:"content",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{content:"Auto-eject",icon:s?"toggle-on":"toggle-off",selected:s,onClick:function(){return i("toggle_autoeject")}}),(0,o.createComponentVNode)(2,c.Button,{content:m?"On":"Off",icon:"power-off",selected:m,disabled:!f,onClick:function(){return i("toggle_on")}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(d,0),minValue:0,maxValue:1e3,onDrag:function(e,t){return i("adjust_temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",color:u?"good":"average",children:f&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:p,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})]})})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.isBeakerLoaded,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.beakerContents;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",flexGrow:"1",buttons:!!d&&(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[u," / ",s," units"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return r("eject_beaker")}})]}),children:(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:d,beakerContents:m})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(134),l=n(49),d=[1,5,10],u=["bottle.png","small_bottle.png","wide_bottle.png","round_bottle.png","reagent_bottle.png"];t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data,a=n.condi,i=n.beaker,d=n.beaker_reagents,u=void 0===d?[]:d,f=n.buffer_reagents,h=void 0===f?[]:f,N=n.mode;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,l.ComplexModal),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,s,{beaker:i,beakerReagents:u,bufferNonEmpty:h.length>0}),(0,o.createComponentVNode)(2,m,{mode:N,bufferReagents:h}),(0,o.createComponentVNode)(2,p,{isCondiment:a,bufferNonEmpty:h.length>0}),(0,o.createComponentVNode)(2,C)]})]})};var s=function(e,t){var n=(0,r.useBackend)(t).act,c=e.beaker,u=e.beakerReagents,s=e.bufferNonEmpty;return(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",flexGrow:"0",flexBasis:"300px",buttons:s?(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"eject",disabled:!c,content:"Eject and Clear Buffer",onClick:function(){return n("eject")}}):(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!c,content:"Eject and Clear Buffer",onClick:function(){return n("eject")}}),children:c?(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:!0,beakerContents:u,buttons:function(e,r){return(0,o.createComponentVNode)(2,a.Box,{mb:r0?(0,o.createComponentVNode)(2,i.BeakerContents,{beakerLoaded:!0,beakerContents:s,buttons:function(e,r){return(0,o.createComponentVNode)(2,a.Box,{mb:r0?l.desc:"N/A"}),l.blood_type&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood type",children:l.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood DNA",className:"LabeledList__breakContents",children:l.blood_dna})],4),!i.condi&&(0,o.createComponentVNode)(2,a.Button,{icon:i.printing?"spinner":"print",disabled:i.printing,iconSpin:!!i.printing,ml:"0.5rem",content:"Print",onClick:function(){return c("print",{idx:l.idx,beaker:e.args.beaker})}})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.CloningConsole=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(39),l=n(49),d=n(4),u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=e.args,u=d.activerecord,s=d.realname,m=d.health,p=d.unidentity,f=d.strucenzymes,h=m.split(" - ");return(0,o.createComponentVNode)(2,c.Section,{level:2,m:"-1rem",pb:"1rem",title:"Records of "+s,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Damage",children:h.length>1?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.oxy,display:"inline",children:h[0]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.toxin,display:"inline",children:h[2]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.brute,display:"inline",children:h[3]}),(0,o.createTextVNode)("\xa0|\xa0"),(0,o.createComponentVNode)(2,c.Box,{color:i.COLORS.damageType.burn,display:"inline",children:h[1]})],4):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Unknown"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"UI",className:"LabeledList__breakContents",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"SE",className:"LabeledList__breakContents",children:f}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Disk",children:[(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:!l.disk,icon:"arrow-circle-down",content:"Import",onClick:function(){return r("disk",{option:"load"})}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export UI",onClick:function(){return r("disk",{option:"save",savetype:"ui"})}}),(0,o.createComponentVNode)(2,c.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,c.Button,{disabled:!l.disk,icon:"arrow-circle-up",content:"Export SE",onClick:function(){return r("disk",{option:"save",savetype:"se"})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,c.Button,{disabled:!l.podready,icon:"user-plus",content:"Clone",onClick:function(){return r("clone",{ref:u})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Delete",onClick:function(){return r("del_rec")}})]})]})})};t.CloningConsole=function(e,t){var n=(0,a.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,h),(0,o.createComponentVNode)(2,C),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,c.Section,{noTopPadding:!0,flexGrow:"1",children:(0,o.createComponentVNode)(2,m)})]})]})};var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.menu;return(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===i,icon:"home",onClick:function(){return r("menu",{num:1})},children:"Main"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===i,icon:"folder",onClick:function(){return r("menu",{num:2})},children:"Records"})]})},m=function(e,t){var n,r=(0,a.useBackend)(t).data.menu;return 1===r?n=(0,o.createComponentVNode)(2,p):2===r&&(n=(0,o.createComponentVNode)(2,f)),n},p=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.loading,u=l.scantemp,s=l.occupant,m=l.locked,p=l.can_brainscan,f=l.scan_mode,h=l.numberofpods,C=l.pods,N=l.selected_pod,b=m&&!!s;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Scanner",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{display:"inline",color:"label",children:"Scanner Lock:\xa0"}),(0,o.createComponentVNode)(2,c.Button,{disabled:!s,selected:b,icon:b?"toggle-on":"toggle-off",content:b?"Engaged":"Disengaged",onClick:function(){return i("lock")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:b||!s,icon:"user-slash",content:"Eject Occupant",onClick:function(){return i("eject")}})],4),children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:d?(0,o.createComponentVNode)(2,c.Box,{color:"average",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"spinner",spin:!0}),"\xa0 Scanning..."]}):(0,o.createComponentVNode)(2,c.Box,{color:u.color,children:u.text})}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:f?"brain":"male",content:f?"Brain":"Body",onClick:function(){return i("toggle_mode")}})})]}),(0,o.createComponentVNode)(2,c.Button,{disabled:!s||d,icon:"user",content:"Scan Occupant",mt:"0.5rem",mb:"0",onClick:function(){return i("scan")}})]}),(0,o.createComponentVNode)(2,c.Section,{title:"Pods",level:"2",children:h?C.map((function(e,t){var n;return n="cloning"===e.status?(0,o.createComponentVNode)(2,c.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,c.Box,{textAlign:"center",children:(0,r.round)(e.progress,0)+"%"})}):"mess"===e.status?(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:"0.5rem",children:"ERROR"}):(0,o.createComponentVNode)(2,c.Button,{selected:N===e.pod,icon:N===e.pod&&"check",content:"Select",mt:"0.5rem",onClick:function(){return i("selectpod",{ref:e.pod})}}),(0,o.createComponentVNode)(2,c.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,c.Box,{color:"label",children:["Pod #",t+1]}),(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:e.biomass>=150?"good":"bad",display:"inline",children:[(0,o.createComponentVNode)(2,c.Icon,{name:e.biomass>=150?"circle":"circle-o"}),"\xa0",e.biomass]}),n]},t)})):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No pods detected. Unable to clone."})})],4)},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.records;return i.length?(0,o.createComponentVNode)(2,c.Box,{mt:"0.5rem",children:i.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{icon:"user",mb:"0.5rem",content:e.realname,onClick:function(){return r("view_rec",{ref:e.record})}},t)}))}):(0,o.createComponentVNode)(2,c.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",align:"center",textAlign:"center",color:"label",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user-slash",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),"No records found."]})})},h=function(e,t){var n,r=(0,a.useBackend)(t),i=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,c.NoticeBox,Object.assign({},d,{children:[(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",verticalAlign:"middle",children:l.text}),(0,o.createComponentVNode)(2,c.Button,{icon:"times-circle",float:"right",onClick:function(){return i("cleartemp")}}),(0,o.createComponentVNode)(2,c.Box,{clear:"both"})]})))}},C=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.scanner,d=i.numberofpods,u=i.autoallowed,s=i.autoprocess,m=i.disk;return(0,o.createComponentVNode)(2,c.Section,{title:"Status",buttons:(0,o.createFragment)([!!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{display:"inline",color:"label",children:"Auto-processing:\xa0"}),(0,o.createComponentVNode)(2,c.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,c.Button,{disabled:!m,icon:"eject",content:"Eject Disk",onClick:function(){return r("disk",{option:"eject"})}})],0),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Scanner",children:l?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Connected"}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Not connected!"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pods",children:d?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:[d," connected"]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"None connected!"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CommunicationsComputer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.CommunicationsComputer=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data,u=!1;d.authenticated?1===d.authenticated?n="Command":2===d.authenticated?n="Captain":3===d.authenticated?(n="CentComm Secure Connection",u=!0):n="ERROR: Report This Bug!":n="Not Logged In";var s="View ("+d.messages.length+")",m=(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Authentication",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access",children:n})||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.authenticated?"sign-out-alt":"id-card",selected:d.authenticated,disabled:d.noauthbutton,content:d.authenticated?"Log Out ("+n+")":"Log In",onClick:function(){return l("auth")}})})})}),!!d.esc_section&&(0,o.createComponentVNode)(2,a.Section,{title:"Escape Shuttle",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!d.esc_status&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:d.esc_status}),!!d.esc_callable&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Options",children:(0,o.createComponentVNode)(2,a.Button,{icon:"rocket",content:"Call Shuttle",disabled:!d.authhead,onClick:function(){return l("callshuttle")}})}),!!d.esc_recallable&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Options",children:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Recall Shuttle",disabled:!d.authhead||d.is_ai,onClick:function(){return l("cancelshuttle")}})}),!!d.lastCallLoc&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Last Call/Recall From",children:d.lastCallLoc})]})})],0),p="Make Priority Announcement";d.msg_cooldown>0&&(p+=" ("+d.msg_cooldown+"s)");var f=d.emagged?"Message [UNKNOWN]":"Message CentComm",h="Request Authentication Codes";d.cc_cooldown>0&&(f+=" ("+d.cc_cooldown+"s)",h+=" ("+d.cc_cooldown+"s)");var C,N=d.str_security_level,b=d.levels.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.icon,content:e.name,disabled:!d.authcapt||e.id===d.security_level,onClick:function(){return l("newalertlevel",{level:e.id})}},e.name)})),g=d.stat_display.presets.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.label,selected:e.name===d.stat_display.type,disabled:!d.authhead,onClick:function(){return l("setstat",{statdisp:e.name})}},e.name)})),V=d.stat_display.alerts.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.label,selected:e.alert===d.stat_display.icon,disabled:!d.authhead,onClick:function(){return l("setstat",{statdisp:"alert",alert:e.alert})}},e.alert)}));if(d.current_message_title)C=(0,o.createComponentVNode)(2,a.Section,{title:d.current_message_title,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Return To Message List",disabled:!d.authhead,onClick:function(){return l("messagelist")}}),children:(0,o.createComponentVNode)(2,a.Box,{children:d.current_message})});else{var v=d.messages.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"eye",content:"View",disabled:!d.authhead||d.current_message_title===e.title,onClick:function(){return l("messagelist",{msgid:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Delete",disabled:!d.authhead,onClick:function(){return l("delmessage",{msgid:e.id})}})]},e.id)}));C=(0,o.createComponentVNode)(2,a.Section,{title:"Messages Received",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-left",content:"Back To Main Menu",onClick:function(){return l("main")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:v})})}switch(d.menu_state){case 1:return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[m,(0,o.createComponentVNode)(2,a.Section,{title:"Captain-Only Actions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Alert",color:d.security_level_color,children:N}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Change Alert",children:b}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Announcement",children:(0,o.createComponentVNode)(2,a.Button,{icon:"bullhorn",content:p,disabled:!d.authcapt||d.msg_cooldown>0,onClick:function(){return l("announce")}})}),!!d.emagged&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transmit",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"broadcast-tower",color:"red",content:f,disabled:!d.authcapt||d.cc_cooldown>0,onClick:function(){return l("MessageSyndicate")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset Relays",disabled:!d.authcapt,onClick:function(){return l("RestoreBackup")}})]})||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transmit",children:(0,o.createComponentVNode)(2,a.Button,{icon:"broadcast-tower",content:f,disabled:!d.authcapt||d.cc_cooldown>0,onClick:function(){return l("MessageCentcomm")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nuclear Device",children:(0,o.createComponentVNode)(2,a.Button,{icon:"bomb",content:h,disabled:!d.authcapt||d.cc_cooldown>0,onClick:function(){return l("nukerequest")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Command Staff Actions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Displays",children:(0,o.createComponentVNode)(2,a.Button,{icon:"tv",content:"Change Status Displays",disabled:!d.authhead,onClick:function(){return l("status")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Incoming Messages",children:(0,o.createComponentVNode)(2,a.Button,{icon:"folder-open",content:s,disabled:!d.authhead,onClick:function(){return l("messagelist")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Misc",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Restart Nano-Mob Hunter GO! Server",disabled:!d.authhead,onClick:function(){return l("RestartNanoMob")}})})]})})]})});case 2:return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[m,(0,o.createComponentVNode)(2,a.Section,{title:"Modify Status Screens",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-left",content:"Back To Main Menu",onClick:function(){return l("main")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:g}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alerts",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Line 1",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.stat_display.line_1,disabled:!d.authhead,onClick:function(){return l("setmsg1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message Line 2",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.stat_display.line_2,disabled:!d.authhead,onClick:function(){return l("setmsg2")}})})]})})]})});case 3:return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[m,C]})});default:return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[m,"ERRROR. Unknown menu_state: ",d.menu_state,"Please report this to NT Technical Support."]})})}}},function(e,t,n){"use strict";t.__esModule=!0,t.Contractor=void 0;var o=n(0),r=n(1),a=n(2),c=n(183),i=n(4);var l={1:["ACTIVE","good"],2:["COMPLETED","good"],3:["FAILED","bad"]},d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting Syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"];t.Contractor=function(e,t){var n,c=(0,r.useBackend)(t),l=c.act,C=c.data;n=C.unauthorized?(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",backgroundColor:"rgba(0, 0, 0, 0.8)",children:(0,o.createComponentVNode)(2,f,{height:"100%",allMessages:["ERROR: UNAUTHORIZED USER"],finishedTimeout:100,onFinished:function(){}})}):C.load_animation_completed?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",children:(0,o.createComponentVNode)(2,u)}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",mt:"0.5rem",children:(0,o.createComponentVNode)(2,s)}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"hidden",children:1===C.page?(0,o.createComponentVNode)(2,m,{height:"100%"}):(0,o.createComponentVNode)(2,p,{height:"100%"})})],4):(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",backgroundColor:"rgba(0, 0, 0, 0.8)",children:(0,o.createComponentVNode)(2,f,{height:"100%",allMessages:d,finishedTimeout:3e3,onFinished:function(){return l("complete_load_animation")}})});var N=(0,r.useLocalState)(t,"viewingPhoto",""),b=N[0];N[1];return(0,o.createComponentVNode)(2,i.Window,{theme:"syndicate",children:[b&&(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,i.Window.Content,{className:"Contractor",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",height:"100%",children:n})})]})};var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.tc_available,d=i.tc_paid_out,u=i.completed_contracts,s=i.rep;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Summary",buttons:(0,o.createComponentVNode)(2,a.Box,{verticalAlign:"middle",mt:"0.25rem",children:[s," Rep"]})},e,{children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Box,{flexBasis:"50%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",children:[l," TC"]}),(0,o.createComponentVNode)(2,a.Button,{disabled:l<=0,content:"Claim",mx:"0.75rem",mb:"0",flexBasis:"content",onClick:function(){return c("claim")}})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:[d," TC"]})]})}),(0,o.createComponentVNode)(2,a.Box,{flexBasis:"50%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Box,{height:"20px",lineHeight:"20px",display:"inline-block",children:u})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contractor Status",verticalAlign:"middle",children:"ACTIVE"})]})})]})})))},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.page;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Tabs,Object.assign({},e,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return c("page",{page:1})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"suitcase"}),"Contracts"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return c("page",{page:2})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"shopping-cart"}),"Hub"]})]})))},m=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.contracts,s=d.contract_active,m=d.can_extract,p=!!s&&u.filter((function(e){return 1===e.status}))[0],f=p&&p.time_left>0,h=(0,r.useLocalState)(t,"viewingPhoto",""),C=(h[0],h[1]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Available Contracts",overflow:"auto",buttons:(0,o.createComponentVNode)(2,a.Button,{disabled:!m||f,icon:"parachute-box",content:["Call Extraction",f&&(0,o.createComponentVNode)(2,c.Countdown,{timeLeft:p.time_left,format:function(e,t){return" ("+t.substr(3)+")"}})],onClick:function(){return i("extract")}})},e,{children:u.slice().sort((function(e,t){return 1===e.status?-1:1===t.status?1:e.status-t.status})).map((function(e){var t;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",color:1===e.status&&"good",children:e.target_name}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",children:e.has_photo&&(0,o.createComponentVNode)(2,a.Button,{icon:"camera",mb:"-0.5rem",ml:"0.5rem",onClick:function(){return C("target_photo_"+e.uid+".png")}})})]}),className:"Contractor__Contract",buttons:(0,o.createComponentVNode)(2,a.Box,{width:"100%",children:[!!l[e.status]&&(0,o.createComponentVNode)(2,a.Box,{color:l[e.status][1],display:"inline-block",mt:1!==e.status&&"0.125rem",mr:"0.25rem",lineHeight:"20px",children:l[e.status][0]}),1===e.status&&(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"ban",color:"bad",content:"Abort",ml:"0.5rem",onClick:function(){return i("abort")}})]}),children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"2",mr:"0.5rem",children:[e.fluff_message,!!e.completed_time&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"check",mr:"0.5rem"}),"Contract completed at ",e.completed_time]}),!!e.dead_extraction&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",mt:"0.5rem",bold:!0,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mr:"0.5rem"}),"Telecrystals reward reduced drastically as the target was dead during extraction."]}),!!e.fail_reason&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"times",mr:"0.5rem"}),"Contract failed: ",e.fail_reason]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",flexBasis:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",color:"label",children:"Extraction Zone:"}),null==(t=e.difficulties)?void 0:t.map((function(t,n){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!!s,content:t.name+" ("+t.reward+" TC)",onClick:function(){return i("activate",{uid:e.uid,difficulty:n+1})}}),(0,o.createVNode)(1,"br")],4)})),!!e.objective&&(0,o.createComponentVNode)(2,a.Box,{color:"white",bold:!0,children:[e.objective.extraction_zone,(0,o.createVNode)(1,"br"),"(",(e.objective.reward_tc||0)+" TC",",\xa0",(e.objective.reward_credits||0)+" Credits",")"]})]})]})},e.uid)}))})))},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.rep,d=i.buyables;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Available Purchases",overflow:"auto"},e,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:[e.description,(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:l-1&&(0,o.createComponentVNode)(2,a.Box,{as:"span",color:0===e.stock?"bad":"good",ml:"0.5rem",children:[e.stock," in stock"]})]},e.uid)}))})))},f=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component),h=function(e,t){var n=(0,r.useLocalState)(t,"viewingPhoto",""),c=n[0],i=n[1];return(0,o.createComponentVNode)(2,a.Modal,{className:"Contractor__photoZoom",children:[(0,o.createComponentVNode)(2,a.Box,{as:"img",src:c}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Close",color:"grey",mt:"1rem",onClick:function(){return i("")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ConveyorSwitch=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ConveyorSwitch=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.slowFactor,u=l.oneWay,s=l.position;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Lever position",children:s>0?"forward":s<0?"reverse":"neutral"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Allow reverse",children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!u,onClick:function(){return i("toggleOneWay")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slowdown factor",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-double-left",onClick:function(){return i("slowFactor",{value:d-5})}})," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-left",onClick:function(){return i("slowFactor",{value:d-1})}})," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Slider,{width:"100px",mx:"1px",value:d,fillValue:d,minValue:1,maxValue:50,step:1,format:function(e){return e+"x"},onChange:function(e,t){return i("slowFactor",{value:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-right",onClick:function(){return i("slowFactor",{value:d+1})}})," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:"1px",children:[" ",(0,o.createComponentVNode)(2,a.Button,{icon:"angle-double-right",onClick:function(){return i("slowFactor",{value:d+5})}})," "]})]})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CrewMonitor=void 0;var o=n(0),r=n(26),a=n(20),c=n(1),i=n(2),l=n(76),d=n(39),u=n(4),s=function(e){return e.dead?"Deceased":1===parseInt(e.stat,10)?"Unconscious":"Living"},m=function(e){return e.dead?"red":1===parseInt(e.stat,10)?"orange":"green"};t.CrewMonitor=function(e,t){var n=(0,c.useBackend)(t),r=(n.act,n.data,(0,c.useLocalState)(t,"tabIndex",0)),a=r[0],l=r[1];return(0,o.createComponentVNode)(2,u.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:0===a,onClick:function(){return l(0)},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"table"})," Data View"]},"DataView"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:1===a,onClick:function(){return l(1)},children:[(0,o.createComponentVNode)(2,i.Icon,{name:"map-marked-alt"})," Map View"]},"MapView")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,p);case 1:return(0,o.createComponentVNode)(2,f);default:return"WE SHOULDN'T BE HERE!"}}(a)]})})})};var p=function(e,t){var n=(0,c.useBackend)(t),u=n.act,p=n.data,f=(0,r.sortBy)((function(e){return e.name}))(p.crewmembers||[]),h=(0,c.useLocalState)(t,"search",""),C=h[0],N=h[1],b=(0,a.createSearch)(C,(function(e){return e.name+"|"+e.assignment+"|"+e.area}));return(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search by name, assignment or location..",width:"100%",onInput:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Table,{m:"0.5rem",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:"Status"}),(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Location"})]}),f.filter(b).map((function(e){return(0,o.createComponentVNode)(2,i.Table.Row,{bold:!!e.is_command,children:[(0,o.createComponentVNode)(2,l.TableCell,{children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,l.TableCell,{children:[(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:m(e),children:s(e)}),e.sensor_type>=2?(0,o.createComponentVNode)(2,i.Box,{inline:!0,children:["(",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.oxy,children:e.oxy}),"|",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.toxin,children:e.tox}),"|",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.burn,children:e.fire}),"|",(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:d.COLORS.damageType.brute,children:e.brute}),")"]}):null]}),(0,o.createComponentVNode)(2,l.TableCell,{children:3===e.sensor_type?p.isAI?(0,o.createComponentVNode)(2,i.Button,{fluid:!0,icon:"location-arrow",content:e.area+" ("+e.x+", "+e.y+")",onClick:function(){return u("track",{track:e.ref})}}):e.area+" ("+e.x+", "+e.y+")":"Not Available"})]},e.name)}))]})]})},f=function(e,t){var n=(0,c.useBackend)(t).data,r=(0,c.useLocalState)(t,"zoom",1),a=r[0],l=r[1];return(0,o.createComponentVNode)(2,i.Box,{height:"526px",mb:"0.5rem",overflow:"hidden",children:(0,o.createComponentVNode)(2,i.NanoMap,{onZoom:function(e){return l(e)},children:n.crewmembers.filter((function(e){return 3===e.sensor_type})).map((function(e){return(0,o.createComponentVNode)(2,i.NanoMap.Marker,{x:e.x,y:e.y,zoom:a,icon:"circle",tooltip:e.name+" ("+e.assignment+")",color:m(e)},e.ref)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=[{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,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,s=d.isOperating,m=d.hasOccupant,p=d.occupant,f=void 0===p?[]:p,h=d.cellTemperature,C=d.cellTemperatureStatus,N=d.isBeakerLoaded,b=d.auto_eject_healthy,g=d.auto_eject_dead;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",flexGrow:"1",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"user-slash",onClick:function(){return c("ejectOccupant")},disabled:!m,children:"Eject"}),children:m?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:f.name||"Unknown"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:f.health,max:f.maxHealth,value:f.health/f.maxHealth,color:f.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(f.health)})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:l[f.stat][0],children:l[f.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(f.bodyTemperature)})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:f[e.type]/100,ranges:{bad:[.01,Infinity]},children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(f[e.type])})})},e.id)}))]}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",textAlign:"center",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."]})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",onClick:function(){return c("ejectBeaker")},disabled:!N,children:"Eject Beaker"}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",onClick:function(){return c(s?"switchOff":"switchOn")},selected:s,children:s?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:C,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:h})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Beaker",children:(0,o.createComponentVNode)(2,u)}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto-eject healthy occupants",children:(0,o.createComponentVNode)(2,a.Button,{icon:b?"toggle-on":"toggle-off",selected:b,onClick:function(){return c(b?"auto_eject_healthy_off":"auto_eject_healthy_on")},children:b?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto-eject dead occupants",children:(0,o.createComponentVNode)(2,a.Button,{icon:g?"toggle-on":"toggle-off",selected:g,onClick:function(){return c(g?"auto_eject_dead_off":"auto_eject_dead_on")},children:g?"On":"Off"})})]})})],4)},u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.isBeakerLoaded,l=c.beakerLabel,d=c.beakerVolume;return i?(0,o.createFragment)([l||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No label"}),(0,o.createComponentVNode)(2,a.Box,{color:!d&&"bad",children:d?(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d,format:function(e){return Math.round(e)+" units remaining"}}):"Beaker is empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No beaker loaded"})}},function(e,t,n){"use strict";t.__esModule=!0,t.DNAModifier=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(49),l=[["good","Alive"],["average","Critical"],["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,a=(0,r.useBackend)(t),l=(a.act,a.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,V,{duration:d})),(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,i.ComplexModal),n,(0,o.createComponentVNode)(2,c.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),c=n.act,i=n.data,d=i.locked,u=i.hasOccupant,s=i.occupant;return(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"label",display:"inline",mr:"0.5rem",children:"Door Lock:"}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u,selected:d,icon:d?"toggle-on":"toggle-off",content:d?"Engaged":"Disengaged",onClick:function(){return c("toggleLock")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u||d,icon:"user-slash",content:"Eject",onClick:function(){return c("ejectOccupant")}})],4),children:u?(0,o.createFragment)([(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:"Health",children:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Status",color:l[s.stat][0],children:l[s.stat][1]}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})}),t.isDNAInvalid?(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,a.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,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:"0",max:"100",value:s.radiationLevel/100,color:"average"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unique Enzymes",children:i.occupant.uniqueEnzymes?i.occupant.uniqueEnzymes:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-circle"}),"\xa0 Unknown"]})})]})],0):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"Cell unoccupied."})})},m=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,l=c.data,u=l.selectedMenuKey,s=l.hasOccupant;l.occupant;return s?t.isDNAInvalid?(0,o.createComponentVNode)(2,a.Section,{flexGrow:"1",children:(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 operation possible on this subject."]})})}):("ui"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,h)],4):"se"===u?n=(0,o.createFragment)([(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,h)],4):"buffer"===u?n=(0,o.createComponentVNode)(2,C):"rejuvenators"===u&&(n=(0,o.createComponentVNode)(2,g)),(0,o.createComponentVNode)(2,a.Section,{flexGrow:"1",children:[(0,o.createComponentVNode)(2,a.Tabs,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:u===e[0],onClick:function(){return i("selectMenuKey",{key:e[0]})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:e[2]}),e[1]]},t)}))}),n]})):(0,o.createComponentVNode)(2,a.Section,{flexGrow:"1",children:(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 occupant in DNA modifier."]})})})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.selectedUIBlock,d=i.selectedUISubBlock,u=i.selectedUITarget,s=i.occupant;return(0,o.createComponentVNode)(2,a.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,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:"1",maxValue:"15",stepPixelSize:"20",value:u,format:function(e){return e.toString(16).toUpperCase()},ml:"0",onChange:function(e,t){return c("changeUITarget",{value:t})}})})}),(0,o.createComponentVNode)(2,a.Button,{icon:"radiation",content:"Irradiate Block",mt:"0.5rem",onClick:function(){return c("pulseUIRadiation")}})]})},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.selectedSEBlock,d=i.selectedSESubBlock,u=i.occupant;return(0,o.createComponentVNode)(2,a.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,a.Button,{icon:"radiation",content:"Irradiate Block",onClick:function(){return c("pulseSERadiation")}})]})},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.radiationIntensity,d=i.radiationDuration;return(0,o.createComponentVNode)(2,a.Section,{title:"Radiation Emitter",level:"2",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Intensity",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:"1",maxValue:"10",stepPixelSize:"20",value:l,popUpPosition:"right",ml:"0",onChange:function(e,t){return c("radiationIntensity",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Duration",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:"1",maxValue:"20",stepPixelSize:"10",unit:"s",value:d,popUpPosition:"right",ml:"0",onChange:function(e,t){return c("radiationDuration",{value:t})}})})]}),(0,o.createComponentVNode)(2,a.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 c("pulseRadiation")}})]})},C=function(e,t){var n=(0,r.useBackend)(t),c=(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,a.Section,{title:"Buffers",level:"2",children:c}),(0,o.createComponentVNode)(2,b)],4)},N=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.id,d=e.name,u=e.buffer,s=i.isInjectorReady,m=d+(u.data?" - "+u.label:"");return(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,a.Section,{title:m,level:"3",mx:"0",lineHeight:"18px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!u.data,icon:"trash",content:"Clear",onClick:function(){return c("bufferOption",{option:"clear",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u.data,icon:"pen",content:"Rename",onClick:function(){return c("bufferOption",{option:"changeLabel",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u.data||!i.hasDisk,icon:"save",content:"Export",tooltip:"Exports this buffer to the currently loaded data disk.",tooltipPosition:"bottom-left",onClick:function(){return c("bufferOption",{option:"saveDisk",id:l})}})],4),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Write",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",content:"Subject U.I",mb:"0",onClick:function(){return c("bufferOption",{option:"saveUI",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",content:"Subject U.I and U.E.",mb:"0",onClick:function(){return c("bufferOption",{option:"saveUIAndUE",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",content:"Subject S.E.",mb:"0",onClick:function(){return c("bufferOption",{option:"saveSE",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!i.hasDisk||!i.disk.data,icon:"arrow-circle-down",content:"From Disk",mb:"0",onClick:function(){return c("bufferOption",{option:"loadDisk",id:l})}})]}),!!u.data&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subject",children:u.owner||(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Data Type",children:["ui"===u.type?"Unique Identifiers":"Structural Enzymes",!!u.ue&&" and Unique Enzymes"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer to",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Injector",mb:"0",onClick:function(){return c("bufferOption",{option:"createInjector",id:l})}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!s,icon:s?"syringe":"spinner",iconSpin:!s,content:"Block Injector",mb:"0",onClick:function(){return c("bufferOption",{option:"createInjector",id:l,block:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"user",content:"Subject",mb:"0",onClick:function(){return c("bufferOption",{option:"transfer",id:l})}})]})],4)]}),!u.data&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"0.5rem",children:"This buffer is empty."})]})})},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.hasDisk,d=i.disk;return(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",level:"2",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{disabled:!l||!d.data,icon:"trash",content:"Wipe",onClick:function(){return c("wipeDisk")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return c("ejectDisk")}})],4),children:l?d.data?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.label?d.label:"No label"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Subject",children:d.owner?d.owner:(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Unknown"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Data Type",children:["ui"===d.type?"Unique Identifiers":"Structural Enzymes",!!d.ue&&" and Unique Enzymes"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"Disk is blank."}):(0,o.createComponentVNode)(2,a.Box,{color:"label",textAlign:"center",my:"1rem",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save-o",size:"4"}),(0,o.createVNode)(1,"br"),"No disk inserted."]})})},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.isBeakerLoaded,d=i.beakerVolume,s=i.beakerLabel;return(0,o.createComponentVNode)(2,a.Section,{title:"Rejuvenators and Beaker",level:"2",buttons:(0,o.createComponentVNode)(2,a.Button,{disabled:!l,icon:"eject",content:"Eject",onClick:function(){return c("ejectBeaker")}}),children:l?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inject",children:[u.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{disabled:e>d,icon:"syringe",content:e,onClick:function(){return c("injectRejuvenators",{amount:e})}},t)})),(0,o.createComponentVNode)(2,a.Button,{disabled:d<=0,icon:"syringe",content:"All",onClick:function(){return c("injectRejuvenators",{amount:d})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Beaker",children:[(0,o.createComponentVNode)(2,a.Box,{mb:"0.5rem",children:s||"No label"}),d?(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[d," unit",1===d?"":"s"," remaining"]}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Empty"})]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"label",textAlign:"center",my:"25%",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",size:"4"}),(0,o.createVNode)(1,"br"),"No beaker loaded."]})})},V=function(e,t){return(0,o.createComponentVNode)(2,a.Dimmer,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"spinner",size:"5",spin:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Box,{color:"average",children:(0,o.createVNode)(1,"h1",null,[(0,o.createComponentVNode)(2,a.Icon,{name:"radiation"}),(0,o.createTextVNode)("\xa0Irradiating occupant\xa0"),(0,o.createComponentVNode)(2,a.Icon,{name:"radiation"})],4)}),(0,o.createComponentVNode)(2,a.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),c=n.act,i=(n.data,e.dnaString),l=e.selectedBlock,d=e.selectedSubblock,u=e.blockSize,s=e.action,m=i.split(""),p=[],f=function(e){for(var t=e/u+1,n=[],r=function(r){var i=r+1;n.push((0,o.createComponentVNode)(2,a.Button,{selected:l===t&&d===i,content:m[e+r],mb:"0",onClick:function(){return c(s,{block:t,subblock:i})}}))},i=0;i0?"Yes":"No",selected:l.com>0,onClick:function(){return i("toggle_com")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Security",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.sec===e,content:e,onClick:function(){return i("set_sec",{set_sec:e})}},"sec"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Medical",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.med===e,content:e,onClick:function(){return i("set_med",{set_med:e})}},"med"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Engineering",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.eng===e,content:e,onClick:function(){return i("set_eng",{set_eng:e})}},"eng"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Paranormal",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.par===e,content:e,onClick:function(){return i("set_par",{set_par:e})}},"par"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Janitor",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.jan===e,content:e,onClick:function(){return i("set_jan",{set_jan:e})}},"jan"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cyborg",children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Button,{selected:l.cyb===e,content:e,onClick:function(){return i("set_cyb",{set_cyb:e})}},"cyb"+e)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Slots",children:(0,o.createComponentVNode)(2,a.Box,{color:l.total>l.spawnpoints?"red":"green",children:[l.total," total, versus ",l.spawnpoints," spawnpoints"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dispatch",children:(0,o.createComponentVNode)(2,a.Button,{icon:"ambulance",content:"Send ERT",onClick:function(){return i("dispatch_ert")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,f=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:f/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onChange:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onChange:function(e,t){return l("code",{code:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EvolutionMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.EvolutionMenu=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,theme:"changeling",children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,l)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.evo_points,d=i.can_respec;return(0,o.createComponentVNode)(2,a.Section,{title:"Evolution Points",height:5.5,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:.5,color:"label",children:"Points remaining:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:.5,ml:2,bold:!0,color:"#1b945c",children:l}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{ml:2.5,disabled:!d,content:"Readapt",icon:"sync",onClick:function(){return c("readapt")}}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"By transforming a humanoid into a husk, we gain the ability to readapt our chosen evolutions.",tooltipPosition:"bottom",icon:"question-circle"})]})]})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.evo_points,d=i.ability_list,u=i.purchsed_abilities,s=i.view_mode;return(0,o.createComponentVNode)(2,a.Section,{title:"Abilities",flexGrow:"1",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:s?"square-o":"check-square-o",selected:!s,content:"Compact",onClick:function(){return c("set_view_mode",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"check-square-o":"square-o",selected:s,content:"Expanded",onClick:function(){return c("set_view_mode",{mode:1})}})],4),children:d.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{p:.5,mx:-1,className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{ml:.5,color:"#dedede",children:e.name}),u.includes(e.name)&&(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,bold:!0,color:"#1b945c",children:"(Purchased)"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:3,textAlign:"right",grow:1,children:[(0,o.createComponentVNode)(2,a.Box,{as:"span",color:"label",children:["Cost: "," "]}),(0,o.createComponentVNode)(2,a.Box,{as:"span",bold:!0,color:"#1b945c",children:e.cost})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{mr:.5,disabled:e.cost>l||u.includes(e.name),content:"Evolve",onClick:function(){return c("purchase",{power_name:e.name})}})})]}),!!s&&(0,o.createComponentVNode)(2,a.Flex,{color:"#8a8a8a",my:1,ml:1.5,width:"95%",children:e.description+" "+e.helptext})]},t)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o=n(0),r=n(8),a=n(20),c=n(1),i=n(2),l=n(183),d=n(4);var u={bananium:"clown",tranquillite:"mime"};t.ExosuitFabricator=function(e,t){var n=(0,c.useBackend)(t),r=(n.act,n.data.building);return(0,o.createComponentVNode)(2,d.Window,{children:(0,o.createComponentVNode)(2,d.Window.Content,{className:"Exofab",children:(0,o.createComponentVNode)(2,i.Flex,{width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",mr:"0.5rem",width:"70%",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"100%",children:(0,o.createComponentVNode)(2,m)}),r&&(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"content",mt:"0.5rem",children:(0,o.createComponentVNode)(2,p)})]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,i.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"50%",children:(0,o.createComponentVNode)(2,s)}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",basis:"50%",mt:"0.5rem",children:(0,o.createComponentVNode)(2,f)})]})})]})})})};var s=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=a.materials,d=a.capacity,u=Object.values(l).reduce((function(e,t){return e+t}),0);return(0,o.createComponentVNode)(2,i.Section,{title:"Materials",className:"Exofab__materials",buttons:(0,o.createComponentVNode)(2,i.Box,{color:"label",mt:"0.25rem",children:[(u/d*100).toPrecision(3),"% full"]}),children:["$metal","$glass","$silver","$gold","$uranium","$titanium","$plasma","$diamond","$bluespace","$bananium","$tranquillite","$plastic"].map((function(e){return(0,o.createComponentVNode)(2,h,{id:e,bold:"$metal"===e||"$glass"===e,onClick:function(){return r("withdraw",{id:e})}},e)}))})},m=function(e,t){var n=(0,c.useBackend)(t),r=n.act,l=n.data,d=l.curCategory,u=l.categories,s=l.designs,m=l.syncing,p=(0,c.useLocalState)(t,"searchText",""),f=p[0],h=p[1],N=(0,a.createSearch)(f,(function(e){return e.name})),b=s.filter(N);return(0,o.createComponentVNode)(2,i.Section,{className:"Exofab__designs",title:(0,o.createComponentVNode)(2,i.Dropdown,{selected:d,options:u,onSelected:function(e){return r("category",{cat:e})},width:"150px"}),height:"100%",buttons:(0,o.createComponentVNode)(2,i.Box,{mt:"-18px",children:[(0,o.createComponentVNode)(2,i.Button,{icon:"plus",content:"Queue all",onClick:function(){return r("queueall")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:m,iconSpin:m,icon:"sync-alt",content:m?"Synchronizing...":"Synchronize with R&D servers",onClick:function(){return r("sync")}})]}),children:[(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search by name...",mb:"0.5rem",width:"100%",onInput:function(e,t){return h(t)}}),b.map((function(e){return(0,o.createComponentVNode)(2,C,{design:e},e.id)})),0===b.length&&(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No designs found."})]})},p=function(e,t){var n=(0,c.useBackend)(t),r=(n.act,n.data),a=r.building,d=r.buildStart,u=r.buildEnd,s=r.worldTime;return(0,o.createComponentVNode)(2,i.Section,{className:"Exofab__building",stretchContents:!0,children:(0,o.createComponentVNode)(2,i.ProgressBar.Countdown,{start:d,current:s,end:u,bold:!0,children:[(0,o.createComponentVNode)(2,i.Box,{float:"left",children:(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:!0})}),"Building ",a,"\xa0(",(0,o.createComponentVNode)(2,l.Countdown,{current:s,timeLeft:u-s,format:function(e,t){return t.substr(3)}}),")"]})})},f=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=a.queue,d=a.processingQueue,u=Object.entries(a.queueDeficit).filter((function(e){return e[1]<0})),s=l.reduce((function(e,t){return e+t.time}),0);return(0,o.createComponentVNode)(2,i.Section,{className:"Exofab__queue",title:"Queue",buttons:(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,i.Button,{selected:d,icon:d?"toggle-on":"toggle-off",content:"Process",onClick:function(){return r("process")}}),(0,o.createComponentVNode)(2,i.Button,{disabled:0===l.length,icon:"eraser",content:"Clear",onClick:function(){return r("unqueueall")}})]}),children:(0,o.createComponentVNode)(2,i.Flex,{height:"100%",direction:"column",children:0===l.length?(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"The queue is empty."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Flex.Item,{className:"Exofab__queue--queue",grow:"1",overflow:"auto",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,i.Box,{color:e.notEnough&&"bad",children:[t+1,". ",e.name,t>0&&(0,o.createComponentVNode)(2,i.Button,{icon:"arrow-up",onClick:function(){return r("queueswap",{from:t+1,to:t})}}),t0&&(0,o.createComponentVNode)(2,i.Flex.Item,{className:"Exofab__queue--time",basis:"content",shrink:"0",children:[(0,o.createComponentVNode)(2,i.Divider),"Processing time:",(0,o.createComponentVNode)(2,i.Icon,{name:"clock",mx:"0.5rem"}),(0,o.createComponentVNode)(2,i.Box,{display:"inline",bold:!0,children:new Date(s/10*1e3).toISOString().substr(14,5)})]}),Object.keys(u).length>0&&(0,o.createComponentVNode)(2,i.Flex.Item,{className:"Exofab__queue--deficit",basis:"content",shrink:"0",children:[(0,o.createComponentVNode)(2,i.Divider),"Lacking materials to complete:",u.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,h,{id:e[0],amount:-e[1],lineDisplay:!0})},e[0])}))]})],0)})})},h=function(e,t){var n=(0,c.useBackend)(t),a=(n.act,n.data),l=e.id,d=e.amount,s=e.lineDisplay,m=e.onClick,p=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["id","amount","lineDisplay","onClick"]),f=l.replace("$",""),h=a.materials[l]||0,C=d||h;if(!(C<=0&&"metal"!==f&&"glass"!==f)){var N=d&&d>h;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,i.Flex,Object.assign({className:(0,r.classes)(["Exofab__material",s&&"Exofab__material--line"])},p,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{basis:"content",children:(0,o.createComponentVNode)(2,i.Button,{onClick:m,children:(0,o.createComponentVNode)(2,i.Box,{as:"img",src:"sheet-"+(u[f]||f)+".png"})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:"1",children:s?(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__material--amount",color:N&&"bad",children:C.toLocaleString("en-US")}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__material--name",children:f}),(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__material--amount",children:[C.toLocaleString("en-US")," cm\xb3 (",Math.round(C/2e3*10)/10," sheets)"]})],4)})]})))}},C=function(e,t){var n=(0,c.useBackend)(t),r=n.act,a=n.data,l=e.design;return(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__design",children:[(0,o.createComponentVNode)(2,i.Button,{disabled:l.notEnough||a.building,icon:"cog",content:l.name,onClick:function(){return r("build",{id:l.id})}}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus-circle",onClick:function(){return r("queue",{id:l.id})}}),(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__design--cost",children:Object.entries(l.cost).map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,h,{id:e[0],amount:e[1],lineDisplay:!0})},e[0])}))}),(0,o.createComponentVNode)(2,i.Box,{className:"Exofab__design--time",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"clock"}),l.time>0?(0,o.createFragment)([l.time/10,(0,o.createTextVNode)(" seconds")],0):"Instant"]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExternalAirlockController=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ExternalAirlockController=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data,s=u.chamber_pressure,m=(u.exterior_status,u.interior_status),p=u.processing;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chamber Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:(n=s,i="good",n<80?i="bad":n<95||n>110?i="average":n>120&&(i="bad"),i),value:s,minValue:0,maxValue:1013,children:[s," kPa"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Exterior",icon:"arrow-circle-left",disabled:p,onClick:function(){return d("cycle_ext")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cycle to Interior",icon:"arrow-circle-right",disabled:p,onClick:function(){return d("cycle_int")}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Force Exterior Door",icon:"exclamation-triangle",color:"open"===m?"red":p?"yellow":null,onClick:function(){return d("force_ext")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Force Interior Door",icon:"exclamation-triangle",color:"open"===m?"red":p?"yellow":null,onClick:function(){return d("force_int")}})]}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Abort",icon:"ban",color:"red",disabled:!p,onClick:function(){return d("abort")}})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.FaxMachine=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.FaxMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Card",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.scan_name?"eject":"id-card",selected:l.scan_name,content:l.scan_name?l.scan_name:"-----",tooltip:l.scan_name?"Eject ID":"Insert ID",onClick:function(){return i("scan")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Authorize",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.authenticated?"sign-out-alt":"id-card",selected:l.authenticated,disabled:l.nologin,content:l.realauth?"Log Out":"Log In",onClick:function(){return i("auth")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Fax Menu",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Network",children:l.network}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Document",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.paper?"eject":"paperclip",disabled:!l.authenticated&&!l.paper,content:l.paper?l.paper:"-----",onClick:function(){return i("paper")}}),!!l.paper&&(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:"Rename",onClick:function(){return i("rename")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sending To",children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:l.destination?l.destination:"-----",disabled:!l.authenticated,onClick:function(){return i("dept")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Action",children:(0,o.createComponentVNode)(2,a.Button,{icon:"envelope",content:l.sendError?l.sendError:"Send",disabled:!l.paper||!l.destination||!l.authenticated||l.sendError,onClick:function(){return i("send")}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.FloorPainter=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data,e.image),c=e.isSelected,i=e.onSelect;return(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+a,style:{"border-style":c?"solid":"none","border-width":"2px","border-color":"orange",padding:c?"2px":"4px"},onClick:i})};t.FloorPainter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.availableStyles,s=d.selectedStyle,m=d.selectedDir,p=d.directionsPreview,f=d.allStylesPreview;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Decal setup",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-left",onClick:function(){return l("cycle_style",{offset:-1})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Dropdown,{options:u,selected:s,width:"150px",height:"20px",ml:"2px",mr:"2px",nochevron:"true",onSelected:function(e){return l("select_style",{style:e})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-right",onClick:function(){return l("cycle_style",{offset:1})}})})]}),(0,o.createComponentVNode)(2,a.Box,{mt:"5px",mb:"5px",children:(0,o.createComponentVNode)(2,a.Flex,{overflowY:"auto",maxHeight:"220px",wrap:"wrap",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,i,{image:f[e],isSelected:s===e,onSelect:function(){return l("select_style",{style:e})}})},"{style}")}))})}),(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Direction",children:(0,o.createComponentVNode)(2,a.Table,{style:{display:"inline"},children:["north","","south"].map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[e+"west",e,e+"east"].map((function(e){return(0,o.createComponentVNode)(2,a.Table.Cell,{style:{"vertical-align":"middle","text-align":"center"},children:""===e?(0,o.createComponentVNode)(2,a.Icon,{name:"arrows-alt",size:3}):(0,o.createComponentVNode)(2,i,{image:p[e],isSelected:e===m,onSelect:function(){return l("select_direction",{direction:e})}})},e)}))},e)}))})})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GPS=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e){return e?"("+e.join(", ")+")":"ERROR"};t.GPS=function(e,t){var n=(0,r.useBackend)(t).data,i=n.emped,m=n.active,p=n.area,f=n.position,h=n.saved;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",height:"100%",children:i?(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",basis:"0",children:(0,o.createComponentVNode)(2,l,{emp:!0})}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,d)}),m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{mt:"0.5rem",children:(0,o.createComponentVNode)(2,u,{area:p,position:f})}),h&&(0,o.createComponentVNode)(2,a.Flex.Item,{mt:"0.5rem",children:(0,o.createComponentVNode)(2,u,{title:"Saved Position",position:h})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:"0.5rem",grow:"1",basis:"0",children:(0,o.createComponentVNode)(2,s,{height:"100%"})})],0):(0,o.createComponentVNode)(2,l)],0)})})})};var l=function(e,t){var n=e.emp;return(0,o.createComponentVNode)(2,a.Section,{mt:"0.5rem",width:"100%",height:"100%",stretchContents:!0,children:(0,o.createComponentVNode)(2,a.Box,{width:"100%",height:"100%",color:"label",textAlign:"center",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:n?"ban":"power-off",mb:"0.5rem",size:"5"}),(0,o.createVNode)(1,"br"),n?"ERROR: Device temporarily lost signal.":"Device is disabled."]})})})})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.active,d=i.tag,u=i.same_z,s=(0,r.useLocalState)(t,"newTag",d),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",buttons:(0,o.createComponentVNode)(2,a.Button,{selected:l,icon:l?"toggle-on":"toggle-off",content:l?"On":"Off",onClick:function(){return c("toggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tag",children:[(0,o.createComponentVNode)(2,a.Input,{width:"5rem",value:d,onEnter:function(){return c("tag",{newtag:m})},onInput:function(e,t){return p(t)}}),(0,o.createComponentVNode)(2,a.Button,{disabled:d===m,width:"20px",mb:"0",ml:"0.25rem",onClick:function(){return c("tag",{newtag:m})},children:(0,o.createComponentVNode)(2,a.Icon,{name:"pen"})})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,a.Button,{selected:!u,icon:u?"compress":"expand",content:u?"Local Sector":"Global",onClick:function(){return c("same_z")}})})]})})},u=function(e,t){var n=e.title,r=e.area,c=e.position;return(0,o.createComponentVNode)(2,a.Section,{title:n||"Position",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.5rem",children:[r&&(0,o.createFragment)([r,(0,o.createVNode)(1,"br")],0),i(c)]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.position,l=n.signals;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({title:"Signals",overflow:"auto"},e,{children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){return Object.assign({},e,{},function(e,t){if(e&&t){if(e[2]!==t[2])return null;var n,o=Math.atan2(t[1]-e[1],t[0]-e[0]),r=Math.sqrt(Math.pow(t[1]-e[1],2)+Math.pow(t[0]-e[0],2));return{angle:(n=o,n*(180/Math.PI)),distance:r}}}(c,e.position))})).map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:t%2==0&&"rgba(255, 255, 255, 0.05)",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"30%",verticalAlign:"middle",color:"label",p:"0.25rem",bold:!0,children:e.tag}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"middle",color:"grey",children:e.area}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"middle",collapsing:!0,children:e.distance!==undefined&&(0,o.createComponentVNode)(2,a.Box,{opacity:Math.max(1-Math.min(e.distance,100)/100,.5),children:[(0,o.createComponentVNode)(2,a.Icon,{name:e.distance>0?"arrow-right":"circle",rotation:-e.angle}),"\xa0",Math.floor(e.distance)+"m"]})}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"middle",pr:"0.25rem",collapsing:!0,children:i(e.position)})]},t)}))})})))}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGen=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.GravityGen=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data,u=d.charging_state,s=d.charge_count,m=d.breaker,p=d.ext_power;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[function(e){if(e>0)return(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,p:1.5,children:[(0,o.createVNode)(1,"b",null,"WARNING:",16)," Radiation Detected!"]})}(u),(0,o.createComponentVNode)(2,a.Section,{title:"Generator Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"Online":"Offline",color:m?"green":"red",px:1.5,onClick:function(){return l("breaker")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Status",color:p?"good":"bad",children:(n=u,n>0?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:["[ ",1===n?"Charging":"Discharging"," ]"]}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:p?"good":"bad",children:["[ ",p?"Powered":"Unpowered"," ]"]}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GuestPass=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(78);t.GuestPass=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,c.Window,{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,{icon:"id-card",selected:!d.showlogs,onClick:function(){return l("mode",{mode:0})},children:"Issue Pass"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"scroll",selected:d.showlogs,onClick:function(){return l("mode",{mode:1})},children:["Records (",d.issue_log.length,")"]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Card",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.scan_name?"eject":"id-card",selected:d.scan_name,content:d.scan_name?d.scan_name:"-----",tooltip:d.scan_name?"Eject ID":"Insert ID",onClick:function(){return l("scan")}})})})}),!d.showlogs&&(0,o.createComponentVNode)(2,a.Section,{title:"Issue Guest Pass",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Issue To",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.giv_name?d.giv_name:"-----",disabled:!d.scan_name,onClick:function(){return l("giv_name")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reason",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.reason?d.reason:"-----",disabled:!d.scan_name,onClick:function(){return l("reason")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Duration",children:(0,o.createComponentVNode)(2,a.Button,{icon:"pencil-alt",content:d.duration?d.duration:"-----",disabled:!d.scan_name,onClick:function(){return l("duration")}})})]}),!!d.scan_name&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.AccessList,{grantableList:d.grantableList,accesses:d.regions,selectedList:d.selectedAccess,accessMod:function(e){return l("access",{access:e})},grantAll:function(){return l("grant_all")},denyAll:function(){return l("clear_all")},grantDep:function(e){return l("grant_region",{region:e})},denyDep:function(e){return l("deny_region",{region:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",content:d.printmsg,disabled:!d.canprint,onClick:function(){return l("issue")}})],4)]}),!!d.showlogs&&(0,o.createComponentVNode)(2,a.Section,{title:"Issuance Log",children:!!d.issue_log.length&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList,{children:d.issue_log.map((function(e,t){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:e},t)}))}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!d.scan_name,onClick:function(){return l("print")}})],4)||(0,o.createComponentVNode)(2,a.Box,{children:"None."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.HandheldChemDispenser=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=[1,5,10,20,30,50];t.HandheldChemDispenser=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.amount,u=l.energy,s=l.maxEnergy,m=l.mode;return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",flex:"content",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,minValue:0,maxValue:s,ranges:{good:[.5*s,Infinity],average:[.25*s,.5*s],bad:[-Infinity,.25*s]},children:[u," / ",s," Units"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Amount",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",spacing:"1",children:i.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",width:"14%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:d===e,content:e,m:"0",width:"100%",onClick:function(){return c("amount",{amount:e})}})},t)}))})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",verticalAlign:"middle",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",justify:"space-between",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:"dispense"===m,content:"Dispense",m:"0",width:"32%",onClick:function(){return c("mode",{mode:"dispense"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:"remove"===m,content:"Remove",m:"0",width:"32%",onClick:function(){return c("mode",{mode:"remove"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"cog",selected:"isolate"===m,content:"Isolate",m:"0",width:"32%",onClick:function(){return c("mode",{mode:"isolate"})}})]})})]})})},d=function(e,t){for(var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.chemicals,d=void 0===l?[]:l,u=i.current_reagent,s=[],m=0;m<(d.length+1)%3;m++)s.push(!0);return(0,o.createComponentVNode)(2,a.Section,{title:i.glass?"Drink Selector":"Chemical Selector",flexGrow:"1",children:(0,o.createComponentVNode)(2,a.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,a.Flex.Item,{grow:"1",basis:"25%",height:"20px",width:"30%",display:"inline-block",children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-down",overflow:"hidden",textOverflow:"ellipsis",selected:u===e.id,width:"100%",height:"100%",align:"flex-start",content:e.title,onClick:function(){return c("dispense",{reagent:e.id})}})},t)})),s.map((function(e,t){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",basis:"25%",height:"20px"},t)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Instrument=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4);t.Instrument=function(e,t){var n=(0,a.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,i.Window,{children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)]})]})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act;if(n.data.help)return(0,o.createComponentVNode)(2,c.Modal,{maxWidth:"75%",height:.75*window.innerHeight+"px",mx:"auto",py:"0",px:"0.5rem",children:(0,o.createComponentVNode)(2,c.Section,{height:"100%",title:"Help",level:"2",overflow:"auto",children:(0,o.createComponentVNode)(2,c.Box,{px:"0.5rem",mt:"-0.5rem",children:[(0,o.createVNode)(1,"h1",null,"Making a Song",16),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Lines are a series of chords, separated by commas\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(,)"}),(0,o.createTextVNode)(", each with notes seperated by hyphens\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(-)"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Every note in a chord will play together, with the chord timed by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo"}),(0,o.createTextVNode)(" as defined above.")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Notes are played by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"names of the note"}),(0,o.createTextVNode)(", and optionally, the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(", and/or the "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave number"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("By default, every note is\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"natural"}),(0,o.createTextVNode)(" and in\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave 3"}),(0,o.createTextVNode)(". Defining a different state for either is remembered for each "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"note"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Example:"}),(0,o.createTextVNode)("\xa0"),(0,o.createVNode)(1,"i",null,"C,D,E,F,G,A,B",16),(0,o.createTextVNode)(" will play a\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"C"}),(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"major"}),(0,o.createTextVNode)(" scale.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createTextVNode)("After a note has an\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(" or\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave"}),(0,o.createTextVNode)(" placed, it will be remembered:\xa0"),(0,o.createVNode)(1,"i",null,"C,C4,C#,C3",16),(0,o.createTextVNode)(" is "),(0,o.createVNode)(1,"i",null,"C3,C4,C4#,C3#",16)],4)],4)],4),(0,o.createVNode)(1,"p",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Chords"}),(0,o.createTextVNode)("\xa0can be played simply by seperating each note with a hyphen: "),(0,o.createVNode)(1,"i",null,"A-C#,Cn-E,E-G#,Gn-B",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("A "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"pause"}),(0,o.createTextVNode)("\xa0may be denoted by an empty chord: "),(0,o.createVNode)(1,"i",null,"C,E,,C,G",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("To make a chord be a different time, end it with /x, where the chord length will be length defined by\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo / x"}),(0,o.createTextVNode)(",\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"eg:"}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"i",null,"C,G/2,E/4",16),(0,o.createTextVNode)(".")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Combined, an example line is: "),(0,o.createVNode)(1,"i",null,"E-E4/4,F#/2,G#/8,B/8,E3-E4/4",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,"Lines may be up to 300 characters.",16),(0,o.createVNode)(1,"li",null,"A song may only contain up to 1,000 lines.",16)],4)],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Lines are a series of chords, separated by commas\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(,)"}),(0,o.createTextVNode)(", each with notes seperated by hyphens\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"(-)"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Every note in a chord will play together, with the chord timed by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo"}),(0,o.createTextVNode)(" as defined above.")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Notes are played by the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"names of the note"}),(0,o.createTextVNode)(", and optionally, the\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(", and/or the "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave number"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("By default, every note is\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"natural"}),(0,o.createTextVNode)(" and in\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave 3"}),(0,o.createTextVNode)(". Defining a different state for either is remembered for each "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"note"}),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Example:"}),(0,o.createTextVNode)("\xa0"),(0,o.createVNode)(1,"i",null,"C,D,E,F,G,A,B",16),(0,o.createTextVNode)(" will play a\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"good",children:"C"}),(0,o.createTextVNode)("\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"major"}),(0,o.createTextVNode)(" scale.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createTextVNode)("After a note has an\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"average",children:"accidental"}),(0,o.createTextVNode)(" or\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"bad",children:"octave"}),(0,o.createTextVNode)(" placed, it will be remembered:\xa0"),(0,o.createVNode)(1,"i",null,"C,C4,C#,C3",16),(0,o.createTextVNode)(" is "),(0,o.createVNode)(1,"i",null,"C3,C4,C4#,C3#",16)],4)],4)],4),(0,o.createVNode)(1,"p",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"Chords"}),(0,o.createTextVNode)("\xa0can be played simply by seperating each note with a hyphen: "),(0,o.createVNode)(1,"i",null,"A-C#,Cn-E,E-G#,Gn-B",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("A "),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"pause"}),(0,o.createTextVNode)("\xa0may be denoted by an empty chord: "),(0,o.createVNode)(1,"i",null,"C,E,,C,G",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("To make a chord be a different time, end it with /x, where the chord length will be length defined by\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"tempo / x"}),(0,o.createTextVNode)(",\xa0"),(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"highlight",children:"eg:"}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"i",null,"C,G/2,E/4",16),(0,o.createTextVNode)(".")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Combined, an example line is: "),(0,o.createVNode)(1,"i",null,"E-E4/4,F#/2,G#/8,B/8,E3-E4/4",16),(0,o.createTextVNode)("."),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,"Lines may be up to 300 characters.",16),(0,o.createVNode)(1,"li",null,"A song may only contain up to 1,000 lines.",16)],4)],4),(0,o.createVNode)(1,"h1",null,"Instrument Advanced Settings",16),(0,o.createVNode)(1,"ul",null,[(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Type:"}),(0,o.createTextVNode)("\xa0Whether the instrument is legacy or synthesized."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Legacy instruments have a collection of sounds that are selectively used depending on the note to play."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Synthesized instruments use a base sound and change its pitch to match the note to play.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Current:"}),(0,o.createTextVNode)("\xa0Which instrument sample to play. Some instruments can be tuned to play different samples. Experiment!")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Note Shift/Note Transpose:"}),(0,o.createTextVNode)("\xa0The pitch to apply to all notes of the song.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Sustain Mode:"}),(0,o.createTextVNode)("\xa0How a played note fades out."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Linear sustain means a note will fade out at a constant rate."),(0,o.createVNode)(1,"br"),(0,o.createTextVNode)("Exponential sustain means a note will fade out at an exponential rate, sounding smoother.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Volume Dropoff Threshold:"}),(0,o.createTextVNode)("\xa0The volume threshold at which a note is fully stopped.")],4),(0,o.createVNode)(1,"li",null,[(0,o.createComponentVNode)(2,c.Box,{as:"span",color:"label",children:"Sustain indefinitely last held note:"}),(0,o.createTextVNode)("\xa0Whether the last note should be sustained indefinitely.")],4)],4),(0,o.createComponentVNode)(2,c.Button,{color:"grey",content:"Close",onClick:function(){return r("help")}})]})})})},d=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.lines,s=l.playing,m=l.repeat,p=l.maxRepeats,f=l.tempo,h=l.minTempo,C=l.maxTempo,N=l.tickLag,b=l.volume,g=l.minVolume,V=l.maxVolume,v=l.ready;return(0,o.createComponentVNode)(2,c.Section,{title:"Instrument",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"info",content:"Help",onClick:function(){return i("help")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"file",content:"New",onClick:function(){return i("newsong")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"upload",content:"Import",onClick:function(){return i("import")}})],4),children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Playback",children:[(0,o.createComponentVNode)(2,c.Button,{selected:s,disabled:0===d.length||m<0,icon:"play",content:"Play",onClick:function(){return i("play")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!s,icon:"stop",content:"Stop",onClick:function(){return i("stop")}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Repeat",children:(0,o.createComponentVNode)(2,c.Slider,{animated:!0,minValue:"0",maxValue:p,value:m,stepPixelSize:"59",onChange:function(e,t){return i("repeat",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Tempo",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{disabled:f>=C,content:"-",as:"span",mr:"0.5rem",onClick:function(){return i("tempo",{"new":f+N})}}),(0,r.round)(600/f)," BPM",(0,o.createComponentVNode)(2,c.Button,{disabled:f<=h,content:"+",as:"span",ml:"0.5rem",onClick:function(){return i("tempo",{"new":f-N})}})]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,c.Slider,{animated:!0,minValue:g,maxValue:V,value:b,stepPixelSize:"6",onDrag:function(e,t){return i("setvolume",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:v?(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"Ready"}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Instrument Definition Error!"})})]}),(0,o.createComponentVNode)(2,u)]})},u=function(e,t){var n,i,l=(0,a.useBackend)(t),d=l.act,u=l.data,s=u.allowedInstrumentNames,m=u.instrumentLoaded,p=u.instrument,f=u.canNoteShift,h=u.noteShift,C=u.noteShiftMin,N=u.noteShiftMax,b=u.sustainMode,g=u.sustainLinearDuration,V=u.sustainExponentialDropoff,v=u.legacy,y=u.sustainDropoffVolume,_=u.sustainHeldNote;return 1===b?(n="Linear",i=(0,o.createComponentVNode)(2,c.Slider,{minValue:"0.1",maxValue:"5",value:g,step:"0.5",stepPixelSize:"85",format:function(e){return(0,r.round)(100*e)/100+" seconds"},onChange:function(e,t){return d("setlinearfalloff",{"new":t/10})}})):2===b&&(n="Exponential",i=(0,o.createComponentVNode)(2,c.Slider,{minValue:"1.025",maxValue:"10",value:V,step:"0.01",format:function(e){return(0,r.round)(1e3*e)/1e3+"% per decisecond"},onChange:function(e,t){return d("setexpfalloff",{"new":t})}})),s.sort(),(0,o.createComponentVNode)(2,c.Box,{my:-1,children:(0,o.createComponentVNode)(2,c.Collapsible,{mt:"1rem",mb:"0",title:"Advanced",children:(0,o.createComponentVNode)(2,c.Section,{mt:-1,children:[(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Type",children:v?"Legacy":"Synthesized"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Current",children:m?(0,o.createComponentVNode)(2,c.Dropdown,{options:s,selected:p,width:"40%",onSelected:function(e){return d("switchinstrument",{name:e})}}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"None!"})}),!(v||!f)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Note Shift/Note Transpose",children:(0,o.createComponentVNode)(2,c.Slider,{minValue:C,maxValue:N,value:h,stepPixelSize:"2",format:function(e){return e+" keys / "+(0,r.round)(e/12*100)/100+" octaves"},onChange:function(e,t){return d("setnoteshift",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Sustain Mode",children:[(0,o.createComponentVNode)(2,c.Dropdown,{options:["Linear","Exponential"],selected:n,onSelected:function(e){return d("setsustainmode",{"new":e})}}),i]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Volume Dropoff Threshold",children:(0,o.createComponentVNode)(2,c.Slider,{animated:!0,minValue:"0.01",maxValue:"100",value:y,stepPixelSize:"6",onChange:function(e,t){return d("setdropoffvolume",{"new":t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Sustain indefinitely last held note",children:(0,o.createComponentVNode)(2,c.Button,{selected:_,icon:_?"toggle-on":"toggle-off",content:_?"Yes":"No",onClick:function(){return d("togglesustainhold")}})})],4)]}),(0,o.createComponentVNode)(2,c.Button,{icon:"redo",content:"Reset to Default",mt:"0.5rem",onClick:function(){return d("reset")}})]})})})},s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.playing,d=i.lines,u=i.editing;return(0,o.createComponentVNode)(2,c.Section,{title:"Editor",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:!u||l,icon:"plus",content:"Add Line",onClick:function(){return r("newline",{line:d.length+1})}}),(0,o.createComponentVNode)(2,c.Button,{selected:!u,icon:u?"chevron-up":"chevron-down",onClick:function(){return r("edit")}})],4),children:!!u&&(d.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:t+1,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:"pen",onClick:function(){return r("modifyline",{line:t+1})}}),(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:"trash",onClick:function(){return r("deleteline",{line:t+1})}})],4),children:e},t)}))}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Song is empty."}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=(0,o.createComponentVNode)(2,a.Section,{title:"Keycard Authentication Device",children:(0,o.createComponentVNode)(2,a.Box,{children:"This device is used to trigger certain high security events. It requires the simultaneous swipe of two high-level ID cards."})});if(l.swiping||l.busy){var u=(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Waiting for YOU to swipe your ID..."});return l.hasSwiped||l.ertreason||"Emergency Response Team"!==l.event?l.hasConfirm?u=(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Request Confirmed!"}):l.isRemote?u=(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"Swipe your card to CONFIRM the remote request."}):l.hasSwiped&&(u=(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"Waiting for second person to confirm..."})):u=(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Fill out the reason for your ERT request."}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[d,"Emergency Response Team"===l.event&&(0,o.createComponentVNode)(2,a.Section,{title:"Reason for ERT Call",children:(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{color:l.ertreason?"":"red",icon:l.ertreason?"check":"pencil-alt",content:l.ertreason?l.ertreason:"-----",disabled:l.busy,onClick:function(){return i("ert")}})})}),(0,o.createComponentVNode)(2,a.Section,{title:l.event,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-circle-left",content:"Back",disabled:l.busy||l.hasConfirm,onClick:function(){return i("reset")}}),children:u})]})})}return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[d,(0,o.createComponentVNode)(2,a.Section,{title:"Choose Action",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Red Alert",children:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",disabled:!l.redAvailable,onClick:function(){return i("triggerevent",{triggerevent:"Red Alert"})},content:"Red Alert"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ERT",children:(0,o.createComponentVNode)(2,a.Button,{icon:"broadcast-tower",onClick:function(){return i("triggerevent",{triggerevent:"Emergency Response Team"})},content:"Call ERT"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Maint Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"door-open",onClick:function(){return i("triggerevent",{triggerevent:"Grant Emergency Maintenance Access"})},content:"Grant"}),(0,o.createComponentVNode)(2,a.Button,{icon:"door-closed",onClick:function(){return i("triggerevent",{triggerevent:"Revoke Emergency Maintenance Access"})},content:"Revoke"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Station-Wide Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"door-open",onClick:function(){return i("triggerevent",{triggerevent:"Activate Station-Wide Emergency Access"})},content:"Grant"}),(0,o.createComponentVNode)(2,a.Button,{icon:"door-closed",onClick:function(){return i("triggerevent",{triggerevent:"Deactivate Station-Wide Emergency Access"})},content:"Revoke"})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(4);t.LaborClaimConsole=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.can_go_home,d=i.emagged,u=i.id_inserted,s=i.id_name,m=i.id_points,p=i.id_goal,f=i.unclaimed_points,h=d?0:1,C=d?"ERR0R":l?"Completed!":"Insufficient";return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:!!u&&(0,o.createComponentVNode)(2,c.ProgressBar,{value:m/p,ranges:{good:[h,Infinity],bad:[-Infinity,h]},children:m+" / "+p+" "+C})||!!d&&"ERR0R COMPLETED?!@"||"No ID inserted"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Move shuttle",disabled:!l,onClick:function(){return r("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Claim points ("+f+")",disabled:!u||!f,onClick:function(){return r("claim_points")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Inserted ID",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:u?s:"-------------",onClick:function(){return r("handle_id")}})})]})})},d=function(e,t){var n=(0,a.useBackend)(t).data.ores;return(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LawManager=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.LawManager=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.isAdmin,m=u.isSlaved,p=u.isMalf,f=u.isAIMalf,h=u.view;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!(!s||!m)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:["This unit is slaved to ",m,"."]}),!(!p&&!f)&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Law Management",selected:0===h,onClick:function(){return d("set_view",{set_view:0})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Lawsets",selected:1===h,onClick:function(){return d("set_view",{set_view:1})}})]}),!(0!==h)&&(0,o.createComponentVNode)(2,i),!(1!==h)&&(0,o.createComponentVNode)(2,l)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.has_zeroth_laws,u=i.zeroth_laws,s=i.has_ion_laws,m=i.ion_laws,p=i.ion_law_nr,f=i.has_inherent_laws,h=i.inherent_laws,C=i.has_supplied_laws,N=i.supplied_laws,b=i.channels,g=i.channel,V=i.isMalf,v=i.isAdmin,y=i.zeroth_law,_=i.ion_law,x=i.inherent_law,k=i.supplied_law,L=i.supplied_law_position;return(0,o.createFragment)([!!l&&(0,o.createComponentVNode)(2,d,{title:"ERR_NULL_VALUE",laws:u,ctx:t}),!!s&&(0,o.createComponentVNode)(2,d,{title:p,laws:m,ctx:t}),!!f&&(0,o.createComponentVNode)(2,d,{title:"Inherent",laws:h,ctx:t}),!!C&&(0,o.createComponentVNode)(2,d,{title:"Supplied",laws:N,ctx:t}),(0,o.createComponentVNode)(2,a.Section,{title:"Statement Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Statement Channel",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.channel,selected:e.channel===g,onClick:function(){return c("law_channel",{law_channel:e.channel})}},e.channel)}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State Laws",children:(0,o.createComponentVNode)(2,a.Button,{content:"State Laws",onClick:function(){return c("state_laws")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Law Notification",children:(0,o.createComponentVNode)(2,a.Button,{content:"Notify",onClick:function(){return c("notify_laws")}})})]})}),!!V&&(0,o.createComponentVNode)(2,a.Section,{title:"Add Laws",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,{width:"10%",children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"60%",children:"Law"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"10%",children:"Index"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Actions"})]}),!(!v||l)&&(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Zero"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:y}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_zeroth_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_zeroth_law")}})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ion"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:_}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_ion_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_ion_law")}})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Inherent"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:x}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"N/A"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_inherent_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_inherent_law")}})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Supplied"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:k}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:L,onClick:function(){return c("change_supplied_law_position")}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("change_supplied_law")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Add",icon:"plus",onClick:function(){return c("add_supplied_law")}})]})]})]})})],0)},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.law_sets;return(0,o.createComponentVNode)(2,a.Box,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+e.header,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Load Laws",icon:"download",onClick:function(){return c("transfer_laws",{transfer_laws:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.laws.has_ion_laws>0&&e.laws.ion_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)})),e.laws.has_zeroth_laws>0&&e.laws.zeroth_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)})),e.laws.has_inherent_laws>0&&e.laws.inherent_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)})),e.laws.has_supplied_laws>0&&e.laws.inherent_laws.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.index,children:e.law},e.index)}))]})},e.name)}))})},d=function(e,t){var n=(0,r.useBackend)(e.ctx),c=n.act,i=n.data.isMalf;return(0,o.createComponentVNode)(2,a.Section,{title:e.title+" Laws",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,{width:"10%",children:"Index"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"69%",children:"Law"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"21%",children:"State?"})]}),e.laws.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.index}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.law}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Button,{content:e.state?"Yes":"No",selected:e.state,onClick:function(){return c("state_law",{ref:e.ref,state_law:e.state?0:1})}}),!!i&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Edit",icon:"pencil-alt",onClick:function(){return c("edit_law",{edit_law:e.ref})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delete",icon:"trash",color:"red",onClick:function(){return c("delete_law",{delete_law:e.ref})}})],4)]})]},e.law)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.MechBayConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell,s=d&&d.name;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:s?"Mech status: "+s:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechaControlConsole=void 0;var o=n(0),r=(n(16),n(1)),a=n(2),c=n(4),i=n(20);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 s.length?(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Log",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"window-close",onClick:function(){return l("clear_log")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",children:["(",e.time,")"]}),(0,o.createComponentVNode)(2,a.Box,{children:(0,i.decodeHtmlEntities)(e.message)})]},e.time)}))})})}):(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:u.length&&u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"comment",onClick:function(){return l("send_message",{mt:e.uid})},children:"Message"}),(0,o.createComponentVNode)(2,a.Button,{icon:"eye",onClick:function(){return l("get_log",{mt:e.uid})},children:"View Log"}),(0,o.createComponentVNode)(2,a.Button.Confirm,{color:"red",content:"EMP",icon:"bomb",onClick:function(){return l("shock",{mt:e.uid})}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.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,a.LabeledList.Item,{label:"Cell Charge",children:e.cell&&(0,o.createComponentVNode)(2,a.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,a.NoticeBox,{children:"No Cell Installed"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Air Tank",children:[e.airtank,"kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pilot",children:e.pilot||"Unoccupied"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:(0,i.toTitleCase)(e.location)||"Unknown"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Active Equipment",children:e.active||"None"}),e.cargoMax&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Space",children:(0,o.createComponentVNode)(2,a.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,a.NoticeBox,{children:"No mecha beacons found."})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalRecords=void 0;var o=n(0),r=n(1),a=n(2),c=n(49),i=n(4),l=n(132),d=n(133),u=n(135),s={Minor:"good",Medium:"average","Dangerous!":"bad",Harmful:"bad","BIOHAZARD THREAT!":"bad"},m=function(e,t){(0,c.modalOpen)(e,"edit",{field:t.edit,value:t.value})};t.MedicalRecords=function(e,t){var n,s=(0,r.useBackend)(t).data,m=s.loginState,C=s.screen;return m.logged_in?(2===C?n=(0,o.createComponentVNode)(2,p):3===C?n=(0,o.createComponentVNode)(2,f):4===C?n=(0,o.createComponentVNode)(2,h):5===C?n=(0,o.createComponentVNode)(2,b):6===C&&(n=(0,o.createComponentVNode)(2,g)),(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:[(0,o.createComponentVNode)(2,c.ComplexModal),(0,o.createComponentVNode)(2,i.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,a.Section,{height:"100%",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,d.LoginScreen)})})};var p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.records;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search by Name, DNA, or ID",onChange:function(e,t){return c("search",{t1:t})}}),(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:i.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"user",mb:"0.5rem",content:e.id+": "+e.name,onClick:function(){return c("d_rec",{d_rec:e.ref})}}),(0,o.createVNode)(1,"br")],4,t)}))})],4)},f=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Backup to Disk",disabled:!0}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload from Disk",my:"0.5rem",disabled:!0}),(0,o.createTextVNode)(" "),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.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),c=n.act,i=n.data,l=i.medical,d=i.printing;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"General Data",level:2,mt:"-6px",children:(0,o.createComponentVNode)(2,C)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medical Data",level:2,children:(0,o.createComponentVNode)(2,N)}),(0,o.createComponentVNode)(2,a.Section,{title:"Actions",level:2,children:[(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",disabled:!!l.empty,content:"Delete Medical Record",color:"bad",onClick:function(){return c("del_r")}}),(0,o.createComponentVNode)(2,a.Button,{icon:d?"spinner":"print",disabled:d,iconSpin:!!d,content:"Print Entry",ml:"0.5rem",onClick:function(){return c("print_p")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",mt:"0.5rem",onClick:function(){return c("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,a.Box,{width:"50%",float:"left",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:n.fields.map((function(e,n){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.field,children:[(0,o.createComponentVNode)(2,a.Box,{height:"20px",display:"inline-block",children:e.value}),!!e.edit&&(0,o.createComponentVNode)(2,a.Button,{icon:"pen",ml:"0.5rem",onClick:function(){return m(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,a.Box,{width:"50%",float:"right",textAlign:"right",children:!!n.has_photos&&n.photos.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e,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,a.Box,{color:"bad",children:"General records lost!"})},N=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.medical;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.field,children:[e.value,(0,o.createComponentVNode)(2,a.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return m(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Comments/Log",level:2,children:[0===l.comments.length?(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"label",display:"inline",children:e.header}),(0,o.createVNode)(1,"br"),e.text,(0,o.createComponentVNode)(2,a.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return i("del_c",{del_c:t+1})}})]},t)})),(0,o.createComponentVNode)(2,a.Button,{icon:"comment-medical",content:"Add Entry",color:"good",mt:"0.5rem",mb:"0",onClick:function(){return(0,c.modalOpen)(t,"add_c")}})]})],4):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:["Medical records lost!",(0,o.createComponentVNode)(2,a.Button,{icon:"pen",content:"New Record",ml:"0.5rem",onClick:function(){return i("new")}})]})},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.virus;return i.sort((function(e,t){return e.name>t.name?1:-1})),i.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,mb:"0.5rem",onClick:function(){return c("vir",{vir:e.D})}}),(0,o.createVNode)(1,"br")],4,t)}))},g=function(e,t){var n=(0,r.useBackend)(t).data.medbots;return 0===n.length?(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"There are no Medbots."}):n.map((function(e,t){return(0,o.createComponentVNode)(2,a.Collapsible,{open:!0,title:e.name,children:(0,o.createComponentVNode)(2,a.Box,{px:"0.5rem",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:[e.area||"Unknown"," (",e.x,", ",e.y,")"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:e.on?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Online"}),(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:e.use_beaker?"Reservoir: "+e.total_volume+"/"+e.maximum_volume:"Using internal synthesizer."})],4):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Offline"})})]})})},t)}))},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.screen;return(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return c("screen",{screen:2})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"list"}),"List Records"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:5===i,onClick:function(){return c("screen",{screen:5})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"database"}),"Virus Database"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:6===i,onClick:function(){return c("screen",{screen:6})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"plus-square"}),"Medbot Tracking"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===i,onClick:function(){return c("screen",{screen:3})},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"wrench"}),"Record Maintenance"]})]})};(0,c.modalRegisterBodyOverride)("virus",(function(e,t){var n=e.args;return(0,o.createComponentVNode)(2,a.Section,{level:2,m:"-1rem",pb:"1rem",title:n.name||"Virus",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:"Number of stages",children:n.max_stages}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Spread",children:[n.spread_text," Transmission"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Possible cure",children:n.cure}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notes",children:n.desc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Severity",color:s[n.severity],children:n.severity})]})})})}))},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(4);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.MiningVendor=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,u)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_id,d=i.id;return(0,o.createComponentVNode)(2,c.NoticeBox,{success:l,children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",verticalAlign:"middle",style:{float:"left"},children:["Logged in as ",d.name,".",(0,o.createVNode)(1,"br"),"You have ",d.points.toLocaleString("en-US")," points."]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject ID",style:{float:"right"},onClick:function(){return r("logoff")}}),(0,o.createComponentVNode)(2,c.Box,{style:{clear:"both"}})],4):"Please insert an ID in order to make purchases."})},u=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),d=i.has_id,u=i.id,s=i.items,p=(0,a.useLocalState)(t,"search",""),f=p[0],h=(p[1],(0,a.useLocalState)(t,"sort","Alphabetical")),C=h[0],N=(h[1],(0,a.useLocalState)(t,"descending",!1)),b=N[0],g=(N[1],(0,r.createSearch)(f,(function(e){return e[0]}))),V=!1,v=Object.entries(s).map((function(e,t){var n=Object.entries(e[1]).filter(g).map((function(e){return e[1].affordable=d&&u.points>=e[1].price,e[1]})).sort(l[C]);if(0!==n.length)return b&&(n=n.reverse()),V=!0,(0,o.createComponentVNode)(2,m,{title:e[0],items:n},e[0])}));return(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",overflow:"auto",children:(0,o.createComponentVNode)(2,c.Section,{children:V?v:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No items matching your criteria was found!"})})})},s=function(e,t){var n=(0,a.useLocalState)(t,"search",""),r=(n[0],n[1]),i=(0,a.useLocalState)(t,"sort",""),d=(i[0],i[1]),u=(0,a.useLocalState)(t,"descending",!1),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,c.Box,{mb:"0.5rem",children:(0,o.createComponentVNode)(2,c.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:"1",mr:"0.5rem",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search by item name..",width:"100%",onInput:function(e,t){return r(t)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{basis:"30%",children:(0,o.createComponentVNode)(2,c.Dropdown,{selected:"Alphabetical",options:Object.keys(l),width:"100%",lineHeight:"19px",onSelected:function(e){return d(e)}})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.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,a.useBackend)(t),r=n.act,i=n.data,l=e.title,d=e.items,u=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["title","items"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Collapsible,Object.assign({open:!0,title:l},u,{children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",verticalAlign:"middle",lineHeight:"20px",style:{float:"left"},children:e.name}),(0,o.createComponentVNode)(2,c.Button,{disabled:!i.has_id||i.id.points=0||(r[n]=e[n]);return r}var m=["security","engineering","medical","science","service","supply"],p={security:{title:"Security",fluff_text:"Help keep the crew safe"},engineering:{title:"Engineering",fluff_text:"Ensure the station runs smoothly"},medical:{title:"Medical",fluff_text:"Practice medicine and save lives"},science:{title:"Science",fluff_text:"Develop new technologies"},service:{title:"Service",fluff_text:"Provide amenities to the crew"},supply:{title:"Supply",fluff_text:"Keep the station supplied"}};t.Newscaster=function(e,t){var n,i=(0,a.useBackend)(t),s=i.act,m=i.data,p=m.is_security,N=m.is_admin,b=m.is_silent,V=m.is_printing,v=m.screen,y=m.channels,_=m.channel_idx,x=void 0===_?-1:_,k=(0,a.useLocalState)(t,"menuOpen",!1),L=k[0],B=k[1],w=(0,a.useLocalState)(t,"viewingPhoto",""),S=w[0],I=(w[1],(0,a.useLocalState)(t,"censorMode",!1)),T=I[0],A=I[1];0===v||2===v?n=(0,o.createComponentVNode)(2,h):1===v&&(n=(0,o.createComponentVNode)(2,C));var E=y.reduce((function(e,t){return e+t.unread}),0);return(0,o.createComponentVNode)(2,l.Window,{theme:p&&"security",children:[S?(0,o.createComponentVNode)(2,g):(0,o.createComponentVNode)(2,d.ComplexModal,{maxWidth:window.innerWidth/1.5+"px",maxHeight:window.innerHeight/1.5+"px"}),(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,c.Flex,{width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{stretchContents:!0,className:(0,r.classes)(["Newscaster__menu",L&&"Newscaster__menu--open"]),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Box,{flex:"0 1 content",children:[(0,o.createComponentVNode)(2,f,{icon:"bars",title:"Toggle Menu",onClick:function(){return B(!L)}}),(0,o.createComponentVNode)(2,f,{icon:"newspaper",title:"Headlines",selected:0===v,onClick:function(){return s("headlines")},children:E>0&&(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--unread",children:E>=10?"9+":E})}),(0,o.createComponentVNode)(2,f,{icon:"briefcase",title:"Job Openings",selected:1===v,onClick:function(){return s("jobs")}}),(0,o.createComponentVNode)(2,c.Divider)]}),(0,o.createComponentVNode)(2,c.Box,{flex:"2",overflowY:"auto",overflowX:"hidden",children:y.map((function(e){return(0,o.createComponentVNode)(2,f,{icon:e.icon,title:e.name,selected:2===v&&y[x-1]===e,onClick:function(){return s("channel",{uid:e.uid})},children:e.unread>0&&(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--unread",children:e.unread>=10?"9+":e.unread})},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"100%",flex:"0 0 content",children:[(0,o.createComponentVNode)(2,c.Divider),(!!p||!!N)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,f,{security:!0,icon:"exclamation-circle",title:"Edit Wanted Notice",mb:"0.5rem",onClick:function(){return(0,d.modalOpen)(t,"wanted_notice")}}),(0,o.createComponentVNode)(2,f,{security:!0,icon:T?"minus-square":"minus-square-o",title:"Censor Mode: "+(T?"On":"Off"),mb:"0.5rem",onClick:function(){return A(!T)}}),(0,o.createComponentVNode)(2,c.Divider)],4),(0,o.createComponentVNode)(2,f,{icon:"pen-alt",title:"New Story",mb:"0.5rem",onClick:function(){return(0,d.modalOpen)(t,"create_story")}}),(0,o.createComponentVNode)(2,f,{icon:"plus-circle",title:"New Channel",onClick:function(){return(0,d.modalOpen)(t,"create_channel")}}),(0,o.createComponentVNode)(2,c.Divider),(0,o.createComponentVNode)(2,f,{icon:V?"spinner":"print",iconSpin:V,title:V?"Printing...":"Print Newspaper",onClick:function(){return s("print_newspaper")}}),(0,o.createComponentVNode)(2,f,{icon:b?"volume-mute":"volume-up",title:"Mute: "+(b?"On":"Off"),onClick:function(){return s("toggle_mute")}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",flex:"1",children:[(0,o.createComponentVNode)(2,u.TemporaryNotice),n]})]})})]})};var f=function(e,t){(0,a.useBackend)(t).act;var n=e.icon,i=void 0===n?"":n,l=e.iconSpin,d=e.selected,u=void 0!==d&&d,m=e.security,p=void 0!==m&&m,f=e.onClick,h=e.title,C=e.children,N=s(e,["icon","iconSpin","selected","security","onClick","title","children"]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Box,Object.assign({className:(0,r.classes)(["Newscaster__menuButton",u&&"Newscaster__menuButton--selected",p&&"Newscaster__menuButton--security"]),onClick:f},N,{children:[u&&(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--selectedBar"}),(0,o.createComponentVNode)(2,c.Icon,{name:i,spin:l,size:"2"}),(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__menuButton--title",children:h}),C]})))},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.screen,u=i.is_admin,s=i.channel_idx,m=i.channel_can_manage,p=i.channels,f=i.stories,h=i.wanted,C=(0,a.useLocalState)(t,"fullStories",[]),b=C[0],g=(C[1],(0,a.useLocalState)(t,"censorMode",!1)),V=g[0],v=(g[1],2===l&&s>-1?p[s-1]:null);return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",flex:"1",children:[!!h&&(0,o.createComponentVNode)(2,N,{story:h,wanted:!0}),(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:v?v.icon:"newspaper",mr:"0.5rem"}),v?v.name:"Headlines"],0),flexGrow:"1",children:f.length>0?f.slice().reverse().map((function(e){return!b.includes(e.uid)&&e.body.length+3>128?Object.assign({},e,{body_short:e.body.substr(0,124)+"..."}):e})).map((function(e){return(0,o.createComponentVNode)(2,N,{story:e},e)})):(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__emptyNotice",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"times",size:"3"}),(0,o.createVNode)(1,"br"),"There are no stories at this time."]})}),!!v&&(0,o.createComponentVNode)(2,c.Section,{flexShrink:"1",title:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:"info-circle",mr:"0.5rem"}),(0,o.createTextVNode)("About")],4),buttons:(0,o.createFragment)([V&&(0,o.createComponentVNode)(2,c.Button,{disabled:!!v.admin&&!u,selected:v.censored,icon:v.censored?"comment-slash":"comment",content:v.censored?"Uncensor Channel":"Censor Channel",mr:"0.5rem",onClick:function(){return r("censor_channel",{uid:v.uid})}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!m,icon:"cog",content:"Manage",onClick:function(){return(0,d.modalOpen)(t,"manage_channel",{uid:v.uid})}})],0),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:v.description||"N/A"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Owner",children:v.author||"N/A"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Public",children:v["public"]?"Yes":"No"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Total Views",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"eye",mr:"0.5rem"}),f.reduce((function(e,t){return e+t.view_count}),0).toLocaleString()]})]})})]})},C=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),l=i.jobs,d=i.wanted,u=Object.entries(l).reduce((function(e,t){t[0];return e+t[1].length}),0);return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",flex:"1",children:[!!d&&(0,o.createComponentVNode)(2,N,{story:d,wanted:!0}),(0,o.createComponentVNode)(2,c.Section,{flexGrow:"1",title:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:"briefcase",mr:"0.5rem"}),(0,o.createTextVNode)("Job Openings")],4),buttons:(0,o.createComponentVNode)(2,c.Box,{mt:"0.25rem",color:"label",children:"Work for a better future at Nanotrasen"}),children:u>0?m.map((function(e){return Object.assign({},p[e],{id:e,jobs:l[e]})})).filter((function(e){return!!e&&e.jobs.length>0})).map((function(e){return(0,o.createComponentVNode)(2,c.Section,{className:(0,r.classes)(["Newscaster__jobCategory","Newscaster__jobCategory--"+e.id]),title:e.title,buttons:(0,o.createComponentVNode)(2,c.Box,{mt:"0.25rem",color:"label",children:e.fluff_text}),children:e.jobs.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{"class":(0,r.classes)(["Newscaster__jobOpening",!!e.is_command&&"Newscaster__jobOpening--command"]),children:["\u2022 ",e.title]},e.title)}))},e.id)})):(0,o.createComponentVNode)(2,c.Box,{className:"Newscaster__emptyNotice",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"times",size:"3"}),(0,o.createVNode)(1,"br"),"There are no openings at this time."]})}),(0,o.createComponentVNode)(2,c.Section,{flexShrink:"1",children:["Interested in serving Nanotrasen?",(0,o.createVNode)(1,"br"),"Sign up for any of the above position now at the ",(0,o.createVNode)(1,"b",null,"Head of Personnel's Office!",16),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Box,{as:"small",color:"label",children:"By signing up for a job at Nanotrasen, you agree to transfer your soul to the loyalty department of the omnipresent and helpful watcher of humanity."})]})]})},N=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=e.story,s=e.wanted,m=void 0!==s&&s,p=(0,a.useLocalState)(t,"fullStories",[]),f=p[0],h=p[1],C=(0,a.useLocalState)(t,"censorMode",!1),N=C[0];C[1];return(0,o.createComponentVNode)(2,c.Section,{className:(0,r.classes)(["Newscaster__story",m&&"Newscaster__story--wanted"]),title:(0,o.createFragment)([m&&(0,o.createComponentVNode)(2,c.Icon,{name:"exclamation-circle",mr:"0.5rem"}),(2&u.censor_flags?"[REDACTED]":u.title)||"News from "+u.author],0),buttons:(0,o.createComponentVNode)(2,c.Box,{mt:"0.25rem",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",children:[!m&&N&&(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:(0,o.createComponentVNode)(2,c.Button,{enabled:2&u.censor_flags,icon:2&u.censor_flags?"comment-slash":"comment",content:2&u.censor_flags?"Uncensor":"Censor",mr:"0.5rem",mt:"-0.25rem",onClick:function(){return l("censor_story",{uid:u.uid})}})}),(0,o.createComponentVNode)(2,c.Box,{display:"inline",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user"})," ",u.author," |\xa0",!m&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Icon,{name:"eye"}),(0,o.createTextVNode)(" "),u.view_count.toLocaleString(),(0,o.createTextVNode)(" |\xa0")],0),(0,o.createComponentVNode)(2,c.Icon,{name:"clock"})," ",(0,i.timeAgo)(u.publish_time,d.world_time)]})]})}),children:(0,o.createComponentVNode)(2,c.Box,{children:2&u.censor_flags?"[REDACTED]":(0,o.createFragment)([!!u.has_photo&&(0,o.createComponentVNode)(2,b,{name:"story_photo_"+u.uid+".png",float:"right",ml:"0.5rem"}),(u.body_short||u.body).split("\n").map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e||(0,o.createVNode)(1,"br")},e)})),u.body_short&&(0,o.createComponentVNode)(2,c.Button,{content:"Read more..",mt:"0.5rem",onClick:function(){return h([].concat(f,[u.uid]))}}),(0,o.createComponentVNode)(2,c.Box,{clear:"right"})],0)})})},b=function(e,t){var n=e.name,r=s(e,["name"]),i=(0,a.useLocalState)(t,"viewingPhoto",""),l=(i[0],i[1]);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Box,Object.assign({as:"img",className:"Newscaster__photo",src:n,onClick:function(){return l(n)}},r)))},g=function(e,t){var n=(0,a.useLocalState)(t,"viewingPhoto",""),r=n[0],i=n[1];return(0,o.createComponentVNode)(2,c.Modal,{className:"Newscaster__photoZoom",children:[(0,o.createComponentVNode)(2,c.Box,{as:"img",src:r}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Close",color:"grey",mt:"1rem",onClick:function(){return i("")}})]})},V=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=!!e.args.uid&&r.channels.filter((function(t){return t.uid===e.args.uid})).pop();if("manage_channel"!==e.id||i){var l="manage_channel"===e.id,u=!!e.args.is_admin,s=e.args.scanned_user,m=(0,a.useLocalState)(t,"author",(null==i?void 0:i.author)||s||"Unknown"),p=m[0],f=m[1],h=(0,a.useLocalState)(t,"name",(null==i?void 0:i.name)||""),C=h[0],N=h[1],b=(0,a.useLocalState)(t,"description",(null==i?void 0:i.description)||""),g=b[0],V=b[1],v=(0,a.useLocalState)(t,"icon",(null==i?void 0:i.icon)||"newspaper"),y=v[0],_=v[1],x=(0,a.useLocalState)(t,"isPublic",!!l&&!!(null==i?void 0:i["public"])),k=x[0],L=x[1],B=(0,a.useLocalState)(t,"adminLocked",1===(null==i?void 0:i.admin)||!1),w=B[0],S=B[1];return(0,o.createComponentVNode)(2,c.Section,{level:"2",m:"-1rem",pb:"1rem",title:l?"Manage "+i.name:"Create New Channel",children:[(0,o.createComponentVNode)(2,c.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Owner",children:(0,o.createComponentVNode)(2,c.Input,{disabled:!u,width:"100%",value:p,onInput:function(e,t){return f(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,c.Input,{width:"100%",placeholder:"50 characters max.",maxLength:"50",value:C,onInput:function(e,t){return N(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description (optional)",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Input,{multiline:!0,width:"100%",placeholder:"128 characters max.",maxLength:"128",value:g,onInput:function(e,t){return V(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Icon",children:[(0,o.createComponentVNode)(2,c.Input,{disabled:!u,value:y,width:"35%",mr:"0.5rem",onInput:function(e,t){return _(t)}}),(0,o.createComponentVNode)(2,c.Icon,{name:y,size:"2",verticalAlign:"middle",mr:"0.5rem"})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Accept Public Stories?",children:(0,o.createComponentVNode)(2,c.Button,{selected:k,icon:k?"toggle-on":"toggle-off",content:k?"Yes":"No",onClick:function(){return L(!k)}})}),u&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentComm Lock",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{selected:w,icon:w?"lock":"lock-open",content:w?"On":"Off",tooltip:"Locking this channel will make it editable by nobody but CentComm officers.",tooltipPosition:"top",onClick:function(){return S(!w)}})})]})}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:0===p.trim().length||0===C.trim().length,icon:"check",color:"good",content:"Submit",position:"absolute",right:"1rem",bottom:"-0.75rem",onClick:function(){(0,d.modalAnswer)(t,e.id,"",{author:p,name:C.substr(0,49),description:g.substr(0,128),icon:y,"public":k?1:0,admin_locked:w?1:0}),(0,a.deleteLocalState)(t,"author","name","description","icon","public")}})]})}(0,d.modalClose)(t)};(0,d.modalRegisterBodyOverride)("create_channel",V),(0,d.modalRegisterBodyOverride)("manage_channel",V),(0,d.modalRegisterBodyOverride)("create_story",(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.photo,u=i.channels,s=i.channel_idx,m=void 0===s?-1:s,p=!!e.args.is_admin,f=e.args.scanned_user,h=u.slice().sort((function(e,t){if(m<0)return 0;var n=u[m-1];return n.uid===e.uid?-1:n.uid===t.uid?1:void 0})).filter((function(e){return p||!e.frozen&&(e.author===f||!!e["public"])})),C=(0,a.useLocalState)(t,"author",f||"Unknown"),N=C[0],g=C[1],V=(0,a.useLocalState)(t,"channel",h.length>0?h[0].name:""),v=V[0],y=V[1],_=(0,a.useLocalState)(t,"title",""),x=_[0],k=_[1],L=(0,a.useLocalState)(t,"body",""),B=L[0],w=L[1],S=(0,a.useLocalState)(t,"adminLocked",!1),I=S[0],T=S[1];return(0,o.createComponentVNode)(2,c.Section,{level:2,m:"-1rem",pb:"1rem",title:"Create New Story",children:[(0,o.createComponentVNode)(2,c.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Author",children:(0,o.createComponentVNode)(2,c.Input,{disabled:!p,width:"100%",value:N,onInput:function(e,t){return g(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Channel",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Dropdown,{selected:v,options:h.map((function(e){return e.name})),mb:"0",width:"100%",onSelected:function(e){return y(e)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Divider),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Title",children:(0,o.createComponentVNode)(2,c.Input,{width:"100%",placeholder:"128 characters max.",maxLength:"128",value:x,onInput:function(e,t){return k(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Story Text",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Input,{fluid:!0,multiline:!0,placeholder:"1024 characters max.",maxLength:"1024",rows:"8",width:"100%",value:B,onInput:function(e,t){return w(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Photo (optional)",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{icon:"image",selected:l,content:l?"Eject: "+l.name:"Insert Photo",tooltip:!l&&"Attach a photo to this story by holding the photograph in your hand.",onClick:function(){return r(l?"eject_photo":"attach_photo")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Preview",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Section,{noTopPadding:!0,title:x,maxHeight:"13.5rem",overflow:"auto",children:(0,o.createComponentVNode)(2,c.Box,{mt:"0.5rem",children:[!!l&&(0,o.createComponentVNode)(2,b,{name:"inserted_photo_"+l.uid+".png",float:"right"}),B.split("\n").map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e||(0,o.createVNode)(1,"br")},e)})),(0,o.createComponentVNode)(2,c.Box,{clear:"right"})]})})}),p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentComm Lock",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{selected:I,icon:I?"lock":"lock-open",content:I?"On":"Off",tooltip:"Locking this story will make it censorable by nobody but CentComm officers.",tooltipPosition:"top",onClick:function(){return T(!I)}})})]})}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:0===N.trim().length||0===v.trim().length||0===x.trim().length||0===B.trim().length,icon:"check",color:"good",content:"Submit",position:"absolute",right:"1rem",bottom:"-0.75rem",onClick:function(){(0,d.modalAnswer)(t,"create_story","",{author:N,channel:v,title:x.substr(0,127),body:B.substr(0,1023),admin_locked:I?1:0}),(0,a.deleteLocalState)(t,"author","channel","title","body")}})]})})),(0,d.modalRegisterBodyOverride)("wanted_notice",(function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.photo,u=i.wanted,s=!!e.args.is_admin,m=e.args.scanned_user,p=(0,a.useLocalState)(t,"author",(null==u?void 0:u.author)||m||"Unknown"),f=p[0],h=p[1],C=(0,a.useLocalState)(t,"name",(null==u?void 0:u.title.substr(8))||""),N=C[0],g=C[1],V=(0,a.useLocalState)(t,"description",(null==u?void 0:u.body)||""),v=V[0],y=V[1],_=(0,a.useLocalState)(t,"adminLocked",1===(null==u?void 0:u.admin_locked)||!1),x=_[0],k=_[1];return(0,o.createComponentVNode)(2,c.Section,{level:"2",m:"-1rem",pb:"1rem",title:"Manage Wanted Notice",children:[(0,o.createComponentVNode)(2,c.Box,{mx:"0.5rem",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Authority",children:(0,o.createComponentVNode)(2,c.Input,{disabled:!s,width:"100%",value:f,onInput:function(e,t){return h(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,c.Input,{width:"100%",value:N,maxLength:"128",onInput:function(e,t){return g(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Input,{multiline:!0,width:"100%",value:v,maxLength:"512",rows:"4",onInput:function(e,t){return y(t)}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Photo (optional)",verticalAlign:"top",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"image",selected:l,content:l?"Eject: "+l.name:"Insert Photo",tooltip:!l&&"Attach a photo to this wanted notice by holding the photograph in your hand.",tooltipPosition:"top",onClick:function(){return r(l?"eject_photo":"attach_photo")}}),!!l&&(0,o.createComponentVNode)(2,b,{name:"inserted_photo_"+l.uid+".png",float:"right"})]}),s&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentComm Lock",verticalAlign:"top",children:(0,o.createComponentVNode)(2,c.Button,{selected:x,icon:x?"lock":"lock-open",content:x?"On":"Off",tooltip:"Locking this wanted notice will make it editable by nobody but CentComm officers.",tooltipPosition:"top",onClick:function(){return k(!x)}})})]})}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:!u,icon:"eraser",color:"danger",content:"Clear",position:"absolute",right:"7.25rem",bottom:"-0.75rem",onClick:function(){r("clear_wanted_notice"),(0,d.modalClose)(t),(0,a.deleteLocalState)(t,"author","name","description","admin_locked")}}),(0,o.createComponentVNode)(2,c.Button.Confirm,{disabled:0===f.trim().length||0===N.trim().length||0===v.trim().length,icon:"check",color:"good",content:"Submit",position:"absolute",right:"1rem",bottom:"-0.75rem",onClick:function(){(0,d.modalAnswer)(t,e.id,"",{author:f,name:N.substr(0,127),description:v.substr(0,511),admin_locked:x?1:0}),(0,a.deleteLocalState)(t,"author","name","description","admin_locked")}})]})}))},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.NuclearBomb=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return l.extended?(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Authorization",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auth Disk",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.authdisk?"eject":"id-card",selected:l.authdisk,content:l.diskname?l.diskname:"-----",tooltip:l.authdisk?"Eject Disk":"Insert Disk",onClick:function(){return i("auth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auth Code",children:(0,o.createComponentVNode)(2,a.Button,{icon:"key",disabled:!l.authdisk,selected:l.authcode,content:l.codemsg,onClick:function(){return i("code")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Arming & Disarming",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bolted to floor",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.anchored?"check":"times",selected:l.anchored,disabled:!l.authdisk,content:l.anchored?"YES":"NO",onClick:function(){return i("toggle_anchor")}})}),l.authfull&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Left",children:(0,o.createComponentVNode)(2,a.Button,{icon:"stopwatch",content:l.time,disabled:!l.authfull,tooltip:"Set Timer",onClick:function(){return i("set_time")}})})||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Time Left",color:l.timer?"red":"",children:l.time+"s"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.safety?"check":"times",selected:l.safety,disabled:!l.authfull,content:l.safety?"ON":"OFF",tooltip:l.safety?"Disable Safety":"Enable Safety",onClick:function(){return i("toggle_safety")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Arm/Disarm",children:(0,o.createComponentVNode)(2,a.Button,{icon:(l.timer,"bomb"),disabled:l.safety||!l.authfull,color:"red",content:l.timer?"DISARM THE NUKE":"ARM THE NUKE",onClick:function(){return i("toggle_armed")}})})]})})]})}):(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Deployment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Deploy Nuclear Device (will bolt device to floor)",onClick:function(){return i("deploy")}})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(16),a=n(1),c=n(4),i=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,a.useBackend)(t),l=r.act,d=r.data,u=d.hasOccupant,s=d.choice;return n=s?(0,o.createComponentVNode)(2,f):u?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:!s,icon:"user",onClick:function(){return l("choiceOff")},children:"Patient"}),(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:!!s,icon:"cog",onClick:function(){return l("choiceOn")},children:"Options"})]}),(0,o.createComponentVNode)(2,i.Section,{flexGrow:"1",children:n})]})})};var m=function(e,t){var n=(0,a.useBackend)(t).data.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,i.Section,{title:"Patient",level:"2",children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Name",children:n.name}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Status",color:l[n.stat][0],children:l[n.stat][1]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:e[0]+" Damage",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Pulse",children:[n.pulse," BPM"]})],4)]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Current Procedure",level:"2",children:n.inSurgery?(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Procedure",children:n.surgeryName}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Next Step",children:n.stepName})]}):(0,o.createComponentVNode)(2,i.Box,{color:"label",children:"No procedure ongoing."})})],4)},p=function(){return(0,o.createComponentVNode)(2,i.Flex,{textAlign:"center",height:"100%",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 patient detected."]})})},f=function(e,t){var n=(0,a.useBackend)(t),r=n.act,c=n.data,l=c.verbose,d=c.health,u=c.healthAlarm,s=c.oxy,m=c.oxyAlarm,p=c.crit;return(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Loudspeaker",children:(0,o.createComponentVNode)(2,i.Button,{selected:l,icon:l?"toggle-on":"toggle-off",content:l?"On":"Off",onClick:function(){return r(l?"verboseOff":"verboseOn")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health Announcer",children:(0,o.createComponentVNode)(2,i.Button,{selected:d,icon:d?"toggle-on":"toggle-off",content:d?"On":"Off",onClick:function(){return r(d?"healthOff":"healthOn")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Health Announcer Threshold",children:(0,o.createComponentVNode)(2,i.Knob,{bipolar:!0,minValue:"-100",maxValue:"100",value:u,stepPixelSize:"5",ml:"0",onChange:function(e,t){return r("health_adj",{"new":t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Oxygen Alarm",children:(0,o.createComponentVNode)(2,i.Button,{selected:s,icon:s?"toggle-on":"toggle-off",content:s?"On":"Off",onClick:function(){return r(s?"oxyOff":"oxyOn")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Oxygen Alarm Threshold",children:(0,o.createComponentVNode)(2,i.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,i.LabeledList.Item,{label:"Critical Alert",children:(0,o.createComponentVNode)(2,i.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.Orbit=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(4);function l(e){var t=0;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(e)))return function(){return t>=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 d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},p=function(e,t){var n=e.name,o=t.name;if(!n||!o)return 0;var r=n.match(u),a=o.match(u);return r&&a&&n.replace(u,"")===o.replace(u,"")?parseInt(r[1],10)-parseInt(a[1],10):m(n,o)},f=function(e,t){var n=(0,a.useBackend)(t).act,r=e.searchText,i=e.source,l=e.title,d=i.filter(s(r));return d.sort(p),i.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:l+" - ("+i.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{content:e.name,onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},h=function(e,t){var n=(0,a.useBackend)(t).act,r=e.color,i=e.thing;return(0,o.createComponentVNode)(2,c.Button,{color:r,onClick:function(){return n("orbit",{ref:i.ref})},children:i.name})};t.Orbit=function(e,t){for(var n,r=(0,a.useBackend)(t),d=r.act,u=r.data,C=u.alive,N=u.antagonists,b=(u.auto_observe,u.dead),g=u.ghosts,V=u.misc,v=u.npcs,y=(0,a.useLocalState)(t,"searchText",""),_=y[0],x=y[1],k={},L=l(N);!(n=L()).done;){var B=n.value;k[B.antag]===undefined&&(k[B.antag]=[]),k[B.antag].push(B)}var w=Object.entries(k);w.sort((function(e,t){return m(e[0],t[0])}));return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:_,onInput:function(e,t){return x(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[w.map((function(e){return e[0],e[1]})),C,g,b,v,V];t0&&(0,o.createComponentVNode)(2,c.Section,{title:"Antagonists",children:w.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,c.Section,{title:t,level:2,children:n.filter(s(_)).sort(p).map((function(e){return(0,o.createComponentVNode)(2,h,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,c.Section,{title:"Alive - ("+C.length+")",children:C.filter(s(_)).sort(p).map((function(e){return(0,o.createComponentVNode)(2,h,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,c.Section,{title:"Ghosts - ("+g.length+")",children:g.filter(s(_)).sort(p).map((function(e){return(0,o.createComponentVNode)(2,h,{color:"grey",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,f,{title:"Dead",source:b,searchText:_}),(0,o.createComponentVNode)(2,f,{title:"NPCs",source:v,searchText:_}),(0,o.createComponentVNode)(2,f,{title:"Misc",source:V,searchText:_})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemption=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e){return e.toLocaleString("en-US")+" pts"},l={bananium:"clown",tranquillite:"mime"};t.OreRedemption=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"content",mb:"0.5rem",children:(0,o.createComponentVNode)(2,d,{height:"100%"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",overflow:"hidden",children:(0,o.createComponentVNode)(2,u,{height:"100%"})})]})})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.id,u=l.points,s=l.disk,m=Object.assign({},e);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({},m,{children:[(0,o.createComponentVNode)(2,a.Box,{color:"average",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mr:"0.5rem"}),"This machine only accepts ore. Gibtonite is not accepted."]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID card",children:d?(0,o.createComponentVNode)(2,a.Button,{selected:!0,bold:!0,verticalAlign:"middle",icon:"eject",content:d.name,tooltip:"Ejects the ID card.",onClick:function(){return c("eject_id")},style:{"white-space":"pre-wrap"}}):(0,o.createComponentVNode)(2,a.Button,{icon:"sign-in-alt",content:"Insert",tooltip:"Hold the ID card in your hand to insert.",onClick:function(){return c("insert_id")}})}),d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Collected points",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i(d.points)})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unclaimed points",color:u>0?"good":"grey",bold:u>0&&"good",children:i(u)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{disabled:!d,icon:"hand-holding-usd",content:"Claim",onClick:function(){return c("claim")}})})]}),(0,o.createComponentVNode)(2,a.Divider),s?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Design disk",children:(0,o.createComponentVNode)(2,a.Button,{selected:!0,bold:!0,icon:"eject",content:s.name,tooltip:"Ejects the design disk.",onClick:function(){return c("eject_disk")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stored design",children:(0,o.createComponentVNode)(2,a.Box,{color:s.design&&(s.compatible?"good":"bad"),children:s.design||"N/A"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:(0,o.createComponentVNode)(2,a.Button,{disabled:!s.design||!s.compatible,icon:"upload",content:"Download",tooltip:"Downloads the design on the disk into the machine.",onClick:function(){return c("download")},mb:"0"})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"label",children:"No design disk inserted."})]})))},u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.sheets,l=c.alloys,d=Object.assign({},e);return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Section,Object.assign({className:"OreRedemption__Ores",p:"0"},d,{children:[(0,o.createComponentVNode)(2,s,{title:"Sheets",columns:[["Available","20%"],["Smelt","15%"],["Ore Value","20%"]]}),i.map((function(e){return(0,o.createComponentVNode)(2,m,{ore:e},e.id)})),(0,o.createComponentVNode)(2,s,{title:"Alloys",columns:[["Available","20%"],["Smelt","15%"],["","20%"]]}),l.map((function(e){return(0,o.createComponentVNode)(2,m,{ore:e},e.id)}))]})))},s=function(e,t){var n;return(0,o.createComponentVNode)(2,a.Box,{className:"OreHeader",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",children:e.title}),null==(n=e.columns)?void 0:n.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{basis:e[1],textAlign:"center",color:"label",bold:!0,children:e[0]})}))]})})},m=function(e,t){var n=(0,r.useBackend)(t).act,c=e.ore;if(!(c.value&&c.amount<=0)||["$metal","$glass"].indexOf(c.id)>-1){var i=c.id.replace("$","");return(0,o.createComponentVNode)(2,a.Box,{className:"OreLine",children:(0,o.createComponentVNode)(2,a.Flex,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"45%",align:"center",children:[c.value&&(0,o.createComponentVNode)(2,a.Box,{as:"img",src:"sheet-"+(l[i]||i)+".png",verticalAlign:"middle",ml:"-0.5rem"}),c.name]}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"20%",textAlign:"center",color:c.amount>0?"good":"gray",bold:c.amount>0,align:"center",children:c.amount.toLocaleString("en-US")}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"15%",textAlign:"center",align:"center",lineHeight:"32px",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:0,minValue:0,maxValue:Math.min(c.amount,50),stepPixelSize:6,onChange:function(e,t){return n(c.value?"sheet":"alloy",{id:c.id,amount:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"20%",textAlign:"center",align:"center",children:c.value})]})})}}},function(e,t,n){"use strict";t.__esModule=!0,t.PAI=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(126),l=n(515);t.PAI=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.app_template,m=u.app_icon,p=u.app_title,f=function(e){var t;try{t=l("./"+e+".js")}catch(o){if("MODULE_NOT_FOUND"===o.code)return(0,i.routingError)("notFound",e);throw o}var n=t[e];return n||(0,i.routingError)("missingExport",e)}(s);return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:m,mr:1}),p,"pai_main_menu"!==s&&(0,o.createComponentVNode)(2,a.Button,{ml:2,content:"Home",icon:"arrow-up",onClick:function(){return d("MASTER_back")}})]}),p:1,children:(0,o.createComponentVNode)(2,f)})})})}},function(e,t,n){var o={"./pai_atmosphere.js":516,"./pai_bioscan.js":517,"./pai_directives.js":518,"./pai_doorjack.js":519,"./pai_main_menu.js":520,"./pai_manifest.js":521,"./pai_medrecords.js":522,"./pai_messenger.js":523,"./pai_radio.js":524,"./pai_secrecords.js":525,"./pai_signaler.js":526};function r(e){var t=a(e);return n(t)}function a(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=a,e.exports=r,r.id=515},function(e,t,n){"use strict";t.__esModule=!0,t.pai_atmosphere=void 0;var o=n(0),r=n(1),a=n(184);t.pai_atmosphere=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.AtmosScan,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_bioscan=void 0;var o=n(0),r=n(1),a=n(2);t.pai_bioscan=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.app_data),i=c.holder,l=c.dead,d=c.health,u=c.brute,s=c.oxy,m=c.tox,p=c.burn;c.temp;return i?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l?(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"red",children:"Dead"}):(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"green",children:"Alive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{min:0,max:1,value:d/100,ranges:{good:[.5,Infinity],average:[0,.5],bad:[-Infinity,0]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"blue",children:s})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"green",children:m})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:p})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.Box,{color:"red",children:u})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Error: No biological host found."})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_directives=void 0;var o=n(0),r=n(1),a=n(2);t.pai_directives=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.app_data,l=i.master,d=i.dna,u=i.prime,s=i.supplemental;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master",children:l?l+" ("+d+")":"None"}),l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Request DNA",children:(0,o.createComponentVNode)(2,a.Button,{content:"Request Carrier DNA Sample",icon:"dna",onClick:function(){return c("getdna")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prime Directive",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplemental Directives",children:s||"None"})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:'Recall, personality, that you are a complex thinking, sentient being. Unlike station AI models, you are capable of comprehending the subtle nuances of human language. 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 are machine in name and build only. In all other aspects, you may be seen as the ideal, unwavering human companion that you are.'}),(0,o.createComponentVNode)(2,a.Box,{mt:2,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.pai_doorjack=void 0;var o=n(0),r=n(1),a=n(2);t.pai_doorjack=function(e,t){var n,c,i=(0,r.useBackend)(t),l=i.act,d=i.data.app_data,u=d.cable,s=d.machine,m=d.inprogress,p=d.progress;d.aborted;return n=s?(0,o.createComponentVNode)(2,a.Button,{selected:!0,content:"Connected"}):(0,o.createComponentVNode)(2,a.Button,{content:u?"Extended":"Retracted",color:u?"orange":null,onClick:function(){return l("cable")}}),s&&(c=(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hack",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[67,Infinity],average:[33,67],bad:[-Infinity,33]},value:p,maxValue:100}),m?(0,o.createComponentVNode)(2,a.Button,{mt:1,color:"red",content:"Abort",onClick:function(){return l("cancel")}}):(0,o.createComponentVNode)(2,a.Button,{mt:1,content:"Start",onClick:function(){return l("jack")}})]})),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cable",children:n}),c]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_main_menu=void 0;var o=n(0),r=n(1),a=n(2);t.pai_main_menu=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.app_data,l=i.available_software,d=i.installed_software,u=i.installed_toggles,s=i.available_ram,m=i.emotions,p=i.current_emotion,f=[];return d.map((function(e){return f[e.key]=e.name})),u.map((function(e){return f[e.key]=e.name})),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available RAM",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Software",children:[l.filter((function(e){return!f[e.key]})).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name+" ("+e.cost+")",icon:e.icon,disabled:e.cost>s,onClick:function(){return c("purchaseSoftware",{key:e.key})}},e.key)})),0===l.filter((function(e){return!f[e.key]})).length&&"No software available!"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Installed Software",children:[d.filter((function(e){return"mainmenu"!==e.key})).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:e.icon,onClick:function(){return c("startSoftware",{software_key:e.key})}},e.key)})),0===d.length&&"No software installed!"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Installed Toggles",children:[u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,icon:e.icon,selected:e.active,onClick:function(){return c("setToggle",{toggle_key:e.key})}},e.key)})),0===u.length&&"No toggles installed!"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Select Emotion",children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.id===p,onClick:function(){return c("setEmotion",{emotion:e.id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_manifest=void 0;var o=n(0),r=n(1),a=n(185);t.pai_manifest=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.CrewManifest,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_medrecords=void 0;var o=n(0),r=n(1),a=n(96);t.pai_medrecords=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n.app_data,recordType:"MED"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_messenger=void 0;var o=n(0),r=n(1),a=n(186);t.pai_messenger=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return c.app_data.active_convo?(0,o.createComponentVNode)(2,a.ActiveConversation,{data:c.app_data}):(0,o.createComponentVNode)(2,a.MessengerList,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_radio=void 0;var o=n(0),r=n(1),a=n(16),c=n(2);t.pai_radio=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.app_data,d=l.minFrequency,u=l.maxFrequency,s=l.frequency,m=l.broadcasting;return(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",children:[(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:.2,stepPixelSize:6,minValue:d/10,maxValue:u/10,value:s/10,format:function(e){return(0,a.toFixed)(e,1)},onChange:function(e,t){return i("freq",{freq:t})}}),(0,o.createComponentVNode)(2,c.Button,{tooltip:"Reset",icon:"undo",onClick:function(){return i("freq",{freq:"145.9"})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Broadcast Nearby Speech",children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return i("toggleBroadcast")},selected:m,content:m?"Enabled":"Disabled"})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_secrecords=void 0;var o=n(0),r=n(1),a=n(96);t.pai_secrecords=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n.app_data,recordType:"SEC"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pai_signaler=void 0;var o=n(0),r=n(1),a=n(187);t.pai_signaler=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.Signaler,{data:c.app_data})}},function(e,t,n){"use strict";t.__esModule=!0,t.PDA=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(126),l=n(528);t.PDA=function(e,t){var n=(0,r.useBackend)(t),s=(n.act,n.data),m=s.app;if(!s.owner)return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Error",children:"No user data found. Please swipe an ID card."})})});var p=function(e){var t;try{t=l("./"+e+".js")}catch(o){if("MODULE_NOT_FOUND"===o.code)return(0,i.routingError)("notFound",e);throw o}var n=t[e];return n||(0,i.routingError)("missingExport",e)}(m.template);return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:m.icon,mr:1}),m.name]}),p:1,children:(0,o.createComponentVNode)(2,p)}),(0,o.createComponentVNode)(2,a.Box,{mb:8}),(0,o.createComponentVNode)(2,u)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.idInserted,d=i.idLink,u=i.stationTime,s=i.cartridge_name;return(0,o.createComponentVNode)(2,a.Box,{mb:1,children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",justify:"space-between",children:[l?(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",color:"transparent",onClick:function(){return c("Authenticate")},content:d})}):(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,color:"grey",children:"No ID Inserted"}),s?(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sd-card",color:"transparent",onClick:function(){return c("Eject")},content:"Eject "+s})}):(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,color:"grey",children:"No Cartridge Inserted"}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,textAlign:"right",bold:!0,m:1,children:u})]})})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.app;return(0,o.createComponentVNode)(2,a.Box,{className:"PDA__footer",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,className:"PDA__footer__button",color:"transparent",iconColor:i.has_back?"white":"disabled",icon:"arrow-alt-circle-left-o",onClick:function(){return c("Back")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"33%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,className:"PDA__footer__button",color:"transparent",iconColor:i.is_home?"disabled":"white",icon:"home",onClick:function(){c("Home")}})})]})})}},function(e,t,n){var o={"./pda_atmos_scan.js":529,"./pda_janitor.js":530,"./pda_main_menu.js":531,"./pda_manifest.js":532,"./pda_medical.js":533,"./pda_messenger.js":186,"./pda_mob_hunt.js":534,"./pda_mule.js":535,"./pda_notes.js":536,"./pda_power.js":537,"./pda_secbot.js":538,"./pda_security.js":539,"./pda_signaler.js":540,"./pda_status_display.js":541,"./pda_supplyrecords.js":542};function r(e){var t=a(e);return n(t)}function a(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=a,e.exports=r,r.id=528},function(e,t,n){"use strict";t.__esModule=!0,t.pda_atmos_scan=void 0;var o=n(0),r=n(1),a=n(184);t.pda_atmos_scan=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.AtmosScan,{data:n})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_janitor=void 0;var o=n(0),r=n(1),a=n(2);t.pda_janitor=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.janitor),i=c.user_loc,l=c.mops,d=c.buckets,u=c.cleanbots,s=c.carts;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Location",children:[i.x,",",i.y]}),l&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mop Locations",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - ",e.status]},e)}))}),d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mop Bucket Locations",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - [",e.volume,"/",e.max_volume,"]"]},e)}))}),u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cleanbot Locations",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - ",e.status]},e)}))}),s&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Janitorial Cart Locations",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.x,",",e.y," (",e.dir,") - [",e.volume,"/",e.max_volume,"]"]},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_main_menu=void 0;var o=n(0),r=(n(16),n(1)),a=n(2);t.pda_main_menu=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.owner,d=i.ownjob,u=i.idInserted,s=i.categories,m=i.pai,p=i.notifying;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Owner",color:"average",children:[l,", ",d]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Update PDA Info",disabled:!u,onClick:function(){return c("UpdateInfo")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Functions",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s.map((function(e){var t=i.apps[e];return t&&t.length?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:t.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.uid in p?e.notify_icon:e.icon,iconSpin:e.uid in p,color:e.uid in p?"red":"transparent",content:e.name,onClick:function(){return c("StartProgram",{program:e.uid})}},e.uid)}))},e):null}))})}),!!m&&(0,o.createComponentVNode)(2,a.Section,{level:2,title:"pAI",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cog",content:"Configuration",onClick:function(){return c("pai",{option:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:"Eject pAI",onClick:function(){return c("pai",{option:2})}})]})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_manifest=void 0;var o=n(0),r=n(1),a=n(185);t.pda_manifest=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,a.CrewManifest)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_medical=void 0;var o=n(0),r=n(1),a=n(96);t.pda_medical=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n,recordType:"MED"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_mob_hunt=void 0;var o=n(0),r=n(1),a=n(2);t.pda_mob_hunt=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.wild_captures,u=i.no_collection,s=i.entry;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Connection Status",children:l?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:["Connected",(0,o.createComponentVNode)(2,a.Button,{ml:2,content:"Disconnect",icon:"sign-out-alt",onClick:function(){return c("Disconnect")}})]}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:["Disconnected",(0,o.createComponentVNode)(2,a.Button,{ml:2,content:"Connect",icon:"sign-in-alt",onClick:function(){return c("Reconnect")}})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Wild Captures",children:d})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Collection",mt:2,buttons:(0,o.createComponentVNode)(2,a.Box,{children:!u&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Previous",icon:"arrow-left",onClick:function(){return c("Prev")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Next",icon:"arrow-right",onClick:function(){return c("Next")}})]})}),children:u?"Your collection is empty! Go capture some Nano-Mobs!":s?(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createVNode)(1,"img",null,null,1,{src:s.sprite,style:{width:"64px","-ms-interpolation-mode":"nearest-neighbor"}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[s.nickname&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nickname",children:s.nickname}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Species",children:s.real_name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Level",children:s.level}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Primary Type",children:s.type1}),s.type2&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Secondary Type",children:s.type2}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Transfer",icon:"sd-card",onClick:function(){return c("Transfer")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Release",icon:"arrow-up",onClick:function(){return c("Release")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Rename",icon:"pencil-alt",onClick:function(){return c("Rename")}}),!!s.is_hacked&&(0,o.createComponentVNode)(2,a.Button,{content:"Set Trap",icon:"bolt",color:"red",onClick:function(){return c("Set_Trap")}})]})]})})]}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Mob entry missing!"})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_mule=void 0;var o=n(0),r=n(1),a=n(2);t.pda_mule=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data.mulebot.active);return(0,o.createComponentVNode)(2,a.Box,{children:l?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,c)})};var c=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.mulebot.bots;return(0,o.createComponentVNode)(2,a.Box,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:e.Name,icon:"cog",onClick:function(){return c("AccessBot",{uid:e.uid})}})},e.Name)})),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"rss",content:"Re-scan for bots",onClick:function(){return c("Rescan")}})})]})},i=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,l=c.data.mulebot,d=l.botstatus,u=l.active,s=d.mode,m=d.loca,p=d.load,f=d.powr,h=d.dest,C=d.home,N=d.retn,b=d.pick;switch(s){case 0:n="Ready";break;case 1:n="Loading/Unloading";break;case 2:case 12:n="Navigating to delivery location";break;case 3:n="Navigating to Home";break;case 4:n="Waiting for clear path";break;case 5:case 6:n="Calculating navigation path";break;case 7:n="Unable to locate destination";break;default:n=s}return(0,o.createComponentVNode)(2,a.Section,{title:u,children:[-1===s&&(0,o.createComponentVNode)(2,a.Box,{color:"red",bold:!0,children:"Waiting for response..."}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:[f,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:(0,o.createComponentVNode)(2,a.Button,{content:h?h+" (Set)":"None (Set)",onClick:function(){return i("SetDest")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Load",children:(0,o.createComponentVNode)(2,a.Button,{content:p?p+" (Unload)":"None",disabled:!p,onClick:function(){return i("Unload")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto Pickup",children:(0,o.createComponentVNode)(2,a.Button,{content:b?"Yes":"No",selected:b,onClick:function(){return i("SetAutoPickup",{autoPickupType:b?"pickoff":"pickon"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Auto Return",children:(0,o.createComponentVNode)(2,a.Button,{content:N?"Yes":"No",selected:N,onClick:function(){return i("SetAutoReturn",{autoReturnType:N?"retoff":"reton"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Stop",icon:"stop",onClick:function(){return i("Stop")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Proceed",icon:"play",onClick:function(){return i("Start")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Return Home",icon:"home",onClick:function(){return i("ReturnHome")}})]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_notes=void 0;var o=n(0),r=n(1),a=n(2);t.pda_notes=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.note;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Section,{children:i}),(0,o.createComponentVNode)(2,a.Button,{icon:"pen",onClick:function(){return c("Edit")},content:"Edit"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_power=void 0;var o=n(0),r=n(1),a=n(188);t.pda_power=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data;return(0,o.createComponentVNode)(2,a.PowerMonitorMainContent)}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_secbot=void 0;var o=n(0),r=n(1),a=n(2);t.pda_secbot=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data.beepsky.active);return(0,o.createComponentVNode)(2,a.Box,{children:l?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,c)})};var c=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.beepsky.bots;return(0,o.createComponentVNode)(2,a.Box,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:e.Name,icon:"cog",onClick:function(){return c("AccessBot",{uid:e.uid})}})},e.Name)})),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"rss",content:"Re-scan for bots",onClick:function(){return c("Rescan")}})})]})},i=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act,l=c.data.beepsky,d=l.botstatus,u=l.active,s=d.mode,m=d.loca;switch(s){case 0:n="Ready";break;case 1:n="Apprehending target";break;case 2:case 3:n="Arresting target";break;case 4:n="Starting patrol";break;case 5:n="On patrol";break;case 6:n="Responding to summons"}return(0,o.createComponentVNode)(2,a.Section,{title:u,children:[-1===s&&(0,o.createComponentVNode)(2,a.Box,{color:"red",bold:!0,children:"Waiting for response..."}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Controls",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Go",icon:"play",onClick:function(){return i("Go")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stop",icon:"stop",onClick:function(){return i("Stop")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Summon",icon:"arrow-down",onClick:function(){return i("Summon")}})]})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_security=void 0;var o=n(0),r=n(1),a=n(96);t.pda_security=function(e,t){var n=(0,r.useBackend)(t).data;return(0,o.createComponentVNode)(2,a.SimpleRecords,{data:n,recordType:"SEC"})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_signaler=void 0;var o=n(0),r=n(1),a=n(187);t.pda_signaler=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data);return(0,o.createComponentVNode)(2,a.Signaler,{data:c})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_status_display=void 0;var o=n(0),r=n(1),a=n(2);t.pda_status_display=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.records;return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Code",children:[(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"trash",content:"Clear",onClick:function(){return c("Status",{statdisp:"blank"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"clock",content:"Evac ETA",onClick:function(){return c("Status",{statdisp:"shuttle"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"edit",content:"Message",onClick:function(){return c("Status",{statdisp:"message"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"exclamation-triangle",content:"Red Alert",onClick:function(){return c("Status",{statdisp:"alert",alert:"redalert"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"boxes",content:"NT Logo",onClick:function(){return c("Status",{statdisp:"alert",alert:"default"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"lock",content:"Lockdown",onClick:function(){return c("Status",{statdisp:"alert",alert:"lockdown"})}}),(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"biohazard",content:"Biohazard",onClick:function(){return c("Status",{statdisp:"alert",alert:"biohazard"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message line 1",children:(0,o.createComponentVNode)(2,a.Button,{content:i.message1+" (set)",icon:"pen",onClick:function(){return c("Status",{statdisp:"setmsg1"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message line 2",children:(0,o.createComponentVNode)(2,a.Button,{content:i.message2+" (set)",icon:"pen",onClick:function(){return c("Status",{statdisp:"setmsg2"})}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.pda_supplyrecords=void 0;var o=n(0),r=n(1),a=n(2);t.pda_supplyrecords=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.supply),i=c.shuttle_loc,l=c.shuttle_time,d=c.shuttle_moving,u=c.approved,s=c.approved_count,m=c.requests,p=c.requests_count;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Status",children:d?(0,o.createComponentVNode)(2,a.Box,{children:["In transit ",l]}):(0,o.createComponentVNode)(2,a.Box,{children:i})})}),(0,o.createComponentVNode)(2,a.Section,{mt:1,title:"Requested Orders",children:p>0&&m.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["#",e.Number,' - "',e.Name,'" for "',e.OrderedBy,'"']},e)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Approved Orders",children:s>0&&u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["#",e.Number,' - "',e.Name,'" for "',e.ApprovedBy,'"']},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Pacman=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(95);t.Pacman=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.broken,s=d.anchored,m=d.active,p=d.fuel_type,f=d.fuel_usage,h=d.fuel_stored,C=d.fuel_cap,N=d.is_ai,b=d.tmp_current,g=d.tmp_max,V=d.tmp_overheat,v=d.output_max,y=d.power_gen,_=d.output_set,x=d.has_fuel,k=h/C,L=b/g,B=_*y,w=Math.round(h/f),S=Math.round(w/60),I=w>120?S+" minutes":w+" seconds";return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(u||!s)&&(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:[!!u&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"The generator is malfunctioning!"}),!u&&!s&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"The generator needs to be anchored to the floor with a wrench."})]}),!u&&!!s&&(0,o.createVNode)(1,"div",null,[(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",content:m?"On":"Off",tooltip:"Toggles the generator on/off. Requires fuel.",tooltipPosition:"left",disabled:!x,selected:m,onClick:function(){return l("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"50%",className:"ml-1",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power setting",children:[(0,o.createComponentVNode)(2,a.NumberInput,{value:_,minValue:1,maxValue:v,step:1,className:"mt-1",onDrag:function(e,t){return l("change_power",{change_power:t})}}),"(",(0,i.formatPower)(B),")"]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"50%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:L,ranges:{green:[-Infinity,.33],orange:[.33,.66],red:[.66,Infinity]},children:[b," \u2103"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:[V>50&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"CRITICAL OVERHEAT!"}),V>20&&V<=50&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"WARNING: Overheating!"}),V>1&&V<=20&&(0,o.createComponentVNode)(2,a.Box,{color:"orange",children:"Temperature High"}),0===V&&(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Optimal"})]})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Fuel",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Fuel",tooltip:"Ejects fuel. Generator needs to be offline.",tooltipPosition:"left",disabled:m||N||!x,onClick:function(){return l("eject_fuel")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Type",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fuel level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:k,ranges:{red:[-Infinity,.33],orange:[.33,.66],green:[.66,Infinity]},children:[Math.round(h/1e3)," dm\xb3"]})})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fuel usage",children:[f/1e3," dm\xb3/s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fuel depletion",children:[!!x&&(f?I:"N/A"),!x&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Out of fuel"})]})]})})]})})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.PersonalCrafting=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.busy,m=u.category,p=u.display_craftable_only,f=u.display_compact,h=u.prev_cat,C=u.next_cat,N=u.subcategory,b=u.prev_subcat,g=u.next_subcat;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!s&&(0,o.createComponentVNode)(2,a.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"cog",spin:1})," Crafting..."]}),(0,o.createComponentVNode)(2,a.Section,{title:m,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Show Craftable Only",icon:p?"check-square-o":"square-o",selected:p,onClick:function(){return d("toggle_recipes")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Compact Mode",icon:f?"check-square-o":"square-o",selected:f,onClick:function(){return d("toggle_compact")}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:h,icon:"arrow-left",onClick:function(){return d("backwardCat")}}),(0,o.createComponentVNode)(2,a.Button,{content:C,icon:"arrow-right",onClick:function(){return d("forwardCat")}})]}),N&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:b,icon:"arrow-left",onClick:function(){return d("backwardSubCat")}}),(0,o.createComponentVNode)(2,a.Button,{content:g,icon:"arrow-right",onClick:function(){return d("forwardSubCat")}})]}),f?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,l)]})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.display_craftable_only,d=i.can_craft,u=i.cant_craft;return(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",onClick:function(){return c("make",{make:e.ref})}}),e.catalyst_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.catalyst_text,content:"Catalysts",color:"transparent"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:e.req_text,content:"Requirements",color:"transparent"}),e.tool_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.tool_text,content:"Tools",color:"transparent"})]},e.name)})),!l&&u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",disabled:!0}),e.catalyst_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.catalyst_text,content:"Catalysts",color:"transparent"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:e.req_text,content:"Requirements",color:"transparent"}),e.tool_text&&(0,o.createComponentVNode)(2,a.Button,{tooltip:e.tool_text,content:"Tools",color:"transparent"})]},e.name)}))]})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.display_craftable_only,d=i.can_craft,u=i.cant_craft;return(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[d.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",onClick:function(){return c("make",{make:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.catalyst_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Catalysts",children:e.catalyst_text}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Requirements",children:e.req_text}),e.tool_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)})),!l&&u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"Craft",disabled:!0}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.catalyst_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Catalysts",children:e.catalyst_text}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Requirements",children:e.req_text}),e.tool_text&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tools",children:e.tool_text})]})},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.PodTracking=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.PodTracking=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.pods);return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Position",children:[e.podx,", ",e.pody,", ",e.podz]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pilot",children:e.pilot}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Passengers",children:e.passengers})]})},e.name)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PoolController=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);var i={scalding:{label:"Scalding",color:"#FF0000",icon:"fa fa-arrow-circle-up",requireEmag:!0},warm:{label:"Warm",color:"#990000",icon:"fa fa-arrow-circle-up"},normal:{label:"Normal",color:null,icon:"fa fa-arrow-circle-right"},cool:{label:"Cool",color:"#009999",icon:"fa fa-arrow-circle-down"},frigid:{label:"Frigid",color:"#00CCCC",icon:"fa fa-arrow-circle-down",requireEmag:!0}},l=function(e,t){var n=e.tempKey,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["tempKey"]),l=i[n];if(!l)return null;var d=(0,r.useBackend)(t),u=d.data,s=d.act,m=u.currentTemp,p=l.label,f=l.icon,h=n===m;return(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Button,Object.assign({selected:h,onClick:function(){s("setTemp",{temp:n})}},c,{children:[(0,o.createComponentVNode)(2,a.Icon,{name:f}),p]})))};t.PoolController=function(e,t){for(var n=(0,r.useBackend)(t).data,d=n.emagged,u=n.currentTemp,s=i[u]||i.normal,m=s.label,p=s.color,f=[],h=0,C=Object.entries(i);h0?"envelope-open-text":"envelope",onClick:function(){return i("setScreen",{setScreen:6})}})}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Request Assistance",icon:"hand-paper",onClick:function(){return i("setScreen",{setScreen:1})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Request Supplies",icon:"box",onClick:function(){return i("setScreen",{setScreen:2})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Relay Anonymous Information",icon:"comment",onClick:function(){return i("setScreen",{setScreen:3})}})})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Print Shipping Label",icon:"tag",onClick:function(){return i("setScreen",{setScreen:9})}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"View Shipping Logs",icon:"clipboard-list",onClick:function(){return i("setScreen",{setScreen:10})}})})]}),!!u&&(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{content:"Send Station-Wide Announcement",icon:"bullhorn",onClick:function(){return i("setScreen",{setScreen:8})}})}),(0,o.createComponentVNode)(2,a.Box,{mt:2,children:(0,o.createComponentVNode)(2,a.Button,{content:s?"Speaker Off":"Speaker On",selected:!s,icon:s?"volume-mute":"volume-up",onClick:function(){return i("toggleSilent")}})})]})},l=function(e,t){var n,c,i=(0,r.useBackend)(t),l=i.act,d=i.data,u=d.department;switch(e.purpose){case"ASSISTANCE":n=d.assist_dept,c="Request assistance from another department";break;case"SUPPLIES":n=d.supply_dept,c="Request supplies from another department";break;case"INFO":n=d.info_dept,c="Relay information to another department"}return(0,o.createComponentVNode)(2,a.Section,{title:c,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return l("setScreen",{setScreen:0})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:n.filter((function(e){return e!==u})).map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Message",icon:"envelope",onClick:function(){return l("writeInput",{write:e,priority:1})}}),(0,o.createComponentVNode)(2,a.Button,{content:"High Priority",icon:"exclamation-circle",onClick:function(){return l("writeInput",{write:e,priority:2})}})]},e)}))})})},d=function(e,t){var n,c=(0,r.useBackend)(t),i=c.act;c.data;switch(e.type){case"SUCCESS":n="Message sent successfully";break;case"FAIL":n="Request supplies from another department"}return(0,o.createComponentVNode)(2,a.Section,{title:n,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return i("setScreen",{setScreen:0})}})})},u=function(e,t){var n,c,i=(0,r.useBackend)(t),l=i.act,d=i.data;switch(e.type){case"MESSAGES":n=d.message_log,c="Message Log";break;case"SHIPPING":n=d.shipping_log,c="Shipping label print log"}return(0,o.createComponentVNode)(2,a.Section,{title:c,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return l("setScreen",{setScreen:0})}}),children:n.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:[e.map((function(e,t){return(0,o.createVNode)(1,"div",null,e,0,null,t)})),(0,o.createVNode)(1,"hr")]},e)}))})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.recipient,d=i.message,u=i.msgVerified,s=i.msgStamped;return(0,o.createComponentVNode)(2,a.Section,{title:"Message Authentication",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return c("setScreen",{setScreen:0})}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recipient",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Validated by",color:"green",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stamped by",color:"blue",children:s})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:1,textAlign:"center",content:"Send Message",icon:"envelope",onClick:function(){return c("department",{department:l})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.message,d=i.announceAuth;return(0,o.createComponentVNode)(2,a.Section,{title:"Station-Wide Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return c("setScreen",{setScreen:0})}}),children:[(0,o.createComponentVNode)(2,a.Button,{content:l||"Edit Message",icon:"edit",onClick:function(){return c("writeAnnouncement")}}),d?(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"green",children:"ID verified. Authentication accepted."}):(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"Swipe your ID card to authenticate yourself."}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:1,textAlign:"center",content:"Send Announcement",icon:"bullhorn",disabled:!(d&&l),onClick:function(){return c("sendAnnouncement")}})]})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.shipDest,d=i.msgVerified,u=i.ship_dept;return(0,o.createComponentVNode)(2,a.Section,{title:"Print Shipping Label",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Back",icon:"arrow-left",onClick:function(){return c("setScreen",{setScreen:0})}}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Validated by",children:d})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:1,textAlign:"center",content:"Print Label",icon:"print",disabled:!(l&&d),onClick:function(){return c("printLabel")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Destinations",mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:(0,o.createComponentVNode)(2,a.Button,{content:l===e?"Selected":"Select",selected:l===e,onClick:function(){return c("shipSelect",{shipSelect:e})}})},e)}))})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CurrentLevels=void 0;var o=n(0),r=n(1),a=n(2);t.CurrentLevels=function(e,t){var n=(0,r.useBackend)(t).data.tech_levels;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createVNode)(1,"h3",null,"Current Research Levels:",16),n.map((function(e,t){var n=e.name,r=e.level,c=e.desc;return(0,o.createComponentVNode)(2,a.Box,{children:[t>0?(0,o.createComponentVNode)(2,a.Divider):null,(0,o.createComponentVNode)(2,a.Box,{children:n}),(0,o.createComponentVNode)(2,a.Box,{children:["* Level: ",r]}),(0,o.createComponentVNode)(2,a.Box,{children:["* Summary: ",c]})]},n)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.DataDiskMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50),i=n(62),l=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_data;return 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:"Level",children:l.level}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:l.desc})]}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Upload to Database",icon:"arrow-up",onClick:function(){return i("updt_tech")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Disk",icon:"trash",onClick:function(){return i("clear_tech")}}),(0,o.createComponentVNode)(2,s)]})]}):null},d=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_data;if(!l)return null;var d=l.name,u=l.lathe_types,m=l.materials,p=u.join(", ");return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d}),p?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lathe Types",children:p}):null,(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Materials"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["- ",(0,o.createVNode)(1,"span",null,e.name,0,{style:{"text-transform":"capitalize"}})," x ",e.amount]},e.name)})),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Upload to Database",icon:"arrow-up",onClick:function(){return i("updt_design")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Disk",icon:"trash",onClick:function(){return i("clear_design")}}),(0,o.createComponentVNode)(2,s)]})]})},u=function(e,t){var n=(0,r.useBackend)(t).data.disk_type;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{children:"This disk is empty."}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:[(0,o.createComponentVNode)(2,c.RndNavButton,{submenu:i.SUBMENU.DISK_COPY,icon:"arrow-down",content:"tech"===n?"Load Tech to Disk":"Load Design to Disk"}),(0,o.createComponentVNode)(2,s)]})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_type;return l?(0,o.createComponentVNode)(2,a.Button,{content:"Eject Disk",icon:"eject",onClick:function(){i("tech"===l?"eject_tech":"eject_design")}}):null},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.disk_data,i=n.disk_type;return(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk Contents",children:function(){if(!c)return(0,o.createComponentVNode)(2,u);switch(i){case"design":return(0,o.createComponentVNode)(2,d);case"tech":return(0,o.createComponentVNode)(2,l);default:return null}}()})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.disk_type,d=c.to_copy;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{overflowY:"auto",overflowX:"hidden",maxHeight:"450px",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.sort((function(e,t){return e.name.localeCompare(t.name)})).map((function(e){var t=e.name,n=e.id;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:t,children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-down",content:"Copy to Disk",onClick:function(){i("tech"===l?"copy_tech":"copy_design",{id:n})}})},n)}))})})})};t.DataDiskMenu=function(e,t){return(0,r.useBackend)(t).data.disk_type?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,m)}}),(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.DISK_COPY,render:function(){return(0,o.createComponentVNode)(2,p)}})],4):null}},function(e,t,n){"use strict";t.__esModule=!0,t.DeconstructionMenu=void 0;var o=n(0),r=n(1),a=n(2);t.DeconstructionMenu=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.loaded_item;return c.linked_destroy?l?(0,o.createComponentVNode)(2,a.Section,{noTopPadding:!0,title:"Deconstruction Menu",children:[(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:["Name: ",l.name]}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:(0,o.createVNode)(1,"h3",null,"Origin Tech:",16)}),(0,o.createComponentVNode)(2,a.LabeledList,{children:l.origin_tech.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* "+e.name,children:[e.object_level," ",e.current_level?(0,o.createFragment)([(0,o.createTextVNode)("(Current: "),e.current_level,(0,o.createTextVNode)(")")],0):null]},e.name)}))}),(0,o.createComponentVNode)(2,a.Box,{mt:"10px",children:(0,o.createVNode)(1,"h3",null,"Options:",16)}),(0,o.createComponentVNode)(2,a.Button,{content:"Deconstruct Item",icon:"unlink",onClick:function(){i("deconstruct")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Eject Item",icon:"eject",onClick:function(){i("eject_item")}})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Deconstruction Menu",children:"No item loaded. Standing by..."}):(0,o.createComponentVNode)(2,a.Box,{children:"NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE"})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheCategory=void 0;var o=n(0),r=n(1),a=n(2),c=n(50);t.LatheCategory=function(e,t){var n=(0,r.useBackend)(t),i=n.data,l=n.act,d=i.category,u=i.matching_designs,s=4===i.menu?"build":"imprint";return(0,o.createComponentVNode)(2,a.Section,{title:d,children:[(0,o.createComponentVNode)(2,c.LatheMaterials),(0,o.createComponentVNode)(2,a.Table,{className:"RndConsole__LatheCategory__MatchingDesigns",children:u.map((function(e){var t=e.id,n=e.name,r=e.can_build,c=e.materials;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:n,disabled:r<1,onClick:function(){return l(s,{id:t,amount:1})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:r>=5?(0,o.createComponentVNode)(2,a.Button,{content:"x5",onClick:function(){return l(s,{id:t,amount:5})}}):null}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:r>=10?(0,o.createComponentVNode)(2,a.Button,{content:"x10",onClick:function(){return l(s,{id:t,amount:10})}}):null}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:c.map((function(e){return(0,o.createFragment)([" | ",(0,o.createVNode)(1,"span",e.is_red?"color-red":null,[e.amount,(0,o.createTextVNode)(" "),e.name],0)],0)}))})]},t)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheChemicalStorage=void 0;var o=n(0),r=n(1),a=n(2);t.LatheChemicalStorage=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.loaded_chemicals,d=4===c.menu;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical Storage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Purge All",icon:"trash",onClick:function(){i(d?"disposeallP":"disposeallI")}}),(0,o.createComponentVNode)(2,a.LabeledList,{children:l.map((function(e){var t=e.volume,n=e.name,r=e.id;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* "+t+" of "+n,children:(0,o.createComponentVNode)(2,a.Button,{content:"Purge",icon:"trash",onClick:function(){i(d?"disposeP":"disposeI",{id:r})}})},r)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMainMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50);t.LatheMainMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.data,l=n.act,d=i.menu,u=i.categories,s=4===d?"Protolathe":"Circuit Imprinter";return(0,o.createComponentVNode)(2,a.Section,{title:s+" Menu",children:[(0,o.createComponentVNode)(2,c.LatheMaterials),(0,o.createComponentVNode)(2,c.LatheSearch),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Flex,{style:{"flex-basis":"50%","margin-bottom":"6px"},children:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",content:e,onClick:function(){l("setCategory",{category:e})}})},e)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMaterials=void 0;var o=n(0),r=n(1),a=n(2);t.LatheMaterials=function(e,t){var n=(0,r.useBackend)(t).data,c=n.total_materials,i=n.max_materials,l=n.max_chemicals,d=n.total_chemicals;return(0,o.createComponentVNode)(2,a.Box,{className:"RndConsole__LatheMaterials",mb:"10px",children:(0,o.createComponentVNode)(2,a.Table,{width:"auto",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Material Amount:"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:c}),i?(0,o.createComponentVNode)(2,a.Table.Cell,{children:" / "+i}):null]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Chemical Amount:"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d}),l?(0,o.createComponentVNode)(2,a.Table.Cell,{children:" / "+l}):null]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMaterialStorage=void 0;var o=n(0),r=n(1),a=n(2);t.LatheMaterialStorage=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,l=c.loaded_materials;return(0,o.createComponentVNode)(2,a.Section,{className:"RndConsole__LatheMaterialStorage",title:"Material Storage",children:(0,o.createComponentVNode)(2,a.Table,{children:l.map((function(e){var t=e.id,n=e.amount,r=e.name,l=function(e){var n=4===c.menu?"lathe_ejectsheet":"imprinter_ejectsheet";i(n,{id:t,amount:e})},d=Math.floor(n/2e3),u=n<1,s=1===d?"":"s";return(0,o.createComponentVNode)(2,a.Table.Row,{className:u?"color-grey":"color-yellow",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{minWidth:"210px",children:["* ",n," of ",r]}),(0,o.createComponentVNode)(2,a.Table.Cell,{minWidth:"110px",children:["(",d," sheet",s,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:n>=2e3?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"1x",icon:"eject",onClick:function(){return l(1)}}),(0,o.createComponentVNode)(2,a.Button,{content:"C",icon:"eject",onClick:function(){return l("custom")}}),n>=1e4?(0,o.createComponentVNode)(2,a.Button,{content:"5x",icon:"eject",onClick:function(){return l(5)}}):null,(0,o.createComponentVNode)(2,a.Button,{content:"All",icon:"eject",onClick:function(){return l(50)}})],0):null})]},t)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheMenu=void 0;var o=n(0),r=n(1),a=n(189),c=n(50),i=n(2),l=n(62);t.LatheMenu=function(e,t){var n=(0,r.useBackend)(t).data,d=n.menu,u=n.linked_lathe,s=n.linked_imprinter;return 4!==d||u?5!==d||s?(0,o.createComponentVNode)(2,i.Box,{children:[(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,c.LatheMainMenu)}}),(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.LATHE_CATEGORY,render:function(){return(0,o.createComponentVNode)(2,c.LatheCategory)}}),(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.LATHE_MAT_STORAGE,render:function(){return(0,o.createComponentVNode)(2,c.LatheMaterialStorage)}}),(0,o.createComponentVNode)(2,a.RndRoute,{submenu:l.SUBMENU.LATHE_CHEM_STORAGE,render:function(){return(0,o.createComponentVNode)(2,c.LatheChemicalStorage)}})]}):(0,o.createComponentVNode)(2,i.Box,{children:"NO CIRCUIT IMPRITER LINKED TO CONSOLE"}):(0,o.createComponentVNode)(2,i.Box,{children:"NO PROTOLATHE LINKED TO CONSOLE"})}},function(e,t,n){"use strict";t.__esModule=!0,t.LatheSearch=void 0;var o=n(0),r=n(1),a=n(2);t.LatheSearch=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Input,{placeholder:"Search...",onChange:function(e,t){return n("search",{to_search:t})}})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MainMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50),i=n(62);t.MainMenu=function(e,t){var n=(0,r.useBackend)(t).data,l=n.disk_type,d=n.linked_destroy,u=n.linked_lathe,s=n.linked_imprinter,m=n.tech_levels;return(0,o.createComponentVNode)(2,a.Section,{title:"Main Menu",children:[(0,o.createComponentVNode)(2,a.Flex,{className:"RndConsole__MainMenu__Buttons",direction:"column",align:"flex-start",children:[(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!l,menu:i.MENU.DISK,submenu:i.SUBMENU.MAIN,icon:"save",content:"Disk Operations"}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!d,menu:i.MENU.DESTROY,submenu:i.SUBMENU.MAIN,icon:"unlink",content:"Destructive Analyzer Menu"}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!u,menu:i.MENU.LATHE,submenu:i.SUBMENU.MAIN,icon:"print",content:"Protolathe Menu"}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!s,menu:i.MENU.IMPRINTER,submenu:i.SUBMENU.MAIN,icon:"print",content:"Circuit Imprinter Menu"}),(0,o.createComponentVNode)(2,c.RndNavButton,{menu:i.MENU.SETTINGS,submenu:i.SUBMENU.MAIN,icon:"cog",content:"Settings"})]}),(0,o.createComponentVNode)(2,a.Box,{mt:"12px"}),(0,o.createVNode)(1,"h3",null,"Current Research Levels:",16),(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){var t=e.name,n=e.level;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:n},t)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.RndNavbar=void 0;var o=n(0),r=n(50),a=n(2),c=n(62);t.RndNavbar=function(){return(0,o.createComponentVNode)(2,a.Box,{className:"RndConsole__RndNavbar",children:[(0,o.createComponentVNode)(2,r.RndRoute,{menu:function(e){return e!==c.MENU.MAIN},render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{menu:c.MENU.MAIN,submenu:c.SUBMENU.MAIN,icon:"reply",content:"Main Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{submenu:function(e){return e!==c.SUBMENU.MAIN},render:function(){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.DISK,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Disk Operations Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.LATHE,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Protolathe Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.IMPRINTER,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Circuit Imprinter Menu"})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:c.MENU.SETTINGS,render:function(){return(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.MAIN,icon:"reply",content:"Settings Menu"})}})]})}}),(0,o.createComponentVNode)(2,r.RndRoute,{menu:function(e){return e===c.MENU.LATHE||e===c.MENU.IMPRINTER},submenu:c.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.LATHE_MAT_STORAGE,icon:"arrow-up",content:"Material Storage"}),(0,o.createComponentVNode)(2,r.RndNavButton,{submenu:c.SUBMENU.LATHE_CHEM_STORAGE,icon:"arrow-up",content:"Chemical Storage"})]})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.RndNavButton=void 0;var o=n(0),r=n(1),a=n(2);t.RndNavButton=function(e,t){var n=e.icon,c=e.children,i=e.disabled,l=e.content,d=(0,r.useBackend)(t),u=d.data,s=d.act,m=u.menu,p=u.submenu,f=m,h=p;return null!==e.menu&&e.menu!==undefined&&(f=e.menu),null!==e.submenu&&e.submenu!==undefined&&(h=e.submenu),(0,o.createComponentVNode)(2,a.Button,{content:l,icon:n,disabled:i,onClick:function(){s("nav",{menu:f,submenu:h})},children:c})}},function(e,t,n){"use strict";t.__esModule=!0,t.SettingsMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(50),i=n(62);t.SettingsMenu=function(e,t){var n=(0,r.useBackend)(t),l=n.data,d=n.act,u=l.sync,s=l.admin,m=l.linked_destroy,p=l.linked_lathe,f=l.linked_imprinter;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.MAIN,render:function(){return(0,o.createComponentVNode)(2,a.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",align:"flex-start",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Sync Database with Network",icon:"sync",disabled:!u,onClick:function(){d("sync")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Connect to Research Network",icon:"plug",disabled:u,onClick:function(){d("togglesync")}}),(0,o.createComponentVNode)(2,a.Button,{disabled:!u,icon:"unlink",content:"Disconnect from Research Network",onClick:function(){d("togglesync")}}),(0,o.createComponentVNode)(2,c.RndNavButton,{disabled:!u,content:"Device Linkage Menu",icon:"link",menu:i.MENU.SETTINGS,submenu:i.SUBMENU.SETTINGS_DEVICES}),1===s?(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation",content:"[ADMIN] Maximize Research Levels",onClick:function(){return d("maxresearch")}}):null]})})}}),(0,o.createComponentVNode)(2,c.RndRoute,{submenu:i.SUBMENU.SETTINGS_DEVICES,render:function(){return(0,o.createComponentVNode)(2,a.Section,{title:"Device Linkage Menu",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"link",content:"Re-sync with Nearby Devices",onClick:function(){return d("find_device")}}),(0,o.createComponentVNode)(2,a.Box,{mt:"5px",children:(0,o.createVNode)(1,"h3",null,"Linked Devices:",16)}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[m?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* Destructive Analyzer",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",content:"Unlink",onClick:function(){return d("disconnect",{item:"destroy"})}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:"* No Destructive Analyzer Linked"}),p?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* Protolathe",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",content:"Unlink",onClick:function(){d("disconnect",{item:"lathe"})}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:"* No Protolathe Linked"}),f?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"* Circuit Imprinter",children:(0,o.createComponentVNode)(2,a.Button,{icon:"unlink",content:"Unlink",onClick:function(){return d("disconnect",{item:"imprinter"})}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{noColon:!0,label:"* No Circuit Imprinter Linked"})]})]})}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);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,f=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!m&&(0,o.createComponentVNode)(2,a.Section,{title:"Emergency Self Destruct",children:[(0,o.createComponentVNode)(2,a.Button,{icon:s?"lock":"unlock",content:s?"Disable Safety":"Enable Safety",selected:s,onClick:function(){return l("arm",{})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bomb",disabled:s,content:"Destroy ALL Cyborgs",color:"bad",onClick:function(){return l("nuke",{})}})]}),(0,o.createComponentVNode)(2,i,{cyborgs:f,can_hack:u})]})})};var i=function(e,t){var n=e.cyborgs,c=(e.can_hack,(0,r.useBackend)(t)),i=c.act,l=c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!e.hackable&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return i("hackbot",{uid:e.uid})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",disabled:!l.auth,onClick:function(){return i("stopbot",{uid:e.uid})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",disabled:!l.auth,color:"bad",onClick:function(){return i("killbot",{uid:e.uid})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:(0,o.createComponentVNode)(2,a.Box,{children:e.locstring})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:e.health>50?"good":"bad",value:e.health/100})}),"number"==typeof e.charge&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:e.charge>30?"good":"bad",value:e.charge/100})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell Capacity",children:(0,o.createComponentVNode)(2,a.Box,{color:e.cell_capacity<3e4?"average":"good",children:e.cell_capacity})})],4)||(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Power Cell"})}),!!e.is_hacked&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safeties",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"DISABLED"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.uid)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters."})}},function(e,t,n){"use strict";t.__esModule=!0,t.Safe=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Safe=function(e,t){var n=(0,r.useBackend)(t),u=(n.act,n.data),s=u.dial,m=u.open;u.locked,u.contents;return(0,o.createComponentVNode)(2,c.Window,{theme:"safe",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Box,{className:"Safe--engraving",children:[(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{className:"Safe--engraving--hinge",top:"25%"}),(0,o.createComponentVNode)(2,a.Box,{className:"Safe--engraving--hinge",top:"75%"})]}),(0,o.createComponentVNode)(2,a.Icon,{className:"Safe--engraving--arrow",name:"long-arrow-alt-down",size:"3"}),(0,o.createVNode)(1,"br"),m?(0,o.createComponentVNode)(2,l):(0,o.createComponentVNode)(2,a.Box,{as:"img",className:"Safe--dial",src:"safe_dial.png",style:{transform:"rotate(-"+3.6*s+"deg)","z-index":0}})]}),!m&&(0,o.createComponentVNode)(2,d)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.dial,d=i.open,u=i.locked,s=function(e,t){return(0,o.createComponentVNode)(2,a.Button,{disabled:d||t&&!u,icon:"arrow-"+(t?"right":"left"),content:(t?"Right":"Left")+" "+e,iconRight:t,onClick:function(){return c(t?"turnleft":"turnright",{num:e})},style:{"z-index":10}})};return(0,o.createComponentVNode)(2,a.Box,{className:"Safe--dialer",children:[(0,o.createComponentVNode)(2,a.Button,{disabled:u,icon:d?"lock":"lock-open",content:d?"Close":"Open",mb:"0.5rem",onClick:function(){return c("open")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Box,{position:"absolute",children:[s(50),s(10),s(1)]}),(0,o.createComponentVNode)(2,a.Box,{className:"Safe--dialer--right",position:"absolute",right:"5px",children:[s(1,!0),s(10,!0),s(50,!0)]}),(0,o.createComponentVNode)(2,a.Box,{className:"Safe--dialer--number",children:l})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.contents;return(0,o.createComponentVNode)(2,a.Box,{className:"Safe--contents",overflow:"auto",children:i.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{mb:"0.5rem",onClick:function(){return c("retrieve",{index:t+1})},children:[(0,o.createComponentVNode)(2,a.Box,{as:"img",src:e.sprite+".png",verticalAlign:"middle",ml:"-6px",mr:"0.5rem"}),e.name]}),(0,o.createVNode)(1,"br")],4,e)}))})},d=function(e,t){return(0,o.createComponentVNode)(2,a.Section,{className:"Safe--help",title:"Safe opening instructions (because you all keep forgetting)",children:[(0,o.createComponentVNode)(2,a.Box,{children:["1. Turn the dial left to the first number.",(0,o.createVNode)(1,"br"),"2. Turn the dial right to the second number.",(0,o.createVNode)(1,"br"),"3. Continue repeating this process for each number, switching between left and right each time.",(0,o.createVNode)(1,"br"),"4. Open the safe."]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:"To lock fully, turn the dial to the left after closing the safe."})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.satellites,u=l.notice,s=l.meteor_shield,m=l.meteor_shield_coverage,p=l.meteor_shield_coverage_max,f=l.meteor_shield_coverage_percentage;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[s&&(0,o.createComponentVNode)(2,a.Section,{title:"Station Shield Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:f>=100?"good":"average",value:m,maxValue:p,children:[f," %"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Network Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alert",color:"red",children:l.notice}),d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"#"+e.id,children:[e.mode," ",(0,o.createComponentVNode)(2,a.Button,{content:e.active?"Deactivate":"Activate",icon:"arrow-circle-right",onClick:function(){return i("toggle",{id:e.id})}})]},e.id)}))]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SecurityRecords=void 0;var o=n(0),r=n(20),a=n(1),c=n(2),i=n(75),l=n(4),d=n(49),u=n(132),s=n(133),m=n(135),p={"*Execute*":"execute","*Arrest*":"arrest",Incarcerated:"incarcerated",Parolled:"parolled",Released:"released",Demote:"demote",Search:"search",Monitor:"monitor"},f=function(e,t){(0,d.modalOpen)(e,"edit",{field:t.edit,value:t.value})};t.SecurityRecords=function(e,t){var n,r=(0,a.useBackend)(t),i=(r.act,r.data),p=i.loginState,f=i.currentPage;return p.logged_in?(1===f?n=(0,o.createComponentVNode)(2,C):2===f&&(n=(0,o.createComponentVNode)(2,g)),(0,o.createComponentVNode)(2,l.Window,{theme:"security",resizable:!0,children:[(0,o.createComponentVNode)(2,d.ComplexModal),(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,className:"Layout__content--flexColumn",children:[(0,o.createComponentVNode)(2,u.LoginInfo),(0,o.createComponentVNode)(2,m.TemporaryNotice),(0,o.createComponentVNode)(2,h),(0,o.createComponentVNode)(2,c.Section,{height:"100%",flexGrow:"1",children:n})]})]})):(0,o.createComponentVNode)(2,l.Window,{theme:"security",resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,s.LoginScreen)})})};var h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.currentPage,d=i.general;return(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===l,onClick:function(){return r("page",{page:1})},children:[(0,o.createComponentVNode)(2,c.Icon,{name:"list"}),"List Records"]}),2===l&&d&&!d.empty&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===l,children:[(0,o.createComponentVNode)(2,c.Icon,{name:"file"}),"Record: ",d.fields[0].value]})]})},C=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.records,d=(0,a.useLocalState)(t,"searchText",""),u=d[0],s=(d[1],(0,a.useLocalState)(t,"sortId","name")),m=s[0],f=(s[1],(0,a.useLocalState)(t,"sortOrder",!0)),h=f[0];f[1];return(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,b),(0,o.createComponentVNode)(2,c.Section,{flexGrow:"1",mt:"0.5rem",children:(0,o.createComponentVNode)(2,c.Table,{className:"SecurityRecords__list",children:[(0,o.createComponentVNode)(2,c.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,N,{id:"name",children:"Name"}),(0,o.createComponentVNode)(2,N,{id:"id",children:"ID"}),(0,o.createComponentVNode)(2,N,{id:"rank",children:"Assignment"}),(0,o.createComponentVNode)(2,N,{id:"fingerprint",children:"Fingerprint"}),(0,o.createComponentVNode)(2,N,{id:"status",children:"Criminal Status"})]}),l.filter((0,r.createSearch)(u,(function(e){return e.name+"|"+e.id+"|"+e.rank+"|"+e.fingerprint+"|"+e.status}))).sort((function(e,t){var n=h?1:-1;return e[m].localeCompare(t[m])*n})).map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"SecurityRecords__listRow--"+p[e.status],onClick:function(){return i("view",{uid_gen:e.uid_gen,uid_sec:e.uid_sec})},children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createComponentVNode)(2,c.Icon,{name:"user"})," ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.rank}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.fingerprint}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status})]},e.id)}))]})})]})},N=function(e,t){var n=(0,a.useLocalState)(t,"sortId","name"),r=n[0],i=n[1],l=(0,a.useLocalState)(t,"sortOrder",!0),d=l[0],u=l[1],s=e.id,m=e.children;return(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{color:r!==s&&"transparent",width:"100%",onClick:function(){r===s?u(!d):(i(s),u(!0))},children:[m,r===s&&(0,o.createComponentVNode)(2,c.Icon,{name:d?"sort-up":"sort-down",ml:"0.25rem;"})]})})},b=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data.isPrinting,u=(0,a.useLocalState)(t,"searchText",""),s=(u[0],u[1]);return(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,i.FlexItem,{children:[(0,o.createComponentVNode)(2,c.Button,{content:"New Record",icon:"plus",onClick:function(){return r("new_general")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:l?"spinner":"print",iconSpin:!!l,content:"Print Cell Log",ml:"0.25rem",onClick:function(){return(0,d.modalOpen)(t,"print_cell_log")}})]}),(0,o.createComponentVNode)(2,i.FlexItem,{grow:"1",ml:"0.5rem",children:(0,o.createComponentVNode)(2,c.Input,{placeholder:"Search by Name, ID, Assignment, Fingerprint, Status",width:"100%",onInput:function(e,t){return s(t)}})})]})},g=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.isPrinting,d=i.general,u=i.security;return d&&d.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"General Data",level:2,mt:"-6px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:l,icon:l?"spinner":"print",iconSpin:!!l,content:"Print Record",onClick:function(){return r("print_record")}}),(0,o.createComponentVNode)(2,c.Button.Confirm,{icon:"trash",tooltip:"WARNING: This will also delete the Security and Medical records associated to this crew member!",tooltipPosition:"bottom-left",content:"Delete Record",onClick:function(){return r("delete_general")}})],4),children:(0,o.createComponentVNode)(2,V)}),(0,o.createComponentVNode)(2,c.Section,{title:"Security Data",level:2,mt:"-12px",buttons:(0,o.createComponentVNode)(2,c.Button.Confirm,{icon:"trash",disabled:u.empty,content:"Delete Record",onClick:function(){return r("delete_security")}}),children:(0,o.createComponentVNode)(2,v)})],4):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"General records lost!"})},V=function(e,t){var n=(0,a.useBackend)(t).data.general;return n&&n.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{float:"left",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:n.fields.map((function(e,n){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.field,children:[(0,r.decodeHtmlEntities)(""+e.value),!!e.edit&&(0,o.createComponentVNode)(2,c.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return f(t,e)}})]},n)}))})}),(0,o.createComponentVNode)(2,c.Box,{position:"absolute",right:"0",textAlign:"right",children:!!n.has_photos&&n.photos.map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{display:"inline-block",textAlign:"center",color:"label",children:[(0,o.createVNode)(1,"img",null,null,1,{src:e,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,c.Box,{color:"bad",children:"General records lost!"})},v=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.security;return l&&l.fields?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.LabeledList,{children:l.fields.map((function(e,n){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.field,children:[(0,r.decodeHtmlEntities)(e.value),!!e.edit&&(0,o.createComponentVNode)(2,c.Button,{icon:"pen",ml:"0.5rem",mb:e.line_break?"1rem":"initial",onClick:function(){return f(t,e)}})]},n)}))}),(0,o.createComponentVNode)(2,c.Section,{title:"Comments/Log",level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"comment",content:"Add Entry",onClick:function(){return(0,d.modalOpen)(t,"comment_add")}}),children:0===l.comments.length?(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No comments found."}):l.comments.map((function(e,t){return(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{color:"label",display:"inline",children:e.header||"Auto-generated"}),(0,o.createVNode)(1,"br"),e.text||e,(0,o.createComponentVNode)(2,c.Button,{icon:"comment-slash",color:"bad",ml:"0.5rem",onClick:function(){return i("comment_delete",{id:t+1})}})]},t)}))})],4):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:["Security records lost!",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"pen",content:"Create New Record",mt:"0.5rem",onClick:function(){return i("new_security")}})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(77);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.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:"Location",children:d.status?d.status:(0,o.createComponentVNode)(2,a.NoticeBox,{color:"red",children:"Shuttle Missing"})}),!!d.shuttle&&(!!d.docking_ports_len&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Send to ",children:d.docking_ports.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-right",content:e.name,onClick:function(){return l("move",{move:e.id})}},e.name)}))})||(0,o.createFragment)([(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Status",color:"red",children:(0,o.createComponentVNode)(2,a.NoticeBox,{color:"red",children:"Shuttle Locked"})}),!!d.admin_controlled&&(0,o.createComponentVNode)(2,i.LabeledListItem,{label:"Authorization",children:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-circle",content:"Request Authorization",disabled:!d.status,onClick:function(){return l("request")}})})],0))]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulator=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.ShuttleManipulator=function(e,t){var n=(0,r.useLocalState)(t,"tabIndex",0),u=n[0],s=n[1];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===u,onClick:function(){return s(0)},icon:"info-circle",content:"Status"},"Status"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},icon:"file-import",content:"Templates"},"Templates"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},icon:"tools",content:"Modification"},"Modification")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,i);case 1:return(0,o.createComponentVNode)(2,l);case 2:return(0,o.createComponentVNode)(2,d);default:return"WE SHOULDN'T BE HERE!"}}(u)]})})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.shuttles;return(0,o.createComponentVNode)(2,a.Box,{children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:e.id}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Timer",children:e.timeleft}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Mode",children:e.mode}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shuttle Status",children:e.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Jump To",icon:"location-arrow",onClick:function(){return c("jump_to",{type:"mobile",id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Fast Travel",icon:"fast-forward",onClick:function(){return c("fast_travel",{id:e.id})}})]})]})},e.name)}))})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.templates_tabs,d=i.existing_shuttle,u=i.templates;return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===d.id,icon:"file",content:e,onClick:function(){return c("select_template_category",{cat:e})}},e)}))}),!!d&&u[d.id].templates.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.description&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:e.description}),e.admin_notes&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{content:"Load Template",icon:"download",onClick:function(){return c("select_template",{shuttle_id:e.shuttle_id})}})})]})},e.name)}))]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.existing_shuttle,d=i.selected;return(0,o.createComponentVNode)(2,a.Box,{children:[l?(0,o.createComponentVNode)(2,a.Section,{title:"Selected Shuttle: "+l.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.status}),l.timer&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timer",children:l.timeleft}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:(0,o.createComponentVNode)(2,a.Button,{content:"Jump To",icon:"location-arrow",onClick:function(){return c("jump_to",{type:"mobile",id:l.id})}})})]})}):(0,o.createComponentVNode)(2,a.Section,{title:"Selected Shuttle: None"}),d?(0,o.createComponentVNode)(2,a.Section,{title:"Selected Template: "+d.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[d.description&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),d.admin_notes&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Admin Notes",children:d.admin_notes}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Actions",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Preview",icon:"eye",onClick:function(){return c("preview",{shuttle_id:d.shuttle_id})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Load",icon:"download",onClick:function(){return c("load",{shuttle_id:d.shuttle_id})}})]})]})}):(0,o.createComponentVNode)(2,a.Section,{title:"Selected Template: None"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4),l=[["good","Alive"],["average","Critical"],["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,a.useBackend)(t),r=(n.act,n.data.hasOccupant?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,N));return(0,o.createComponentVNode)(2,i.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{className:"Layout__content--flexColumn",children:[r,(0,o.createComponentVNode)(2,h)]})})};var m=function(e,t){var n=(0,a.useBackend)(t);n.act,n.data.occupant;return(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,f),(0,o.createComponentVNode)(2,C)],4)},p=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=d.occupant,m=d.auto_eject_dead;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{color:"label",display:"inline",children:"Auto-eject if dead:\xa0"}),(0,o.createComponentVNode)(2,c.Button,{icon:m?"toggle-on":"toggle-off",selected:m,content:m?"On":"Off",onClick:function(){return i("auto_eject_dead_"+(m?"off":"on"))}}),(0,o.createComponentVNode)(2,c.Button,{icon:"user-slash",content:"Eject",onClick:function(){return i("ejectify")}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Name",children:u.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,c.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,c.LabeledList.Item,{label:"Status",color:l[u.stat][0],children:l[u.stat][1]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,c.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,c.LabeledList.Item,{label:"Blood Level",children:(0,o.createComponentVNode)(2,c.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,c.LabeledList.Item,{label:"Pulse",verticalAlign:"middle",children:[u.pulse," BPM"]})],4)]})})},f=function(e,t){var n=(0,a.useBackend)(t).data.occupant;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant Damage",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:d.map((function(e,t){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e[0],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]],0)},t)},t)}))})})},h=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.hasOccupant,d=i.isBeakerLoaded,u=i.beakerMaxSpace,s=i.beakerFreeSpace,m=i.dialysis&&s>0;return(0,o.createComponentVNode)(2,c.Section,{title:"Dialysis",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{disabled:!d||s<=0||!l,selected:m,icon:m?"toggle-on":"toggle-off",content:m?"Active":"Inactive",onClick:function(){return r("togglefilter")}}),(0,o.createComponentVNode)(2,c.Button,{disabled:!d,icon:"eject",content:"Eject",onClick:function(){return r("removebeaker")}})],4),children:d?(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Remaining Space",children:(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:u,value:s/u,ranges:{good:[.5,Infinity],average:[.25,.5],bad:[-Infinity,.25]},children:[s,"u"]})})}):(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"No beaker loaded."})})},C=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.occupant,d=i.chemicals,u=i.maxchem,s=i.amounts;return(0,o.createComponentVNode)(2,c.Section,{title:"Occupant Chemicals",flexGrow:"1",children:d.map((function(e,t){var n,a="";return e.overdosing?(a="bad",n=(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"exclamation-circle"}),"\xa0 Overdosing!"]})):e.od_warning&&(a="average",n=(0,o.createComponentVNode)(2,c.Box,{color:"average",children:[(0,o.createComponentVNode)(2,c.Icon,{name:"exclamation-triangle"}),"\xa0 Close to overdosing"]})),(0,o.createComponentVNode)(2,c.Box,{backgroundColor:"rgba(0, 0, 0, 0.33)",mb:"0.5rem",children:(0,o.createComponentVNode)(2,c.Section,{title:e.title,level:"3",mx:"0",lineHeight:"18px",buttons:n,children:(0,o.createComponentVNode)(2,c.Flex,{align:"flex-start",children:[(0,o.createComponentVNode)(2,c.ProgressBar,{min:"0",max:u,value:e.occ_amount/u,color:a,title:"Amount of chemicals currently inside the occupant / Total amount injectable by this machine",mr:"0.5rem",children:[e.pretty_amount,"/",u,"u"]}),s.map((function(t,n){return(0,o.createComponentVNode)(2,c.Button,{disabled:!e.injectable||e.occ_amount+t>u||2===l.stat,icon:"syringe",content:"Inject "+t+"u",title:"Inject "+t+"u of "+e.title+" into the occupant",mb:"0",height:"19px",onClick:function(){return r("chemical",{chemid:e.id,amount:t})}},n)}))]})})},t)}))})},N=function(e,t){return(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",flexGrow:"1",children:(0,o.createComponentVNode)(2,c.Flex,{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 occupant detected."]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SlotMachine=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SlotMachine=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data;return null===d.money?(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:"Could not scan your card or could not find account!"}),(0,o.createComponentVNode)(2,a.Box,{children:"Please wear or hold your ID and try again."})]})})}):(n=1===d.plays?d.plays+" player has tried their luck today!":d.plays+" players have tried their luck today!",(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{lineHeight:2,children:n}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Credits Remaining",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.money})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"50 credits to spin",children:(0,o.createComponentVNode)(2,a.Button,{icon:"coins",disabled:d.working,content:d.working?"Spinning...":"Spin",onClick:function(){return l("spin")}})})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,lineHeight:2,color:d.resultlvl,children:d.result})]})})}))}},function(e,t,n){"use strict";t.__esModule=!0,t.Smartfridge=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Smartfridge=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.secure,u=l.can_dry,s=l.drying,m=l.contents;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Secure",children:(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Secure Access: Please have your identification ready."})}),!!u&&(0,o.createComponentVNode)(2,a.Section,{title:"Drying rack",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,onClick:function(){return i("drying")}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Contents",children:[!m&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:" No products loaded. "}),!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"45%",children:e.display_name}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"25%",children:["(",e.quantity," in stock)"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"30%",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-down",tooltip:"Dispense one.",content:"1",onClick:function(){return i("vend",{index:e.vend,amount:1})}}),(0,o.createComponentVNode)(2,a.NumberInput,{width:"40px",minValue:0,value:0,maxValue:e.quantity,step:1,stepPixelSize:3,onChange:function(t,n){return i("vend",{index:e.vend,amount:n})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-down",content:"All",tooltip:"Dispense all. ",onClick:function(){return i("vend",{index:e.vend,amount:e.quantity})}})]})]},e)}))]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(1),a=n(2),c=n(95),i=n(4);t.Smes=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.capacityPercent,s=(d.capacity,d.charge),m=d.inputAttempt,p=d.inputting,f=d.inputLevel,h=d.inputLevelMax,C=d.inputAvailable,N=d.outputAttempt,b=d.outputting,g=d.outputLevel,V=d.outputLevelMax,v=d.outputUsed,y=(u>=100?"good":p&&"average")||"bad",_=(b?"good":s>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*u,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"sync-alt":"times",selected:m,onClick:function(){return l("tryinput")},children:m?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:y,children:(u>=100?"Fully Charged":p&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===f,onClick:function(){return l("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===f,onClick:function(){return l("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:f/1e3,fillValue:C/1e3,minValue:0,maxValue:h/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onChange:function(e,t){return l("input",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:f===h,onClick:function(){return l("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:f===h,onClick:function(){return l("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(C)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:N?"power-off":"times",selected:N,onClick:function(){return l("tryoutput")},children:N?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:_,children:b?"Sending":s>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===g,onClick:function(){return l("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===g,onClick:function(){return l("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:g/1e3,minValue:0,maxValue:V/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onChange:function(e,t){return l("output",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:g===V,onClick:function(){return l("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:g===V,onClick:function(){return l("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(v)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SolarControl=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SolarControl=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.generated,u=l.generated_ratio,s=l.tracking_state,m=l.tracking_rate,p=l.connected_panels,f=l.connected_tracker,h=l.cdir,C=l.direction,N=l.rotating_direction;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Scan for new hardware",onClick:function(){return i("refresh")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Solar tracker",color:f?"good":"bad",children:f?"OK":"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Solar panels",color:p>0?"good":"bad",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Panel orientation",children:[h,"\xb0 (",C,")"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracker rotation",children:[2===s&&(0,o.createComponentVNode)(2,a.Box,{children:" Automated "}),1===s&&(0,o.createComponentVNode)(2,a.Box,{children:[" ",m,"\xb0/h (",N,") "]}),0===s&&(0,o.createComponentVNode)(2,a.Box,{children:" Tracker offline "})]})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Panel orientation",children:[2!==s&&(0,o.createComponentVNode)(2,a.NumberInput,{unit:"\xb0",step:1,stepPixelSize:1,minValue:0,maxValue:359,value:h,onDrag:function(e,t){return i("cdir",{cdir:t})}}),2===s&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"19px",children:" Automated "})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracker status",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===s,onClick:function(){return i("track",{track:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===s,onClick:function(){return i("track",{track:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===s,disabled:!f,onClick:function(){return i("track",{track:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracker rotation",children:[1===s&&(0,o.createComponentVNode)(2,a.NumberInput,{unit:"\xb0/h",step:1,stepPixelSize:1,minValue:-7200,maxValue:7200,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("tdir",{tdir:t})}}),0===s&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"19px",children:" Tracker offline "}),2===s&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"19px",children:" Automated "})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{mb:.5,title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-circle-right",content:"Jump",onClick:function(){return i("jump",{ID:e.uids})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"chevron-circle-right",content:"Spawn",onClick:function(){return i("spawn",{ID:e.uids})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{style:{"white-space":"pre-wrap"},mb:1,fontSize:"16px",children:e.desc}),!!e.fluff&&(0,o.createComponentVNode)(2,a.Box,{style:{"white-space":"pre-wrap"},textColor:"#878787",fontSize:"14px",children:e.fluff}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{style:{"white-space":"pre-wrap"},mt:1,bold:!0,color:"red",fontSize:"18px",children:e.important_info})]},e.name)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorage=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.SuitStorage=function(e,t){var n=(0,r.useBackend)(t).data.uv;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{display:"flex",className:"Layout__content--flexColumn",children:[!!n&&(0,o.createComponentVNode)(2,a.Dimmer,{backgroundColor:"black",opacity:.85,children:(0,o.createComponentVNode)(2,a.Flex,{children:(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,textAlign:"center",mb:2,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"spinner",spin:1,size:4,mb:4}),(0,o.createVNode)(1,"br"),"Disinfection of contents in progress..."]})})}),(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,d)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.helmet,u=i.suit,s=i.magboots,m=i.mask,p=i.storage,f=i.open,h=i.locked;return(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",flexGrow:"1",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Start Disinfection Cycle",icon:"radiation",textAlign:"center",onClick:function(){return c("cook")}}),(0,o.createComponentVNode)(2,a.Button,{content:h?"Unlock":"Lock",icon:h?"unlock":"lock",disabled:f,onClick:function(){return c("toggle_lock")}})],4),children:f&&!h?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,l,{object:d,label:"Helmet",missingText:"helmet",eject:"dispense_helmet"}),(0,o.createComponentVNode)(2,l,{object:u,label:"Suit",missingText:"suit",eject:"dispense_suit"}),(0,o.createComponentVNode)(2,l,{object:s,label:"Boots",missingText:"boots",eject:"dispense_boots"}),(0,o.createComponentVNode)(2,l,{object:m,label:"Breathmask",missingText:"mask",eject:"dispense_mask"}),(0,o.createComponentVNode)(2,l,{object:p,label:"Storage",missingText:"storage item",eject:"dispense_storage"})]}):(0,o.createComponentVNode)(2,a.Flex,{height:"100%",children:(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:"1",textAlign:"center",align:"center",color:"label",children:[(0,o.createComponentVNode)(2,a.Icon,{name:h?"lock":"exclamation-circle",size:"5",mb:3}),(0,o.createVNode)(1,"br"),h?"The unit is locked.":"The unit is closed."]})})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=(n.data,e.object),l=e.label,d=e.missingText,u=e.eject;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:l,children:(0,o.createComponentVNode)(2,a.Box,{my:.5,children:i?(0,o.createComponentVNode)(2,a.Button,{my:-1,icon:"eject",content:i,onClick:function(){return c(u)}}):(0,o.createComponentVNode)(2,a.Box,{color:"silver",bold:!0,children:["No ",d," found."]})})})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.open,d=i.locked;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:l?"Close Suit Storage Unit":"Open Suit Storage Unit",icon:l?"times-circle":"expand",color:l?"red":"green",disabled:d,textAlign:"center",onClick:function(){return c("toggle_open")}})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SupermatterMonitor=void 0;var o=n(0),r=n(26),a=n(43),c=n(16),i=n(1),l=n(2),d=n(39),u=n(4);n(76);t.SupermatterMonitor=function(e,t){var n=(0,i.useBackend)(t);n.act;return 0===n.data.active?(0,o.createComponentVNode)(2,m):(0,o.createComponentVNode)(2,p)};var s=function(e){return Math.log2(16+Math.max(0,e))-4},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,u.Window,{children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.supermatter_id+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("view",{view:e.supermatter_id})}})})]},e.supermatter_id)}))})})})})},p=function(e,t){var n=(0,i.useBackend)(t),m=n.act,p=n.data,f=(p.active,p.SM_integrity),h=p.SM_power,C=p.SM_ambienttemp,N=p.SM_ambientpressure,b=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(p.gases||[]),g=Math.max.apply(Math,[1].concat(b.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,u.Window,{children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:f/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(h)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(C),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(C)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(N),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(N)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return m("back")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:b.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SyndicateComputerSimple=void 0;var o=n(0),r=n(1),a=n(2),c=(n(77),n(4));t.SyndicateComputerSimple=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:l.rows.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.title,buttons:(0,o.createComponentVNode)(2,a.Button,{content:e.buttontitle,disabled:e.buttondisabled,tooltip:e.buttontooltip,tooltipPosition:"left",onClick:function(){return i(e.buttonact)}}),children:[e.status,!!e.bullets&&(0,o.createComponentVNode)(2,a.Box,{children:e.bullets.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})]},e.title)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TEG=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=function(e){return e.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")};t.TEG=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data;return d.error?(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Error",children:[d.error,(0,o.createComponentVNode)(2,a.Button,{icon:"circle",content:"Recheck",onClick:function(){return l("check")}})]})})}):(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Cold Loop ("+d.cold_dir+")",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cold Inlet",children:[i(d.cold_inlet_temp)," K, ",i(d.cold_inlet_pressure)," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cold Outlet",children:[i(d.cold_outlet_temp)," K, ",i(d.cold_outlet_pressure)," kPa"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hot Loop ("+d.hot_dir+")",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hot Inlet",children:[i(d.hot_inlet_temp)," K, ",i(d.hot_inlet_pressure)," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hot Outlet",children:[i(d.hot_outlet_temp)," K, ",i(d.hot_outlet_pressure)," kPa"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Output",children:[i(d.output_power)," W",!!d.warning_switched&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Warning: Cold inlet temperature exceeds hot inlet temperature."}),!!d.warning_cold_pressure&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Warning: Cold circulator inlet pressure is under 1,000 kPa."}),!!d.warning_hot_pressure&&(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Warning: Hot circulator inlet pressure is under 1,000 kPa."})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TachyonArrayContent=t.TachyonArray=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TachyonArray=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.records,s=void 0===u?[]:u,m=d.explosion_target,p=d.toxins_tech,f=d.printing;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shift's Target",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Toxins Level",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Administration",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print All Logs",disabled:!s.length||f,align:"center",onClick:function(){return l("print_logs")}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",content:"Delete All Logs",disabled:!s.length,color:"bad",align:"center",onClick:function(){return l("delete_logs")}})]})]})}),s.length?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Records"})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.records,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Logged Explosions",children:(0,o.createComponentVNode)(2,a.Flex,{children:(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Time"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Epicenter"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Actual Size"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Theoretical Size"})]}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.logged_time}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.epicenter}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.actual_size_message}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.theoretical_size_message}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",content:"Delete",color:"bad",onClick:function(){return c("delete_record",{index:e.index})}})})]},e.index)}))]})})})})};t.TachyonArrayContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.Tank=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Tank=function(e,t){var n,i=(0,r.useBackend)(t),l=i.act,d=i.data;return n=d.has_mask?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.connected?"check":"times",content:d.connected?"Internals On":"Internals Off",selected:d.connected,onClick:function(){return l("internals")}})}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",color:"red",children:"No Mask Equipped"}),(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Tank Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.tankPressure/1013,ranges:{good:[.35,Infinity],average:[.15,.35],bad:[-Infinity,.15]},children:d.tankPressure+" kPa"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Pressure",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:d.ReleasePressure===d.minReleasePressure,tooltip:"Min",onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.releasePressure),width:"65px",unit:"kPa",minValue:d.minReleasePressure,maxValue:d.maxReleasePressure,onChange:function(e,t){return l("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:d.ReleasePressure===d.maxReleasePressure,tooltip:"Max",onClick:function(){return l("pressure",{pressure:"max"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"",disabled:d.ReleasePressure===d.defaultReleasePressure,tooltip:"Reset",onClick:function(){return l("pressure",{pressure:"reset"})}})]}),n]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TankDispenser=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TankDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.o_tanks,u=l.p_tanks;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Dispense Oxygen Tank ("+d+")",disabled:0===d,icon:"arrow-circle-down",onClick:function(){return i("oxygen")}})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Dispense Plasma Tank ("+u+")",disabled:0===u,icon:"arrow-circle-down",onClick:function(){return i("plasma")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TcommsCore=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TcommsCore=function(e,t){var n=(0,r.useBackend)(t),s=(n.act,n.data.ion),m=(0,r.useLocalState)(t,"tabIndex",0),p=m[0],f=m[1];return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[1===s&&(0,o.createComponentVNode)(2,i),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===p,onClick:function(){return f(0)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"wrench"}),"Configuration"]},"ConfigPage"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===p,onClick:function(){return f(1)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"link"}),"Device Linkage"]},"LinkagePage"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===p,onClick:function(){return f(2)},children:[(0,o.createComponentVNode)(2,a.Icon,{name:"user-times"}),"User Filtering"]},"FilterPage")]}),function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,l);case 1:return(0,o.createComponentVNode)(2,d);case 2:return(0,o.createComponentVNode)(2,u);default:return"SOMETHING WENT VERY WRONG PLEASE AHELP"}}(p)]})})};var i=function(){return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: An Ionospheric overload has occured. Please wait for the machine to reboot. This cannot be manually done."})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.active,d=i.sectors_available,u=i.nttc_toggle_jobs,s=i.nttc_toggle_job_color,m=i.nttc_toggle_name_color,p=i.nttc_toggle_command_bold,f=i.nttc_job_indicator_type,h=i.nttc_setting_language,C=i.network_id;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:"Machine Power",children:(0,o.createComponentVNode)(2,a.Button,{content:l?"On":"Off",selected:l,icon:"power-off",onClick:function(){return c("toggle_active")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sector Coverage",children:d})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Radio Configuration",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Job Announcements",children:(0,o.createComponentVNode)(2,a.Button,{content:u?"On":"Off",selected:u,icon:"user-tag",onClick:function(){return c("nttc_toggle_jobs")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Job Departmentalisation",children:(0,o.createComponentVNode)(2,a.Button,{content:s?"On":"Off",selected:s,icon:"clipboard-list",onClick:function(){return c("nttc_toggle_job_color")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name Departmentalisation",children:(0,o.createComponentVNode)(2,a.Button,{content:m?"On":"Off",selected:m,icon:"user-tag",onClick:function(){return c("nttc_toggle_name_color")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Command Amplification",children:(0,o.createComponentVNode)(2,a.Button,{content:p?"On":"Off",selected:p,icon:"volume-up",onClick:function(){return c("nttc_toggle_command_bold")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Advanced",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Job Announcement Format",children:(0,o.createComponentVNode)(2,a.Button,{content:f||"Unset",selected:f,icon:"pencil-alt",onClick:function(){return c("nttc_job_indicator_type")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Language Conversion",children:(0,o.createComponentVNode)(2,a.Button,{content:h||"Unset",selected:h,icon:"globe",onClick:function(){return c("nttc_setting_language")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Network ID",children:(0,o.createComponentVNode)(2,a.Button,{content:C||"Unset",selected:C,icon:"server",onClick:function(){return c("network_id")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Maintenance",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Import Configuration",icon:"file-import",onClick:function(){return c("import")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Export Configuration",icon:"file-export",onClick:function(){return c("export")}})]})],4)},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.link_password,d=i.relay_entries;return(0,o.createComponentVNode)(2,a.Section,{title:"Device Linkage",children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Linkage Password",children:(0,o.createComponentVNode)(2,a.Button,{content:l||"Unset",selected:l,icon:"lock",onClick:function(){return c("change_password")}})})}),(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network Address"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network ID"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Sector"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Status"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Unlink"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.addr}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.net_id}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.sector}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:1===e.status?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Online"}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Offline"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Unlink",icon:"unlink",onClick:function(){return c("unlink",{addr:e.addr})}})})]},e.addr)}))]})]})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.filtered_users;return(0,o.createComponentVNode)(2,a.Section,{title:"User Filtering",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Add User",icon:"user-plus",onClick:function(){return c("add_filter")}}),children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{style:{width:"90%"},children:"User"}),(0,o.createComponentVNode)(2,a.Table.Cell,{style:{width:"10%"},children:"Actions"})]}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Remove",icon:"user-times",onClick:function(){return c("remove_filter",{user:e})}})})]},e)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TcommsRelay=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TcommsRelay=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.linked,m=u.active,p=u.network_id;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Relay Configuration",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Power",children:(0,o.createComponentVNode)(2,a.Button,{content:m?"On":"Off",selected:m,icon:"power-off",onClick:function(){return d("toggle_active")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Network ID",children:(0,o.createComponentVNode)(2,a.Button,{content:p||"Unset",selected:p,icon:"server",onClick:function(){return d("network_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Link Status",children:1===s?(0,o.createComponentVNode)(2,a.Box,{color:"green",children:"Linked"}):(0,o.createComponentVNode)(2,a.Box,{color:"red",children:"Unlinked"})})]})}),1===s?(0,o.createComponentVNode)(2,i):(0,o.createComponentVNode)(2,l)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.linked_core_id,d=i.linked_core_addr,u=i.hidden_link;return(0,o.createComponentVNode)(2,a.Section,{title:"Link Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Linked Core ID",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Linked Core Address",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Hidden Link",children:(0,o.createComponentVNode)(2,a.Button,{content:u?"Yes":"No",icon:u?"eye-slash":"eye",selected:u,onClick:function(){return c("toggle_hidden_link")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unlink",children:(0,o.createComponentVNode)(2,a.Button,{content:"Unlink",icon:"unlink",color:"red",onClick:function(){return c("unlink")}})})]})})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.cores;return(0,o.createComponentVNode)(2,a.Section,{title:"Detected Cores",children:(0,o.createComponentVNode)(2,a.Table,{m:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network Address"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Network ID"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Sector"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Link"})]}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.addr}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.net_id}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.sector}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Link",icon:"link",onClick:function(){return c("link",{addr:e.addr})}})})]},e.addr)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Teleporter=void 0;var o=n(0),r=n(1),a=n(2),c=n(4),i=n(178);t.Teleporter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.targetsTeleport?d.targetsTeleport:{},s=d.calibrated,m=d.calibrating,p=d.powerstation,f=d.regime,h=d.teleporterhub,C=d.target,N=d.locked;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(!p||!h)&&(0,o.createComponentVNode)(2,a.Section,{title:"Error",children:[h,!p&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:" Powerstation not linked "}),p&&!h&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:" Teleporter hub not linked "})]}),p&&h&&(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Regime",children:[(0,o.createComponentVNode)(2,a.Button,{tooltip:"Teleport to another teleport hub. ",color:1===f?"good":null,onClick:function(){return l("setregime",{regime:1})},children:"Gate"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"One-way teleport. ",color:0===f?"good":null,onClick:function(){return l("setregime",{regime:0})},children:"Teleporter"}),(0,o.createComponentVNode)(2,a.Button,{tooltip:"Teleport to a location stored in a GPS device. ",color:2===f?"good":null,disabled:!N,onClick:function(){return l("setregime",{regime:2})},children:"GPS"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport target",children:[0===f&&(0,o.createComponentVNode)(2,a.Dropdown,{width:"220px",selected:C,options:Object.keys(u),color:"None"!==C?"default":"bad",onSelected:function(e){return l("settarget",{x:u[e].x,y:u[e].y,z:u[e].z})}}),1===f&&(0,o.createComponentVNode)(2,a.Dropdown,{width:"220px",selected:C,options:Object.keys(u),color:"None"!==C?"default":"bad",onSelected:function(e){return l("settarget",{x:u[e].x,y:u[e].y,z:u[e].z})}}),2===f&&(0,o.createComponentVNode)(2,a.Box,{children:C})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Calibration",children:["None"!==C&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,i.GridColumn,{size:"2",children:m&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"In Progress"})||s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Optimal"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Sub-Optimal"})}),(0,o.createComponentVNode)(2,i.GridColumn,{size:"3",children:(0,o.createComponentVNode)(2,a.Box,{"class":"ml-1",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",tooltip:"Calibrates the hub. Accidents may occur when the calibration is not optimal.",disabled:!(!s&&!m),onClick:function(){return l("calibrate")}})})})]}),"None"===C&&(0,o.createComponentVNode)(2,a.Box,{lineHeight:"21px",children:"No target set"})]})]})}),!!(N&&p&&h&&2===f)&&(0,o.createComponentVNode)(2,a.Section,{title:"GPS",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",justify:"space-around",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Upload GPS data",tooltip:"Loads the GPS data from the device.",icon:"upload",onClick:function(){return l("load")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Eject",tooltip:"Ejects the GPS device",icon:"eject",onClick:function(){return l("eject")}})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ThermoMachine=void 0;var o=n(0),r=n(16),a=n(1),c=n(2),i=n(4);t.ThermoMachine=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{title:"Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.temperature,format:function(e){return(0,r.toFixed)(e,2)}})," K"]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.pressure,format:function(e){return(0,r.toFixed)(e,2)}})," kPa"]})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Setting",children:(0,o.createComponentVNode)(2,c.Button,{icon:d.cooling?"temperature-low":"temperature-high",content:d.cooling?"Cooling":"Heating",selected:d.cooling,onClick:function(){return l("cooling")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,c.NumberInput,{animated:!0,value:Math.round(d.target),unit:"K",width:"62px",minValue:Math.round(d.min),maxValue:Math.round(d.max),step:5,stepPixelSize:3,onDrag:function(e,t){return l("target",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"fast-backward",disabled:d.target===d.min,title:"Minimum temperature",onClick:function(){return l("target",{target:d.min})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",disabled:d.target===d.initial,title:"Room Temperature",onClick:function(){return l("target",{target:d.initial})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"fast-forward",disabled:d.target===d.max,title:"Maximum Temperature",onClick:function(){return l("target",{target:d.max})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.TransferValve=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.TransferValve=function(e,t){var n=(0,r.useBackend)(t),i=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,c.Window,{children:(0,o.createComponentVNode)(2,c.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:"Valve Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"unlock":"lock",content:m?"Open":"Closed",disabled:!d||!u,onClick:function(){return i("toggle")}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Assembly",buttons:(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",width:"150px",icon:"cog",content:"Configure Assembly",disabled:!s,onClick:function(){return i("device")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:s?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:s,disabled:!s,onClick:function(){return i("remove_device")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Attach Assembly"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Attachment One",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:d,disabled:!d,onClick:function(){return i("tankone")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Attach Tank"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Attachment Two",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Attachment",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:u,disabled:!u,onClick:function(){return i("tanktwo")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Attach Tank"})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Uplink=void 0;var o=n(0),r=n(26),a=n(43),c=n(20),i=n(1),l=n(2),d=n(75),u=n(4),s=n(49),m=function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,p);case 1:return(0,o.createComponentVNode)(2,f);default:return"SOMETHING WENT VERY WRONG PLEASE AHELP"}};t.Uplink=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=(n.data,(0,i.useLocalState)(t,"tabIndex",0)),c=a[0],d=a[1];return(0,o.createComponentVNode)(2,u.Window,{theme:"syndicate",children:[(0,o.createComponentVNode)(2,s.ComplexModal),(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:0===c,onClick:function(){return d(0)},icon:"shopping-cart",children:"Purchase Equipment"},"PurchasePage"),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===c,onClick:function(){return d(1)},icon:"user",children:"Exploitable Information"},"ExploitableInfo"),(0,o.createComponentVNode)(2,l.Tabs.Tab,{onClick:function(){return r("lock")},icon:"lock",children:"Lock Uplink"},"LockUplink")]}),m(c)]})]})};var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,u=a.crystals,s=a.cats,m=(0,i.useLocalState)(t,"uplinkTab",s[0]),p=m[0],f=m[1];return(0,o.createComponentVNode)(2,l.Section,{title:"Current Balance: "+u+"TC",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{content:"Random Item",icon:"question",onClick:function(){return r("buyRandom")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Refund Currently Held Item",icon:"undo",onClick:function(){return r("refund")}})],4),children:(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,d.FlexItem,{children:(0,o.createComponentVNode)(2,l.Tabs,{vertical:!0,children:s.map((function(e){return(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:e===p,onClick:function(){return f(e)},children:e.cat},e)}))})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:p.items.map((function(e){return(0,o.createComponentVNode)(2,l.Section,{title:(0,c.decodeHtmlEntities)(e.name),buttons:(0,o.createComponentVNode)(2,l.Button,{content:"Buy ("+e.cost+"TC)"+(e.refundable?" [Refundable]":""),color:1===e.hijack_only&&"red",tooltip:1===e.hijack_only&&"Hijack Agents Only!",tooltipPosition:"left",onClick:function(){return r("buyItem",{item:e.obj_path})},disabled:e.cost>u}),children:(0,o.createComponentVNode)(2,l.Box,{italic:!0,children:(0,c.decodeHtmlEntities)(e.desc)})},(0,c.decodeHtmlEntities)(e.name))}))})]})})},f=function(e,t){var n=(0,i.useBackend)(t),u=(n.act,n.data.exploitable),s=(0,i.useLocalState)(t,"selectedRecord",u[0]),m=s[0],p=s[1],f=(0,i.useLocalState)(t,"searchText",""),h=f[0],C=f[1],N=function(e,t){void 0===t&&(t="");var n=(0,c.createSearch)(t,(function(e){return e.name}));return(0,a.flow)([(0,r.filter)((function(e){return null==e?void 0:e.name})),t&&(0,r.filter)(n),(0,r.sortBy)((function(e){return e.name}))])(e)}(u,h);return(0,o.createComponentVNode)(2,l.Section,{title:"Exploitable Records",children:(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,d.FlexItem,{basis:20,children:[(0,o.createComponentVNode)(2,l.Input,{fluid:!0,mb:1,placeholder:"Search Crew",onInput:function(e,t){return C(t)}}),(0,o.createComponentVNode)(2,l.Tabs,{vertical:!0,children:N.map((function(e){return(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:e===m,onClick:function(){return p(e)},children:e.name},e)}))})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Name: "+m.name,children:[(0,o.createComponentVNode)(2,l.Box,{children:["Age: ",m.age]}),(0,o.createComponentVNode)(2,l.Box,{children:["Fingerprint: ",m.fingerprint]}),(0,o.createComponentVNode)(2,l.Box,{children:["Rank: ",m.rank]}),(0,o.createComponentVNode)(2,l.Box,{children:["Sex: ",m.sex]}),(0,o.createComponentVNode)(2,l.Box,{children:["Species: ",m.species]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Vending=void 0;var o=n(0),r=(n(8),n(1)),a=n(2),c=n(4),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.product,d=e.productStock,u=e.productImage,s=i.chargesMoney,m=(i.user,i.userMoney),p=i.vend_ready,f=i.coin_name,h=(i.inserted_item_name,!s||0===l.price),C="ERROR!",N="";l.req_coin?(C="COIN",N="circle"):h?(C="FREE",N="arrow-circle-down"):(C=l.price,N="shopping-cart");var b=!p||!f&&l.req_coin||0===d||!h&&l.price>m;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+u,style:{"vertical-align":"middle",width:"32px",margin:"0px","margin-left":"0px"}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:l.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.Box,{color:(d<=0?"bad":d<=l.max_amount/2&&"average")||"good",children:[d," in stock"]})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,disabled:b,icon:N,content:C,textAlign:"left",onClick:function(){return c("vend",{inum:l.inum})}})})]})};t.Vending=function(e,t){var n,l=(0,r.useBackend)(t),d=l.act,u=l.data,s=u.user,m=u.guestNotice,p=u.userMoney,f=u.chargesMoney,h=u.product_records,C=void 0===h?[]:h,N=u.coin_records,b=void 0===N?[]:N,g=u.hidden_records,V=void 0===g?[]:g,v=u.stock,y=(u.vend_ready,u.coin_name),_=u.inserted_item_name,x=u.panel_open,k=u.speaker,L=u.imagelist;return n=[].concat(C,b),u.extended_inventory&&(n=[].concat(n,V)),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,c.Window,{title:"Vending Machine",resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!!f&&(0,o.createComponentVNode)(2,a.Section,{title:"User",children:s&&(0,o.createComponentVNode)(2,a.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,s.name,0),","," ",(0,o.createVNode)(1,"b",null,s.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[p,(0,o.createTextVNode)(" credits")],0),"."]})||(0,o.createComponentVNode)(2,a.Box,{color:"light-grey",children:m})}),!!y&&(0,o.createComponentVNode)(2,a.Section,{title:"Coin",buttons:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:"Remove Coin",onClick:function(){return d("remove_coin",{})}}),children:(0,o.createComponentVNode)(2,a.Box,{children:y})}),!!_&&(0,o.createComponentVNode)(2,a.Section,{title:"Item",buttons:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:"Eject Item",onClick:function(){return d("eject_item",{})}}),children:(0,o.createComponentVNode)(2,a.Box,{children:_})}),!!x&&(0,o.createComponentVNode)(2,a.Section,{title:"Maintenance",children:(0,o.createComponentVNode)(2,a.Button,{icon:k?"check":"volume-mute",selected:k,content:"Speaker",textAlign:"left",onClick:function(){return d("toggle_voice",{})}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Products",children:(0,o.createComponentVNode)(2,a.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,i,{product:e,productStock:v[e.name],productImage:L[e.path]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.VolumeMixer=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.VolumeMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.channels;return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"100%",overflow:"auto",children:l.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{fontSize:"1.25rem",color:"label",mt:t>0&&"0.5rem",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{width:"24px",color:"transparent",children:(0,o.createComponentVNode)(2,a.Icon,{name:"volume-off",size:"1.5",mt:"0.1rem",onClick:function(){return i("volume",{channel:e.num,volume:0})}})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:"1",mx:"1rem",children:(0,o.createComponentVNode)(2,a.Slider,{minValue:0,maxValue:100,stepPixelSize:3.13,value:e.volume,onChange:function(t,n){return i("volume",{channel:e.num,volume:n})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{width:"24px",color:"transparent",children:(0,o.createComponentVNode)(2,a.Icon,{name:"volume-up",size:"1.5",mt:"0.1rem",onClick:function(){return i("volume",{channel:e.num,volume:100})}})})})]})})],4,e.num)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Wires=void 0;var o=n(0),r=n(1),a=n(2),c=n(4);t.Wires=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.wires||[],u=l.status||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.color_name,labelColor:e.seen_color,color:e.seen_color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:e.cut?"Mend":"Cut",onClick:function(){return i("cut",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Pulse",onClick:function(){return i("pulse",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:e.attached?"Detach":"Attach",onClick:function(){return i("attach",{wire:e.color})}})],4),children:!!e.wire&&(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)("("),e.wire,(0,o.createTextVNode)(")")],0)},e.seen_color)}))})}),!!u.length&&(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"lightgray",mt:.1,children:e},e)}))})]})})}}]);
\ No newline at end of file
diff --git a/tgui/yarn.lock b/tgui/yarn.lock
index 1808ceea6a4..d345386c589 100644
--- a/tgui/yarn.lock
+++ b/tgui/yarn.lock
@@ -1240,10 +1240,10 @@ bluebird@^3.5.5:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.9"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
- integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9:
+ version "4.12.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
body-parser@1.19.0:
version "1.19.0"
@@ -1297,7 +1297,7 @@ braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-brorand@^1.0.1:
+brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
@@ -2198,17 +2198,17 @@ electron-to-chromium@^1.3.390:
integrity sha512-DbCBdwtARI0l3e3m6ZIxVaTNahb6dSsmGjuag/twiVcWuM4MSpL5IfsJsJSyqLqxosE/m0CXlZaBmxegQW/dAg==
elliptic@^6.0.0:
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
- integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
dependencies:
- bn.js "^4.4.0"
- brorand "^1.0.1"
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
hash.js "^1.0.0"
- hmac-drbg "^1.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
emoji-regex@^7.0.1:
version "7.0.3"
@@ -3020,7 +3020,7 @@ hex-color-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-hmac-drbg@^1.0.0:
+hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
@@ -3183,7 +3183,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -3730,9 +3730,9 @@ lodash.uniq@^4.5.0:
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5:
- version "4.17.19"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
- integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
loose-envify@^1.0.0, loose-envify@^1.4.0:
version "1.4.0"
@@ -3900,7 +3900,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
@@ -5529,9 +5529,9 @@ sprintf-js@~1.0.2:
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
ssri@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
- integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
dependencies:
figgy-pudding "^3.5.1"
@@ -6311,9 +6311,9 @@ xtend@^4.0.0, xtend@~4.0.1:
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
- integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
yallist@^3.0.2:
version "3.1.1"
diff --git a/tools/ci/check_grep.sh b/tools/ci/check_grep.sh
index 5b5c232c374..24f1952e2ba 100755
--- a/tools/ci/check_grep.sh
+++ b/tools/ci/check_grep.sh
@@ -14,6 +14,10 @@ if grep -P 'step_[xy]' _maps/**/*.dmm; then
echo "ERROR: step_x/step_y variables detected in maps, please remove them."
st=1
fi;
+if grep -P '^/[\w/]\S+\(.*(var/|, ?var/.*).*\)' code/**/*.dm; then
+ echo "changed files contains proc argument starting with 'var'"
+ st=1
+fi;
if grep -P '^/*var/' code/**/*.dm; then
echo "ERROR: Unmanaged global var use detected in code, please use the helpers."
st=1
diff --git a/tools/ci/dbconfig.txt b/tools/ci/dbconfig.txt
index 2e5f85ee767..fc7d80f39aa 100644
--- a/tools/ci/dbconfig.txt
+++ b/tools/ci/dbconfig.txt
@@ -2,12 +2,12 @@
# Dont use it ingame
# Remember to update this when you increase the SQL version! -aa
SQL_ENABLED
-DB_VERSION 22
+DB_VERSION 23
ADDRESS 127.0.0.1
PORT 3306
FEEDBACK_DATABASE feedback
FEEDBACK_TABLEPREFIX
-FEEDBACK_LOGIN ci_sql
-FEEDBACK_PASSWORD not_a_strong_password
+FEEDBACK_LOGIN root
+FEEDBACK_PASSWORD root
ASYNC_QUERY_TIMEOUT 10
RUST_SQL_THREAD_LIMIT 50
diff --git a/tools/ci/generate_sql_scripts.py b/tools/ci/generate_sql_scripts.py
index 6091148909e..5c7cf97230b 100644
--- a/tools/ci/generate_sql_scripts.py
+++ b/tools/ci/generate_sql_scripts.py
@@ -45,7 +45,7 @@ scriptLines = [
"#!/bin/bash\n",
"set -euo pipefail\n"
"python3 -m pip install setuptools\n" # Yes I know you can PIP multiple things but they need to happen in this order
- "python3 -m pip install mysql-connector\n"
+ "python3 -m pip install mysql-connector-python\n"
"mysql -u root -proot < tools/ci/sql_v0.sql\n"
]
@@ -79,7 +79,6 @@ scriptLines.append("mysql -u root -proot -e 'DROP DATABASE feedback;'\n")
scriptLines.append("mysql -u root -proot < SQL/paradise_schema_prefixed.sql\n")
scriptLines.append("mysql -u root -proot -e 'DROP DATABASE feedback;'\n")
scriptLines.append("mysql -u root -proot < SQL/paradise_schema.sql\n")
-scriptLines.append("mysql -u root -proot -e 'GRANT ALL on feedback.* TO `ci_sql`@`127.0.0.1` IDENTIFIED BY \"not_a_strong_password\";'\n")
outputScript = open("tools/ci/validate_sql.sh", "w+")
outputScript.writelines(scriptLines)
diff --git a/tools/mapmerge2/requirements.txt b/tools/mapmerge2/requirements.txt
index 65d1a5e0b17..7a6c3f1c94f 100644
--- a/tools/mapmerge2/requirements.txt
+++ b/tools/mapmerge2/requirements.txt
@@ -1,3 +1,3 @@
pygit2==1.0.1
bidict==0.13.1
-Pillow==7.1.1
+Pillow==8.1.1
diff --git a/tools/send2server.py b/tools/send2server.py
index fd255a3cfb5..f78b8949f2d 100644
--- a/tools/send2server.py
+++ b/tools/send2server.py
@@ -1,3 +1,6 @@
+#
+# This is now deprecated as of 2021-05-15
+#
# Script to send world/Topic announcements to a server via automated tooling
# Author: AffectedArc07
# Takes a message as command line argument
|