diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql
index 19521d79686..ed4fb787b8d 100644
--- a/SQL/paradise_schema.sql
+++ b/SQL/paradise_schema.sql
@@ -266,8 +266,9 @@ CREATE TABLE `player` (
`exp` mediumtext,
`clientfps` smallint(4) DEFAULT '0',
`atklog` smallint(4) DEFAULT '0',
- `fuid` BIGINT(20) NULL DEFAULT NULL,
- `fupdate` SMALLINT(4) NULL DEFAULT 0,
+ `fuid` bigint(20) NULL DEFAULT NULL,
+ `fupdate` smallint(4) NULL DEFAULT '0',
+ `afk_watch` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=32446 DEFAULT CHARSET=latin1;
@@ -531,11 +532,11 @@ DROP TABLE IF EXISTS `ipintel`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ipintel` (
-`ip` INT UNSIGNED NOT NULL ,
-`date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
-`intel` REAL NOT NULL DEFAULT '0',
-PRIMARY KEY ( `ip` )
-) ENGINE = INNODB;
+ `ip` int UNSIGNED NOT NULL,
+ `date` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
+ `intel` real NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -545,7 +546,21 @@ DROP TABLE IF EXISTS `vpn_whitelist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `vpn_whitelist` (
- `ckey` VARCHAR(32) NOT NULL,
- `reason` text
+ `ckey` varchar(32) NOT NULL,
+ `reason` text,
PRIMARY KEY (`ckey`)
-) ENGINE=INNODB;
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `oauth_tokens`
+--
+DROP TABLE IF EXISTS `oauth_tokens`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oauth_tokens` (
+ `ckey` varchar(32) NOT NULL,
+ `token` varchar(32) NOT NULL,
+ PRIMARY KEY (`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql
index ff4026c7d00..b0f7bbc5c82 100644
--- a/SQL/paradise_schema_prefixed.sql
+++ b/SQL/paradise_schema_prefixed.sql
@@ -265,8 +265,9 @@ CREATE TABLE `SS13_player` (
`exp` mediumtext,
`clientfps` smallint(4) DEFAULT '0',
`atklog` smallint(4) DEFAULT '0',
- `fuid` BIGINT(20) NULL DEFAULT NULL,
- `fupdate` SMALLINT(4) NULL DEFAULT 0,
+ `fuid` bigint(20) NULL DEFAULT NULL,
+ `fupdate` smallint(4) NULL DEFAULT '0',
+ `afk_watch` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
) ENGINE=InnoDB AUTO_INCREMENT=32446 DEFAULT CHARSET=latin1;
@@ -530,11 +531,11 @@ DROP TABLE IF EXISTS `SS13_ipintel`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `SS13_ipintel` (
-`ip` INT UNSIGNED NOT NULL ,
-`date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
-`intel` REAL NOT NULL DEFAULT '0',
-PRIMARY KEY ( `ip` )
-) ENGINE = INNODB;
+ `ip` int UNSIGNED NOT NULL,
+ `date` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
+ `intel` real NOT NULL DEFAULT '0',
+ PRIMARY key (`ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -544,7 +545,21 @@ DROP TABLE IF EXISTS `SS13_vpn_whitelist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `SS13_vpn_whitelist` (
- `ckey` VARCHAR(32) NOT NULL,
+ `ckey` varchar(32) NOT NULL,
`reason` text,
PRIMARY KEY (`ckey`)
-) ENGINE=INNODB;
\ No newline at end of file
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SS13_oauth_tokens`
+--
+DROP TABLE IF EXISTS `SS13_oauth_tokens`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SS13_oauth_tokens` (
+ `ckey` varchar(32) NOT NULL,
+ `token` varchar(32) NOT NULL,
+ PRIMARY KEY (`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
diff --git a/SQL/updates/5-6.sql b/SQL/updates/5-6.sql
index 91bf4328a2a..ac3be8f8ef8 100644
--- a/SQL/updates/5-6.sql
+++ b/SQL/updates/5-6.sql
@@ -1,34 +1,37 @@
#Updating the SQL from version 5 to version 6. -Kyep
#Make a table to track the results of VPN/proxy lookups for IPs (IPINTEL, TG PORT)
-CREATE TABLE `ipintel` (
-`ip` INT UNSIGNED NOT NULL ,
-`date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
-`intel` REAL NOT NULL DEFAULT '0',
-PRIMARY KEY ( `ip` )
-) ENGINE = INNODB;
+DROP TABLE IF EXISTS `ipintel`;
+CREATE TABLE `ipintel` (
+ `ip` int UNSIGNED NOT NULL,
+ `date` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
+ `intel` real NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#Make a table to track which ckeys are whitelisted for use of VPNs (IPINTEL, CUSTOM)
+DROP TABLE IF EXISTS `vpn_whitelist`;
CREATE TABLE `vpn_whitelist` (
- `ckey` VARCHAR(32) NOT NULL,
+ `ckey` varchar(32) NOT NULL,
`reason` text,
PRIMARY KEY (`ckey`)
-) ENGINE=INNODB;
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-# Add fuid (forum userid) which enables quick lookup of which ckey is associated with a specific forum account. (FORUM LINK)
-ALTER TABLE `player` ADD `fuid` BIGINT(20) NULL DEFAULT NULL;
+#Add fuid (forum userid) which enables quick lookup of which ckey is associated with a specific forum account. (FORUM LINK)
+ALTER TABLE `player` ADD `fuid` bigint(20) NULL DEFAULT NULL;
ALTER TABLE `player` ADD INDEX(`fuid`);
-# Add fupdate (forum update required) which flags specific ckeys as having been banned/unbanned, which requires an update of their forum/etc permissions (FORUM LINK)
-ALTER TABLE `player` ADD `fupdate` SMALLINT(4) NULL DEFAULT 0;
+#Add fupdate (forum update required) which flags specific ckeys as having been banned/unbanned, which requires an update of their forum/etc permissions (FORUM LINK)
+ALTER TABLE `player` ADD `fupdate` smallint(4) NULL DEFAULT 0;
ALTER TABLE `player` ADD INDEX(`fupdate`);
#Make a table to track oauth tokens for linking forum/web accounts (FORUM LINK)
+DROP TABLE IF EXISTS `oauth_tokens`;
CREATE TABLE `oauth_tokens` (
- `ckey` VARCHAR(32) NOT NULL,
- `token` VARCHAR(32) NOT NULL,
+ `ckey` varchar(32) NOT NULL,
+ `token` varchar(32) NOT NULL,
PRIMARY KEY (`token`)
-) ENGINE=INNODB;
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#Drop the old 'discord' table that is not used anymore
DROP TABLE `discord`;
diff --git a/SQL/updates/7-8.sql b/SQL/updates/7-8.sql
new file mode 100644
index 00000000000..16bc90b7a50
--- /dev/null
+++ b/SQL/updates/7-8.sql
@@ -0,0 +1,2 @@
+# Add afk_watch which gives users the option to make use of the AFK watcher subsystem
+ALTER TABLE `player` ADD `afk_watch` tinyint(1) NOT NULL DEFAULT '0';
diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index bac17c5a2ad..447889d17a1 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -208,7 +208,7 @@
/turf/simulated/shuttle/plating,
/area/shuttle/abandoned)
"aaC" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -383,10 +383,10 @@
},
/area/shuttle/abandoned)
"abb" = (
-/obj/structure/chair{
+/obj/effect/decal/remains/human,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/effect/decal/remains/human,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -598,13 +598,13 @@
/area/shuttle/abandoned)
"abx" = (
/obj/item/shard,
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/abandoned)
"aby" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -667,8 +667,8 @@
icon_state = "1-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"abH" = (
/obj/structure/computerframe{
@@ -728,7 +728,7 @@
},
/area/shuttle/syndicate)
"abO" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -859,8 +859,8 @@
icon_state = "2-4";
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"acf" = (
/obj/structure/cable{
@@ -880,29 +880,29 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"acg" = (
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"ach" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"aci" = (
/obj/structure/cable{
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"acj" = (
/obj/structure/cable{
@@ -921,8 +921,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"ack" = (
/obj/structure/spacepoddoor,
@@ -967,8 +967,8 @@
},
/area/maintenance/auxsolarstarboard)
"acp" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"acq" = (
/obj/structure/table,
@@ -986,7 +986,7 @@
},
/area/shuttle/abandoned)
"acs" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -994,7 +994,7 @@
},
/area/shuttle/syndicate)
"act" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -1081,20 +1081,20 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"acF" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"acG" = (
/obj/structure/cable{
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"acH" = (
/obj/structure/chair/stool,
@@ -1502,9 +1502,6 @@
},
/area/shuttle/pod_1)
"adx" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -1515,6 +1512,9 @@
dir = 4;
icon_state = "tube1"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_1)
"ady" = (
@@ -1524,9 +1524,6 @@
},
/area/shuttle/pod_2)
"adz" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -1537,6 +1534,9 @@
dir = 4;
icon_state = "tube1"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_2)
"adA" = (
@@ -1663,25 +1663,25 @@
/turf/simulated/wall/r_wall,
/area/hallway/secondary/entry)
"adO" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
dir = 4;
name = "station intercom (General)";
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_1)
"adP" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
dir = 4;
name = "station intercom (General)";
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_2)
"adQ" = (
@@ -1775,8 +1775,8 @@
pixel_y = -25;
req_access_txt = "10;13"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"aed" = (
/obj/docking_port/mobile/pod{
@@ -3034,7 +3034,7 @@
},
/area/shuttle/administration)
"agw" = (
-/obj/structure/chair/comfy/black,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -3382,13 +3382,13 @@
},
/area/shuttle/administration)
"ahn" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/window/plasmareinforced{
color = "#d70000";
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -3615,7 +3615,7 @@
/turf/simulated/floor/engine/vacuum,
/area/engine/mechanic_workshop/hanger)
"ahN" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -3737,7 +3737,7 @@
},
/area/security/podbay)
"aic" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -3745,10 +3745,10 @@
},
/area/shuttle/administration)
"aid" = (
-/obj/structure/chair{
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -3798,7 +3798,7 @@
icon_state = "tube1";
dir = 4
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"aik" = (
@@ -3810,21 +3810,21 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry)
"ail" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/effect/landmark{
name = "JoinLate"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"aim" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/landmark{
name = "JoinLate"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"ain" = (
@@ -4073,13 +4073,13 @@
/turf/simulated/shuttle/plating,
/area/shuttle/transport)
"aiR" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"aiS" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -4094,21 +4094,21 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry)
"aiU" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/effect/landmark{
name = "HONKsquad"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"aiV" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/landmark{
name = "HONKsquad"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"aiW" = (
@@ -4343,7 +4343,7 @@
},
/area/shuttle/specops)
"ajs" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -4354,7 +4354,7 @@
dir = 2;
network = list("ERT","CentComm")
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -4407,7 +4407,7 @@
icon_state = "tube1";
dir = 8
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -4418,7 +4418,7 @@
icon_state = "tube1";
dir = 4
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -4601,14 +4601,14 @@
/turf/simulated/shuttle/plating/vox,
/area/shuttle/vox)
"ajW" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
icon_state = "tube1";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -4866,7 +4866,7 @@
},
/area/shuttle/specops)
"aku" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -5036,11 +5036,13 @@
/turf/simulated/shuttle/plating/vox,
/area/shuttle/vox)
"akN" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"akO" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4/vox,
@@ -5380,7 +5382,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"alw" = (
-/obj/structure/chair/office/dark,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"alx" = (
@@ -5692,9 +5694,6 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint)
-"ami" = (
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"amj" = (
/obj/machinery/door/poddoor/shutters{
density = 0;
@@ -8074,7 +8073,7 @@
/area/shuttle/vox)
"arn" = (
/obj/item/stack/spacecash/c50,
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor4/vox,
@@ -8544,10 +8543,10 @@
"asf" = (
/obj/item/stack/spacecash/c200,
/obj/item/stack/spacecash/c50,
-/obj/structure/chair{
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"asg" = (
@@ -8927,8 +8926,8 @@
icon_state = "1-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"asV" = (
/obj/structure/cable{
@@ -8943,8 +8942,8 @@
icon_state = "1-4";
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"asW" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -9001,21 +9000,21 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"atb" = (
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"atc" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"atd" = (
/turf/simulated/wall/r_wall,
@@ -9354,8 +9353,8 @@
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"atL" = (
/obj/structure/cable{
@@ -9374,8 +9373,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"atM" = (
/obj/structure/cable{
@@ -9495,8 +9494,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"atV" = (
/obj/structure/disposalpipe/segment{
@@ -9546,8 +9545,8 @@
},
/area/maintenance/auxsolarport)
"atZ" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"aua" = (
/obj/effect/decal/cleanable/dirt,
@@ -12858,8 +12857,8 @@
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 6
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aAf" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -12907,8 +12906,8 @@
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aAj" = (
/obj/structure/cable{
@@ -13822,8 +13821,8 @@
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 5
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aBW" = (
/obj/structure/cable{
@@ -14708,8 +14707,8 @@
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 10
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aDD" = (
/obj/structure/cable{
@@ -14982,23 +14981,23 @@
/obj/machinery/atmospherics/unary/outlet_injector/on{
dir = 8
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/engine/controlroom)
"aEa" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
dir = 9
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aEb" = (
/obj/structure/cable{
icon_state = "0-2";
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"aEc" = (
/obj/structure/cable{
@@ -15006,8 +15005,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"aEd" = (
/obj/machinery/atmospherics/trinary/filter{
@@ -15772,8 +15771,8 @@
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 10
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aFA" = (
/turf/simulated/wall,
@@ -18103,13 +18102,13 @@
/area/security/prison)
"aJy" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space)
"aJz" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aJA" = (
/obj/structure/cable{
@@ -19474,8 +19473,8 @@
d2 = 4;
icon_state = "0-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarport)
"aLR" = (
/obj/structure/chair/stool,
@@ -19494,8 +19493,8 @@
/area/crew_quarters/bar/atrium)
"aLT" = (
/obj/item/wrench,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aLU" = (
/turf/simulated/wall,
@@ -21046,8 +21045,8 @@
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 5
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aOV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -21060,8 +21059,8 @@
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aOX" = (
/obj/effect/decal/cleanable/dirt,
@@ -25713,8 +25712,8 @@
/obj/structure/disposaloutlet{
dir = 8
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/incinerator)
"aWS" = (
/obj/structure/table/reinforced,
@@ -27674,8 +27673,8 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"aZZ" = (
/obj/item/radio/intercom{
@@ -27696,8 +27695,8 @@
dir = 8;
icon_state = "pipe-c"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bab" = (
/obj/effect/spawner/window/reinforced,
@@ -28072,8 +28071,8 @@
dir = 4;
level = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/atmos)
"baO" = (
/obj/machinery/access_button{
@@ -28605,8 +28604,8 @@
dir = 4;
level = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/atmos)
"bbG" = (
/turf/simulated/floor/plating,
@@ -28632,21 +28631,18 @@
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"bbJ" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/item/radio/intercom{
broadcasting = 0;
listening = 1;
name = "station intercom (General)";
pixel_y = 25
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"bbK" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -28654,6 +28650,9 @@
pixel_y = 32
},
/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"bbL" = (
@@ -30759,7 +30758,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/mining)
"bfQ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -33621,8 +33620,8 @@
},
/area/atmos)
"bkQ" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/atmos)
"bkR" = (
/obj/structure/reagent_dispensers/fueltank,
@@ -37929,7 +37928,7 @@
},
/area/shuttle/siberia)
"bsy" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -39468,8 +39467,8 @@
dir = 4;
level = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/atmos)
"buY" = (
/obj/structure/cable{
@@ -41012,15 +41011,12 @@
},
/area/security/nuke_storage)
"bxH" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
/area/shuttle/siberia)
"bxI" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/flasher{
id = "gulagshuttleflasher";
pixel_x = 25
@@ -41029,6 +41025,9 @@
dir = 4;
icon_state = "tube1"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/siberia)
"bxJ" = (
@@ -52886,8 +52885,8 @@
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 9
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bRn" = (
/obj/structure/rack,
@@ -53123,8 +53122,8 @@
dir = 1;
layer = 2.9
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bRH" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -54793,8 +54792,8 @@
pixel_y = -20;
req_access_txt = "32"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bUc" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -55187,8 +55186,8 @@
dir = 4;
level = 1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bUK" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -55445,8 +55444,8 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bVg" = (
/obj/structure/cable{
@@ -55662,8 +55661,8 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bVt" = (
/obj/structure/sign/vacuum{
@@ -57177,8 +57176,8 @@
pixel_y = 20;
req_access_txt = "10;13"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bXG" = (
/obj/structure/cable{
@@ -57187,8 +57186,8 @@
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bXH" = (
/obj/item/twohanded/required/kirbyplants,
@@ -57380,8 +57379,8 @@
tag = ""
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bYb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -57463,8 +57462,8 @@
dir = 5;
level = 1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bYm" = (
/obj/structure/cable{
@@ -57477,8 +57476,8 @@
dir = 4;
level = 1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bYn" = (
/obj/structure/sign/directions/evac{
@@ -57686,8 +57685,8 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bYK" = (
/obj/effect/spawner/window/reinforced,
@@ -57907,8 +57906,8 @@
/obj/structure/window/reinforced{
dir = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bZg" = (
/obj/structure/table/reinforced,
@@ -58082,8 +58081,8 @@
dir = 4;
level = 1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bZx" = (
/obj/structure/disposalpipe/segment{
@@ -62768,8 +62767,8 @@
dir = 4;
level = 1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"chx" = (
/obj/structure/cable{
@@ -63819,8 +63818,8 @@
tag = "icon-D-SE";
icon_state = "D-SE"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cjm" = (
/obj/structure/closet/crate,
@@ -66332,8 +66331,8 @@
tag = "icon-E-SW-NW";
icon_state = "E-SW-NW"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cnI" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -66555,8 +66554,8 @@
/obj/structure/transit_tube{
icon_state = "E-W-Pass"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"coj" = (
/obj/structure/cable/yellow{
@@ -69022,8 +69021,8 @@
level = 1
},
/obj/structure/transit_tube,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"css" = (
/obj/structure/table/reinforced,
@@ -69083,8 +69082,8 @@
tag = "icon-W-SE";
icon_state = "W-SE"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"csz" = (
/obj/structure/closet/crate{
@@ -69730,8 +69729,8 @@
/obj/structure/window/reinforced{
dir = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"ctJ" = (
/obj/structure/transit_tube{
@@ -69741,8 +69740,8 @@
/obj/structure/window/reinforced{
dir = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"ctK" = (
/obj/structure/table/wood,
@@ -69890,8 +69889,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"ctZ" = (
/obj/effect/spawner/window/reinforced,
@@ -72989,8 +72988,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"czx" = (
/obj/structure/cable{
@@ -74431,8 +74430,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cBV" = (
/obj/structure/chair/office/dark,
@@ -77524,8 +77523,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cHu" = (
/obj/effect/decal/cleanable/cobweb,
@@ -78371,8 +78370,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cJf" = (
/obj/structure/sign/directions/evac{
@@ -78818,8 +78817,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cKk" = (
/obj/structure/cable{
@@ -78833,8 +78832,8 @@
/area/toxins/xenobiology)
"cKl" = (
/obj/structure/window/reinforced,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cKm" = (
/obj/structure/cable{
@@ -80269,8 +80268,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cNo" = (
/obj/structure/cable{
@@ -80738,8 +80737,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cOa" = (
/obj/structure/table/reinforced,
@@ -80914,8 +80913,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cOn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -81673,8 +81672,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cPL" = (
/obj/structure/disposalpipe/segment{
@@ -81841,8 +81840,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cPY" = (
/obj/machinery/access_button{
@@ -81854,8 +81853,8 @@
pixel_y = 24;
req_access_txt = "0"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cPZ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -107526,8 +107525,8 @@
pixel_y = 25;
req_access_txt = "13"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"dKy" = (
/obj/structure/grille,
@@ -109774,17 +109773,17 @@
},
/area/hallway/secondary/exit)
"dOy" = (
-/obj/structure/chair{
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"dOz" = (
-/obj/structure/chair{
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"dOA" = (
@@ -110232,8 +110231,8 @@
icon_state = "0-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"dPo" = (
/obj/structure/bed/roller,
@@ -110919,8 +110918,8 @@
},
/area/medical/virology)
"dQB" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dQC" = (
/obj/machinery/field/generator{
@@ -112646,7 +112645,7 @@
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"dTN" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"dTO" = (
@@ -112669,16 +112668,16 @@
},
/area/shuttle/escape)
"dTR" = (
-/obj/structure/chair,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"dTS" = (
-/obj/structure/chair,
/obj/machinery/status_display{
pixel_y = 32
},
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"dTT" = (
@@ -113013,7 +113012,7 @@
/turf/simulated/floor/plating,
/area/security/checkpoint)
"dUw" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor4,
@@ -113429,7 +113428,7 @@
/turf/simulated/floor/plating,
/area/security/checkpoint)
"dVf" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor4,
@@ -113515,16 +113514,16 @@
/turf/simulated/floor/plating,
/area/security/checkpoint)
"dVr" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"dVs" = (
-/obj/structure/chair{
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"dVt" = (
@@ -113661,7 +113660,7 @@
},
/area/shuttle/escape)
"dVJ" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -113680,7 +113679,7 @@
},
/area/shuttle/escape)
"dVL" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -113706,7 +113705,7 @@
},
/area/shuttle/escape)
"dVO" = (
-/obj/structure/chair/office/dark,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -114147,14 +114146,14 @@
},
/area/security/checkpoint)
"dWB" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light{
icon_state = "tube1";
dir = 4
},
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"dWC" = (
@@ -114990,8 +114989,8 @@
pixel_y = 24;
req_access_txt = "0"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"dXY" = (
/obj/structure/table/reinforced,
@@ -115328,8 +115327,8 @@
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYJ" = (
/obj/structure/cable{
@@ -115337,8 +115336,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYK" = (
/obj/structure/cable{
@@ -115355,8 +115354,8 @@
pixel_y = 25;
req_access_txt = "13"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYL" = (
/obj/structure/cable{
@@ -115371,8 +115370,8 @@
icon_state = "1-4";
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYM" = (
/obj/structure/cable{
@@ -115392,16 +115391,16 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYN" = (
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYO" = (
/obj/structure/cable{
@@ -115420,8 +115419,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYP" = (
/obj/structure/cable{
@@ -115435,8 +115434,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYQ" = (
/obj/machinery/access_button{
@@ -115448,8 +115447,8 @@
pixel_y = 24;
req_access_txt = "10;13"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"dYR" = (
/obj/structure/cable{
@@ -115457,8 +115456,8 @@
icon_state = "0-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYS" = (
/obj/structure/cable{
@@ -115467,8 +115466,8 @@
icon_state = "1-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/portsolar)
"dYT" = (
/turf/simulated/floor/carpet,
@@ -115565,20 +115564,20 @@
},
/area/shuttle/syndicate_elite)
"dZc" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
icon_state = "tube1";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/syndicate_elite)
"dZd" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -115586,7 +115585,7 @@
},
/area/shuttle/syndicate_elite)
"dZe" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -115655,7 +115654,7 @@
/turf/simulated/shuttle/plating,
/area/shuttle/syndicate_elite)
"dZj" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -115782,15 +115781,15 @@
},
/area/shuttle/syndicate_sit)
"dZA" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
icon_state = "tube1";
dir = 8
},
/obj/structure/window/reinforced,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -115812,7 +115811,7 @@
},
/area/shuttle/syndicate_sit)
"dZD" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -115820,7 +115819,7 @@
},
/area/shuttle/syndicate_sit)
"dZE" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -115833,7 +115832,7 @@
icon_state = "tube1";
dir = 8
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -115891,7 +115890,7 @@
},
/area/shuttle/syndicate_sit)
"dZI" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -116010,6 +116009,12 @@
},
/turf/space,
/area/space)
+"udT" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor4/vox,
+/area/shuttle/vox)
(1,1,1) = {"
aaa
@@ -129823,7 +129828,7 @@ dyn
dyn
abj
abj
-ami
+acF
aaa
aaa
aaa
@@ -130337,7 +130342,7 @@ dyn
dyn
abj
abj
-ami
+acF
aaa
aaa
aaa
@@ -175945,8 +175950,8 @@ aaa
aaa
ajm
akm
-akN
-akN
+udT
+udT
akm
alU
ajO
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 63c912e11d7..8bf89da81b2 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -148,7 +148,7 @@
},
/area/shuttle/syndicate)
"aaq" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -234,7 +234,7 @@
},
/area/shuttle/syndicate)
"aaB" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -242,7 +242,7 @@
},
/area/shuttle/syndicate)
"aaC" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -765,8 +765,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abB" = (
/turf/simulated/wall/r_wall,
@@ -868,8 +868,8 @@
/area/shuttle/syndicate)
"abL" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abM" = (
/obj/structure/cable{
@@ -882,8 +882,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abN" = (
/obj/structure/table,
@@ -958,28 +958,28 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abV" = (
/obj/structure/cable{
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abW" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abX" = (
/obj/structure/cable{
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abY" = (
/obj/structure/cable{
@@ -997,8 +997,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"abZ" = (
/obj/structure/cable{
@@ -1011,8 +1011,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"aca" = (
/obj/structure/cable/yellow{
@@ -1055,8 +1055,8 @@
/area/solar/auxport)
"acf" = (
/obj/item/stack/cable_coil,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"acg" = (
/obj/effect/spawner/window/reinforced,
@@ -1269,8 +1269,8 @@
name = "xeno_spawn";
pixel_x = -1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"acA" = (
/turf/simulated/floor/plasteel,
@@ -1333,9 +1333,6 @@
},
/area/shuttle/pod_2)
"acI" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -1344,6 +1341,9 @@
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_2)
"acJ" = (
@@ -1394,12 +1394,12 @@
/turf/simulated/floor/plating,
/area/security/permabrig)
"acP" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
pixel_x = 25
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_2)
"acQ" = (
@@ -1627,8 +1627,8 @@
icon_state = "0-2";
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"adj" = (
/obj/structure/cable{
@@ -1636,8 +1636,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"adk" = (
/obj/machinery/light/small{
@@ -1990,8 +1990,8 @@
/area/shuttle/vox)
"adP" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"adQ" = (
/obj/structure/table,
@@ -2117,8 +2117,8 @@
},
/area/security/permabrig)
"aee" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"aef" = (
/obj/structure/lattice/catwalk,
@@ -2135,8 +2135,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"aeh" = (
/turf/simulated/shuttle/wall{
@@ -2419,8 +2419,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"aeB" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
@@ -2831,11 +2831,13 @@
/turf/simulated/shuttle/plating/vox,
/area/shuttle/vox)
"afi" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"afj" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4/vox,
@@ -2893,8 +2895,8 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"afp" = (
/obj/structure/chair/stool,
@@ -2918,8 +2920,8 @@
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"afr" = (
/obj/effect/spawner/window/reinforced,
@@ -3124,8 +3126,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"afH" = (
/turf/simulated/shuttle/wall{
@@ -3385,8 +3387,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"agf" = (
/obj/machinery/atmospherics/pipe/simple/hidden,
@@ -3411,12 +3413,12 @@
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"agi" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/item/radio/intercom{
pixel_y = 25
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"agj" = (
@@ -3451,8 +3453,8 @@
pixel_y = 1;
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"ago" = (
/obj/structure/cable,
@@ -3654,8 +3656,8 @@
})
"agH" = (
/obj/item/stack/cable_coil,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"agI" = (
/turf/space,
@@ -3699,8 +3701,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"agN" = (
/obj/machinery/atmospherics/unary/portables_connector{
@@ -5105,8 +5107,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"aiR" = (
/obj/structure/cable{
@@ -5114,8 +5116,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxport)
"aiS" = (
/obj/structure/closet/secure_closet/brig{
@@ -5522,15 +5524,15 @@
/turf/simulated/floor/plating,
/area/maintenance/auxsolarport)
"ajD" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
pixel_y = 32
},
/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"ajE" = (
@@ -6296,8 +6298,8 @@
name = "xeno_spawn";
pixel_x = -1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/auxstarboard)
"akY" = (
/obj/effect/spawner/window/reinforced,
@@ -9245,7 +9247,7 @@
/area/shuttle/vox)
"aqo" = (
/obj/item/stack/spacecash/c50,
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor4/vox,
@@ -9916,10 +9918,10 @@
"ary" = (
/obj/item/stack/spacecash/c200,
/obj/item/stack/spacecash/c50,
-/obj/structure/chair{
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"arz" = (
@@ -11430,9 +11432,6 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"auc" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/flasher{
id = "gulagshuttleflasher";
pixel_x = 25
@@ -11440,6 +11439,9 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/siberia)
"aud" = (
@@ -11642,8 +11644,8 @@
icon_state = "0-2";
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/maintenance/auxsolarstarboard)
"auw" = (
/obj/structure/disposalpipe/segment,
@@ -12827,10 +12829,10 @@
layer = 4;
pixel_y = 32
},
-/obj/structure/chair{
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/machinery/light,
/turf/simulated/shuttle/floor,
/area/shuttle/pod_4)
"awE" = (
@@ -14058,7 +14060,7 @@
/turf/simulated/floor/plasteel,
/area/engine/gravitygenerator)
"ayO" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -16682,7 +16684,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/mining)
"aDr" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -16910,7 +16912,7 @@
},
/area/security/nuke_storage)
"aDJ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -26731,12 +26733,12 @@
/turf/space,
/area/space/nearstation)
"aUW" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
pixel_x = 25
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_1)
"aUX" = (
@@ -27588,9 +27590,6 @@
name = "Port Maintenance"
})
"aWr" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -27599,6 +27598,9 @@
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_1)
"aWs" = (
@@ -27654,10 +27656,6 @@
/obj/effect/decal/cleanable/fungus,
/turf/simulated/wall,
/area/maintenance/fore)
-"aWw" = (
-/turf/space,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"aWx" = (
/obj/machinery/door/airlock/maintenance{
name = "Storage Room";
@@ -31844,8 +31842,8 @@
})
"bdO" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/construction/hallway{
name = "\improper MiniSat Exterior"
})
@@ -36496,7 +36494,7 @@
/obj/item/radio/intercom{
pixel_y = 25
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -36689,15 +36687,15 @@
},
/area/shuttle/arrival/station)
"blP" = (
-/obj/structure/chair,
/obj/machinery/light{
dir = 1;
in_use = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"blQ" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"blR" = (
@@ -36708,12 +36706,12 @@
},
/area/shuttle/arrival/station)
"blS" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/landmark{
name = "JoinLate"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"blT" = (
@@ -38981,14 +38979,14 @@
name = "\improper MiniSat Exterior"
})
"bpw" = (
-/obj/structure/chair{
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light,
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"bpx" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -43950,8 +43948,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bxn" = (
/obj/structure/transit_tube{
@@ -43971,8 +43969,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bxo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -43984,10 +43982,11 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
-"bxp" = (/obj/structure/transit_tube_pod,
+"bxp" = (
+/obj/structure/transit_tube_pod,
/obj/structure/window/reinforced{
dir = 8
},
@@ -44020,8 +44019,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"bxr" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -50737,14 +50736,14 @@
},
/area/shuttle/transport)
"bIH" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bII" = (
@@ -50752,16 +50751,16 @@
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bIJ" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bIK" = (
-/obj/structure/chair,
/obj/machinery/light/spot{
tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bIL" = (
@@ -53206,16 +53205,16 @@
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bMz" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bMA" = (
-/obj/structure/chair{
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bMB" = (
@@ -65908,8 +65907,8 @@
/area/hydroponics)
"ciB" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"ciC" = (
/obj/effect/decal/warning_stripes/northeast,
@@ -66269,8 +66268,8 @@
/turf/simulated/floor/plating,
/area/atmos)
"cjc" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cjd" = (
/obj/effect/spawner/window/reinforced,
@@ -67031,8 +67030,8 @@
icon_state = "0-2";
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cks" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -68466,8 +68465,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cmI" = (
/obj/machinery/vending/wallmed1{
@@ -74375,8 +74374,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cvR" = (
/obj/structure/chair/office/light,
@@ -76930,8 +76929,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cAg" = (
/obj/structure/closet,
@@ -77549,8 +77548,8 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cBf" = (
/obj/machinery/computer/security/telescreen{
@@ -77572,8 +77571,8 @@
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cBh" = (
/obj/item/storage/secure/safe{
@@ -78222,8 +78221,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cCg" = (
/obj/item/reagent_containers/glass/beaker/large,
@@ -78305,8 +78304,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cCk" = (
/obj/structure/table,
@@ -78456,8 +78455,8 @@
/area/medical/surgeryobs)
"cCw" = (
/obj/item/stack/cable_coil,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cCx" = (
/obj/structure/cable/yellow{
@@ -78490,8 +78489,8 @@
d2 = 4;
icon_state = "0-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cCA" = (
/turf/simulated/floor/plasteel{
@@ -78807,8 +78806,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cDa" = (
/obj/machinery/door/airlock/maintenance{
@@ -82329,8 +82328,8 @@
pixel_x = -1
},
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/port)
"cIO" = (
/obj/item/flashlight/lamp,
@@ -86865,8 +86864,8 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"cPV" = (
/obj/structure/closet/wardrobe/robotics_black{
@@ -91756,8 +91755,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cXO" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -92022,8 +92021,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cYj" = (
/obj/structure/chair,
@@ -92219,8 +92218,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cYB" = (
/obj/machinery/light/small{
@@ -92476,12 +92475,12 @@
})
"cYY" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cYZ" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cZa" = (
/obj/machinery/light_switch{
@@ -92526,8 +92525,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cZd" = (
/obj/structure/cable{
@@ -92545,8 +92544,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cZe" = (
/turf/simulated/shuttle/wall{
@@ -92593,8 +92592,8 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cZk" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -92801,8 +92800,8 @@
})
"cZA" = (
/obj/item/stack/cable_coil,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cZB" = (
/turf/simulated/shuttle/floor,
@@ -92999,8 +92998,8 @@
icon_state = "0-4";
d2 = 4
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"cZX" = (
/obj/machinery/light{
@@ -93368,17 +93367,17 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"daC" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"daD" = (
-/obj/structure/chair,
/obj/machinery/light{
dir = 1;
on = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -94194,7 +94193,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"dbQ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -94333,10 +94332,10 @@
},
/area/chapel/main)
"dbY" = (
-/obj/structure/chair{
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -94567,10 +94566,10 @@
},
/area/shuttle/escape)
"dcp" = (
-/obj/structure/chair,
/obj/machinery/light{
dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -94640,8 +94639,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"dcw" = (
/obj/structure/window/reinforced,
@@ -94848,8 +94847,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"dcO" = (
/obj/docking_port/stationary{
@@ -94868,9 +94867,6 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"dcQ" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
broadcasting = 0;
listening = 1;
@@ -94878,6 +94874,9 @@
pixel_y = -28
},
/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -94958,13 +94957,13 @@
name = "\improper Secure Lab"
})
"dda" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ddb" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/plating{
@@ -94972,11 +94971,11 @@
},
/area/shuttle/escape)
"ddc" = (
-/obj/structure/chair/office/dark,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ddd" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -95013,7 +95012,7 @@
name = "\improper Secure Lab"
})
"ddi" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -95021,7 +95020,7 @@
},
/area/shuttle/escape)
"ddj" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -95125,8 +95124,8 @@
name = "xeno_spawn";
pixel_x = -1
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"ddx" = (
/turf/simulated/shuttle/wall{
@@ -95197,8 +95196,8 @@
icon_state = "0-2";
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/starboard)
"ddE" = (
/turf/simulated/shuttle/wall{
@@ -95213,12 +95212,12 @@
},
/area/shuttle/escape)
"ddG" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/reagent_dispensers/peppertank{
pixel_x = 31
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -95230,12 +95229,12 @@
},
/area/shuttle/escape)
"ddI" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/plating{
icon_state = "floorgrime"
},
@@ -95381,12 +95380,12 @@
name = "\improper Secure Lab"
})
"ddV" = (
-/obj/structure/chair,
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_y = 27
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -95419,12 +95418,12 @@
name = "\improper Secure Lab"
})
"ddY" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -95651,7 +95650,7 @@
/turf/simulated/wall/r_wall,
/area/medical/virology)
"dev" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -97507,6 +97506,12 @@
},
/turf/simulated/floor/plating,
/area/maintenance/fore)
+"tXL" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor4/vox,
+/area/shuttle/vox)
(1,1,1) = {"
aaa
@@ -112048,7 +112053,7 @@ apf
abq
aaa
abq
-aWw
+aef
abq
aaa
aaa
@@ -112305,7 +112310,7 @@ apf
aaa
aaa
aaa
-aWw
+aef
aaa
bZU
bZU
@@ -134177,9 +134182,9 @@ cHf
abq
aaa
aaa
-aWw
+aef
cPU
-aWw
+aef
aaa
abq
aaa
@@ -134937,7 +134942,7 @@ aaa
abq
aaa
abq
-aWw
+aef
abq
abq
aaa
@@ -135194,7 +135199,7 @@ abq
abq
abq
abq
-aWw
+aef
aaa
aaa
aaa
@@ -143627,8 +143632,8 @@ aCg
bjT
aTR
bgL
-aWw
-aWw
+aef
+aef
abq
abq
aaa
@@ -144114,7 +144119,7 @@ aaa
aaa
aaa
abq
-aWw
+aef
aCj
aDm
aFm
@@ -144371,7 +144376,7 @@ aaa
abq
abq
abq
-aWw
+aef
bre
aCg
aDn
@@ -147693,8 +147698,8 @@ aaa
aaa
adM
aeF
-afi
-afi
+tXL
+tXL
aeF
agJ
aeh
@@ -148510,8 +148515,8 @@ abq
aaa
aaa
abq
-aWw
-aWw
+aef
+aef
abq
bsQ
abq
diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm
index bed554f54f2..f27926e04f9 100644
--- a/_maps/map_files/MetaStation/z2.dmm
+++ b/_maps/map_files/MetaStation/z2.dmm
@@ -1771,13 +1771,6 @@
/obj/structure/grille,
/turf/simulated/shuttle/plating,
/area/centcom/evac)
-"eP" = (
-/obj/structure/chair{
- dir = 4;
- name = "Prosecution"
- },
-/turf/simulated/shuttle/floor,
-/area/centcom/evac)
"eQ" = (
/obj/structure/closet/secure_closet/cargotech,
/turf/unsimulated/floor{
@@ -5049,27 +5042,27 @@
},
/area/tdome/tdomeobserve)
"nK" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light/small{
tag = "icon-bulb1 (EAST)";
icon_state = "bulb1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/assault_pod)
"nL" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/small{
tag = "icon-bulb1 (WEST)";
icon_state = "bulb1";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -6113,7 +6106,7 @@
/turf/space,
/area/shuttle/escape_pod5/centcom)
"xF" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -6121,7 +6114,7 @@
},
/area/centcom/evac)
"xG" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -6129,7 +6122,7 @@
},
/area/centcom/evac)
"xW" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -6139,13 +6132,13 @@
/turf/simulated/shuttle/floor,
/area/centcom/evac)
"yd" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
/area/centcom/evac)
"yf" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/centcom/evac)
"yg" = (
@@ -6160,12 +6153,6 @@
icon_state = "floor4"
},
/area/shuttle/escape)
-"yl" = (
-/obj/structure/chair/sofa/corner,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/escape)
"ym" = (
/obj/structure/chair/office/dark,
/turf/unsimulated/floor{
@@ -6265,25 +6252,25 @@
/turf/unsimulated/ai_visible,
/area/ai_multicam_room)
"EE" = (
-/obj/structure/chair{
+/obj/machinery/light/small,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/small,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/assault_pod)
"Fz" = (
-/obj/structure/chair,
/obj/machinery/light/small{
dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/assault_pod)
"FV" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -6291,13 +6278,19 @@
},
/area/shuttle/assault_pod)
"FW" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/assault_pod)
+"Gw" = (
+/obj/structure/chair/sofa/left,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/escape)
"HX" = (
/turf/unsimulated/ai_visible,
/area/ai_multicam_room)
@@ -27558,7 +27551,7 @@ fe
fd
fG
eh
-eP
+xW
fd
fT
fC
@@ -47108,7 +47101,7 @@ ab
ab
ab
fi
-yk
+Gw
jE
jE
jE
@@ -47365,7 +47358,7 @@ ab
ab
ab
fi
-yl
+jE
jE
jE
jE
diff --git a/_maps/map_files/MetaStation/z4.dmm b/_maps/map_files/MetaStation/z4.dmm
index d73e5d2d490..6b7523f801d 100644
--- a/_maps/map_files/MetaStation/z4.dmm
+++ b/_maps/map_files/MetaStation/z4.dmm
@@ -4864,8 +4864,8 @@
/area/derelict/se_solar)
"nv" = (
/obj/structure/cable,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nw" = (
/obj/structure/grille,
@@ -4900,8 +4900,8 @@
icon_state = "0-2";
d2 = 2
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nB" = (
/obj/structure/cable{
@@ -4921,8 +4921,8 @@
icon_state = "1-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nD" = (
/obj/structure/cable{
@@ -4956,8 +4956,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nG" = (
/obj/structure/cable{
@@ -4970,8 +4970,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nH" = (
/obj/structure/cable{
@@ -4979,8 +4979,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nI" = (
/obj/structure/cable{
@@ -4999,8 +4999,8 @@
icon_state = "1-2";
pixel_y = 0
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nJ" = (
/obj/structure/cable{
@@ -5013,8 +5013,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nK" = (
/obj/structure/cable{
@@ -5032,13 +5032,13 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"nL" = (
/obj/item/stack/cable_coil/cut,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"nM" = (
/turf/simulated/floor/plating/airless{
@@ -5120,8 +5120,8 @@
/turf/simulated/wall/r_wall,
/area/derelict/se_solar)
"oa" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"ob" = (
/obj/machinery/door/airlock/external{
@@ -5156,8 +5156,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"og" = (
/obj/structure/closet/emcloset,
@@ -5185,8 +5185,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/solar/derelict_aft)
"ok" = (
/obj/effect/landmark/damageturf,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
index e6fda6f503a..7d505d64a28 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
@@ -207,8 +207,8 @@
/turf/simulated/floor/wood,
/area/ruin/powered/beach)
"aN" = (
-/obj/machinery/vending/cola,
/obj/effect/turf_decal/sand,
+/obj/machinery/vending/cola/free,
/turf/simulated/floor/plasteel,
/area/ruin/powered/beach)
"aO" = (
@@ -235,8 +235,8 @@
/turf/simulated/floor/wood,
/area/ruin/powered/beach)
"aT" = (
-/obj/machinery/vending/snack,
/obj/effect/turf_decal/sand,
+/obj/machinery/vending/snack/free,
/turf/simulated/floor/plasteel,
/area/ruin/powered/beach)
"aU" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
index 5822d05aa8a..5a947203de8 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
@@ -116,6 +116,9 @@
/obj/item/scalpel{
pixel_y = 12
},
+/obj/machinery/defibrillator_mount/loaded{
+ pixel_y = 30
+ },
/turf/simulated/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"aq" = (
@@ -489,7 +492,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/machinery/vending/crittercare,
+/obj/machinery/vending/crittercare/free,
/turf/simulated/floor/plasteel,
/area/ruin/powered/animal_hospital)
"bn" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
index 66d5f5fce80..8bf85306742 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
@@ -177,6 +177,7 @@
/obj/structure/stone_tile{
dir = 4
},
+/obj/item/seeds/wheat,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"aC" = (
@@ -189,11 +190,12 @@
dir = 4
},
/obj/structure/closet/crate/medical,
-/obj/item/storage/firstaid/regular,
/obj/item/reagent_containers/iv_bag/blood,
/obj/item/reagent_containers/iv_bag/blood,
/obj/item/reagent_containers/iv_bag/blood,
/obj/item/stack/sheet/cloth/ten,
+/obj/item/stack/medical/splint,
+/obj/item/storage/firstaid/adv,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"aF" = (
@@ -255,6 +257,8 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
+/obj/item/seeds/comfrey,
+/obj/item/seeds/aloe,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"aN" = (
@@ -1255,10 +1259,7 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"do" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/reagent_dispensers/watertank,
+/obj/structure/sink/puddle,
/obj/effect/mapping_helpers/no_lava,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm
index 589f1c194a4..5629bb19b49 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm
@@ -151,10 +151,6 @@
/obj/structure/stone_tile/cracked,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"z" = (
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
(1,1,1) = {"
a
@@ -291,7 +287,7 @@ f
j
c
r
-z
+c
o
c
c
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm
index 121d949e34d..3d224a617d6 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm
@@ -121,16 +121,6 @@
},
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"u" = (
-/obj/structure/stone_tile{
- dir = 8
- },
-/obj/structure/stone_tile{
- dir = 1
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"v" = (
/obj/structure/stone_tile/block/cracked,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
@@ -261,7 +251,7 @@ f
f
o
r
-u
+q
w
f
f
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm
index d14383a82dc..0f6c96fb041 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm
@@ -57,16 +57,6 @@
/obj/structure/stone_tile/cracked,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
-"j" = (
-/obj/structure/stone_tile/block{
- dir = 8
- },
-/obj/structure/stone_tile/block/cracked{
- dir = 4
- },
-/obj/effect/baseturf_helper/lava_land/surface,
-/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
-/area/lavaland/surface/outdoors)
"k" = (
/obj/structure/stone_tile,
/obj/structure/stone_tile{
@@ -274,7 +264,7 @@ d
f
d
f
-j
+e
d
w
f
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm
new file mode 100644
index 00000000000..888ead3e24c
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm
@@ -0,0 +1,980 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/turf/unsimulated/wall,
+/area/lavaland/surface/outdoors)
+"e" = (
+/obj/machinery/wish_granter,
+/obj/effect/mapping_helpers/no_lava,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+a
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+b
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+a
+b
+b
+c
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+b
+a
+a
+a
+a
+b
+a
+a
+a
+a
+a
+a
+a
+b
+a
+b
+b
+b
+a
+a
+b
+b
+a
+a
+b
+b
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+b
+b
+"}
+(5,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+b
+"}
+(6,1,1) = {"
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+b
+"}
+(7,1,1) = {"
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+c
+b
+b
+b
+c
+b
+b
+b
+b
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(9,1,1) = {"
+a
+a
+b
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+"}
+(10,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+"}
+(11,1,1) = {"
+a
+a
+a
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+"}
+(12,1,1) = {"
+a
+a
+b
+a
+a
+a
+b
+b
+a
+a
+c
+b
+b
+b
+b
+b
+c
+b
+c
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+"}
+(13,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+c
+b
+c
+c
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+"}
+(14,1,1) = {"
+a
+a
+b
+c
+b
+b
+b
+b
+c
+b
+c
+d
+d
+d
+d
+d
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+b
+"}
+(15,1,1) = {"
+a
+a
+b
+b
+b
+b
+c
+b
+b
+b
+b
+d
+d
+d
+d
+d
+b
+c
+b
+b
+c
+b
+a
+b
+b
+b
+b
+b
+b
+b
+"}
+(16,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+b
+c
+b
+d
+d
+e
+d
+d
+b
+b
+a
+a
+b
+b
+a
+a
+b
+b
+b
+b
+b
+b
+"}
+(17,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+c
+b
+b
+c
+d
+d
+d
+d
+d
+c
+c
+a
+a
+a
+a
+a
+a
+a
+b
+b
+a
+b
+b
+"}
+(18,1,1) = {"
+a
+a
+b
+a
+a
+a
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+b
+c
+b
+a
+a
+a
+a
+a
+b
+b
+b
+c
+a
+a
+"}
+(19,1,1) = {"
+a
+a
+b
+a
+a
+a
+b
+b
+b
+b
+b
+c
+b
+c
+c
+b
+c
+b
+b
+a
+a
+a
+a
+a
+b
+a
+b
+b
+a
+a
+"}
+(20,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+c
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(21,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(22,1,1) = {"
+a
+a
+b
+b
+b
+b
+a
+b
+b
+b
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(23,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(24,1,1) = {"
+a
+a
+a
+a
+a
+a
+c
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(25,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(26,1,1) = {"
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+b
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(27,1,1) = {"
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+b
+c
+b
+b
+a
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(28,1,1) = {"
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+b
+"}
+(29,1,1) = {"
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+b
+a
+b
+b
+b
+b
+"}
+(30,1,1) = {"
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
new file mode 100644
index 00000000000..d9d2feef160
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
@@ -0,0 +1,367 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"c" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/ruin/unpowered)
+"d" = (
+/turf/simulated/wall/cult,
+/area/ruin/unpowered)
+"e" = (
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered)
+"f" = (
+/obj/structure/cult/pylon,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered)
+"g" = (
+/obj/effect/decal/cleanable/blood/old,
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"h" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/wall/cult,
+/area/ruin/unpowered)
+"i" = (
+/obj/effect/decal/remains/human,
+/obj/effect/decal/cleanable/blood/old,
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"k" = (
+/obj/effect/decal/remains/human,
+/obj/item/melee/cultblade,
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"l" = (
+/obj/effect/decal/remains/human,
+/obj/item/clothing/shoes/cult,
+/obj/item/clothing/suit/hooded/cultrobes,
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"m" = (
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"o" = (
+/obj/effect/rune/narsie{
+ color = "#ff0000";
+ used = 1
+ },
+/obj/item/cult_shift,
+/obj/effect/decal/remains/human,
+/obj/item/melee/cultblade/dagger,
+/obj/effect/step_trigger/sound_effect{
+ happens_once = 1;
+ name = "a grave mistake";
+ sound = 'sound/hallucinations/i_see_you1.ogg';
+ triggerer_only = 1
+ },
+/obj/effect/step_trigger/message{
+ message = "You've made a grave mistake, haven't you?";
+ name = "ohfuck"
+ },
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"q" = (
+/obj/effect/decal/remains/human,
+/obj/item/clothing/shoes/cult,
+/obj/item/clothing/suit/hooded/cultrobes,
+/obj/effect/decal/cleanable/blood/old,
+/turf/simulated/floor/engine/cult{
+ oxygen = 24;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"s" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+c
+b
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+d
+e
+c
+s
+c
+b
+b
+b
+c
+s
+c
+s
+d
+a
+"}
+(3,1,1) = {"
+a
+e
+f
+s
+d
+c
+c
+g
+c
+c
+d
+e
+f
+s
+a
+"}
+(4,1,1) = {"
+a
+c
+s
+c
+c
+c
+c
+b
+c
+c
+c
+c
+e
+c
+a
+"}
+(5,1,1) = {"
+a
+s
+d
+c
+c
+b
+b
+b
+b
+b
+c
+c
+d
+s
+a
+"}
+(6,1,1) = {"
+a
+c
+c
+c
+b
+b
+l
+d
+k
+b
+b
+c
+c
+c
+a
+"}
+(7,1,1) = {"
+b
+b
+c
+c
+g
+i
+b
+b
+b
+l
+b
+c
+c
+b
+b
+"}
+(8,1,1) = {"
+c
+b
+g
+b
+b
+d
+b
+o
+b
+d
+b
+b
+g
+b
+c
+"}
+(9,1,1) = {"
+b
+b
+c
+c
+b
+k
+b
+b
+b
+m
+b
+c
+c
+b
+b
+"}
+(10,1,1) = {"
+a
+c
+c
+c
+g
+b
+m
+h
+q
+b
+b
+c
+c
+c
+a
+"}
+(11,1,1) = {"
+a
+s
+d
+c
+c
+b
+b
+b
+b
+b
+c
+c
+d
+s
+a
+"}
+(12,1,1) = {"
+a
+c
+s
+c
+c
+c
+c
+b
+c
+c
+c
+c
+e
+c
+a
+"}
+(13,1,1) = {"
+a
+e
+f
+s
+d
+c
+c
+g
+c
+c
+d
+e
+f
+s
+a
+"}
+(14,1,1) = {"
+a
+d
+e
+c
+s
+c
+b
+b
+b
+c
+s
+c
+s
+d
+a
+"}
+(15,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+c
+b
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm
new file mode 100644
index 00000000000..03959657af8
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm
@@ -0,0 +1,1018 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"c" = (
+/obj/item/clockwork/alloy_shards/small,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"d" = (
+/obj/structure/clockwork/wall_gear,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"e" = (
+/obj/item/stack/tile/brass,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"f" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"g" = (
+/obj/item/clockwork/alloy_shards/medium/gear_bit,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"h" = (
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"i" = (
+/obj/structure/grille/ratvar/broken,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"j" = (
+/turf/simulated/wall/clockwork,
+/area/lavaland/surface/outdoors/unexplored)
+"k" = (
+/obj/item/clockwork/alloy_shards/small,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"l" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"m" = (
+/obj/item/clockwork/alloy_shards/medium,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"n" = (
+/obj/item/clockwork/component/belligerent_eye/blind_eye,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"o" = (
+/obj/item/clockwork/alloy_shards/large,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"p" = (
+/obj/item/clockwork/alloy_shards/medium,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"q" = (
+/obj/structure/lattice/catwalk/clockwork,
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"r" = (
+/obj/structure/lattice/clockwork,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"s" = (
+/obj/item/clockwork/alloy_shards/large,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"t" = (
+/obj/item/stack/tile/brass,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"u" = (
+/obj/structure/grille/ratvar,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"v" = (
+/obj/item/clockwork/alloy_shards/medium,
+/obj/structure/lattice/clockwork,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"w" = (
+/obj/structure/grille/ratvar/broken,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"x" = (
+/obj/structure/clockwork/wall_gear,
+/obj/item/stack/tile/brass,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"y" = (
+/obj/item/clockwork/component/geis_capacitor/fallen_armor,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"z" = (
+/obj/structure/clockwork/wall_gear,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"A" = (
+/obj/item/clockwork/alloy_shards/clockgolem_remains,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"B" = (
+/obj/item/clockwork/weapon/ratvarian_spear,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"C" = (
+/obj/item/clockwork/alloy_shards/medium/gear_bit,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"D" = (
+/obj/structure/grille/ratvar,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"E" = (
+/obj/item/clockwork/alloy_shards/clockgolem_remains,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+"F" = (
+/obj/structure/dead_ratvar,
+/turf/simulated/floor/clockwork{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/lavaland/surface/outdoors/unexplored)
+"G" = (
+/obj/item/stack/tile/brass/fifty,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors/unexplored)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+s
+h
+b
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+o
+b
+a
+h
+b
+r
+c
+j
+x
+b
+b
+g
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+a
+a
+a
+f
+b
+l
+b
+v
+b
+p
+w
+j
+j
+c
+l
+b
+b
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+a
+a
+f
+l
+l
+r
+b
+b
+l
+j
+j
+j
+p
+l
+b
+h
+c
+r
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+a
+a
+a
+b
+l
+l
+p
+h
+c
+l
+l
+l
+j
+l
+b
+l
+l
+D
+h
+r
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+a
+h
+c
+h
+m
+l
+l
+c
+l
+l
+l
+l
+w
+l
+l
+l
+m
+c
+h
+f
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+b
+b
+b
+l
+l
+l
+l
+h
+b
+l
+l
+l
+l
+l
+l
+l
+l
+c
+f
+f
+b
+a
+"}
+(8,1,1) = {"
+a
+h
+h
+g
+c
+b
+l
+l
+l
+l
+n
+h
+r
+l
+l
+b
+l
+l
+l
+l
+f
+b
+a
+a
+"}
+(9,1,1) = {"
+a
+b
+c
+b
+b
+l
+l
+l
+l
+t
+h
+b
+h
+w
+p
+b
+g
+l
+l
+b
+b
+b
+b
+a
+"}
+(10,1,1) = {"
+b
+h
+l
+l
+l
+l
+l
+l
+b
+b
+p
+r
+F
+b
+h
+A
+b
+l
+l
+l
+m
+l
+l
+a
+"}
+(11,1,1) = {"
+c
+i
+j
+j
+l
+l
+l
+l
+l
+b
+h
+k
+h
+h
+h
+r
+l
+l
+l
+l
+l
+l
+b
+a
+"}
+(12,1,1) = {"
+d
+j
+j
+j
+h
+l
+l
+b
+l
+q
+r
+h
+h
+h
+c
+q
+l
+b
+l
+l
+b
+h
+o
+a
+"}
+(13,1,1) = {"
+e
+k
+b
+l
+l
+l
+b
+p
+s
+r
+h
+h
+h
+h
+h
+h
+h
+l
+l
+l
+l
+b
+b
+a
+"}
+(14,1,1) = {"
+b
+b
+b
+m
+l
+l
+l
+b
+h
+h
+k
+h
+h
+h
+h
+h
+c
+b
+l
+l
+b
+b
+h
+b
+"}
+(15,1,1) = {"
+b
+b
+b
+l
+l
+l
+l
+h
+h
+h
+h
+h
+h
+h
+k
+B
+h
+l
+l
+l
+l
+b
+b
+a
+"}
+(16,1,1) = {"
+f
+l
+l
+l
+l
+l
+l
+q
+b
+h
+h
+h
+h
+h
+h
+s
+b
+l
+l
+l
+l
+f
+f
+a
+"}
+(17,1,1) = {"
+b
+b
+b
+l
+l
+l
+b
+l
+q
+r
+h
+h
+h
+h
+h
+b
+s
+r
+l
+r
+l
+l
+b
+a
+"}
+(18,1,1) = {"
+b
+h
+l
+l
+l
+b
+b
+h
+b
+h
+h
+h
+h
+h
+r
+k
+b
+C
+r
+h
+b
+b
+m
+b
+"}
+(19,1,1) = {"
+b
+b
+l
+l
+l
+l
+h
+b
+h
+h
+h
+h
+h
+h
+h
+r
+j
+h
+c
+h
+r
+h
+b
+b
+"}
+(20,1,1) = {"
+b
+l
+l
+l
+l
+b
+b
+p
+h
+c
+h
+k
+h
+h
+o
+b
+l
+l
+l
+b
+E
+r
+G
+o
+"}
+(21,1,1) = {"
+g
+b
+l
+l
+l
+l
+l
+r
+h
+r
+h
+h
+h
+h
+y
+l
+l
+l
+l
+l
+l
+j
+j
+r
+"}
+(22,1,1) = {"
+c
+c
+b
+l
+l
+b
+h
+h
+t
+b
+h
+h
+h
+h
+h
+m
+b
+l
+l
+l
+h
+j
+j
+j
+"}
+(23,1,1) = {"
+b
+h
+m
+n
+b
+h
+l
+o
+j
+u
+r
+p
+h
+r
+h
+b
+l
+l
+l
+b
+b
+w
+r
+b
+"}
+(24,1,1) = {"
+a
+a
+b
+b
+l
+l
+l
+j
+j
+q
+p
+h
+m
+e
+z
+j
+j
+l
+l
+c
+l
+l
+b
+a
+"}
+(25,1,1) = {"
+a
+a
+a
+l
+l
+l
+l
+j
+l
+l
+b
+h
+r
+x
+h
+l
+l
+l
+l
+l
+l
+a
+a
+a
+"}
+(26,1,1) = {"
+a
+a
+a
+c
+b
+l
+l
+l
+l
+l
+l
+g
+q
+b
+h
+l
+l
+l
+c
+m
+b
+a
+a
+a
+"}
+(27,1,1) = {"
+a
+a
+a
+b
+h
+b
+l
+l
+l
+l
+l
+l
+l
+l
+l
+l
+l
+l
+l
+b
+a
+a
+a
+a
+"}
+(28,1,1) = {"
+a
+a
+a
+a
+c
+b
+l
+b
+l
+l
+l
+l
+l
+l
+l
+l
+b
+l
+f
+a
+a
+a
+a
+a
+"}
+(29,1,1) = {"
+a
+a
+a
+a
+b
+b
+f
+c
+b
+l
+c
+l
+l
+l
+l
+c
+o
+l
+b
+a
+a
+a
+a
+a
+"}
+(30,1,1) = {"
+a
+a
+a
+a
+a
+g
+c
+b
+l
+l
+b
+m
+l
+b
+l
+f
+b
+a
+a
+a
+a
+a
+a
+a
+"}
+(31,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+l
+b
+a
+b
+l
+c
+f
+f
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(32,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
new file mode 100644
index 00000000000..2be9246bcfc
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
@@ -0,0 +1,328 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/turf/simulated/wall/rust,
+/area/ruin/unpowered)
+"e" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_x = -28;
+ broken = 1
+ },
+/obj/item/clothing/suit/bloated_human,
+/obj/effect/decal/cleanable/blood,
+/obj/item/clothing/head/human_head,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"f" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_x = 28;
+ broken = 1
+ },
+/turf/simulated/floor/plating/burnt,
+/area/ruin/unpowered)
+"g" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_x = -28;
+ broken = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"h" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"i" = (
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"j" = (
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"k" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_y = 28;
+ broken = 1
+ },
+/obj/item/kitchen/knife/envy,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"l" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_x = 28;
+ broken = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"m" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_x = -28;
+ broken = 1
+ },
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"n" = (
+/turf/simulated/floor/plating/damaged,
+/area/ruin/unpowered)
+"o" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_x = -28;
+ broken = 1
+ },
+/turf/simulated/floor/plating/damaged,
+/area/ruin/unpowered)
+"p" = (
+/obj/machinery/door/airlock/hatch,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"q" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"A" = (
+/obj/effect/mapping_helpers/no_lava,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(3,1,1) = {"
+b
+c
+c
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+c
+a
+"}
+(4,1,1) = {"
+c
+c
+d
+d
+d
+e
+g
+g
+g
+m
+m
+m
+m
+m
+o
+m
+j
+d
+c
+a
+"}
+(5,1,1) = {"
+c
+d
+d
+d
+d
+d
+h
+h
+i
+i
+i
+i
+i
+h
+i
+i
+i
+d
+A
+a
+"}
+(6,1,1) = {"
+c
+d
+d
+d
+d
+d
+d
+k
+i
+i
+i
+q
+i
+i
+i
+i
+i
+p
+A
+a
+"}
+(7,1,1) = {"
+c
+d
+d
+d
+d
+d
+i
+i
+i
+j
+i
+n
+i
+i
+i
+i
+i
+d
+c
+a
+"}
+(8,1,1) = {"
+c
+c
+d
+d
+d
+f
+j
+l
+l
+l
+l
+l
+l
+l
+l
+l
+j
+d
+c
+a
+"}
+(9,1,1) = {"
+b
+c
+c
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+c
+a
+"}
+(10,1,1) = {"
+b
+b
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm
new file mode 100644
index 00000000000..4c793cc1ffa
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm
@@ -0,0 +1,161 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/wall/cult,
+/area/ruin/unpowered)
+"c" = (
+/obj/structure/healingfountain,
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+"d" = (
+/obj/structure/fluff/divine/conduit,
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+"e" = (
+/obj/structure/sacrificealtar,
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+"f" = (
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+"g" = (
+/mob/living/simple_animal/butterfly,
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+"h" = (
+/obj/structure/fans/tiny/invisible,
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+"i" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/engine/cult,
+/area/ruin/unpowered)
+
+(1,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+"}
+(2,1,1) = {"
+a
+b
+d
+f
+f
+d
+f
+f
+d
+f
+f
+d
+f
+f
+d
+b
+"}
+(3,1,1) = {"
+b
+b
+e
+g
+f
+f
+g
+f
+f
+f
+f
+g
+f
+g
+f
+b
+"}
+(4,1,1) = {"
+b
+c
+f
+f
+f
+f
+f
+f
+i
+f
+f
+f
+f
+f
+f
+h
+"}
+(5,1,1) = {"
+b
+b
+e
+f
+f
+f
+f
+g
+f
+f
+f
+f
+f
+f
+f
+b
+"}
+(6,1,1) = {"
+a
+b
+d
+g
+f
+d
+f
+f
+d
+f
+f
+d
+f
+g
+d
+b
+"}
+(7,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
new file mode 100644
index 00000000000..e449be961cd
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
@@ -0,0 +1,539 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"e" = (
+/turf/simulated/floor/plating/lava/smooth,
+/area/ruin/powered/gluttony)
+"f" = (
+/obj/item/reagent_containers/syringe/gluttony,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"g" = (
+/obj/effect/gluttony,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"h" = (
+/obj/item/veilrender/vealrender,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"i" = (
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"j" = (
+/obj/item/trash/plate,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"l" = (
+/obj/item/trash/candy,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"m" = (
+/obj/item/trash/raisins,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"n" = (
+/obj/item/trash/pistachios,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"o" = (
+/obj/item/trash/popcorn,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"p" = (
+/obj/item/trash/semki,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"q" = (
+/obj/item/trash/syndi_cakes,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"r" = (
+/obj/effect/gluttony,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"t" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"v" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"z" = (
+/obj/item/trash/plate,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"A" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"R" = (
+/turf/simulated/wall/indestructible/uranium,
+/area/ruin/powered/gluttony)
+"S" = (
+/obj/machinery/door/airlock/uranium,
+/obj/structure/fans/tiny/invisible,
+/turf/simulated/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+
+(1,1,1) = {"
+a
+a
+a
+b
+b
+a
+a
+b
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+b
+a
+a
+a
+b
+b
+b
+c
+c
+c
+b
+c
+c
+c
+b
+b
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+b
+a
+a
+a
+b
+b
+b
+c
+R
+R
+S
+R
+R
+c
+b
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+b
+b
+a
+a
+a
+b
+b
+c
+R
+h
+i
+o
+R
+c
+b
+a
+a
+a
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+a
+a
+a
+b
+b
+c
+R
+i
+i
+v
+R
+c
+b
+b
+b
+b
+b
+a
+"}
+(7,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+c
+R
+i
+l
+i
+R
+c
+b
+b
+b
+b
+b
+a
+"}
+(8,1,1) = {"
+a
+b
+c
+c
+c
+c
+c
+c
+R
+t
+i
+m
+R
+c
+c
+c
+c
+c
+c
+b
+"}
+(9,1,1) = {"
+b
+b
+c
+R
+R
+R
+R
+R
+R
+g
+m
+v
+R
+R
+R
+R
+R
+R
+c
+b
+"}
+(10,1,1) = {"
+a
+b
+c
+R
+e
+R
+r
+g
+g
+g
+g
+i
+p
+i
+z
+l
+i
+R
+c
+b
+"}
+(11,1,1) = {"
+a
+b
+c
+R
+f
+g
+g
+g
+g
+g
+n
+d
+i
+i
+i
+i
+i
+S
+b
+b
+"}
+(12,1,1) = {"
+a
+b
+c
+R
+e
+R
+r
+g
+g
+g
+i
+g
+i
+l
+A
+i
+q
+R
+c
+b
+"}
+(13,1,1) = {"
+a
+b
+c
+R
+R
+R
+R
+R
+R
+g
+i
+v
+R
+R
+R
+R
+R
+R
+c
+b
+"}
+(14,1,1) = {"
+a
+b
+c
+c
+c
+c
+c
+c
+R
+r
+i
+i
+R
+c
+c
+c
+c
+c
+c
+b
+"}
+(15,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+c
+R
+i
+g
+i
+R
+c
+b
+b
+b
+b
+b
+b
+"}
+(16,1,1) = {"
+b
+b
+b
+a
+b
+b
+b
+c
+R
+j
+i
+v
+R
+c
+b
+b
+b
+a
+a
+a
+"}
+(17,1,1) = {"
+b
+b
+b
+a
+b
+b
+b
+c
+R
+i
+n
+i
+R
+c
+b
+b
+b
+a
+a
+a
+"}
+(18,1,1) = {"
+a
+a
+a
+a
+b
+b
+b
+c
+R
+R
+S
+R
+R
+c
+b
+b
+b
+a
+a
+a
+"}
+(19,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+b
+c
+c
+c
+b
+b
+a
+a
+a
+a
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+b
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
new file mode 100644
index 00000000000..8fdc459c863
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
@@ -0,0 +1,770 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/simulated/wall/mineral/titanium,
+/area/shuttle/freegolem)
+"ac" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/shuttle,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"ad" = (
+/obj/structure/closet/crate/golemgear,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"ae" = (
+/obj/item/storage/toolbox/mechanical,
+/obj/item/reagent_containers/spray/cleaner,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"af" = (
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"ag" = (
+/obj/structure/reagent_dispensers/watertank/high,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"ah" = (
+/obj/structure/shuttle/engine/heater{
+ icon_state = "heater";
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"ai" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 4;
+ icon_state = "burst_l"
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"aj" = (
+/obj/machinery/light/small,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"ak" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"al" = (
+/obj/structure/table/wood,
+/obj/item/disk/design_disk/golem_shell,
+/obj/item/areaeditor/golem,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"am" = (
+/obj/machinery/vending/hydronutrients,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"an" = (
+/obj/machinery/vending/hydroseeds,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"ao" = (
+/obj/machinery/light{
+ dir = 1;
+ on = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"ap" = (
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aq" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swallc2";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"ar" = (
+/obj/effect/mob_spawn/human/golem/adamantine,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"as" = (
+/obj/machinery/vending/coffee/free,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"at" = (
+/obj/machinery/mineral/equipment_vendor/golem,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"au" = (
+/obj/machinery/door/airlock/shuttle,
+/obj/structure/fans/tiny,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"av" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall12";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"aw" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"ax" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"ay" = (
+/obj/machinery/mineral/ore_redemption/golem,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"az" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swallc1";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"aA" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/powered/golem_ship)
+"aB" = (
+/obj/structure/window/full/shuttle{
+ icon_state = "16"
+ },
+/obj/structure/grille,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"aC" = (
+/obj/structure/statue/gold/rd{
+ name = "statue of the Liberator"
+ },
+/obj/structure/window/reinforced{
+ dir = 4;
+ pixel_x = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aD" = (
+/obj/structure/computerframe,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aE" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall3";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"aF" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 30
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aG" = (
+/obj/machinery/door/airlock/shuttle,
+/obj/structure/fans/tiny,
+/obj/docking_port/stationary{
+ area_type = /area/ruin/powered/golem_ship;
+ dir = 8;
+ dwidth = 8;
+ height = 20;
+ id = "freegolem_lavaland";
+ name = "Lavaland Surface";
+ turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface;
+ width = 16
+ },
+/obj/docking_port/mobile{
+ dir = 8;
+ dwidth = 8;
+ height = 20;
+ id = "freegolem";
+ name = "Free Golem Ship";
+ width = 16
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aH" = (
+/obj/structure/window/full/shuttle{
+ icon_state = "15"
+ },
+/obj/structure/grille,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"aI" = (
+/obj/structure/window/reinforced{
+ dir = 4;
+ pixel_x = 0
+ },
+/obj/structure/table/wood,
+/obj/item/bedsheet/rd/royal_cape{
+ layer = 3;
+ pixel_x = 5;
+ pixel_y = 9
+ },
+/obj/item/book/manual/research_and_development{
+ name = "Sacred Text of the Liberator";
+ pixel_x = -4;
+ pixel_y = 3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aJ" = (
+/obj/machinery/light,
+/obj/structure/chair/comfy/purp{
+ icon_state = "comfychair";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aK" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall13";
+ icon_state = "swall13";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"aL" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aM" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall11";
+ icon_state = "swall11";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"aN" = (
+/obj/item/resonator/upgraded,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aO" = (
+/obj/machinery/autolathe,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aP" = (
+/obj/machinery/computer/shuttle/golem_ship/recall,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/powered/golem_ship)
+"aQ" = (
+/obj/structure/table/wood,
+/obj/machinery/reagentgrinder,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aR" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swallc4"
+ },
+/area/shuttle/freegolem)
+"aS" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swall4";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"aT" = (
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aU" = (
+/obj/structure/table/wood,
+/obj/item/resonator,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aV" = (
+/obj/machinery/vending/snack/free,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aW" = (
+/obj/structure/table/wood,
+/obj/item/storage/firstaid/brute,
+/obj/item/storage/firstaid/brute,
+/obj/item/storage/firstaid/brute,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aX" = (
+/obj/structure/table/wood,
+/obj/item/storage/firstaid/fire,
+/obj/item/storage/firstaid/fire,
+/obj/item/storage/firstaid/fire,
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"aY" = (
+/obj/structure/table/wood,
+/obj/item/storage/firstaid/adv,
+/obj/item/storage/firstaid/adv,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"ba" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"bb" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"bc" = (
+/obj/structure/ore_box,
+/turf/simulated/shuttle/plating,
+/area/shuttle/freegolem)
+"be" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = -30
+ },
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor5"
+ },
+/area/shuttle/freegolem)
+"bf" = (
+/turf/simulated/shuttle/wall{
+ icon_state = "swallc3";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+"bh" = (
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall14";
+ icon_state = "swall14";
+ dir = 2
+ },
+/area/shuttle/freegolem)
+
+(1,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aq
+aB
+aH
+bf
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+av
+aC
+aI
+av
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(3,1,1) = {"
+aa
+aa
+aa
+aq
+aE
+au
+aR
+aD
+aJ
+ab
+au
+aE
+bf
+aa
+aa
+aa
+"}
+(4,1,1) = {"
+aa
+aa
+aa
+av
+am
+ap
+ax
+ap
+ap
+ax
+ap
+as
+av
+aa
+aa
+aa
+"}
+(5,1,1) = {"
+aa
+aa
+aa
+av
+an
+ap
+ap
+ap
+ap
+ap
+ap
+aV
+av
+aa
+aa
+aa
+"}
+(6,1,1) = {"
+aq
+aE
+aE
+aK
+ao
+ap
+ap
+ap
+ap
+ap
+ap
+aT
+bh
+aE
+aE
+bf
+"}
+(7,1,1) = {"
+av
+ad
+af
+aw
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+aw
+af
+bc
+av
+"}
+(8,1,1) = {"
+av
+ad
+af
+aw
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+aw
+af
+bc
+av
+"}
+(9,1,1) = {"
+av
+ad
+aj
+av
+ao
+ap
+ap
+ap
+ap
+ap
+ap
+aT
+av
+ba
+bc
+av
+"}
+(10,1,1) = {"
+av
+ad
+af
+av
+ap
+ap
+ar
+aU
+aU
+ar
+ap
+ap
+av
+af
+bc
+av
+"}
+(11,1,1) = {"
+av
+ad
+af
+av
+ap
+ap
+ar
+aU
+aU
+ar
+ap
+ap
+av
+af
+bc
+av
+"}
+(12,1,1) = {"
+av
+ad
+aj
+av
+ao
+ap
+ap
+ap
+ap
+ap
+ap
+aT
+av
+ba
+bc
+av
+"}
+(13,1,1) = {"
+av
+ad
+af
+aw
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+aw
+af
+bc
+av
+"}
+(14,1,1) = {"
+av
+ad
+af
+aw
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+aw
+af
+bc
+av
+"}
+(15,1,1) = {"
+av
+ae
+af
+av
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+aW
+av
+af
+ae
+av
+"}
+(16,1,1) = {"
+ac
+af
+aj
+av
+ao
+ap
+ap
+ap
+ap
+ap
+ap
+aX
+av
+ba
+af
+ac
+"}
+(17,1,1) = {"
+ac
+af
+af
+av
+ap
+ap
+ap
+ap
+ap
+aN
+ap
+aY
+av
+af
+af
+ac
+"}
+(18,1,1) = {"
+av
+ag
+ak
+av
+at
+ap
+ay
+ap
+ap
+aO
+aQ
+al
+av
+bb
+bb
+av
+"}
+(19,1,1) = {"
+av
+ah
+ah
+av
+ah
+ah
+aS
+aF
+be
+aS
+ah
+ah
+av
+ah
+ah
+av
+"}
+(20,1,1) = {"
+az
+ai
+ai
+aM
+ai
+ai
+aM
+aG
+aL
+aM
+ai
+ai
+aM
+ai
+ai
+aR
+"}
+(21,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aA
+aA
+aA
+aP
+aa
+aa
+aa
+aa
+aa
+aa
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
new file mode 100644
index 00000000000..e1082c88664
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
@@ -0,0 +1,577 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"e" = (
+/obj/structure/table/wood/poker,
+/obj/item/gun/projectile/revolver/russian/soul,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/ruin/powered/greed)
+"f" = (
+/obj/structure/cursed_slot_machine,
+/turf/simulated/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/ruin/powered/greed)
+"g" = (
+/obj/structure/table/wood/poker,
+/obj/item/coin/mythril,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/ruin/powered/greed)
+"h" = (
+/obj/structure/table/wood/poker,
+/obj/item/coin/diamond,
+/turf/simulated/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/ruin/powered/greed)
+"i" = (
+/turf/simulated/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/ruin/powered/greed)
+"j" = (
+/obj/structure/table/wood/poker,
+/obj/item/coin/adamantine,
+/turf/simulated/floor/carpet{
+ icon_state = "carpetsymbol"
+ },
+/area/ruin/powered/greed)
+"k" = (
+/obj/machinery/computer/arcade/battle{
+ emagged = 1
+ },
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"l" = (
+/obj/item/coin/gold,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"m" = (
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"n" = (
+/obj/structure/table/wood/poker,
+/obj/item/stack/spacecash/c1000,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"o" = (
+/obj/item/storage/bag/money,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"p" = (
+/obj/structure/table/wood/poker,
+/obj/item/stack/ore/gold,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"q" = (
+/obj/structure/table/wood/poker,
+/obj/item/stack/spacecash/c20,
+/obj/item/stack/spacecash/c50,
+/obj/machinery/light/small{
+ brightness_range = 3;
+ dir = 8
+ },
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"r" = (
+/obj/structure/table/wood/poker,
+/obj/item/stack/spacecash/c500,
+/obj/item/stack/spacecash/c100,
+/obj/item/stack/spacecash/c1000,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"s" = (
+/obj/structure/table/wood/poker,
+/obj/item/stack/spacecash/c200,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"u" = (
+/obj/structure/table/wood/poker,
+/obj/item/stack/spacecash/c500,
+/obj/item/stack/spacecash/c100,
+/obj/item/stack/spacecash/c1000,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"v" = (
+/obj/item/coin/gold,
+/obj/machinery/light/small,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"w" = (
+/obj/item/storage/bag/money,
+/obj/machinery/light/small,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"J" = (
+/obj/machinery/door/airlock/gold,
+/obj/structure/fans/tiny/invisible,
+/turf/simulated/floor/engine/cult,
+/area/ruin/powered/greed)
+"W" = (
+/turf/simulated/wall/cult,
+/area/ruin/powered/greed)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+b
+"}
+(2,1,1) = {"
+a
+b
+b
+a
+a
+a
+a
+a
+a
+b
+b
+b
+a
+a
+a
+a
+a
+b
+b
+b
+"}
+(3,1,1) = {"
+a
+b
+b
+b
+b
+b
+a
+a
+a
+b
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+"}
+(4,1,1) = {"
+a
+a
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+"}
+(5,1,1) = {"
+a
+a
+a
+b
+b
+a
+a
+c
+c
+c
+c
+c
+c
+c
+a
+a
+a
+a
+b
+a
+"}
+(6,1,1) = {"
+b
+a
+a
+a
+a
+a
+c
+c
+W
+W
+W
+W
+W
+c
+a
+a
+a
+a
+b
+a
+"}
+(7,1,1) = {"
+b
+a
+a
+a
+c
+c
+c
+W
+W
+n
+q
+s
+W
+c
+c
+c
+c
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+c
+W
+W
+W
+k
+o
+l
+m
+W
+W
+W
+W
+c
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+b
+a
+c
+W
+e
+h
+l
+m
+m
+m
+l
+m
+v
+W
+W
+a
+a
+a
+"}
+(10,1,1) = {"
+b
+b
+b
+a
+c
+W
+f
+i
+m
+l
+d
+o
+m
+m
+m
+m
+J
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+b
+a
+c
+W
+g
+j
+l
+m
+m
+l
+m
+l
+w
+W
+W
+a
+a
+a
+"}
+(12,1,1) = {"
+a
+a
+a
+a
+c
+W
+W
+W
+k
+o
+m
+l
+W
+W
+W
+W
+c
+a
+a
+a
+"}
+(13,1,1) = {"
+a
+a
+a
+a
+c
+c
+c
+W
+W
+p
+u
+r
+W
+c
+c
+c
+c
+a
+a
+a
+"}
+(14,1,1) = {"
+b
+b
+a
+a
+a
+a
+c
+c
+W
+W
+W
+W
+W
+c
+a
+a
+a
+a
+a
+a
+"}
+(15,1,1) = {"
+b
+b
+a
+a
+a
+a
+a
+c
+c
+c
+c
+c
+c
+c
+a
+a
+a
+a
+a
+a
+"}
+(16,1,1) = {"
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+"}
+(17,1,1) = {"
+a
+a
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+"}
+(18,1,1) = {"
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+b
+b
+b
+b
+b
+"}
+(19,1,1) = {"
+a
+a
+a
+b
+b
+b
+b
+a
+a
+a
+b
+b
+b
+b
+a
+b
+b
+b
+b
+b
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+b
+b
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
index 74aa1875f96..b6785a746f3 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
@@ -162,7 +162,7 @@
/turf/simulated/floor/mineral/titanium/blue,
/area/ruin/powered)
"I" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/mineral/titanium/blue,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
new file mode 100644
index 00000000000..f29cac64240
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
@@ -0,0 +1,728 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/obj/structure/lattice,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/turf/simulated/wall,
+/area/ruin/unpowered)
+"e" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"f" = (
+/obj/structure/table/wood,
+/obj/item/storage/box/cups,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"g" = (
+/obj/structure/reagent_dispensers/water_cooler/pizzaparty,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"h" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"i" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"j" = (
+/obj/item/reagent_containers/food/snacks/mushroompizzaslice,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"k" = (
+/obj/structure/table/wood,
+/obj/effect/spawner/lootdrop/pizzaparty,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"l" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/structure/table/wood,
+/obj/effect/spawner/lootdrop/pizzaparty,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"m" = (
+/obj/item/chair/wood/wings,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"n" = (
+/obj/structure/glowshroom/single,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"o" = (
+/obj/item/trash/plate,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"p" = (
+/obj/effect/decal/remains/human,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"q" = (
+/obj/item/chair/wood/wings,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"r" = (
+/obj/structure/chair/wood/wings,
+/obj/effect/decal/remains/human,
+/obj/item/clothing/head/festive{
+ desc = "A festive party hat with the name 'timmy' scribbled on the front.";
+ name = "party hat"
+ },
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"s" = (
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"t" = (
+/obj/structure/chair/wood/wings,
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"u" = (
+/obj/structure/glowshroom/single,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"v" = (
+/obj/structure/lattice,
+/obj/item/chair/wood/wings,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"w" = (
+/obj/item/kitchen/utensil/fork,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"x" = (
+/obj/structure/table/wood,
+/obj/effect/spawner/lootdrop/pizzaparty,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"y" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"z" = (
+/obj/structure/table/wood,
+/obj/structure/glowshroom/single,
+/obj/item/a_gift,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"A" = (
+/obj/structure/table/wood,
+/obj/item/trash/plate,
+/obj/item/kitchen/utensil/fork,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"B" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"C" = (
+/obj/structure/chair/wood/wings{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"D" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/margheritaslice,
+/obj/item/trash/plate,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"E" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/meatpizzaslice,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"F" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/sliceable/birthdaycake,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"G" = (
+/obj/structure/table/wood,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"H" = (
+/obj/item/chair/wood/wings,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"I" = (
+/obj/item/kitchen/utensil/fork,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"J" = (
+/obj/structure/glowshroom/single,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"K" = (
+/obj/structure/chair/wood/wings{
+ dir = 1
+ },
+/obj/effect/decal/remains/human,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"L" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"M" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/a_gift,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"N" = (
+/obj/structure/lattice,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"O" = (
+/obj/item/kitchen/knife,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"P" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+"Q" = (
+/turf/simulated/floor/plating{
+ oxygen = 14;
+ nitrogen = 23;
+ temperature = 300
+ },
+/area/ruin/unpowered)
+
+(1,1,1) = {"
+a
+a
+b
+b
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+c
+b
+b
+b
+b
+a
+a
+"}
+(3,1,1) = {"
+b
+b
+b
+b
+b
+b
+b
+b
+c
+c
+e
+e
+c
+c
+b
+b
+b
+a
+"}
+(4,1,1) = {"
+b
+b
+b
+b
+d
+b
+c
+c
+e
+h
+h
+e
+Q
+e
+d
+b
+b
+a
+"}
+(5,1,1) = {"
+a
+b
+b
+b
+d
+b
+m
+e
+w
+h
+w
+h
+h
+e
+d
+b
+b
+b
+"}
+(6,1,1) = {"
+a
+b
+b
+b
+d
+f
+n
+h
+h
+c
+e
+M
+e
+c
+b
+b
+b
+b
+"}
+(7,1,1) = {"
+b
+b
+b
+b
+d
+g
+o
+h
+h
+C
+J
+h
+d
+b
+b
+b
+b
+b
+"}
+(8,1,1) = {"
+b
+b
+b
+b
+e
+h
+p
+q
+x
+D
+K
+M
+d
+b
+b
+b
+b
+b
+"}
+(9,1,1) = {"
+b
+b
+b
+c
+e
+i
+h
+r
+y
+E
+h
+h
+c
+b
+b
+b
+b
+b
+"}
+(10,1,1) = {"
+b
+b
+b
+c
+e
+j
+h
+s
+z
+F
+q
+N
+c
+b
+b
+b
+b
+b
+"}
+(11,1,1) = {"
+b
+b
+b
+b
+e
+e
+h
+t
+A
+G
+q
+h
+c
+b
+b
+b
+b
+b
+"}
+(12,1,1) = {"
+b
+b
+b
+b
+d
+k
+h
+s
+B
+H
+h
+O
+d
+b
+b
+b
+b
+b
+"}
+(13,1,1) = {"
+b
+b
+b
+b
+d
+k
+h
+u
+s
+s
+o
+n
+d
+b
+b
+b
+b
+a
+"}
+(14,1,1) = {"
+b
+b
+b
+b
+d
+l
+i
+h
+e
+I
+L
+P
+d
+b
+b
+b
+b
+a
+"}
+(15,1,1) = {"
+b
+b
+b
+b
+d
+d
+e
+e
+N
+e
+e
+d
+d
+b
+b
+b
+b
+a
+"}
+(16,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+v
+b
+c
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(17,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+"}
+(18,1,1) = {"
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
new file mode 100644
index 00000000000..ff9a27ee711
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
@@ -0,0 +1,304 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"e" = (
+/obj/structure/mirror{
+ pixel_x = -32
+ },
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"f" = (
+/obj/structure/mirror{
+ pixel_x = 32
+ },
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"g" = (
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"j" = (
+/obj/structure/mirror{
+ pixel_x = -32
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"k" = (
+/obj/structure/mirror{
+ pixel_x = 32
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"l" = (
+/obj/structure/mirror{
+ pixel_x = -32
+ },
+/obj/machinery/light/small{
+ brightness_range = 3;
+ dir = 8
+ },
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"m" = (
+/obj/structure/mirror{
+ pixel_x = 32
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"r" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/mineral/silver,
+/area/ruin/powered/pride)
+"G" = (
+/turf/simulated/wall/mineral/diamond,
+/area/ruin/powered/pride)
+"O" = (
+/obj/structure/mirror/magic/pride,
+/turf/simulated/wall/mineral/diamond,
+/area/ruin/powered/pride)
+"Y" = (
+/obj/machinery/door/airlock/diamond,
+/turf/simulated/floor/mineral/silver{
+ blocks_air = 1
+ },
+/area/ruin/powered/pride)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(3,1,1) = {"
+b
+c
+c
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+c
+a
+"}
+(4,1,1) = {"
+c
+c
+G
+G
+G
+j
+e
+e
+l
+e
+e
+l
+e
+e
+l
+e
+e
+G
+c
+a
+"}
+(5,1,1) = {"
+c
+G
+G
+G
+G
+G
+g
+g
+g
+g
+g
+g
+g
+g
+g
+g
+r
+G
+a
+a
+"}
+(6,1,1) = {"
+c
+G
+G
+G
+G
+G
+O
+g
+g
+g
+d
+g
+g
+g
+g
+g
+g
+Y
+a
+a
+"}
+(7,1,1) = {"
+c
+G
+G
+G
+G
+G
+g
+g
+g
+g
+g
+g
+g
+g
+g
+g
+r
+G
+c
+a
+"}
+(8,1,1) = {"
+c
+c
+G
+G
+G
+k
+f
+f
+m
+f
+f
+m
+f
+f
+m
+f
+f
+G
+c
+a
+"}
+(9,1,1) = {"
+b
+c
+c
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+c
+a
+"}
+(10,1,1) = {"
+b
+b
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm
new file mode 100644
index 00000000000..75b4c619445
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm
@@ -0,0 +1,47 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors)
+"b" = (
+/obj/effect/sliding_puzzle/lavaland,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(3,1,1) = {"
+a
+c
+b
+c
+a
+"}
+(4,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(5,1,1) = {"
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm
new file mode 100644
index 00000000000..1b7783388de
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm
@@ -0,0 +1,58 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/obj/mecha/working/ripley/mining{
+ ruin_mecha = 1
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"e" = (
+/obj/item/clothing/shoes/workboots/mining,
+/obj/item/clothing/under/rank/miner/lavaland,
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+
+(1,1,1) = {"
+a
+b
+b
+b
+a
+"}
+(2,1,1) = {"
+b
+c
+b
+c
+b
+"}
+(3,1,1) = {"
+b
+c
+d
+e
+b
+"}
+(4,1,1) = {"
+b
+c
+c
+b
+b
+"}
+(5,1,1) = {"
+b
+b
+b
+b
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
new file mode 100644
index 00000000000..bac638bd3c0
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
@@ -0,0 +1,651 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/unsimulated/wall,
+/area/ruin/unpowered)
+"b" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/ruin/unpowered)
+"c" = (
+/obj/item/paper/fluff/stations/lavaland/sloth/note,
+/turf/simulated/floor/sepia{
+ blocks_air = 0;
+ slowdown = 10
+ },
+/area/ruin/unpowered)
+"d" = (
+/turf/simulated/floor/sepia{
+ blocks_air = 0;
+ slowdown = 10
+ },
+/area/ruin/unpowered)
+"e" = (
+/obj/machinery/door/airlock/wood,
+/turf/simulated/floor/sepia{
+ blocks_air = 0;
+ slowdown = 10
+ },
+/area/ruin/unpowered)
+"f" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/grown/citrus/orange,
+/turf/simulated/floor/sepia{
+ blocks_air = 0;
+ slowdown = 10
+ },
+/area/ruin/unpowered)
+"g" = (
+/obj/structure/bed,
+/obj/item/bedsheet/brown,
+/turf/simulated/floor/sepia{
+ blocks_air = 0;
+ slowdown = 10
+ },
+/area/ruin/unpowered)
+"h" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/sepia{
+ blocks_air = 0;
+ slowdown = 10
+ },
+/area/ruin/unpowered)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(3,1,1) = {"
+a
+b
+a
+a
+a
+a
+a
+a
+b
+a
+"}
+(4,1,1) = {"
+a
+b
+a
+c
+d
+d
+f
+a
+b
+a
+"}
+(5,1,1) = {"
+a
+b
+a
+d
+d
+d
+g
+a
+b
+a
+"}
+(6,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(7,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(8,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(9,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(10,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(11,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(12,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(13,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(14,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(15,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(16,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(17,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(18,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(19,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(20,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(21,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(22,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(23,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(24,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(25,1,1) = {"
+a
+b
+a
+d
+h
+d
+d
+a
+b
+a
+"}
+(26,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(27,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(28,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(29,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(30,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(31,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(32,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(33,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(34,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(35,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(36,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(37,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(38,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(39,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(40,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(41,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(42,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(43,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(44,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(45,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(46,1,1) = {"
+a
+b
+a
+d
+a
+a
+a
+a
+b
+a
+"}
+(47,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(48,1,1) = {"
+a
+b
+a
+a
+a
+a
+d
+a
+b
+a
+"}
+(49,1,1) = {"
+a
+b
+a
+d
+d
+d
+d
+a
+b
+a
+"}
+(50,1,1) = {"
+a
+a
+a
+a
+e
+e
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm
new file mode 100644
index 00000000000..3b2dd805189
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm
@@ -0,0 +1,261 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/obj/structure/sign/mining/survival{
+ pixel_y = -32
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"d" = (
+/turf/simulated/wall/mineral/titanium/survival/pod,
+/area/ruin/powered)
+"e" = (
+/obj/structure/sign/mining/survival{
+ dir = 4;
+ pixel_x = 32
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"f" = (
+/obj/structure/fans,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"g" = (
+/obj/machinery/smartfridge/survival_pod/empty,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"h" = (
+/obj/item/gps/computer,
+/obj/structure/tubes,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"i" = (
+/obj/structure/sign/mining/survival{
+ dir = 8;
+ pixel_x = -32
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"j" = (
+/obj/effect/decal/cleanable/blood/drip,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"k" = (
+/obj/machinery/sleeper/survival_pod,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"l" = (
+/obj/item/pickaxe,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"m" = (
+/obj/structure/bed/pod,
+/obj/item/bedsheet/black,
+/obj/structure/tubes,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"n" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"o" = (
+/obj/effect/decal/cleanable/blood,
+/mob/living/simple_animal/hostile/asteroid/goliath/beast{
+ health = 0
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"p" = (
+/obj/structure/table/survival_pod,
+/obj/item/kitchen/knife/combat/survival,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"q" = (
+/obj/effect/mob_spawn/human/miner/explorer{
+ brute_damage = 150;
+ oxy_damage = 50
+ },
+/obj/effect/decal/cleanable/blood,
+/obj/effect/decal/cleanable/blood/drip,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"r" = (
+/obj/structure/tubes,
+/obj/item/crowbar,
+/obj/effect/decal/cleanable/blood/drip,
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"s" = (
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"t" = (
+/obj/machinery/door/airlock/survival_pod/glass,
+/obj/effect/decal/cleanable/blood/tracks,
+/turf/simulated/floor/pod/dark,
+/area/ruin/powered)
+"v" = (
+/obj/effect/decal/cleanable/blood/drip,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"w" = (
+/obj/structure/sign/mining/survival{
+ pixel_y = 32
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"x" = (
+/obj/structure/sign/mining{
+ pixel_y = 32
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"y" = (
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 4
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+
+(1,1,1) = {"
+a
+a
+a
+b
+b
+b
+b
+b
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+b
+b
+e
+b
+e
+b
+b
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+b
+d
+d
+d
+d
+d
+b
+a
+a
+"}
+(4,1,1) = {"
+a
+b
+c
+d
+f
+k
+p
+d
+w
+b
+b
+"}
+(5,1,1) = {"
+a
+b
+b
+d
+g
+l
+q
+t
+v
+b
+b
+"}
+(6,1,1) = {"
+b
+b
+c
+d
+h
+m
+r
+d
+x
+b
+b
+"}
+(7,1,1) = {"
+a
+b
+b
+d
+d
+d
+d
+d
+y
+j
+j
+"}
+(8,1,1) = {"
+a
+a
+b
+b
+i
+b
+i
+j
+j
+b
+b
+"}
+(9,1,1) = {"
+a
+a
+b
+b
+j
+n
+s
+b
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+a
+a
+o
+j
+b
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
index 13850af5db7..421f2e62b53 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
@@ -5365,6 +5365,7 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
+/obj/item/defibrillator,
/turf/simulated/floor/plasteel/white/side{
dir = 9
},
@@ -5513,6 +5514,9 @@
/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
},
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
new file mode 100644
index 00000000000..0f756d15090
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
@@ -0,0 +1,431 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"b" = (
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"c" = (
+/obj/machinery/abductor/experiment,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"d" = (
+/turf/simulated/wall/mineral/abductor,
+/area/ruin/unpowered)
+"e" = (
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"g" = (
+/obj/machinery/abductor/pad,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"h" = (
+/obj/item/hemostat/alien,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"i" = (
+/obj/effect/mob_spawn/human/abductor,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"j" = (
+/obj/structure/closet/abductor,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"k" = (
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"l" = (
+/obj/machinery/optable/abductor,
+/obj/item/cautery/alien,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"m" = (
+/obj/structure/table/abductor,
+/obj/item/storage/box/alienhandcuffs,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"n" = (
+/obj/item/scalpel/alien,
+/obj/item/surgical_drapes,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"o" = (
+/obj/item/retractor/alien,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"p" = (
+/obj/machinery/abductor/gland_dispenser,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"q" = (
+/obj/structure/table/abductor,
+/obj/item/surgicaldrill/alien,
+/obj/item/circular_saw/alien,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+"r" = (
+/obj/structure/bed/abductor,
+/turf/unsimulated/floor/abductor,
+/area/ruin/unpowered)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+d
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+d
+d
+a
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+d
+c
+e
+k
+a
+p
+d
+a
+"}
+(6,1,1) = {"
+a
+a
+d
+e
+h
+l
+n
+q
+d
+a
+"}
+(7,1,1) = {"
+a
+a
+d
+g
+i
+e
+o
+r
+d
+a
+"}
+(8,1,1) = {"
+a
+a
+d
+d
+j
+m
+j
+d
+d
+a
+"}
+(9,1,1) = {"
+a
+a
+b
+d
+d
+d
+d
+d
+b
+a
+"}
+(10,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(12,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(13,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(14,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(15,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(16,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(17,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(18,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(19,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(20,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(21,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(22,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(23,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(24,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(25,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(26,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(27,1,1) = {"
+a
+a
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(28,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(29,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+a
+a
+"}
+(30,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm
new file mode 100644
index 00000000000..63ffac70fd8
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm
@@ -0,0 +1,1557 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/resin/wall,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"c" = (
+/obj/structure/alien/weeds,
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"d" = (
+/obj/structure/alien/resin/wall,
+/obj/structure/alien/weeds,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"e" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/egg/burst,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"f" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/weeds,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"g" = (
+/obj/structure/alien/weeds,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"i" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"j" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"l" = (
+/obj/structure/alien/weeds/node,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"o" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/item/gun/projectile/automatic/pistol,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"r" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/resin/wall,
+/obj/structure/alien/resin/wall,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"t" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien/sentinel,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"u" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood/gibs,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"v" = (
+/obj/structure/alien/weeds/node,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"w" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/structure/alien/resin/wall,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"y" = (
+/obj/structure/alien/weeds/node,
+/obj/structure/alien/resin/wall,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"z" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/item/clothing/under/rank/security,
+/obj/item/clothing/suit/armor/vest,
+/obj/item/melee/baton/loaded,
+/obj/item/clothing/head/helmet,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"B" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/egg/burst,
+/obj/effect/decal/cleanable/blood/gibs,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"C" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/egg/burst,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"E" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien/drone{
+ plants_off = 1
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"F" = (
+/obj/structure/alien/weeds,
+/mob/living/simple_animal/hostile/alien/queen/large{
+ desc = "A gigantic alien who is in charge of the hive and all of its loyal servants.";
+ name = "alien queen";
+ pixel_x = -16;
+ plants_off = 1
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"G" = (
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"H" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"I" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/effect/decal/cleanable/blood,
+/obj/item/clothing/under/syndicate,
+/obj/item/clothing/glasses/night,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"K" = (
+/obj/structure/alien/weeds/node,
+/mob/living/simple_animal/hostile/alien,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"L" = (
+/obj/structure/alien/weeds/node,
+/mob/living/simple_animal/hostile/alien/drone{
+ plants_off = 1
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"M" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/effect/decal/cleanable/blood/gibs,
+/obj/item/tank/emergency_oxygen,
+/obj/item/clothing/suit/space/syndicate/orange,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/helmet/space/syndicate/orange,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"O" = (
+/obj/structure/alien/weeds/node,
+/turf/template_noop,
+/area/ruin/unpowered/xenonest)
+"Q" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood,
+/mob/living/simple_animal/hostile/alien/drone{
+ plants_off = 1
+ },
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
+"R" = (
+/obj/structure/alien/weeds,
+/turf/template_noop,
+/area/ruin/unpowered/xenonest)
+
+(1,1,1) = {"
+a
+a
+a
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+G
+b
+b
+b
+b
+b
+b
+b
+b
+G
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+G
+G
+b
+g
+e
+e
+b
+g
+g
+b
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+G
+b
+b
+g
+g
+g
+g
+E
+g
+e
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+G
+b
+g
+g
+y
+b
+b
+b
+y
+b
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+G
+b
+g
+g
+w
+g
+F
+u
+I
+b
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+G
+b
+e
+t
+g
+g
+g
+H
+u
+g
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+G
+b
+i
+u
+b
+g
+l
+g
+t
+e
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+G
+b
+o
+v
+g
+b
+g
+g
+e
+b
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+G
+b
+g
+u
+b
+g
+g
+g
+y
+e
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+G
+b
+b
+g
+t
+g
+g
+t
+g
+g
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+a
+"}
+(12,1,1) = {"
+a
+a
+G
+G
+b
+e
+g
+g
+g
+g
+g
+g
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+M
+i
+b
+b
+"}
+(13,1,1) = {"
+a
+a
+a
+G
+b
+b
+g
+g
+l
+g
+g
+b
+b
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+e
+u
+Q
+g
+b
+"}
+(14,1,1) = {"
+a
+a
+a
+G
+G
+b
+b
+g
+g
+g
+b
+b
+G
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+i
+g
+l
+g
+e
+b
+"}
+(15,1,1) = {"
+a
+a
+a
+a
+G
+G
+b
+b
+b
+b
+b
+G
+G
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+g
+g
+g
+i
+b
+b
+"}
+(16,1,1) = {"
+a
+a
+a
+a
+a
+G
+b
+l
+l
+b
+G
+G
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+g
+j
+g
+e
+b
+b
+b
+a
+"}
+(17,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+E
+g
+b
+b
+G
+b
+b
+b
+b
+b
+b
+b
+b
+b
+g
+g
+b
+b
+b
+b
+a
+a
+a
+"}
+(18,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+g
+g
+E
+b
+b
+b
+g
+g
+g
+g
+g
+g
+b
+b
+g
+b
+b
+a
+a
+a
+a
+a
+a
+"}
+(19,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+b
+g
+g
+g
+b
+g
+g
+c
+g
+g
+g
+l
+g
+g
+g
+b
+a
+a
+a
+a
+a
+a
+a
+"}
+(20,1,1) = {"
+b
+b
+b
+b
+a
+a
+a
+b
+b
+g
+l
+g
+g
+g
+b
+b
+b
+b
+g
+g
+g
+b
+b
+a
+a
+a
+a
+a
+a
+a
+"}
+(21,1,1) = {"
+b
+e
+i
+b
+b
+b
+b
+b
+b
+g
+g
+g
+g
+b
+b
+a
+a
+b
+b
+g
+g
+b
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(22,1,1) = {"
+d
+f
+j
+g
+b
+b
+g
+g
+g
+g
+g
+g
+b
+b
+a
+a
+a
+b
+g
+g
+g
+b
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(23,1,1) = {"
+d
+g
+e
+l
+g
+g
+g
+b
+b
+g
+b
+b
+b
+a
+a
+a
+a
+b
+g
+g
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(24,1,1) = {"
+b
+b
+i
+i
+b
+b
+b
+b
+b
+g
+b
+a
+a
+a
+a
+a
+a
+b
+g
+g
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(25,1,1) = {"
+a
+b
+b
+b
+b
+a
+a
+a
+b
+E
+b
+b
+a
+a
+a
+a
+a
+b
+g
+L
+b
+b
+b
+a
+a
+a
+a
+a
+a
+b
+"}
+(26,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+b
+g
+g
+b
+a
+a
+a
+a
+a
+b
+g
+g
+g
+g
+b
+b
+b
+a
+a
+a
+b
+b
+"}
+(27,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+b
+b
+g
+g
+b
+b
+a
+a
+a
+a
+b
+b
+g
+g
+g
+g
+g
+b
+b
+b
+b
+y
+g
+"}
+(28,1,1) = {"
+a
+a
+a
+a
+a
+b
+b
+B
+g
+g
+l
+e
+b
+a
+a
+a
+b
+b
+g
+g
+b
+b
+g
+g
+g
+b
+O
+R
+g
+g
+"}
+(29,1,1) = {"
+a
+a
+a
+a
+a
+b
+z
+C
+j
+g
+e
+i
+b
+a
+a
+a
+b
+g
+g
+b
+b
+b
+b
+g
+l
+b
+O
+R
+g
+g
+"}
+(30,1,1) = {"
+a
+a
+a
+a
+a
+b
+i
+u
+g
+i
+i
+b
+b
+a
+a
+a
+b
+g
+b
+b
+a
+a
+b
+b
+b
+b
+b
+y
+g
+g
+"}
+(31,1,1) = {"
+a
+a
+a
+a
+a
+b
+b
+b
+g
+b
+b
+b
+a
+a
+a
+a
+b
+g
+b
+b
+a
+a
+a
+a
+a
+a
+a
+b
+g
+g
+"}
+(32,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+a
+b
+g
+g
+b
+a
+a
+a
+a
+a
+a
+a
+b
+g
+g
+"}
+(33,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+a
+b
+b
+l
+b
+a
+a
+a
+a
+a
+a
+b
+b
+g
+a
+"}
+(34,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+l
+b
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+a
+b
+a
+a
+a
+"}
+(35,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(36,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+a
+b
+b
+g
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(37,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+b
+g
+b
+a
+a
+a
+a
+a
+b
+b
+g
+g
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(38,1,1) = {"
+a
+a
+a
+a
+a
+a
+b
+b
+g
+b
+b
+b
+b
+b
+b
+b
+g
+g
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(39,1,1) = {"
+a
+a
+a
+a
+a
+b
+b
+g
+g
+e
+b
+b
+g
+g
+K
+g
+g
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(40,1,1) = {"
+a
+a
+a
+a
+a
+b
+i
+E
+g
+g
+g
+g
+g
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(41,1,1) = {"
+a
+a
+a
+a
+b
+b
+e
+g
+l
+g
+e
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(42,1,1) = {"
+a
+a
+a
+a
+b
+e
+g
+g
+i
+i
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(43,1,1) = {"
+a
+a
+a
+a
+r
+b
+b
+b
+b
+b
+b
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict4.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict4.dmm
index 9c29f154adb..1c7d14bd6fa 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/derelict4.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict4.dmm
@@ -25,16 +25,16 @@
/turf/simulated/floor/mineral/titanium/blue,
/area/ruin/unpowered)
"i" = (
-/obj/structure/chair,
/obj/structure/window/reinforced{
tag = "icon-rwindow (WEST)";
icon_state = "rwindow";
dir = 8
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/mineral/titanium/blue,
/area/ruin/unpowered)
"j" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/mineral/titanium/blue,
/area/ruin/unpowered)
"k" = (
@@ -54,9 +54,7 @@
/turf/simulated/floor/plating/airless,
/area/ruin/unpowered)
"n" = (
-/obj/structure/chair{
- tag = "icon-chair (WEST)";
- icon_state = "chair";
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plating/airless,
@@ -71,26 +69,24 @@
/area/ruin/unpowered)
"q" = (
/obj/item/shard,
-/obj/structure/chair{
- tag = "icon-chair (WEST)";
- icon_state = "chair";
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/mineral/titanium/blue,
/area/ruin/unpowered)
"r" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/window/reinforced{
tag = "icon-rwindow (WEST)";
icon_state = "rwindow";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/floor/mineral/titanium/blue,
/area/ruin/unpowered)
"s" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/plating/airless,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm
index fd6bd8d85fe..a993ab96190 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm
@@ -155,7 +155,7 @@
},
/area/ruin/powered)
"v" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -205,7 +205,7 @@
},
/area/ruin/powered)
"B" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
tag = "icon-floor5";
icon_state = "floor5"
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
index 02ee81bf42d..ae055f8bc63 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm
@@ -56,9 +56,7 @@
/turf/simulated/shuttle/floor,
/area/ruin/powered)
"m" = (
-/obj/structure/chair/office/dark{
- tag = "icon-officechair_dark (NORTH)";
- icon_state = "officechair_dark";
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
index a59e8dad0a9..3ba27975660 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
@@ -781,8 +781,8 @@
/turf/simulated/floor/plating,
/area/ruin/space/ancientstation/deltacorridor)
"ck" = (
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"cl" = (
/obj/structure/transit_tube/station/reverse,
@@ -1819,8 +1819,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"eL" = (
/obj/machinery/light{
@@ -3002,8 +3002,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"hg" = (
/obj/effect/decal/cleanable/dirt,
@@ -3130,8 +3130,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"ht" = (
/obj/structure/cable{
@@ -3310,8 +3310,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"hK" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
@@ -3722,8 +3722,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"iC" = (
/obj/structure/cable{
@@ -3831,8 +3831,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/simulated/floor/plating,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating,
/area/template_noop)
"iP" = (
/obj/structure/cable/yellow{
@@ -3840,8 +3840,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/simulated/floor/plating,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating,
/area/template_noop)
"iQ" = (
/obj/machinery/light/small,
@@ -4135,8 +4135,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"jx" = (
/obj/effect/decal/cleanable/cobweb,
@@ -4488,8 +4488,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/template_noop)
"km" = (
/obj/structure/cable{
@@ -4584,8 +4584,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/plating,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating,
/area/template_noop)
"kw" = (
/obj/machinery/atmospherics/unary/vent_pump{
@@ -4816,8 +4816,8 @@
/turf/simulated/floor/plating,
/area/ruin/space/ancientstation/deltacorridor)
"kZ" = (
-/turf/simulated/floor/plating,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating,
/area/template_noop)
"la" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
index 846ac5068d9..108c8103975 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm
@@ -64,7 +64,7 @@
},
/area/ruin/powered)
"ao" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
index e3d578503f8..67adb3e7467 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
@@ -55,7 +55,7 @@
},
/area/ruin/unpowered)
"aj" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/wood,
@@ -314,7 +314,7 @@
},
/area/ruin/unpowered)
"bb" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "chapel"
diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm
index 24f93b0a6ce..5d22afc5fcd 100644
--- a/_maps/map_files/RandomZLevels/academy.dmm
+++ b/_maps/map_files/RandomZLevels/academy.dmm
@@ -36,7 +36,7 @@
/turf/simulated/floor/carpet,
/area/awaymission/academy/headmaster)
"ai" = (
-/obj/structure/chair/office/light{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/carpet,
@@ -152,7 +152,9 @@
/turf/simulated/floor/carpet,
/area/awaymission/academy/headmaster)
"ax" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/floor/carpet,
/area/awaymission/academy/headmaster)
"ay" = (
@@ -4558,6 +4560,12 @@
},
/turf/simulated/floor/plating,
/area/awaymission/academy/academygate)
+"vq" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/floor/carpet,
+/area/awaymission/academy/headmaster)
(1,1,1) = {"
aa
@@ -13944,9 +13952,9 @@ ab
aj
ao
au
-ax
+vq
ah
-ax
+vq
ah
ah
ah
diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm
index 4544e3830d8..2931d7175b7 100644
--- a/_maps/map_files/RandomZLevels/beach.dmm
+++ b/_maps/map_files/RandomZLevels/beach.dmm
@@ -1265,7 +1265,7 @@
icon_state = "tube1";
dir = 8
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -1275,7 +1275,7 @@
dir = 4;
icon_state = "tube1"
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -1323,7 +1323,7 @@
},
/area/awaymission/beach)
"dZ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -1336,7 +1336,7 @@
},
/area/awaymission/beach)
"eb" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -1371,7 +1371,7 @@
/turf/simulated/shuttle/floor,
/area/awaymission/beach)
"ei" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
diff --git a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
index 4938088d57f..77e09164224 100644
--- a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
+++ b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
@@ -1934,7 +1934,7 @@
/turf/simulated/floor/plating,
/area/awaymission/BMPship/Aft)
"eV" = (
-/obj/structure/chair/office{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/RandomZLevels/centcomAway.dmm b/_maps/map_files/RandomZLevels/centcomAway.dmm
index 98288fe54da..e64c25da157 100644
--- a/_maps/map_files/RandomZLevels/centcomAway.dmm
+++ b/_maps/map_files/RandomZLevels/centcomAway.dmm
@@ -1059,8 +1059,8 @@
pixel_x = 0;
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/awaymission/centcomAway/maint)
"cO" = (
/obj/structure/cable{
@@ -1082,8 +1082,8 @@
pixel_x = 0;
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/awaymission/centcomAway/maint)
"cP" = (
/obj/structure/table/reinforced,
@@ -1105,7 +1105,7 @@
},
/area/awaymission/centcomAway/hangar)
"cS" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -1166,7 +1166,7 @@
},
/area/awaymission/centcomAway/cafe)
"da" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -1215,7 +1215,7 @@
},
/area/awaymission/centcomAway/hangar)
"dg" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -1310,13 +1310,13 @@
},
/area/awaymission/centcomAway/hangar)
"dr" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light{
icon_state = "tube1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/awaymission/centcomAway/hangar)
"ds" = (
@@ -1551,8 +1551,8 @@
pixel_x = 0;
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/awaymission/centcomAway/maint)
"dV" = (
/obj/structure/closet/crate,
@@ -1646,8 +1646,8 @@
pixel_y = 0;
tag = ""
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/awaymission/centcomAway/maint)
"ei" = (
/obj/structure/table,
@@ -1694,8 +1694,8 @@
"eo" = (
/obj/structure/cable,
/obj/machinery/power/tracker,
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/awaymission/centcomAway/maint)
"ep" = (
/obj/structure/table,
@@ -1972,7 +1972,7 @@
/turf/simulated/shuttle/floor,
/area/awaymission/centcomAway/hangar)
"fc" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/awaymission/centcomAway/hangar)
"fd" = (
@@ -2368,13 +2368,6 @@
dir = 5
},
/area/awaymission/centcomAway/general)
-"gb" = (
-/obj/structure/chair{
- dir = 4;
- name = "Prosecution"
- },
-/turf/simulated/shuttle/floor,
-/area/awaymission/centcomAway/hangar)
"gc" = (
/turf/simulated/floor/plasteel{
dir = 9;
@@ -2967,6 +2960,9 @@
/obj/item/radio/intercom{
pixel_y = 25
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/awaymission/centcomAway/hangar)
"hF" = (
@@ -4076,7 +4072,7 @@
/turf/simulated/floor/plating,
/area/awaymission/centcomAway/hangar)
"kb" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/mob/living/simple_animal/hostile/russian/ranged{
@@ -6814,6 +6810,15 @@
icon_state = "dark"
},
/area/awaymission/centcomAway/thunderdome)
+"Di" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor,
+/area/awaymission/centcomAway/hangar)
(1,1,1) = {"
aa
@@ -11426,7 +11431,7 @@ gX
gX
gX
bP
-dg
+Di
bP
oc
aW
@@ -12205,7 +12210,7 @@ jz
gX
gX
bP
-dg
+Di
bP
gX
gX
@@ -12324,7 +12329,7 @@ bY
cq
ei
bO
-gb
+dg
cq
hH
fA
diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm
index 3d8d1868c2c..fe5445dc8c3 100644
--- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm
@@ -5927,7 +5927,7 @@
desc = "Oh no, seven years of bad luck!";
icon_state = "mirror_broke";
pixel_x = 28;
- shattered = 1
+ broken = 1
},
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
@@ -8413,12 +8413,12 @@
name = "MO19 Arrivals"
})
"mb" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light/small{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/awaycontent/a1{
has_gravity = 1;
@@ -8431,7 +8431,7 @@
name = "MO19 Arrivals"
})
"md" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -8592,12 +8592,12 @@
name = "MO19 Arrivals"
})
"mr" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/light/small{
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor2"
},
@@ -8623,12 +8623,12 @@
name = "MO19 Arrivals"
})
"mu" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/landmark{
name = "awaystart"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/awaycontent/a1{
has_gravity = 1;
@@ -8965,10 +8965,10 @@
name = "MO19 Arrivals"
})
"mX" = (
-/obj/structure/chair,
/obj/machinery/light/small{
dir = 4
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor2"
},
@@ -9070,10 +9070,10 @@
name = "MO19 Arrivals"
})
"nh" = (
-/obj/structure/chair{
+/obj/machinery/light/small,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/machinery/light/small,
/turf/simulated/shuttle/floor,
/area/awaycontent/a1{
has_gravity = 1;
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 16acaaacc34..17341581c9a 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -219,7 +219,7 @@
},
/area/awaymission/spacebattle/syndicate2)
"aH" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/mob/living/simple_animal/hostile/syndicate,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -361,7 +361,7 @@
},
/area/awaymission/spacebattle/syndicate1)
"ba" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -369,7 +369,7 @@
},
/area/awaymission/spacebattle/syndicate2)
"bb" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -475,7 +475,7 @@
},
/area/awaymission/spacebattle/syndicate3)
"bq" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/mob/living/simple_animal/hostile/syndicate,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -534,7 +534,7 @@
},
/area/awaymission/spacebattle/syndicate1)
"by" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/mob/living/simple_animal/hostile/syndicate,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -648,7 +648,7 @@
/turf/simulated/floor/plating/airless,
/area/awaymission/spacebattle/cruiser)
"bN" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -656,7 +656,7 @@
},
/area/awaymission/spacebattle/cruiser)
"bO" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -1270,7 +1270,9 @@
/turf/simulated/floor/plating,
/area/awaymission/spacebattle/cruiser)
"dJ" = (
-/obj/mecha/working/ripley/firefighter,
+/obj/mecha/working/ripley/firefighter{
+ ruin_mecha = 1
+ },
/turf/simulated/floor/plating,
/area/awaymission/spacebattle/cruiser)
"dK" = (
@@ -1638,7 +1640,7 @@
},
/area/awaymission/spacebattle/syndicate4)
"eQ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/mob/living/simple_animal/hostile/syndicate,
@@ -2419,7 +2421,7 @@
},
/area/awaymission/spacebattle/syndicate7)
"hM" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/mob/living/simple_animal/hostile/syndicate,
@@ -2727,7 +2729,7 @@
},
/area/awaymission/spacebattle/syndicate5)
"iI" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/mob/living/simple_animal/hostile/syndicate,
@@ -2813,7 +2815,7 @@
},
/area/awaymission/spacebattle/syndicate6)
"iW" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/mob/living/simple_animal/hostile/syndicate,
diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm
index 541156ddc57..8394ca1b635 100644
--- a/_maps/map_files/RandomZLevels/spacehotel.dmm
+++ b/_maps/map_files/RandomZLevels/spacehotel.dmm
@@ -4652,16 +4652,16 @@
/turf/simulated/shuttle/floor,
/area/awaymission)
"kQ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
/area/awaymission)
"kR" = (
-/obj/structure/chair{
+/obj/item/paper/hotel_scrap_4,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/item/paper/hotel_scrap_4,
/turf/simulated/shuttle/floor,
/area/awaymission)
"kS" = (
@@ -4709,11 +4709,11 @@
/turf/simulated/shuttle/plating,
/area/space/nearstation)
"la" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/decal/remains/human,
/obj/effect/decal/cleanable/blood/old,
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/awaymission)
"lb" = (
@@ -4741,17 +4741,17 @@
},
/area/awaymission)
"lf" = (
-/obj/structure/chair{
+/obj/effect/decal/remains/human,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/effect/decal/remains/human,
/turf/simulated/shuttle/floor,
/area/awaymission)
"lg" = (
-/obj/structure/chair{
+/obj/effect/decal/cleanable/blood/old,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/effect/decal/cleanable/blood/old,
/turf/simulated/shuttle/floor,
/area/awaymission)
"lh" = (
diff --git a/_maps/map_files/RandomZLevels/stationCollision.dmm b/_maps/map_files/RandomZLevels/stationCollision.dmm
index 2f225fea612..8910fa36aaa 100644
--- a/_maps/map_files/RandomZLevels/stationCollision.dmm
+++ b/_maps/map_files/RandomZLevels/stationCollision.dmm
@@ -1941,7 +1941,7 @@
},
/area/awaymission/research)
"ff" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -1952,7 +1952,7 @@
},
/area/awaymission/syndishuttle)
"fg" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -2381,7 +2381,7 @@
},
/area/awaymission/arrivalblock)
"gc" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -4196,7 +4196,7 @@
/turf/simulated/floor/plasteel,
/area/awaymission/southblock)
"kO" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -4204,13 +4204,13 @@
},
/area/awaymission/arrivalblock)
"kP" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/awaymission/arrivalblock)
"kQ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm
index f5f7d96e4ea..ca6d20a6eba 100644
--- a/_maps/map_files/RandomZLevels/wildwest.dmm
+++ b/_maps/map_files/RandomZLevels/wildwest.dmm
@@ -2612,7 +2612,7 @@
},
/area/awaymission/wwrefine)
"ho" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle{
tag = "icon-floor2";
icon_state = "floor2"
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index bed79c4f587..bd37f2193e5 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -225,7 +225,7 @@
/turf/simulated/shuttle/plating,
/area/shuttle/abandoned)
"aaF" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -413,10 +413,10 @@
},
/area/shuttle/abandoned)
"abe" = (
-/obj/structure/chair{
+/obj/effect/decal/remains/human,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/effect/decal/remains/human,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -512,13 +512,13 @@
/area/shuttle/abandoned)
"abr" = (
/obj/item/shard,
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/abandoned)
"abs" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -811,7 +811,7 @@
},
/area/shuttle/syndicate)
"ace" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -1060,7 +1060,7 @@
},
/area/security/armoury)
"acI" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -1068,7 +1068,7 @@
},
/area/shuttle/syndicate)
"acJ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -3880,11 +3880,13 @@
/turf/simulated/shuttle/plating/vox,
/area/shuttle/vox)
"ahp" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"ahq" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4/vox,
@@ -6976,7 +6978,7 @@
/area/shuttle/vox)
"aml" = (
/obj/item/stack/spacecash/c50,
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor4/vox,
@@ -7419,12 +7421,9 @@
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"amZ" = (
-/obj/item/stack/spacecash/c200,
-/obj/item/stack/spacecash/c50,
-/obj/structure/chair{
- dir = 1
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor4/vox,
/area/shuttle/vox)
"ana" = (
@@ -10422,11 +10421,13 @@
/turf/simulated/shuttle/plating,
/area/shuttle/trade/sol)
"arW" = (
-/obj/structure/chair{
- dir = 4
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
},
-/turf/simulated/shuttle/floor,
-/area/shuttle/trade/sol)
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/siberia)
"arX" = (
/obj/structure/cable{
icon_state = "0-2";
@@ -10445,15 +10446,14 @@
/turf/simulated/shuttle/floor,
/area/shuttle/trade/sol)
"arZ" = (
-/obj/machinery/atm{
- pixel_x = 0;
- pixel_y = 32
+/obj/item/stack/spacecash/c200,
+/obj/item/stack/spacecash/c50,
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
},
-/obj/structure/chair{
- dir = 8
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/trade/sol)
+/turf/simulated/shuttle/floor4/vox,
+/area/shuttle/vox)
"asa" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/door/poddoor/shutters{
@@ -11637,12 +11637,10 @@
},
/area/shuttle/siberia)
"atL" = (
-/obj/structure/chair/office/dark{
- dir = 1
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
+/turf/simulated/shuttle/floor,
/area/shuttle/siberia)
"atM" = (
/obj/effect/spawner/window/reinforced,
@@ -12787,17 +12785,19 @@
/turf/simulated/floor/plasteel,
/area/security/permabrig)
"avp" = (
-/obj/structure/chair{
- dir = 4
+/obj/machinery/flasher{
+ id = "gulagshuttleflasher";
+ pixel_x = 25
},
-/obj/item/radio/intercom{
- broadcasting = 0;
- listening = 1;
- name = "station intercom (General)";
- pixel_y = 25
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
/turf/simulated/shuttle/floor,
-/area/shuttle/pod_3)
+/area/shuttle/siberia)
"avq" = (
/turf/simulated/floor/plating,
/area/maintenance/fsmaint)
@@ -12840,18 +12840,19 @@
/turf/simulated/shuttle/floor,
/area/shuttle/pod_3)
"avu" = (
-/obj/structure/chair{
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (WEST)";
+ icon_state = "tube1";
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/machinery/status_display{
- density = 0;
- layer = 4;
- pixel_x = 0;
- pixel_y = 32
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
},
-/obj/machinery/light,
-/turf/simulated/shuttle/floor,
-/area/shuttle/pod_3)
+/area/shuttle/syndicate_sit)
"avv" = (
/obj/machinery/door/airlock/external{
name = "Labor Shuttle Airlock";
@@ -13713,16 +13714,13 @@
},
/area/security/permabrig)
"awP" = (
-/obj/structure/shuttle/engine/propulsion/burst{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/turf/simulated/floor/plating,
-/turf/simulated/shuttle/wall{
- tag = "icon-swall_f6";
- icon_state = "swall_f6";
- dir = 2
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
},
-/area/shuttle/pod_3)
+/area/shuttle/syndicate_sit)
"awQ" = (
/obj/structure/cable{
d1 = 2;
@@ -13956,30 +13954,31 @@
/turf/simulated/shuttle/plating,
/area/shuttle/syndicate_sit)
"axm" = (
-/obj/structure/chair{
- dir = 8
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
-/obj/machinery/flasher{
- id = "gulagshuttleflasher";
- pixel_x = 25
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
},
-/obj/machinery/light{
- dir = 4;
- icon_state = "tube1"
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/siberia)
+/area/shuttle/syndicate_sit)
"axn" = (
/obj/structure/lattice,
/obj/item/stack/cable_coil,
/turf/space,
/area/space/nearstation)
"axo" = (
-/obj/structure/chair{
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (WEST)";
+ icon_state = "tube1";
+ dir = 8
+ },
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/turf/simulated/shuttle/floor,
-/area/shuttle/siberia)
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/syndicate_elite)
"axp" = (
/obj/structure/bookcase,
/obj/item/book/manual/sop_engineering,
@@ -14332,16 +14331,13 @@
},
/area/security/prison/cell_block/A)
"axN" = (
-/obj/structure/shuttle/engine/propulsion/burst{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/turf/simulated/floor/plating,
-/turf/simulated/shuttle/wall{
- tag = "icon-swall_f5";
- icon_state = "swall_f5";
- dir = 2
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
},
-/area/shuttle/pod_3)
+/area/shuttle/syndicate_elite)
"axO" = (
/obj/structure/cable{
d1 = 1;
@@ -15206,9 +15202,6 @@
},
/area/security/interrogation)
"aze" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
icon_state = "tube1";
@@ -15217,34 +15210,26 @@
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
+/area/shuttle/syndicate_sit)
+"azf" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
/area/shuttle/syndicate_elite)
-"azf" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/light/spot{
- tag = "icon-tube1 (WEST)";
- icon_state = "tube1";
- dir = 8
- },
-/obj/structure/window/reinforced,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/syndicate_sit)
"azg" = (
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/syndicate_elite)
"azh" = (
-/obj/structure/chair{
- dir = 8
- },
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
-/area/shuttle/syndicate_elite)
+/area/shuttle/syndicate_sit)
"azi" = (
/obj/machinery/door/window/brigdoor{
dir = 2;
@@ -15824,13 +15809,16 @@
/turf/simulated/floor/plating,
/area/maintenance/abandonedbar)
"aAh" = (
-/obj/structure/chair{
- dir = 4
+/obj/structure/shuttle/engine/propulsion/burst{
+ dir = 8
},
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
+/turf/simulated/floor/plating,
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall_f6";
+ icon_state = "swall_f6";
+ dir = 2
},
-/area/shuttle/syndicate_elite)
+/area/shuttle/pod_3)
"aAi" = (
/obj/machinery/computer/camera_advanced/shuttle_docker/ert,
/turf/simulated/shuttle/floor{
@@ -16433,21 +16421,30 @@
/turf/simulated/floor/plating,
/area/maintenance/abandonedbar)
"aBk" = (
-/obj/structure/chair{
+/obj/item/radio/intercom{
+ broadcasting = 0;
+ listening = 1;
+ name = "station intercom (General)";
+ pixel_y = 25
+ },
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/syndicate_sit)
+/turf/simulated/shuttle/floor,
+/area/shuttle/pod_3)
"aBl" = (
-/obj/structure/chair{
- dir = 8
+/obj/machinery/status_display{
+ density = 0;
+ layer = 4;
+ pixel_x = 0;
+ pixel_y = 32
},
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
-/area/shuttle/syndicate_sit)
+/turf/simulated/shuttle/floor,
+/area/shuttle/pod_3)
"aBm" = (
/obj/item/stack/rods,
/turf/space,
@@ -17326,24 +17323,22 @@
/turf/simulated/floor/plating,
/area/maintenance/abandonedbar)
"aCX" = (
-/obj/structure/chair,
+/obj/structure/shuttle/engine/propulsion/burst{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall_f5";
+ icon_state = "swall_f5";
+ dir = 2
+ },
+/area/shuttle/pod_3)
+"aCY" = (
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/syndicate_elite)
-"aCY" = (
-/obj/machinery/light/spot{
- tag = "icon-tube1 (WEST)";
- icon_state = "tube1";
- dir = 8
- },
-/obj/structure/chair{
- dir = 4
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/syndicate_sit)
"aCZ" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/light{
@@ -21081,9 +21076,6 @@
},
/area/shuttle/pod_1)
"aLb" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -21094,6 +21086,9 @@
dir = 4;
icon_state = "tube1"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_1)
"aLc" = (
@@ -21111,9 +21106,6 @@
},
/area/shuttle/pod_2)
"aLf" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/status_display{
density = 0;
layer = 4;
@@ -21124,6 +21116,9 @@
dir = 4;
icon_state = "tube1"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_2)
"aLg" = (
@@ -21759,14 +21754,14 @@
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"aMp" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
dir = 4;
name = "station intercom (General)";
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_1)
"aMq" = (
@@ -21779,14 +21774,14 @@
/turf/simulated/wall,
/area/hallway/secondary/entry)
"aMt" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
dir = 4;
name = "station intercom (General)";
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/pod_2)
"aMu" = (
@@ -23414,8 +23409,8 @@
},
/area/shuttle/pod_2)
"aPV" = (
-/obj/structure/chair{
- dir = 8
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
/turf/simulated/shuttle/floor,
/area/shuttle/trade/sol)
@@ -28110,13 +28105,13 @@
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"aYL" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light{
dir = 1;
on = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"aYM" = (
@@ -28228,12 +28223,12 @@
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"aYZ" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/landmark{
name = "JoinLate"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"aZa" = (
@@ -30143,11 +30138,15 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"bcK" = (
-/obj/structure/chair/comfy/black{
- dir = 1
+/obj/machinery/atm{
+ pixel_x = 0;
+ pixel_y = 32
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
+/area/shuttle/trade/sol)
"bcL" = (
/obj/machinery/computer/communications,
/turf/simulated/shuttle/floor,
@@ -30160,10 +30159,10 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry)
"bcN" = (
-/obj/structure/chair{
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/machinery/light,
/turf/simulated/shuttle/floor,
/area/shuttle/arrival/station)
"bcO" = (
@@ -31176,11 +31175,11 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"beB" = (
-/obj/structure/chair{
- dir = 1
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
+/area/shuttle/trade/sol)
"beC" = (
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
@@ -32203,23 +32202,39 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry)
"bgo" = (
-/obj/structure/chair{
- dir = 1
+/obj/machinery/flasher{
+ id = "soltraderflash";
+ pixel_y = -28
},
-/obj/structure/closet/walllocker/emerglocker{
- pixel_x = -28
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
+/area/shuttle/trade/sol)
"bgp" = (
-/obj/structure/chair{
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "asteroid";
+ tag = "icon-asteroid (NORTH)"
+ },
+/turf/simulated/floor/plasteel{
+ tag = "icon-siding2 (NORTH)";
+ icon_state = "siding2";
dir = 1
},
-/obj/structure/closet/walllocker/emerglocker{
- pixel_x = 28
+/turf/simulated/floor/plasteel{
+ tag = "icon-siding1 (NORTH)";
+ icon_state = "siding1";
+ dir = 1
},
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
+/area/hydroponics)
"bgq" = (
/obj/machinery/power/apc{
dir = 1;
@@ -33193,21 +33208,56 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"bil" = (
-/obj/structure/chair{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/mob/living/simple_animal/pig,
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "asteroid";
+ tag = "icon-asteroid (NORTH)"
+ },
+/turf/simulated/floor/plasteel{
+ tag = "icon-siding1 (NORTH)";
+ icon_state = "siding1";
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ tag = "icon-siding2 (NORTH)";
+ icon_state = "siding2";
+ dir = 1
+ },
+/area/hydroponics)
"bim" = (
/obj/machinery/light/spot,
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"bin" = (
-/obj/structure/chair{
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 2;
+ icon_state = "asteroid";
+ tag = "icon-asteroid (NORTH)"
+ },
+/turf/simulated/floor/plasteel{
+ tag = "icon-siding1 (NORTH)";
+ icon_state = "siding1";
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ tag = "icon-siding2 (NORTH)";
+ icon_state = "siding2";
+ dir = 1
+ },
+/area/hydroponics)
"bio" = (
/obj/effect/spawner/lootdrop/maintenance,
/obj/structure/cable{
@@ -33755,80 +33805,33 @@
},
/area/hydroponics)
"bje" = (
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/turf/simulated/floor/plasteel{
- dir = 2;
- icon_state = "asteroid";
- tag = "icon-asteroid (NORTH)"
- },
-/turf/simulated/floor/plasteel{
- tag = "icon-siding2 (NORTH)";
- icon_state = "siding2";
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/turf/simulated/floor/plasteel{
- tag = "icon-siding1 (NORTH)";
- icon_state = "siding1";
- dir = 1
- },
-/area/hydroponics)
+/turf/simulated/shuttle/floor,
+/area/shuttle/escape)
"bjf" = (
/obj/structure/reagent_dispensers/beerkeg,
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bjg" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+/obj/structure/closet/walllocker/emerglocker{
+ pixel_x = -28
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/mob/living/simple_animal/pig,
-/turf/simulated/floor/plasteel{
- dir = 2;
- icon_state = "asteroid";
- tag = "icon-asteroid (NORTH)"
- },
-/turf/simulated/floor/plasteel{
- tag = "icon-siding1 (NORTH)";
- icon_state = "siding1";
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/turf/simulated/floor/plasteel{
- tag = "icon-siding2 (NORTH)";
- icon_state = "siding2";
- dir = 1
- },
-/area/hydroponics)
+/turf/simulated/shuttle/floor,
+/area/shuttle/escape)
"bjh" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+/obj/structure/closet/walllocker/emerglocker{
+ pixel_x = 28
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/plasteel{
- dir = 2;
- icon_state = "asteroid";
- tag = "icon-asteroid (NORTH)"
- },
-/turf/simulated/floor/plasteel{
- tag = "icon-siding1 (NORTH)";
- icon_state = "siding1";
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/turf/simulated/floor/plasteel{
- tag = "icon-siding2 (NORTH)";
- icon_state = "siding2";
- dir = 1
- },
-/area/hydroponics)
+/turf/simulated/shuttle/floor,
+/area/shuttle/escape)
"bji" = (
/obj/item/radio/beacon,
/turf/simulated/floor/plasteel,
@@ -34947,16 +34950,10 @@
/turf/simulated/floor/carpet,
/area/crew_quarters/bar)
"blu" = (
-/obj/machinery/status_display{
- pixel_y = 30
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
-/obj/machinery/light/spot{
- tag = "icon-tube1 (NORTH)";
- icon_state = "tube1";
- dir = 1
- },
-/obj/structure/chair,
-/turf/simulated/shuttle/floor4,
+/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"blv" = (
/obj/machinery/status_display{
@@ -35005,12 +35002,10 @@
/turf/simulated/floor/carpet,
/area/chapel/main)
"blA" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/turf/simulated/shuttle/floor{
- icon_state = "floor3"
- },
+/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"blB" = (
/obj/structure/sign/securearea{
@@ -35025,12 +35020,10 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry)
"blC" = (
-/obj/structure/chair{
- dir = 8
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor3"
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
+/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"blD" = (
/obj/structure/grille,
@@ -35780,13 +35773,19 @@
/turf/simulated/floor/plasteel,
/area/hallway/primary/central/nw)
"bmX" = (
-/obj/structure/chair{
- dir = 4
+/obj/machinery/status_display{
+ pixel_y = 30
},
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"bmY" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"bmZ" = (
@@ -35815,12 +35814,9 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bnc" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/structure/closet/walllocker/emerglocker{
- pixel_x = 28
- },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -38803,39 +38799,25 @@
},
/area/maintenance/asmaint2)
"btt" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/item/radio/intercom{
- dir = 8;
- name = "station intercom (General)";
- pixel_x = -28
- },
-/obj/machinery/light/spot{
- tag = "icon-tube1 (WEST)";
- icon_state = "tube1";
- dir = 8
- },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"btu" = (
-/obj/structure/chair{
- dir = 8
+/obj/structure/shuttle/engine/propulsion{
+ dir = 8;
+ icon_state = "propulsion";
+ tag = "icon-propulsion (EAST)"
},
-/obj/structure/closet/walllocker/emerglocker{
- pixel_x = 28
+/turf/space,
+/turf/simulated/shuttle/wall{
+ icon_state = "swall_f6";
+ dir = 2
},
-/obj/machinery/light/spot{
- tag = "icon-tube1 (EAST)";
- icon_state = "tube1";
- dir = 4
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor3"
- },
-/area/shuttle/escape)
+/area/shuttle/transport)
"btv" = (
/turf/simulated/shuttle/floor,
/turf/simulated/shuttle/wall/interior{
@@ -38864,23 +38846,18 @@
/turf/simulated/floor/wood,
/area/crew_quarters/bar)
"bty" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"btz" = (
-/obj/structure/chair,
-/obj/machinery/light/spot{
- tag = "icon-tube1 (NORTH)";
- icon_state = "tube1";
- dir = 1
- },
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"btA" = (
@@ -38906,7 +38883,12 @@
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"btD" = (
-/obj/structure/chair,
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"btE" = (
@@ -40463,16 +40445,21 @@
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bwI" = (
-/obj/structure/chair{
- dir = 1
+/obj/structure/shuttle/engine/propulsion{
+ dir = 8;
+ icon_state = "propulsion";
+ tag = "icon-propulsion (EAST)"
+ },
+/turf/space,
+/turf/simulated/shuttle/wall{
+ icon_state = "swall_f5";
+ dir = 2
},
-/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bwJ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"bwK" = (
@@ -40655,17 +40642,14 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/exit)
"bwX" = (
-/obj/structure/shuttle/engine/propulsion{
- dir = 8;
- icon_state = "propulsion";
- tag = "icon-propulsion (EAST)"
+/obj/structure/closet/walllocker/emerglocker{
+ pixel_x = -28
},
-/turf/space,
-/turf/simulated/shuttle/wall{
- icon_state = "swall_f6";
- dir = 2
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
-/area/shuttle/transport)
+/turf/simulated/shuttle/floor4,
+/area/shuttle/escape)
"bwY" = (
/obj/machinery/power/apc{
dir = 4;
@@ -41451,17 +41435,16 @@
},
/area/hallway/primary/central/ne)
"bys" = (
-/obj/structure/shuttle/engine/propulsion{
- dir = 8;
- icon_state = "propulsion";
- tag = "icon-propulsion (EAST)"
+/obj/structure/closet/walllocker/emerglocker{
+ pixel_x = 28
},
-/turf/space,
-/turf/simulated/shuttle/wall{
- icon_state = "swall_f5";
- dir = 2
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
},
-/area/shuttle/transport)
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/escape)
"byt" = (
/obj/machinery/door/airlock/command/glass{
name = "Bridge";
@@ -42700,20 +42683,12 @@
},
/area/shuttle/specops)
"bAS" = (
-/obj/machinery/recharger/wallcharger{
- pixel_x = 4;
- pixel_y = 32
- },
-/obj/machinery/light/spot{
- tag = "icon-tube1 (NORTH)";
- icon_state = "tube1";
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/structure/chair,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/specops)
+/turf/simulated/shuttle/floor,
+/area/shuttle/transport)
"bAT" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -43168,11 +43143,8 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bBT" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/structure/closet/walllocker/emerglocker{
- pixel_x = -28
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
},
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
@@ -43222,11 +43194,12 @@
},
/area/shuttle/escape)
"bBZ" = (
-/obj/machinery/recharger/wallcharger{
- pixel_x = 4;
- pixel_y = 32
+/obj/machinery/camera{
+ c_tag = "CentComm Special Ops. Shuttle";
+ dir = 2;
+ network = list("ERT","CentComm")
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -43266,12 +43239,11 @@
/turf/unsimulated/floor,
/area/shuttle/specops)
"bCe" = (
-/obj/machinery/camera{
- c_tag = "CentComm Special Ops. Shuttle";
- dir = 2;
- network = list("ERT","CentComm")
+/obj/machinery/recharger/wallcharger{
+ pixel_x = 4;
+ pixel_y = 32
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -44022,14 +43994,16 @@
},
/area/shuttle/escape)
"bDG" = (
-/obj/structure/chair{
- dir = 4
+/obj/machinery/recharger/wallcharger{
+ pixel_x = 4;
+ pixel_y = 32
},
/obj/machinery/light/spot{
- tag = "icon-tube1 (WEST)";
+ tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
- dir = 8
+ dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -44514,8 +44488,10 @@
},
/area/shuttle/specops)
"bEL" = (
-/obj/structure/chair{
- dir = 1
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (WEST)";
+ icon_state = "tube1";
+ dir = 8
},
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -45607,11 +45583,13 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/exit)
"bGJ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/turf/simulated/shuttle/floor4,
-/area/shuttle/escape)
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/specops)
"bGK" = (
/obj/effect/spawner/window/reinforced,
/obj/machinery/door/poddoor{
@@ -50861,6 +50839,24 @@
icon_state = "diagonalWall3"
},
/area/shuttle/administration)
+"bPM" = (
+/obj/item/radio/intercom{
+ dir = 8;
+ name = "station intercom (General)";
+ pixel_x = -28
+ },
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (WEST)";
+ icon_state = "tube1";
+ dir = 8
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/escape)
"bPN" = (
/obj/machinery/door/airlock/external{
id_tag = "s_docking_airlock";
@@ -52059,6 +52055,22 @@
icon_state = "wall3"
},
/area/shuttle/administration)
+"bRH" = (
+/obj/structure/closet/walllocker/emerglocker{
+ pixel_x = 28
+ },
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (EAST)";
+ icon_state = "tube1";
+ dir = 4
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor3"
+ },
+/area/shuttle/escape)
"bRI" = (
/obj/structure/plasticflaps/mining,
/obj/machinery/conveyor/east{
@@ -54136,6 +54148,20 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engine/gravitygenerator)
+"bVk" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor2"
+ },
+/area/shuttle/constructionsite)
+"bVl" = (
+/obj/machinery/light,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor2"
+ },
+/area/shuttle/constructionsite)
"bVm" = (
/obj/machinery/light/spot{
tag = "icon-tube1 (WEST)";
@@ -55105,6 +55131,35 @@
icon_state = "floor4"
},
/area/shuttle/administration)
+"bWO" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (NORTH)";
+ icon_state = "tube1";
+ dir = 1
+ },
+/obj/machinery/door_control{
+ id = "adminshuttleblast";
+ name = "Blast door control";
+ pixel_x = -5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/machinery/door_control{
+ id = "adminshuttleshutters";
+ name = "Shutter control";
+ pixel_x = 5;
+ pixel_y = 35;
+ req_access = list(101);
+ req_access_txt = "0"
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"bWP" = (
/obj/machinery/door/airlock/external{
id_tag = "s_docking_airlock";
@@ -56079,6 +56134,18 @@
icon_state = "floor4"
},
/area/shuttle/administration)
+"bYu" = (
+/obj/item/radio/intercom{
+ broadcasting = 0;
+ listening = 1;
+ name = "station intercom (General)";
+ pixel_y = 25
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/pod_4)
"bYv" = (
/turf/space,
/turf/simulated/shuttle/wall{
@@ -57361,6 +57428,19 @@
"cam" = (
/turf/simulated/wall,
/area/quartermaster/miningdock)
+"can" = (
+/obj/machinery/status_display{
+ density = 0;
+ layer = 4;
+ pixel_x = 0;
+ pixel_y = 32
+ },
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/pod_4)
"cao" = (
/obj/structure/filingcabinet,
/turf/simulated/floor/plasteel,
@@ -58157,13 +58237,34 @@
/turf/simulated/floor/plasteel/airless,
/area/toxins/test_area)
"cbx" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/administration)
+"cby" = (
+/obj/machinery/light/spot{
+ tag = "icon-tube1 (EAST)";
+ icon_state = "tube1";
+ dir = 4
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"cbz" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"cbA" = (
/obj/machinery/door/poddoor/shutters{
density = 0;
@@ -58234,9 +58335,6 @@
d2 = 4;
icon_state = "0-4"
},
-/obj/effect/landmark/start{
- name = "Shaft Miner"
- },
/turf/simulated/floor/plasteel,
/area/quartermaster/miningdock)
"cbI" = (
@@ -59419,6 +59517,12 @@
icon_state = "floor3"
},
/area/shuttle/administration)
+"cdq" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/mining)
"cdr" = (
/obj/machinery/computer/camera_advanced/shuttle_docker/admin{
name = "NTV Argos shuttle navigation computer"
@@ -60195,6 +60299,18 @@
tag = "icon-cafeteria (NORTHEAST)"
},
/area/crew_quarters/hor)
+"ceT" = (
+/obj/structure/window/plasmareinforced{
+ color = "#FF0000";
+ dir = 8
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
"ceU" = (
/obj/structure/shuttle/engine/propulsion,
/turf/simulated/shuttle/plating,
@@ -61155,13 +61271,8 @@
},
/area/shuttle/administration)
"cgA" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/light/spot{
- tag = "icon-tube1 (EAST)";
- icon_state = "tube1";
- dir = 4
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
},
/turf/simulated/shuttle/floor{
icon_state = "floor4"
@@ -62167,22 +62278,30 @@
},
/area/shuttle/administration)
"cil" = (
-/obj/structure/chair{
+/obj/structure/shuttle/engine/propulsion/burst{
dir = 8
},
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
+/turf/simulated/floor/plating,
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall_f6";
+ icon_state = "swall_f6";
+ dir = 2
},
-/area/shuttle/administration)
+/area/shuttle/pod_4)
"cim" = (
/turf/simulated/shuttle/floor,
/area/shuttle/mining)
"cin" = (
-/obj/structure/chair{
- dir = 1
+/obj/structure/shuttle/engine/propulsion/burst{
+ dir = 8
},
-/turf/simulated/shuttle/floor,
-/area/shuttle/mining)
+/turf/simulated/floor/plating,
+/turf/simulated/shuttle/wall{
+ tag = "icon-swall_f5";
+ icon_state = "swall_f5";
+ dir = 2
+ },
+/area/shuttle/pod_4)
"cio" = (
/obj/machinery/door/window/brigdoor/westleft{
color = "#d70000";
@@ -62230,6 +62349,9 @@
/obj/machinery/light{
dir = 8
},
+/obj/effect/landmark/start{
+ name = "Shaft Miner"
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "brown"
@@ -63394,32 +63516,12 @@
icon_state = "floor4"
},
/area/shuttle/administration)
-"ckh" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"cki" = (
/obj/machinery/light/small{
dir = 8
},
/turf/simulated/shuttle/floor,
/area/shuttle/mining)
-"ckj" = (
-/obj/structure/window/plasmareinforced{
- color = "#FF0000";
- dir = 8
- },
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"ckk" = (
/obj/machinery/door/airlock/shuttle{
id_tag = "s_docking_airlock";
@@ -63473,9 +63575,6 @@
pixel_x = 24
},
/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/start{
- name = "Shaft Miner"
- },
/turf/simulated/floor/plasteel,
/area/quartermaster/miningdock)
"ckp" = (
@@ -64847,21 +64946,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/asmaint)
-"cmI" = (
-/obj/structure/disposalpipe/segment,
-/obj/effect/landmark/start{
- name = "Shaft Miner"
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2";
- tag = ""
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/quartermaster/miningdock)
"cmJ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -65489,6 +65573,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/effect/landmark/start{
+ name = "Shaft Miner"
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/miningdock)
"cnT" = (
@@ -65529,6 +65616,9 @@
dir = 5;
level = 1
},
+/obj/effect/landmark/start{
+ name = "Shaft Miner"
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/miningdock)
"cnV" = (
@@ -89541,17 +89631,6 @@
/obj/structure/lattice/catwalk,
/turf/space,
/area/solar/starboard)
-"ddW" = (
-/obj/structure/shuttle/engine/propulsion/burst{
- dir = 8
- },
-/turf/simulated/floor/plating,
-/turf/simulated/shuttle/wall{
- tag = "icon-swall_f6";
- icon_state = "swall_f6";
- dir = 2
- },
-/area/shuttle/pod_4)
"ddX" = (
/obj/machinery/access_button{
command = "cycle_exterior";
@@ -89565,17 +89644,6 @@
/obj/structure/lattice/catwalk,
/turf/space,
/area/space/nearstation)
-"ddY" = (
-/obj/structure/shuttle/engine/propulsion/burst{
- dir = 8
- },
-/turf/simulated/floor/plating,
-/turf/simulated/shuttle/wall{
- tag = "icon-swall_f5";
- icon_state = "swall_f5";
- dir = 2
- },
-/area/shuttle/pod_4)
"ddZ" = (
/obj/structure/reagent_dispensers/watertank,
/obj/structure/cable{
@@ -90760,14 +90828,6 @@
icon_state = "floor2"
},
/area/shuttle/constructionsite)
-"dgw" = (
-/obj/structure/chair{
- dir = 4
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor2"
- },
-/area/shuttle/constructionsite)
"dgx" = (
/obj/machinery/computer/station_alert,
/turf/simulated/shuttle/floor{
@@ -90983,16 +91043,6 @@
/obj/item/caution,
/turf/simulated/floor/plating,
/area/maintenance/asmaint)
-"dhb" = (
-/obj/machinery/flasher{
- id = "soltraderflash";
- pixel_y = -28
- },
-/obj/structure/chair{
- dir = 8
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/trade/sol)
"dhc" = (
/obj/structure/lattice,
/obj/structure/lattice,
@@ -91448,15 +91498,6 @@
icon_state = "showroomfloor"
},
/area/crew_quarters/kitchen)
-"dhW" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/light,
-/turf/simulated/shuttle/floor{
- icon_state = "floor2"
- },
-/area/shuttle/constructionsite)
"dhX" = (
/obj/machinery/computer/atmos_alert,
/turf/simulated/shuttle/floor{
@@ -91714,12 +91755,6 @@
icon_state = "blue"
},
/area/hallway/primary/central/north)
-"diy" = (
-/obj/structure/chair,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/syndicate_sit)
"diz" = (
/obj/machinery/light/small,
/obj/machinery/camera/motion{
@@ -93823,10 +93858,6 @@
/obj/effect/spawner/lootdrop/maintenance,
/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
-"dmo" = (
-/obj/structure/lattice/catwalk,
-/turf/space,
-/area/space/nearstation)
"dmp" = (
/obj/structure/table,
/obj/item/weldingtool,
@@ -95149,6 +95180,10 @@
/obj/item/crowbar,
/turf/simulated/floor/wood,
/area/crew_quarters/captain)
+"doE" = (
+/obj/structure/lattice/catwalk,
+/turf/space,
+/area/space/nearstation)
"doF" = (
/turf/simulated/floor/plating,
/area/toxins/launch{
@@ -95168,18 +95203,6 @@
/obj/machinery/teleport/hub,
/turf/simulated/floor/plating,
/area/turret_protected/aisat_interior)
-"doI" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/item/radio/intercom{
- broadcasting = 0;
- listening = 1;
- name = "station intercom (General)";
- pixel_y = 25
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/pod_4)
"doK" = (
/obj/machinery/light,
/turf/simulated/floor/plating,
@@ -95198,19 +95221,6 @@
},
/turf/simulated/shuttle/floor,
/area/shuttle/pod_4)
-"doM" = (
-/obj/structure/chair{
- dir = 4
- },
-/obj/machinery/status_display{
- density = 0;
- layer = 4;
- pixel_x = 0;
- pixel_y = 32
- },
-/obj/machinery/light,
-/turf/simulated/shuttle/floor,
-/area/shuttle/pod_4)
"doN" = (
/obj/machinery/computer/station_alert,
/obj/machinery/alarm{
@@ -96519,35 +96529,6 @@
/area/toxins/launch{
name = "Toxins Launch Room"
})
-"jnJ" = (
-/obj/machinery/light/spot{
- tag = "icon-tube1 (NORTH)";
- icon_state = "tube1";
- dir = 1
- },
-/obj/machinery/door_control{
- id = "adminshuttleblast";
- name = "Blast door control";
- pixel_x = -5;
- pixel_y = 35;
- req_access = list(101);
- req_access_txt = "0"
- },
-/obj/machinery/door_control{
- id = "adminshuttleshutters";
- name = "Shutter control";
- pixel_x = 5;
- pixel_y = 35;
- req_access = list(101);
- req_access_txt = "0"
- },
-/obj/structure/chair/comfy/black{
- dir = 4
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/administration)
"kOE" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{
dir = 4
@@ -96561,6 +96542,15 @@
},
/turf/space,
/area/space/nearstation)
+"opK" = (
+/obj/effect/landmark/start{
+ name = "Shaft Miner"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/quartermaster/miningdock)
"oZV" = (
/obj/machinery/door/airlock/centcom{
id_tag = "adminshuttle";
@@ -96600,15 +96590,6 @@
icon_state = "floor4"
},
/area/shuttle/administration)
-"qnV" = (
-/obj/effect/landmark/start{
- name = "Shaft Miner"
- },
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "brown"
- },
-/area/quartermaster/miningdock)
"qUv" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging,
/turf/space,
@@ -103755,7 +103736,7 @@ arh
arh
arh
arh
-arW
+aPV
arh
apr
aaa
@@ -104009,9 +103990,9 @@ aaa
apr
arh
aqk
-arW
-arW
-arW
+aPV
+aPV
+aPV
dhe
arh
apr
@@ -104523,9 +104504,9 @@ aaa
apr
arh
aql
-arZ
-aPV
-dhb
+bcK
+beB
+bgo
aql
arh
apr
@@ -105314,9 +105295,9 @@ aaa
aaa
aaa
aaa
-bwX
+btu
bvi
-bys
+bwI
aaa
aaa
aaa
@@ -105570,11 +105551,11 @@ aab
aaa
aaa
aaa
-bwX
+btu
btv
bvj
bwE
-bys
+bwI
aaa
bAQ
bCa
@@ -106092,7 +106073,7 @@ brO
aaa
bAR
bCc
-bDG
+bEL
bEK
bAR
aLd
@@ -106342,9 +106323,9 @@ aSf
boP
aSd
brQ
-btD
+btz
bvj
-bwI
+bwJ
brQ
bjQ
bAR
@@ -106599,15 +106580,15 @@ blE
boL
aSd
brO
-btD
+btz
bvj
-bwI
+bwJ
brO
aLd
bAR
-bCe
+bBZ
bCb
-bEL
+bGJ
bAR
aSd
aaa
@@ -106856,15 +106837,15 @@ bmS
boL
aSd
brO
-btz
+btD
bvj
-bwJ
+bAS
brO
aSd
ahb
bCb
bCb
-bEL
+bGJ
bAR
aSd
aSd
@@ -107113,15 +107094,15 @@ aSf
bsd
aSd
brO
-btD
+btz
bvj
-bwI
+bwJ
brO
aSd
ahb
bCb
bCb
-bEL
+bGJ
bAR
aSd
bGm
@@ -107370,15 +107351,15 @@ aSf
bsh
aSd
brR
-btD
+btz
bvj
-bwI
+bwJ
brR
aSd
bAR
-bBZ
+bCe
bCb
-bEL
+bGJ
bAR
aSd
bGl
@@ -107627,15 +107608,15 @@ brc
bsh
aSd
brO
-btD
+btz
bvj
-bwI
+bwJ
brO
aMs
bAR
-bAS
+bDG
bCb
-bEL
+bGJ
bAR
aSd
bKp
@@ -107848,11 +107829,11 @@ aaa
awq
axj
awM
-aze
-aAh
-aAh
+axo
+azf
+azf
aCT
-aCX
+aCY
afy
aFf
aFe
@@ -107884,9 +107865,9 @@ blE
bsh
aSd
brO
-btz
+btD
bvj
-bwJ
+bAS
brO
aMs
bAT
@@ -108161,7 +108142,7 @@ bRA
bRA
bWJ
bPI
-jnJ
+bWO
cbx
cbx
bPI
@@ -108362,16 +108343,16 @@ aaa
aws
axj
awN
-azh
-azh
-azh
+axN
+axN
+axN
aBD
-aCX
+aCY
aEe
aFf
aFg
aaa
-dmo
+doE
aII
aII
aII
@@ -108681,7 +108662,7 @@ cds
bPI
cgz
cio
-ckj
+ceT
bPI
bYv
aaa
@@ -108885,7 +108866,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aII
aII
aLw
@@ -108938,7 +108919,7 @@ aaa
bPI
bRA
bRA
-ckh
+cgA
bPI
aaa
aaa
@@ -109193,8 +109174,8 @@ aaa
aaa
aaa
bPI
-cgA
-cil
+cby
+cbz
bPI
bYv
aaa
@@ -113498,12 +113479,12 @@ aaa
awv
axl
ayk
-azf
+avu
aEf
-aBk
-aBk
-aCY
-diy
+axm
+axm
+aze
+azh
aFk
aFi
aGn
@@ -114013,11 +113994,11 @@ awx
axl
ayk
azi
+awP
+awP
+awP
ayk
-aBl
-aBl
-ayk
-diy
+azh
aex
aFi
aGn
@@ -114534,9 +114515,9 @@ aaa
aaa
aaa
aaa
-dmo
-dmo
-dmo
+doE
+doE
+doE
aFY
aEb
aIf
@@ -116135,7 +116116,7 @@ ceZ
cgB
cim
cki
-cin
+cdq
cnh
ceZ
aab
@@ -116390,9 +116371,9 @@ aaa
aaa
ceY
cgC
-cin
+cdq
cim
-cin
+cdq
cni
coN
aab
@@ -116649,7 +116630,7 @@ ceZ
cgD
cim
cim
-cin
+cdq
cnj
ceZ
aab
@@ -118191,7 +118172,7 @@ cam
cgH
cit
ckn
-qnV
+opK
cnm
cam
cgQ
@@ -118370,7 +118351,7 @@ atK
auw
avv
awz
-axo
+atL
aym
azk
aAk
@@ -118446,7 +118427,7 @@ cam
cam
cam
cgG
-cir
+cfb
cfb
cnG
cnl
@@ -118623,7 +118604,7 @@ aaa
aaa
aaa
asT
-atL
+arW
aux
avy
awz
@@ -118702,9 +118683,9 @@ cam
cbI
cdy
cff
-cfb
cir
cfb
+cfb
cnS
cno
cam
@@ -118884,7 +118865,7 @@ atJ
auu
avx
awy
-axm
+avp
awz
azk
aAk
@@ -119218,7 +119199,7 @@ cdA
cis
ckq
cls
-cmI
+cls
cnU
cno
cam
@@ -120030,9 +120011,9 @@ cZu
cZu
dcM
dfY
-dgv
-dgv
-dgv
+bVk
+bVk
+bVk
dfY
aaa
aaa
@@ -120287,9 +120268,9 @@ cZu
cZu
dcU
dfZ
-dgw
-dgw
-dhW
+dgv
+dgv
+bVl
dfY
aaa
aaa
@@ -120545,7 +120526,7 @@ dcM
dfd
dfY
dgv
-dgw
+bVk
dgv
dfY
aaa
@@ -129042,9 +129023,9 @@ dfR
dcq
dcq
dcq
-ddW
+cil
doL
-ddY
+cin
dcq
aaa
aaa
@@ -129300,7 +129281,7 @@ dcq
aaa
dcq
dou
-doI
+bYu
dou
dcq
aaa
@@ -129557,7 +129538,7 @@ dcq
aaa
dcq
dou
-doM
+can
dou
dcq
aaa
@@ -130063,7 +130044,7 @@ dkO
dkO
cQZ
cYz
-dmo
+doE
dcq
dfE
dgd
@@ -130319,7 +130300,7 @@ cQZ
cQZ
cQZ
cQZ
-dmo
+doE
aab
dcq
dfD
@@ -130576,7 +130557,7 @@ dkq
dkT
dkT
cQZ
-dmo
+doE
aab
aaa
dmW
@@ -130833,7 +130814,7 @@ dkp
bbO
dlw
cQZ
-dmo
+doE
aab
aaa
dmW
@@ -131090,7 +131071,7 @@ dks
dkT
dkT
cQZ
-dmo
+doE
aab
aab
dmX
@@ -131347,7 +131328,7 @@ cQZ
cQZ
cQZ
cQZ
-dmo
+doE
aab
aaa
dmW
@@ -131604,7 +131585,7 @@ dkw
dkV
dkV
cQZ
-dmo
+doE
aab
aaa
dmW
@@ -131861,7 +131842,7 @@ dku
bdG
dlx
cQZ
-dmo
+doE
aab
aaa
dmW
@@ -132118,11 +132099,11 @@ dkx
dkV
dkV
cQZ
-dmo
-dmo
-dmo
+doE
+doE
+doE
ddC
-dmo
+doE
ddM
ddO
cPw
@@ -132375,7 +132356,7 @@ cQZ
cQZ
cQZ
cQZ
-dmo
+doE
aab
aaa
dmW
@@ -132632,7 +132613,7 @@ aab
aab
aab
aab
-dmo
+doE
aab
aaa
dmW
@@ -132880,16 +132861,16 @@ cSn
cTo
cSn
cQZ
-dmo
-dmo
-dmo
-dmo
-dmo
-dmo
-dmo
-dmo
-dmo
-dmo
+doE
+doE
+doE
+doE
+doE
+doE
+doE
+doE
+doE
+doE
aab
dmB
dmZ
@@ -133137,7 +133118,7 @@ den
deX
dfO
cQZ
-dmo
+doE
aaa
aaa
aaa
@@ -133394,7 +133375,7 @@ dem
cRi
dem
cQZ
-dmo
+doE
aab
alw
alw
@@ -133651,7 +133632,7 @@ dem
deY
dem
cQZ
-dmo
+doE
aab
alw
aab
@@ -133908,7 +133889,7 @@ cQZ
cQZ
cQZ
cQZ
-dmo
+doE
aaa
diu
djd
@@ -135118,7 +135099,7 @@ bbC
aGY
beb
djw
-bje
+bgp
boX
bpH
bqH
@@ -135205,10 +135186,10 @@ dlm
dlm
dlm
dmD
-dmo
-dmo
-dmo
-dmo
+doE
+doE
+doE
+doE
aab
aab
aab
@@ -135375,7 +135356,7 @@ bbh
aGY
beb
dju
-bjg
+bil
bjv
dnD
bmy
@@ -135465,7 +135446,7 @@ dlm
dlm
dnx
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -135632,7 +135613,7 @@ bbh
aGY
beb
djx
-bjh
+bin
bjv
dnE
bmy
@@ -135722,7 +135703,7 @@ dmO
dne
dnI
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -135862,9 +135843,9 @@ atG
auA
axg
axh
-awP
+aAh
avt
-axN
+aCX
atG
aaa
aFK
@@ -135889,7 +135870,7 @@ bbI
aGY
beb
bfH
-bjh
+bin
bjx
bfH
bmy
@@ -135979,7 +135960,7 @@ dlm
dlm
dnx
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -136120,7 +136101,7 @@ axf
dgk
axh
auq
-avp
+aBk
auq
atG
aab
@@ -136146,7 +136127,7 @@ bbV
aGY
beb
bfJ
-bjh
+bin
bjy
bkY
bmy
@@ -136234,9 +136215,9 @@ dlm
dmE
dlm
ddD
-dmo
-dmo
-dmo
+doE
+doE
+doE
aaa
aaa
aaa
@@ -136377,7 +136358,7 @@ azT
azT
axh
auq
-avu
+aBl
auq
aaa
aaa
@@ -136630,9 +136611,9 @@ aaa
aaa
aaa
awl
-dmo
+doE
avM
-dmo
+doE
aus
avw
awm
@@ -139719,7 +139700,7 @@ aab
aqZ
aaa
aab
-dmo
+doE
aHN
aHN
aHN
@@ -139824,8 +139805,8 @@ dia
dcW
bZZ
aaa
-dmo
-dmo
+doE
+doE
cTR
aaa
aaa
@@ -140233,7 +140214,7 @@ aab
aqZ
aaa
aaa
-dmo
+doE
aHN
dof
dog
@@ -142406,7 +142387,7 @@ dnR
dnS
dnX
dom
-dmo
+doE
aab
aaa
aaa
@@ -142663,7 +142644,7 @@ bZZ
bZZ
bZZ
bZZ
-dmo
+doE
aab
aaa
aaa
@@ -149062,7 +149043,7 @@ aaa
aab
aaa
aaa
-dmo
+doE
aab
aaa
aaa
@@ -149319,7 +149300,7 @@ aaa
aab
aaa
aaa
-dmo
+doE
aab
aaa
aaa
@@ -149827,7 +149808,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -150084,7 +150065,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -150287,15 +150268,15 @@ aaa
aaa
aaa
bjC
-bmX
-bBT
+blC
+bwX
bDz
bjC
beC
+bPM
+btt
+btt
btt
-blA
-blA
-blA
bzq
beC
bjC
@@ -150341,7 +150322,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -150544,7 +150525,7 @@ aaa
aYD
bic
bjG
-blu
+bmX
bDz
bDz
bjC
@@ -150598,7 +150579,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -150803,13 +150784,13 @@ bik
bjC
bmY
bDz
-bGJ
+bBT
bjC
beC
-blC
-blC
-blC
-blC
+bnc
+bnc
+bnc
+bnc
beC
beC
bBV
@@ -150855,7 +150836,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -151055,12 +151036,12 @@ aaa
aYD
baW
beA
-bgo
-bil
+bjg
+blu
bjC
bmY
bDz
-bGJ
+bBT
bjC
beC
blD
@@ -151112,7 +151093,7 @@ aaa
aaa
aaa
aaa
-dmo
+doE
aaa
aaa
aaa
@@ -151311,7 +151292,7 @@ aaa
aYD
baW
bcJ
-beB
+bje
beC
beC
bjC
@@ -151320,10 +151301,10 @@ bmQ
bnb
bqo
beC
-blA
-blA
-blA
-blA
+btt
+btt
+btt
+btt
beC
bAP
bBX
@@ -151567,7 +151548,7 @@ aaa
aaa
aYU
baX
-bcK
+bje
beC
beC
beC
@@ -151825,19 +151806,19 @@ aaa
aYH
baY
bcL
-beB
+bje
beC
bim
bjC
-blC
-blC
-blC
-blC
+bnc
+bnc
+bnc
+bnc
beC
-blC
-blC
-blC
-blC
+bnc
+bnc
+bnc
+bnc
beC
bAP
bBX
@@ -152083,8 +152064,8 @@ aaa
aYH
baY
beD
-bgp
-bin
+bjh
+blA
bjJ
blD
bnb
@@ -152343,15 +152324,15 @@ aYU
baY
beC
bjC
-blA
-blA
-blA
-blA
+btt
+btt
+btt
+btt
beC
-blA
-blA
-blA
-blA
+btt
+btt
+btt
+btt
beC
beC
bBY
@@ -152857,15 +152838,15 @@ aaa
aaa
aaa
bjC
-blC
bnc
-blC
-blC
-blC
-btu
-blC
-blC
-blC
+bys
+bnc
+bnc
+bnc
+bRH
+bnc
+bnc
+bnc
beC
beC
bBS
@@ -153064,7 +153045,7 @@ aha
ahZ
aha
aha
-amZ
+arZ
agZ
aaa
aaa
@@ -153822,8 +153803,8 @@ aaa
aaa
agc
agZ
-ahp
-ahp
+amZ
+amZ
agZ
ail
agw
diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index 7a43bfc098b..d04bf394f26 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -3643,14 +3643,14 @@
},
/area/syndicate_mothership)
"jt" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light/small{
tag = "icon-bulb1 (EAST)";
icon_state = "bulb1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -3664,14 +3664,14 @@
/turf/simulated/floor/plating/airless,
/area/syndicate_mothership)
"jw" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/small{
tag = "icon-bulb1 (WEST)";
icon_state = "bulb1";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -7380,9 +7380,8 @@
},
/area/centcom/evac)
"sn" = (
-/obj/structure/chair{
- dir = 4;
- name = "Defense"
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
},
/turf/simulated/shuttle/floor,
/area/centcom/evac)
@@ -12454,26 +12453,32 @@
},
/turf/unsimulated/floor/vox,
/area/vox_station)
+"KA" = (
+/obj/structure/chair/sofa/left,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/escape)
"KR" = (
-/obj/structure/chair{
+/obj/machinery/light/small,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/small,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/assault_pod)
"KW" = (
-/obj/structure/chair,
/obj/machinery/light/small{
dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/assault_pod)
"KX" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -12481,7 +12486,7 @@
},
/area/shuttle/assault_pod)
"KY" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -12582,12 +12587,6 @@
icon_state = "floor4"
},
/area/shuttle/escape)
-"QJ" = (
-/obj/structure/chair/sofa/corner,
-/turf/simulated/shuttle/floor{
- icon_state = "floor4"
- },
-/area/shuttle/escape)
"Rf" = (
/obj/structure/chair{
dir = 1
@@ -12740,7 +12739,7 @@
/turf/simulated/shuttle/floor,
/area/centcom/evac)
"Wk" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -12748,7 +12747,7 @@
},
/area/centcom/evac)
"Wl" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -12756,13 +12755,13 @@
},
/area/centcom/evac)
"WI" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
/area/centcom/evac)
"WU" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/centcom/evac)
"Xj" = (
@@ -41460,7 +41459,7 @@ sq
aN
aN
nV
-QI
+KA
og
og
og
@@ -41717,7 +41716,7 @@ sq
aN
aN
nV
-QJ
+og
og
og
og
diff --git a/_maps/map_files/cyberiad/z3.dmm b/_maps/map_files/cyberiad/z3.dmm
index be3d4769341..26d46280ae3 100644
--- a/_maps/map_files/cyberiad/z3.dmm
+++ b/_maps/map_files/cyberiad/z3.dmm
@@ -353,104 +353,10 @@
},
/turf/simulated/floor/plating,
/area/tcommsat/powercontrol)
-"aI" = (
-/turf/simulated/mineral/random,
-/area/mine/dangerous/explored/golem)
-"aJ" = (
-/turf/simulated/floor/plating/asteroid/airless,
-/area/mine/dangerous/explored/golem)
-"aK" = (
-/turf/simulated/mineral/random/high_chance,
-/area/mine/dangerous/explored/golem)
-"aL" = (
-/turf/space,
-/turf/simulated/shuttle/wall{
- icon_state = "swall_f6";
- dir = 2
- },
-/area/shuttle/freegolem)
-"aM" = (
-/turf/simulated/shuttle/wall{
- tag = "icon-swall12";
- icon_state = "swall12";
- dir = 2
- },
-/area/shuttle/freegolem)
-"aN" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/shuttle{
- id_tag = "s_docking_airlock";
- locked = 1
- },
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
-"aO" = (
-/turf/simulated/shuttle/wall{
- dir = 2;
- icon_state = "swall8";
- tag = "icon-swall12"
- },
-/area/shuttle/freegolem)
-"aP" = (
-/turf/simulated/shuttle/wall{
- icon_state = "swall3";
- dir = 2
- },
-/area/shuttle/freegolem)
-"aQ" = (
-/obj/structure/closet/crate/golemgear,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
-"aR" = (
-/obj/item/storage/toolbox/mechanical,
-/obj/item/reagent_containers/spray/cleaner,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
-"aS" = (
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
"aT" = (
/obj/structure/lattice,
/turf/space,
/area/space/nearstation)
-"aU" = (
-/obj/structure/reagent_dispensers/watertank/high,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
-"aV" = (
-/obj/structure/shuttle/engine/heater{
- icon_state = "heater";
- dir = 4
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/turf/simulated/shuttle/plating,
-/area/shuttle/freegolem)
-"aW" = (
-/obj/structure/shuttle/engine/propulsion{
- dir = 4;
- icon_state = "burst_l"
- },
-/turf/simulated/shuttle/plating,
-/area/shuttle/freegolem)
-"aX" = (
-/obj/machinery/light/small,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
-"aY" = (
-/turf/simulated/shuttle/wall{
- tag = "icon-swall13";
- icon_state = "swall13";
- dir = 2
- },
-/area/shuttle/freegolem)
-"aZ" = (
-/obj/machinery/door/airlock/shuttle,
-/turf/simulated/shuttle/floor{
- icon_state = "floor5"
- },
-/area/shuttle/freegolem)
"ba" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall_s6";
@@ -479,24 +385,6 @@
dir = 2
},
/area/space/nearstation)
-"be" = (
-/turf/simulated/shuttle/wall{
- tag = "icon-swall14";
- icon_state = "swall14";
- dir = 2
- },
-/area/shuttle/freegolem)
-"bf" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
-"bg" = (
-/obj/machinery/door/airlock/shuttle,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bh" = (
-/turf/simulated/wall/mineral/titanium/interior,
-/area/shuttle/freegolem)
"bi" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall7";
@@ -536,33 +424,12 @@
dir = 2
},
/area/space/nearstation)
-"bn" = (
-/obj/machinery/vending/hydroseeds,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bo" = (
-/obj/machinery/vending/hydronutrients,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"bp" = (
/obj/machinery/door/unpowered/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/space/nearstation)
-"bq" = (
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"br" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/shuttle{
- id_tag = "s_docking_airlock";
- locked = 1
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor5"
- },
-/area/shuttle/freegolem)
"bs" = (
/turf/simulated/shuttle/floor{
icon_state = "floor3"
@@ -573,13 +440,6 @@
dir = 2
},
/area/space/nearstation)
-"bt" = (
-/obj/machinery/light{
- dir = 1;
- on = 1
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"bu" = (
/turf/simulated/shuttle/floor{
icon_state = "floor3"
@@ -590,18 +450,6 @@
dir = 2
},
/area/space/nearstation)
-"bv" = (
-/obj/machinery/light{
- dir = 1;
- on = 1
- },
-/obj/effect/landmark/free_golem_spawn,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bw" = (
-/obj/effect/landmark/free_golem_spawn,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"bx" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall_s5";
@@ -623,172 +471,6 @@
dir = 2
},
/area/space/nearstation)
-"bA" = (
-/obj/machinery/vending/coffee/free,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bB" = (
-/turf/simulated/shuttle/wall{
- tag = "icon-swall14";
- icon_state = "swall4";
- dir = 2
- },
-/area/shuttle/freegolem)
-"bC" = (
-/turf/simulated/shuttle/wall{
- dir = 2;
- icon_state = "swallc1";
- tag = "icon-swall12"
- },
-/area/shuttle/freegolem)
-"bD" = (
-/obj/structure/window/full/shuttle{
- icon_state = "16"
- },
-/obj/structure/grille,
-/turf/simulated/shuttle/plating,
-/area/shuttle/freegolem)
-"bE" = (
-/obj/structure/statue/gold/rd{
- name = "statue of the Liberator"
- },
-/obj/structure/window/reinforced{
- dir = 4;
- pixel_x = 0
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor5"
- },
-/area/shuttle/freegolem)
-"bF" = (
-/obj/machinery/mineral/equipment_vendor/golem,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bG" = (
-/obj/item/resonator,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bH" = (
-/obj/machinery/light{
- dir = 8
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bI" = (
-/obj/item/gun/energy/kinetic_accelerator,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bJ" = (
-/obj/structure/window/full/shuttle{
- icon_state = "15"
- },
-/obj/structure/grille,
-/turf/simulated/shuttle/plating,
-/area/shuttle/freegolem)
-"bK" = (
-/obj/structure/window/reinforced{
- dir = 4;
- pixel_x = 0
- },
-/obj/structure/table/wood,
-/obj/item/bedsheet/rd/royal_cape{
- layer = 3;
- pixel_x = 5;
- pixel_y = 9
- },
-/obj/item/book/manual/research_and_development{
- name = "Sacred Text of the Liberator";
- pixel_x = -4;
- pixel_y = 3
- },
-/turf/simulated/shuttle/floor{
- icon_state = "floor5"
- },
-/area/shuttle/freegolem)
-"bL" = (
-/obj/machinery/mineral/ore_redemption/golem,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bM" = (
-/obj/machinery/computer/shuttle/golem_ship,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bN" = (
-/turf/space,
-/turf/simulated/shuttle/wall{
- icon_state = "swall_f5";
- dir = 2
- },
-/area/shuttle/freegolem)
-"bO" = (
-/obj/machinery/light{
- dir = 1
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bP" = (
-/obj/structure/extinguisher_cabinet{
- pixel_y = 30
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bQ" = (
-/turf/simulated/shuttle/wall{
- icon_state = "swallc4"
- },
-/area/shuttle/freegolem)
-"bR" = (
-/obj/machinery/door/airlock/shuttle{
- id_tag = "s_docking_airlock";
- locked = 1
- },
-/obj/structure/fans/tiny,
-/obj/docking_port/mobile{
- dir = 8;
- dwidth = 8;
- height = 20;
- id = "freegolem";
- name = "Free Golem Ship";
- roundstart_move = "freegolem_transit";
- width = 16
- },
-/obj/docking_port/stationary{
- dir = 8;
- dwidth = 8;
- height = 20;
- id = "freegolem_z3";
- name = "Small Asteroid";
- width = 16
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bS" = (
-/obj/machinery/light,
-/obj/structure/chair/comfy/purp{
- icon_state = "comfychair";
- dir = 1
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bT" = (
-/obj/machinery/light/small,
-/obj/structure/extinguisher_cabinet{
- pixel_y = -30
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bU" = (
-/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/shuttle{
- id_tag = "s_docking_airlock";
- locked = 1
- },
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"bV" = (
-/obj/item/resonator/upgraded,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"bW" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -1398,10 +1080,6 @@
},
/turf/simulated/floor/plasteel,
/area/tcommsat/computer)
-"dr" = (
-/obj/machinery/autolathe,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"ds" = (
/obj/machinery/atmospherics/unary/vent_pump{
dir = 4;
@@ -1815,15 +1493,6 @@
},
/turf/simulated/floor/plating,
/area/tcommsat/chamber)
-"ej" = (
-/obj/structure/table/wood,
-/obj/machinery/reagentgrinder,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"ek" = (
-/obj/machinery/computer/arcade/battle,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"el" = (
/obj/machinery/door/window/brigdoor{
dir = 1;
@@ -1877,10 +1546,6 @@
/obj/structure/lattice,
/turf/space,
/area/turret_protected/tcomsat)
-"eq" = (
-/obj/machinery/computer/arcade/orion_trail,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"er" = (
/obj/structure/window/reinforced{
dir = 4
@@ -1958,10 +1623,6 @@
temperature = 80
},
/area/tcommsat/chamber)
-"ex" = (
-/obj/machinery/light,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"ey" = (
/obj/structure/cable{
d1 = 4;
@@ -2005,11 +1666,6 @@
temperature = 80
},
/area/tcommsat/chamber)
-"eA" = (
-/obj/machinery/light,
-/obj/effect/landmark/free_golem_spawn,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"eB" = (
/turf/simulated/floor/bluegrid{
icon_state = "dark";
@@ -2104,10 +1760,6 @@
/obj/structure/lattice,
/turf/space,
/area/turret_protected/tcomsat)
-"eI" = (
-/obj/machinery/vending/snack/free,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"eJ" = (
/obj/structure/cable{
d1 = 1;
@@ -2189,13 +1841,6 @@
},
/turf/simulated/floor/plating/airless,
/area/space/nearstation)
-"eQ" = (
-/obj/structure/table/wood,
-/obj/item/storage/firstaid/brute,
-/obj/item/storage/firstaid/brute,
-/obj/item/storage/firstaid/brute,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"eR" = (
/obj/structure/window/reinforced{
dir = 8
@@ -2465,12 +2110,6 @@
},
/turf/simulated/floor/plating/airless,
/area/space/nearstation)
-"fp" = (
-/obj/structure/table/wood,
-/obj/item/storage/firstaid/adv,
-/obj/item/storage/firstaid/adv,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"fq" = (
/obj/structure/grille,
/obj/structure/cable{
@@ -2579,15 +2218,6 @@
temperature = 80
},
/area/tcommsat/chamber)
-"fy" = (
-/obj/structure/table/wood,
-/obj/structure/table/wood,
-/obj/item/storage/firstaid/fire,
-/obj/item/storage/firstaid/fire,
-/obj/item/storage/firstaid/fire,
-/obj/machinery/light,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
"fz" = (
/obj/machinery/telecomms/processor/preset_four,
/turf/simulated/floor/plasteel{
@@ -2863,18 +2493,6 @@
temperature = 80
},
/area/tcommsat/chamber)
-"fY" = (
-/obj/structure/table/wood,
-/obj/item/areaeditor/golem,
-/obj/item/disk/design_disk/golem_shell,
-/turf/simulated/floor/mineral/titanium/purple,
-/area/shuttle/freegolem)
-"fZ" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
"ga" = (
/obj/machinery/telecomms/server/presets/command,
/turf/simulated/floor/plasteel{
@@ -2899,10 +2517,6 @@
temperature = 80
},
/area/tcommsat/chamber)
-"gc" = (
-/obj/machinery/chem_master,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
"gd" = (
/obj/machinery/camera{
c_tag = "Telecomms Server Room South";
@@ -2924,10 +2538,6 @@
temperature = 80
},
/area/tcommsat/chamber)
-"ge" = (
-/obj/structure/ore_box,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
"gf" = (
/obj/structure/cable{
d1 = 1;
@@ -2971,10 +2581,6 @@
"gj" = (
/turf/simulated/wall/r_wall,
/area/turret_protected/tcomfoyer)
-"gk" = (
-/obj/structure/reagent_dispensers/fueltank,
-/turf/simulated/floor/plating,
-/area/shuttle/freegolem)
"gr" = (
/obj/structure/window/reinforced,
/obj/machinery/light{
@@ -16116,10 +15722,10 @@ aa
aa
aa
aa
-aL
-bD
-bJ
-bN
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16373,10 +15979,10 @@ aa
aa
aa
aa
-aM
-bE
-bK
-aM
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16627,16 +16233,16 @@ aa
aa
aa
aa
-aL
-aP
-br
-aY
-bM
-bS
-be
-br
-aP
-bN
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -16884,16 +16490,16 @@ aa
aa
aa
aa
-aM
-bo
-bq
-aZ
-bq
-bq
-bg
-bq
-eq
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17141,16 +16747,16 @@ aa
aa
aa
aa
-aM
-bn
-bq
-aZ
-bq
-bq
-bg
-bq
-ek
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17395,22 +17001,22 @@ aa
aa
aa
aa
-aL
-aP
-aP
-aY
-bt
-bq
-bh
-bq
-bq
-bh
-bq
-ex
-be
-aP
-aP
-bN
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17652,22 +17258,22 @@ aa
aa
aa
aa
-aM
-aQ
-aS
-bg
-bq
-bq
-bh
-bq
-bq
-bh
-bq
-bq
-bg
-aS
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -17909,22 +17515,22 @@ aa
aa
aa
aa
-aM
-aQ
-aS
-bg
-bq
-bq
-bh
-bO
-bq
-bh
-bq
-bq
-bg
-aS
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18166,22 +17772,22 @@ aa
aa
aa
aa
-aM
-aQ
-aX
-bh
-bv
-bG
-bh
-bq
-bq
-bh
-bG
-eA
-bh
-fZ
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18423,22 +18029,22 @@ aa
aa
aa
aa
-aM
-aQ
-aS
-bh
-bw
-bG
-bh
-bq
-bq
-bh
-bG
-bw
-bh
-aS
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18680,22 +18286,22 @@ aa
aa
aa
aa
-aM
-aQ
-aS
-bh
-bh
-bg
-bh
-bg
-bg
-bh
-bg
-bh
-bh
-aS
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -18937,22 +18543,22 @@ aa
aa
aa
aa
-aM
-aQ
-aX
-bh
-bA
-bq
-bH
-bq
-bq
-bH
-bq
-eI
-bh
-fZ
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -19194,22 +18800,22 @@ aa
aa
aa
aa
-aM
-aQ
-aS
-bg
-bq
-bq
-bq
-bq
-bq
-bq
-bq
-bq
-bg
-aS
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -19451,22 +19057,22 @@ aa
aa
aa
aa
-aM
-aQ
-aS
-bg
-bq
-bq
-bq
-bq
-bq
-bq
-bq
-bq
-bg
-aS
-ge
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -19708,22 +19314,22 @@ aa
aa
aa
aa
-aM
-aR
-aS
-bh
-bq
-bq
-bq
-bq
-bq
-bq
-bq
-eQ
-bh
-aS
-aR
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -19965,22 +19571,22 @@ aa
aa
aa
aa
-aN
-aS
-aX
-bh
-bt
-bq
-bq
-bq
-bq
-bq
-bq
-fy
-bh
-fZ
-aS
-aN
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -20222,22 +19828,22 @@ aa
aa
aa
aa
-aN
-aS
-aS
-bh
-bq
-bq
-bI
-bq
-bq
-bV
-bq
-fp
-bh
-aS
-aS
-aN
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -20479,22 +20085,22 @@ aa
aa
aa
aa
-aM
-aU
-bf
-bh
-bF
-bq
-bL
-bq
-bq
-dr
-ej
-fY
-bh
-gc
-gk
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -20734,24 +20340,24 @@ aa
aa
aa
aa
-aI
-aI
-aM
-aV
-aV
-bB
-aV
-aV
-bB
-bP
-bT
-bB
-aV
-aV
-bB
-aV
-aV
-aM
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -20991,25 +20597,25 @@ aa
aa
aa
aa
-aI
-aI
-aO
-aW
-aW
-aO
-aW
-aW
-bC
-bR
-bU
-bQ
-aW
-aW
-aO
-aW
-aW
-aO
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -21248,25 +20854,25 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aJ
-aJ
-aJ
-aJ
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -21505,25 +21111,25 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aJ
-aJ
-aJ
-aJ
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -21762,25 +21368,25 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -22017,27 +21623,27 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -22274,27 +21880,27 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -22531,26 +22137,26 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aK
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -22788,26 +22394,26 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aK
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -23045,28 +22651,28 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -23302,28 +22908,28 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -23559,28 +23165,28 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -23816,28 +23422,28 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aK
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -24073,26 +23679,26 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -24330,26 +23936,26 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aK
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -24589,27 +24195,27 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aJ
-aJ
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -24847,26 +24453,26 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -25104,26 +24710,26 @@ aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
-aI
aa
aa
aa
aa
-aI
-aI
-aI
-aI
-aI
-aI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm
index 531ef1f4dfb..08d56927445 100644
--- a/_maps/map_files/cyberiad/z4.dmm
+++ b/_maps/map_files/cyberiad/z4.dmm
@@ -845,37 +845,17 @@
/turf/simulated/floor/plating/airless,
/area/constructionsite/hallway/center)
"cl" = (
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
-/area/space/nearstation)
-"cm" = (
/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
/area/space/nearstation)
"cn" = (
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
-"co" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"cp" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"cq" = (
/obj/structure/inflatable/door,
/turf/simulated/floor/plasteel/airless,
/area/constructionsite/hallway/center)
-"cr" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
-"cs" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
"ct" = (
/obj/machinery/power/solar,
/obj/structure/cable{
@@ -892,8 +872,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
"cv" = (
/obj/machinery/power/tracker,
@@ -916,8 +896,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
"cx" = (
/obj/machinery/power/solar,
@@ -955,8 +935,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
"cB" = (
/obj/structure/cable{
@@ -974,8 +954,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
"cC" = (
/turf/simulated/wall/r_wall,
@@ -1045,55 +1025,6 @@
icon_state = "bcircuit"
},
/area/constructionsite/ai)
-"cL" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"cM" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"cN" = (
-/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,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"cO" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"cP" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"cQ" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
"cR" = (
/obj/machinery/light_switch{
pixel_y = -28
@@ -1107,10 +1038,6 @@
icon_state = "dark"
},
/area/engiestation)
-"cT" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"cU" = (
/obj/structure/lattice,
/turf/space,
@@ -1270,10 +1197,6 @@
/obj/structure/grille,
/turf/simulated/floor/plating/airless,
/area/constructionsite/ai)
-"do" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
"dp" = (
/obj/structure/cable{
d1 = 2;
@@ -1285,8 +1208,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
"dq" = (
/obj/structure/cable{
@@ -1305,28 +1228,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"dr" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8";
- pixel_x = 0
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
/area/engiestation/solars)
"ds" = (
/obj/effect/spawner/window/reinforced,
@@ -1437,28 +1340,8 @@
icon_state = "4-8";
pixel_x = 0
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"dz" = (
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8";
- pixel_x = 0
- },
/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
/area/engiestation/solars)
"dA" = (
/obj/structure/cable{
@@ -1471,12 +1354,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"dB" = (
/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
/area/engiestation/solars)
"dC" = (
/obj/machinery/recharge_station,
@@ -1629,8 +1508,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/engiestation/solars)
"dT" = (
/obj/structure/cable{
@@ -1644,23 +1523,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"dU" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8";
- pixel_x = 0
- },
-/obj/structure/cable{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
/area/engiestation/solars)
"dV" = (
/obj/structure/cable{
@@ -1716,32 +1580,8 @@
icon_state = "4-8";
pixel_x = 0
},
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"eb" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8";
- pixel_x = 0
- },
/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
-"ec" = (
-/obj/structure/cable{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
/area/engiestation/solars)
"ed" = (
/obj/item/stack/sheet/metal{
@@ -1880,10 +1720,6 @@
icon_state = "dark"
},
/area/engiestation)
-"em" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/engiestation/solars)
"en" = (
/obj/machinery/vending/tool,
/turf/simulated/floor/plasteel{
@@ -1919,10 +1755,6 @@
},
/turf/simulated/floor/plating/airless,
/area/constructionsite/ai)
-"es" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"et" = (
/obj/machinery/door/airlock/maintenance{
req_access_txt = "0";
@@ -2228,10 +2060,6 @@
icon_state = "carpet"
},
/area/engiestation)
-"fi" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"fj" = (
/obj/machinery/vending/cola,
/turf/simulated/floor/plasteel{
@@ -2530,13 +2358,13 @@
},
/area/engiestation)
"fQ" = (
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/space)
"fR" = (
/obj/item/lighter/zippo,
-/turf/simulated/floor/plating/airless,
/obj/structure/lattice/catwalk,
+/turf/simulated/floor/plating/airless,
/area/space/nearstation)
"fS" = (
/obj/machinery/shower{
@@ -2629,10 +2457,6 @@
icon_state = "delivery"
},
/area/engiestation)
-"gc" = (
-/turf/simulated/floor/plating/airless,
-/obj/structure/lattice/catwalk,
-/area/space/nearstation)
"gd" = (
/obj/structure/lattice,
/obj/structure/disposaloutlet{
@@ -5038,6 +4862,17 @@
},
/turf/simulated/floor/plating/airless,
/area/constructionsite/engineering)
+"zH" = (
+/obj/docking_port/stationary{
+ dir = 8;
+ dwidth = 8;
+ height = 20;
+ id = "freegolem_z4";
+ name = "Near Construction Site";
+ width = 16
+ },
+/turf/space,
+/area/space)
(1,1,1) = {"
aa
@@ -14393,14 +14228,14 @@ aa
aa
ab
cl
-cr
-cr
-cr
-cr
-cr
-cr
-cr
-cr
+cl
+cl
+cl
+cl
+cl
+cl
+cl
+cl
fQ
bC
aa
@@ -14649,7 +14484,7 @@ aa
aa
ab
cl
-es
+cl
ab
ab
ab
@@ -14658,7 +14493,7 @@ ab
ab
aa
aa
-cm
+cl
ab
aa
aa
@@ -14896,16 +14731,16 @@ aa
aa
ab
cl
-cr
-cr
-cr
-cr
-cP
-cs
-do
-cs
-do
-cM
+cl
+cl
+cl
+cl
+cn
+cn
+cn
+cn
+cn
+cn
cC
cF
cF
@@ -14915,7 +14750,7 @@ cF
cC
aa
aa
-cm
+cl
ab
aa
aa
@@ -15152,12 +14987,12 @@ aa
aa
aa
ab
-cm
+cl
ab
ab
aa
ab
-co
+cn
dd
dp
dK
@@ -15409,12 +15244,12 @@ aa
aa
aa
aa
-cm
+cl
ab
ab
ab
ab
-co
+cn
dd
dq
dK
@@ -15666,12 +15501,12 @@ aa
aa
aa
aa
-cm
+cl
aa
ab
ab
ab
-co
+cn
dd
dq
dK
@@ -15923,16 +15758,16 @@ aa
aa
aa
aa
-cm
+cl
ab
ab
ab
-cL
-cM
+cn
+cn
dd
-dr
+dq
dK
-dU
+dT
dK
da
eB
@@ -16181,10 +16016,10 @@ aa
aa
ab
cn
-cs
-cs
-cs
-cM
+cn
+cn
+cn
+cn
cW
cX
ds
@@ -16437,7 +16272,7 @@ aa
aa
aa
ab
-co
+cn
ct
ct
ct
@@ -16698,7 +16533,7 @@ cn
cu
cA
cA
-cN
+cA
cY
df
du
@@ -16951,7 +16786,7 @@ aa
aa
aa
ab
-co
+cn
cv
ct
ct
@@ -17212,7 +17047,7 @@ cn
cw
cB
cB
-cO
+cB
cY
df
dw
@@ -17465,7 +17300,7 @@ aa
aa
aa
ab
-co
+cn
cx
cx
cx
@@ -17723,10 +17558,10 @@ aa
aa
ab
cn
-cs
-cs
-cs
-cP
+cn
+cn
+cn
+cn
cW
cX
ds
@@ -17979,12 +17814,12 @@ aa
aa
aa
aa
-cm
+cl
aa
aa
ab
-cQ
-cP
+cn
+cn
dd
dy
dK
@@ -18236,16 +18071,16 @@ aa
aa
aa
aa
-cm
+cl
aa
ab
ab
ab
-co
+cn
dd
-dz
+dy
dK
-eb
+ea
dK
da
eI
@@ -18493,16 +18328,16 @@ aa
aa
aa
aa
-cm
+cl
ab
ab
ab
ab
-co
+cn
dd
-dz
+dy
dK
-eb
+ea
dK
da
dj
@@ -18750,16 +18585,16 @@ aa
aa
aa
aa
-cm
+cl
ab
ab
aa
ab
-co
+cn
dd
dA
dK
-ec
+cu
dK
da
dj
@@ -19007,17 +18842,17 @@ aa
aa
aa
aa
-cm
+cl
aa
aa
aa
aa
-cQ
-cs
-dB
-cs
-dB
-em
+cn
+cn
+cn
+cn
+cn
+cn
da
eI
da
@@ -19264,7 +19099,7 @@ aa
aa
aa
aa
-cm
+cl
aa
cC
cF
@@ -19285,7 +19120,7 @@ cF
cF
cF
cC
-gc
+cl
aa
aa
aa
@@ -19521,7 +19356,7 @@ aa
aa
aa
aa
-cm
+cl
aa
cC
cG
@@ -19542,7 +19377,7 @@ ab
ab
aa
aa
-cm
+cl
aa
aa
aa
@@ -19778,7 +19613,7 @@ aa
aa
aa
aa
-cm
+cl
aa
cC
cH
@@ -19799,7 +19634,7 @@ aa
ab
ab
aa
-cm
+cl
aa
aa
aa
@@ -20035,7 +19870,7 @@ aa
aa
aa
aa
-cm
+cl
aa
cC
cI
@@ -20056,7 +19891,7 @@ aa
aa
ab
ab
-cm
+cl
ab
aa
aa
@@ -20292,7 +20127,7 @@ aa
aa
aa
ab
-cm
+cl
aa
cC
cF
@@ -20307,13 +20142,13 @@ dE
dj
dE
cC
-fi
-cr
-cr
-cr
-cr
-cr
-es
+cl
+cl
+cl
+cl
+cl
+cl
+cl
bC
aa
aa
@@ -20549,11 +20384,11 @@ aa
aa
aa
ab
-cp
-cr
-cr
-cr
-cT
+cl
+cl
+cl
+cl
+cl
dc
cC
dD
@@ -44048,7 +43883,7 @@ aa
aa
aa
aa
-aa
+zH
aa
aa
aa
diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm
index 86b1bb9cc7f..f47b299a8d7 100644
--- a/_maps/map_files/cyberiad/z6.dmm
+++ b/_maps/map_files/cyberiad/z6.dmm
@@ -15,8 +15,8 @@
},
/area/djstation/solars)
"ad" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/space/nearstation)
"ae" = (
/obj/structure/lattice,
@@ -76,8 +76,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation/solars)
"ao" = (
/obj/structure/grille{
@@ -93,8 +93,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation/solars)
"aq" = (
/obj/structure/cable{
@@ -125,8 +125,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation)
"at" = (
/obj/structure/lattice,
@@ -312,8 +312,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation)
"aR" = (
/obj/structure/cable{
@@ -331,8 +331,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation/solars)
"aS" = (
/obj/structure/cable{
@@ -340,8 +340,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation/solars)
"aT" = (
/obj/structure/cable{
@@ -359,8 +359,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation/solars)
"aU" = (
/obj/item/storage/toolbox/mechanical{
@@ -386,8 +386,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/djstation)
"aW" = (
/turf/simulated/floor/plasteel{
@@ -4602,8 +4602,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"jL" = (
/obj/structure/table/wood,
@@ -6021,7 +6021,7 @@
/area/space/nearstation)
"nh" = (
/obj/item/shard,
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel/airless,
@@ -6263,7 +6263,7 @@
/obj/item/shard{
icon_state = "medium"
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plating/asteroid/airless,
@@ -6693,8 +6693,8 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"oT" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
@@ -7118,14 +7118,14 @@
},
/area/derelict/arrival)
"pV" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/decal/remains/human{
desc = "This guy seemed to have died in terrible way! Half his remains are dust.";
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -7569,7 +7569,7 @@
},
/area/derelict/arrival)
"qT" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -7577,7 +7577,7 @@
},
/area/derelict/arrival)
"qU" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -7751,8 +7751,8 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"rn" = (
/obj/structure/cable{
@@ -7765,8 +7765,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"ro" = (
/obj/structure/window/reinforced,
@@ -7817,9 +7817,7 @@
dir = 1
},
/obj/structure/shuttle/engine/propulsion,
-/turf/simulated/floor/plasteel/airless{
- icon_state = "floorscorched2"
- },
+/turf/simulated/shuttle/plating,
/area/derelict/arrival)
"rt" = (
/obj/structure/window/reinforced,
@@ -7993,8 +7991,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"rG" = (
/obj/structure/closet/crate/secure/loot,
@@ -8029,8 +8027,8 @@
/turf/space,
/area/derelict/crew_quarters)
"rJ" = (
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"rK" = (
/obj/machinery/power/tracker,
@@ -8272,8 +8270,8 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"si" = (
/obj/structure/cable{
@@ -8333,12 +8331,12 @@
},
/area/derelict/crew_quarters)
"sl" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/small{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -9006,8 +9004,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"tF" = (
/obj/structure/sign/greencross,
@@ -9040,8 +9038,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"tI" = (
/obj/structure/cable{
@@ -9563,8 +9561,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"uJ" = (
/turf/space,
@@ -9895,8 +9893,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"vn" = (
/obj/item/shard{
@@ -10462,8 +10460,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"wm" = (
/obj/structure/cable{
@@ -10476,8 +10474,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"wn" = (
/obj/structure/closet/jcloset,
@@ -10502,8 +10500,8 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"wp" = (
/obj/structure/cable{
@@ -10521,8 +10519,8 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"wq" = (
/obj/structure/cable{
@@ -10540,8 +10538,8 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/space,
/obj/structure/lattice/catwalk,
+/turf/space,
/area/derelict/solar_control)
"wr" = (
/obj/docking_port/stationary{
@@ -53934,7 +53932,7 @@ aa
aa
aa
aa
-wr
+aa
aa
aa
aa
@@ -54190,7 +54188,7 @@ aa
aa
aa
aa
-aa
+wr
aa
aa
aa
diff --git a/_maps/map_files/shuttles/admin_admin.dmm b/_maps/map_files/shuttles/admin_admin.dmm
index fda5ff55056..bad43283b9b 100644
--- a/_maps/map_files/shuttles/admin_admin.dmm
+++ b/_maps/map_files/shuttles/admin_admin.dmm
@@ -408,6 +408,9 @@
/obj/structure/chair/comfy/black{
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -416,6 +419,9 @@
/obj/structure/chair/comfy/black{
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -550,14 +556,14 @@
},
/area/shuttle/administration)
"bl" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (EAST)";
icon_state = "tube1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -603,7 +609,7 @@
},
/area/shuttle/administration)
"br" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -643,7 +649,7 @@
color = "#FF0000";
dir = 8
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -651,7 +657,7 @@
},
/area/shuttle/administration)
"bw" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
diff --git a/_maps/map_files/shuttles/admin_hospital.dmm b/_maps/map_files/shuttles/admin_hospital.dmm
index de3cacaf413..c9a41d69463 100644
--- a/_maps/map_files/shuttles/admin_hospital.dmm
+++ b/_maps/map_files/shuttles/admin_hospital.dmm
@@ -237,6 +237,9 @@
icon_state = "chair";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -256,6 +259,9 @@
name = "NHV Asclepius Lobby";
network = list("NHV Asclepius")
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -319,7 +325,7 @@
},
/area/shuttle/administration)
"aG" = (
-/obj/structure/chair/office/light{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -412,6 +418,9 @@
/obj/structure/chair{
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -420,6 +429,9 @@
/obj/structure/chair{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -483,7 +495,7 @@
},
/area/shuttle/administration)
"aY" = (
-/obj/structure/chair/office/light,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -664,6 +676,9 @@
req_access = list(101);
req_access_txt = "0"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -890,6 +905,9 @@
dir = 8
},
/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
diff --git a/_maps/map_files/shuttles/emergency_bar.dmm b/_maps/map_files/shuttles/emergency_bar.dmm
index 0cfb856e28d..4dd07825738 100644
--- a/_maps/map_files/shuttles/emergency_bar.dmm
+++ b/_maps/map_files/shuttles/emergency_bar.dmm
@@ -43,7 +43,7 @@
/turf/simulated/floor/carpet,
/area/shuttle/escape)
"ai" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/carpet,
@@ -75,7 +75,7 @@
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/carpet,
@@ -91,7 +91,7 @@
/turf/simulated/floor/carpet,
/area/shuttle/escape)
"ar" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -123,6 +123,9 @@
/obj/structure/chair{
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"ax" = (
@@ -135,6 +138,7 @@
dir = 1
},
/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"ay" = (
@@ -194,6 +198,9 @@
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aF" = (
@@ -224,10 +231,14 @@
/obj/structure/chair{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aK" = (
/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aL" = (
diff --git a/_maps/map_files/shuttles/emergency_clown.dmm b/_maps/map_files/shuttles/emergency_clown.dmm
index 1207e8a09ff..5942ed33b76 100644
--- a/_maps/map_files/shuttles/emergency_clown.dmm
+++ b/_maps/map_files/shuttles/emergency_clown.dmm
@@ -43,7 +43,7 @@
/turf/simulated/floor/noslip,
/area/shuttle/escape)
"ai" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/plasteel{
@@ -58,14 +58,6 @@
/obj/machinery/computer/station_alert,
/turf/simulated/floor/noslip,
/area/shuttle/escape)
-"al" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/floor/plasteel{
- icon_state = "white"
- },
-/area/shuttle/escape)
"am" = (
/obj/item/toy/snappop/phoenix,
/turf/simulated/floor/plasteel{
@@ -80,12 +72,12 @@
/turf/simulated/floor/noslip,
/area/shuttle/escape)
"ao" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/floor/noslip,
/area/shuttle/escape)
"ap" = (
@@ -95,12 +87,12 @@
},
/area/shuttle/escape)
"aq" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/floor/noslip,
/area/shuttle/escape)
"ar" = (
@@ -114,7 +106,7 @@
/turf/simulated/floor/noslip,
/area/shuttle/escape)
"at" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -129,7 +121,7 @@
},
/area/shuttle/escape)
"av" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -675,7 +667,7 @@ bt
ab
ae
ah
-al
+ai
am
au
ax
@@ -727,7 +719,7 @@ aa
ad
ag
aj
-al
+ai
ap
au
ax
diff --git a/_maps/map_files/shuttles/emergency_cramped.dmm b/_maps/map_files/shuttles/emergency_cramped.dmm
index de7bb67bb6b..5cd443121dc 100644
--- a/_maps/map_files/shuttles/emergency_cramped.dmm
+++ b/_maps/map_files/shuttles/emergency_cramped.dmm
@@ -46,7 +46,7 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"j" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/plating,
@@ -114,7 +114,7 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"s" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plating,
diff --git a/_maps/map_files/shuttles/emergency_cyb.dmm b/_maps/map_files/shuttles/emergency_cyb.dmm
index 3be4c293b80..5f35a77e455 100644
--- a/_maps/map_files/shuttles/emergency_cyb.dmm
+++ b/_maps/map_files/shuttles/emergency_cyb.dmm
@@ -43,7 +43,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ai" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -56,12 +56,6 @@
/obj/machinery/computer/station_alert,
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
-"al" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
"am" = (
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
@@ -73,21 +67,21 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ao" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ap" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aq" = (
@@ -101,7 +95,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"as" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -111,7 +105,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"au" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -142,7 +136,7 @@
},
/area/shuttle/escape)
"az" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor4,
@@ -156,7 +150,7 @@
icon_state = "tube1";
dir = 1
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aB" = (
@@ -171,7 +165,7 @@
},
/area/shuttle/escape)
"aC" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -179,7 +173,7 @@
},
/area/shuttle/escape)
"aD" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -205,12 +199,12 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aG" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aH" = (
@@ -236,12 +230,12 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aL" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -256,13 +250,13 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aN" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aO" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aP" = (
@@ -296,9 +290,6 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aS" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/item/radio/intercom{
dir = 8;
name = "station intercom (General)";
@@ -309,14 +300,14 @@
icon_state = "tube1";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"aT" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
@@ -325,6 +316,9 @@
icon_state = "tube1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -710,7 +704,7 @@ bw
ab
ae
ah
-al
+ai
am
am
av
@@ -762,7 +756,7 @@ aa
ad
ag
aj
-al
+ai
am
at
av
diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm
index 45acf04e012..32b14270d05 100644
--- a/_maps/map_files/shuttles/emergency_dept.dmm
+++ b/_maps/map_files/shuttles/emergency_dept.dmm
@@ -62,7 +62,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"al" = (
-/obj/structure/chair/comfy/blue{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -93,36 +93,6 @@
"aq" = (
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
-"ar" = (
-/obj/structure/chair/comfy/beige{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"as" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"at" = (
-/obj/structure/chair/comfy/red{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"au" = (
-/obj/structure/chair/comfy/teal{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"av" = (
-/obj/structure/chair/comfy/purp{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
"aw" = (
/turf/simulated/shuttle/wall{
icon_state = "swall13";
@@ -143,7 +113,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"az" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aA" = (
@@ -155,7 +125,7 @@
icon_state = "tube1";
dir = 1
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aB" = (
@@ -172,7 +142,7 @@
},
/area/shuttle/escape)
"aD" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -227,7 +197,7 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aK" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel{
icon_state = "cafeteria";
dir = 2
@@ -276,13 +246,13 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aQ" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aR" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/plasteel{
@@ -327,53 +297,53 @@
},
/area/shuttle/escape)
"aW" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aX" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor2"
},
/area/shuttle/escape)
"aY" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"aZ" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"ba" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor5"
},
/area/shuttle/escape)
"bb" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor4,
@@ -405,9 +375,6 @@
},
/area/shuttle/escape)
"bf" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/item/radio/intercom{
dir = 8;
name = "station intercom (General)";
@@ -421,6 +388,9 @@
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"bg" = (
@@ -431,35 +401,35 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bh" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"bi" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"bj" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor2"
},
/area/shuttle/escape)
"bk" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"bl" = (
@@ -473,10 +443,10 @@
},
/area/shuttle/escape)
"bm" = (
-/obj/structure/chair{
+/obj/structure/window/reinforced,
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/structure/window/reinforced,
/turf/simulated/shuttle/floor{
icon_state = "floor2"
},
@@ -490,41 +460,38 @@
},
/area/shuttle/escape)
"bo" = (
-/obj/structure/chair{
+/obj/structure/window/reinforced,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/structure/window/reinforced,
/turf/simulated/shuttle/floor{
icon_state = "floor2"
},
/area/shuttle/escape)
"bp" = (
/obj/structure/window/reinforced,
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"bq" = (
/obj/structure/window/reinforced,
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel,
/area/shuttle/escape)
"br" = (
-/obj/structure/chair{
+/obj/structure/window/reinforced,
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/structure/window/reinforced,
/turf/simulated/shuttle/floor{
icon_state = "floor5"
},
/area/shuttle/escape)
"bs" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
@@ -536,15 +503,18 @@
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"bt" = (
-/obj/structure/chair{
+/obj/structure/window/reinforced,
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
-/obj/structure/window/reinforced,
/turf/simulated/shuttle/floor{
icon_state = "floor5"
},
@@ -593,23 +563,23 @@
},
/area/shuttle/escape)
"bz" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"bA" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/window/reinforced{
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor5"
},
@@ -665,7 +635,7 @@
},
/area/shuttle/escape)
"bF" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -678,7 +648,7 @@
},
/area/shuttle/escape)
"bH" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -849,7 +819,7 @@ bT
aa
ae
ai
-ar
+al
aq
ae
az
@@ -875,7 +845,7 @@ bT
aa
ae
aj
-as
+al
aq
ae
az
@@ -901,7 +871,7 @@ bS
ab
af
ak
-at
+al
aq
ax
aB
@@ -979,7 +949,7 @@ bU
aa
ae
an
-au
+al
aq
ae
aE
@@ -1005,7 +975,7 @@ bP
aa
ae
ao
-av
+al
aq
ae
aC
diff --git a/_maps/map_files/shuttles/emergency_meta.dmm b/_maps/map_files/shuttles/emergency_meta.dmm
index 60b96451ecb..c711de199e7 100644
--- a/_maps/map_files/shuttles/emergency_meta.dmm
+++ b/_maps/map_files/shuttles/emergency_meta.dmm
@@ -138,29 +138,29 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"av" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"aw" = (
-/obj/structure/chair,
/obj/machinery/light{
dir = 1;
on = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"ax" = (
-/obj/structure/chair,
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_x = 0;
pixel_y = 27
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -239,7 +239,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aD" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -295,11 +295,11 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aK" = (
-/obj/structure/chair/office/dark,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aL" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor{
@@ -307,10 +307,10 @@
},
/area/shuttle/escape)
"aM" = (
-/obj/structure/chair{
+/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -377,7 +377,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aQ" = (
-/obj/structure/chair/office/dark{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -420,10 +420,10 @@
},
/area/shuttle/escape)
"aW" = (
-/obj/structure/chair,
/obj/machinery/light{
dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -482,9 +482,6 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"bd" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/item/radio/intercom{
broadcasting = 0;
listening = 1;
@@ -492,6 +489,9 @@
pixel_y = -28
},
/obj/machinery/light,
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -581,7 +581,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"bo" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/plating{
@@ -607,7 +607,7 @@
},
/area/shuttle/escape)
"bs" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -615,7 +615,7 @@
},
/area/shuttle/escape)
"bt" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -693,12 +693,12 @@
},
/area/shuttle/escape)
"bE" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/reagent_dispensers/peppertank{
pixel_x = 31
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -762,12 +762,12 @@
},
/area/shuttle/escape)
"bI" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/plating{
icon_state = "floorgrime"
},
@@ -779,18 +779,18 @@
},
/area/shuttle/escape)
"bK" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
/area/shuttle/escape)
"bL" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
diff --git a/_maps/map_files/shuttles/emergency_mil.dmm b/_maps/map_files/shuttles/emergency_mil.dmm
index de4bba7254b..3741f06c673 100644
--- a/_maps/map_files/shuttles/emergency_mil.dmm
+++ b/_maps/map_files/shuttles/emergency_mil.dmm
@@ -115,25 +115,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"au" = (
-/obj/structure/chair/comfy/brown{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"av" = (
-/obj/structure/chair/comfy/teal{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"aw" = (
-/obj/structure/chair/comfy/red{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"ax" = (
-/obj/structure/chair/comfy/blue{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -142,18 +124,6 @@
/obj/machinery/computer/robotics,
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
-"az" = (
-/obj/structure/chair/comfy/beige{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
-"aA" = (
-/obj/structure/chair/comfy/purp{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
"aB" = (
/turf/simulated/shuttle/wall{
tag = "icon-swall7";
@@ -181,7 +151,7 @@
},
/area/shuttle/escape)
"aF" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aG" = (
@@ -193,7 +163,7 @@
icon_state = "tube1";
dir = 1
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"aH" = (
@@ -335,7 +305,7 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aX" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4,
@@ -469,32 +439,32 @@
icon_state = "tube1";
dir = 8
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bk" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bl" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bm" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (EAST)";
icon_state = "tube1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/floor/plating,
/area/shuttle/escape)
"bn" = (
@@ -503,22 +473,11 @@
icon_state = "tube1";
dir = 8
},
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plating,
/area/shuttle/escape)
-"bo" = (
-/obj/machinery/light/spot{
- tag = "icon-tube1 (EAST)";
- icon_state = "tube1";
- dir = 4
- },
-/obj/structure/chair{
- dir = 8
- },
-/turf/simulated/floor/plating,
-/area/shuttle/escape)
"bp" = (
/obj/machinery/door/airlock/shuttle{
aiControlDisabled = 1;
@@ -629,7 +588,7 @@ aa
ab
af
as
-az
+au
af
aF
aN
@@ -732,7 +691,7 @@ aj
ac
af
al
-av
+au
at
aC
aH
@@ -784,7 +743,7 @@ bz
ac
af
an
-aw
+au
at
aC
aH
@@ -810,7 +769,7 @@ by
ab
af
ao
-ax
+au
at
af
aJ
@@ -889,7 +848,7 @@ aa
ab
af
ay
-aA
+au
af
aM
aT
@@ -901,12 +860,12 @@ bm
bk
bk
bk
-bo
+bm
bi
aI
br
bk
-bo
+bm
aC
bw
"}
diff --git a/_maps/map_files/shuttles/emergency_narnar.dmm b/_maps/map_files/shuttles/emergency_narnar.dmm
index 8d36106c3da..59111b3eeae 100644
--- a/_maps/map_files/shuttles/emergency_narnar.dmm
+++ b/_maps/map_files/shuttles/emergency_narnar.dmm
@@ -22,7 +22,7 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"af" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/floor/engine/cult,
@@ -35,12 +35,6 @@
/obj/machinery/computer/station_alert,
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
-"ai" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/floor/engine/cult,
-/area/shuttle/escape)
"aj" = (
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
@@ -52,21 +46,21 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"al" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"am" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"an" = (
@@ -74,7 +68,7 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"ao" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/engine/cult,
@@ -84,7 +78,7 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"aq" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/engine/cult,
@@ -94,14 +88,14 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"as" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/effect/decal/remains/human{
desc = "This guy seemed to have died in terrible way! Half his remains are dust.";
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"at" = (
@@ -113,23 +107,23 @@
icon_state = "tube1";
dir = 1
},
-/obj/structure/chair,
/obj/effect/decal/remains/human{
desc = "This guy seemed to have died in terrible way! Half his remains are dust.";
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"au" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/effect/decal/remains/human{
desc = "This guy seemed to have died in terrible way! Half his remains are dust.";
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"av" = (
@@ -148,9 +142,6 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"ax" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
@@ -159,6 +150,9 @@
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"ay" = (
@@ -176,20 +170,17 @@
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"aB" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/effect/decal/remains/human{
desc = "This guy seemed to have died in terrible way! Half his remains are dust.";
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"aC" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/item/radio/intercom{
dir = 4;
name = "station intercom (General)";
@@ -200,6 +191,9 @@
icon_state = "remains";
name = "Human remains"
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"aD" = (
@@ -559,7 +553,7 @@ bj
ab
ab
ae
-ai
+af
aj
aj
ab
@@ -611,7 +605,7 @@ aa
ab
ab
ag
-ai
+af
aj
ap
ab
diff --git a/_maps/map_files/shuttles/emergency_old.dmm b/_maps/map_files/shuttles/emergency_old.dmm
index 823d6f36a4f..6956613e0b8 100644
--- a/_maps/map_files/shuttles/emergency_old.dmm
+++ b/_maps/map_files/shuttles/emergency_old.dmm
@@ -43,7 +43,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ai" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -72,12 +72,6 @@
/obj/machinery/computer/station_alert,
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
-"am" = (
-/obj/structure/chair{
- dir = 1
- },
-/turf/simulated/shuttle/floor,
-/area/shuttle/escape)
"an" = (
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
@@ -89,21 +83,21 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ap" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aq" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"ar" = (
@@ -117,7 +111,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"at" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
@@ -127,7 +121,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"av" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -158,7 +152,7 @@
},
/area/shuttle/escape)
"aA" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor{
@@ -177,7 +171,7 @@
/turf/simulated/shuttle/floor,
/area/shuttle/escape)
"aC" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor{
@@ -192,12 +186,12 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aE" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = -28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -210,12 +204,12 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"aG" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -266,9 +260,6 @@
},
/area/shuttle/escape)
"aL" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/item/radio/intercom{
dir = 8;
name = "station intercom (General)";
@@ -279,14 +270,14 @@
icon_state = "tube1";
dir = 8
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
/area/shuttle/escape)
"aM" = (
-/obj/structure/chair{
- dir = 8
- },
/obj/structure/closet/walllocker/emerglocker{
pixel_x = 28
},
@@ -295,6 +286,9 @@
icon_state = "tube1";
dir = 4
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -393,7 +387,7 @@
},
/area/shuttle/escape)
"aZ" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor4,
/area/shuttle/escape)
"ba" = (
@@ -455,7 +449,7 @@
},
/area/shuttle/escape)
"bh" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor4,
@@ -633,7 +627,7 @@ bo
ab
ae
ah
-am
+ai
an
an
aw
@@ -685,7 +679,7 @@ aa
ad
ag
aj
-am
+ai
an
au
aw
diff --git a/_maps/map_files/shuttles/ferry_base.dmm b/_maps/map_files/shuttles/ferry_base.dmm
index a5e2d5aef05..658633d421a 100644
--- a/_maps/map_files/shuttles/ferry_base.dmm
+++ b/_maps/map_files/shuttles/ferry_base.dmm
@@ -45,14 +45,14 @@
},
/area/shuttle/transport)
"h" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"i" = (
@@ -60,16 +60,16 @@
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"j" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"k" = (
-/obj/structure/chair,
/obj/machinery/light/spot{
tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
dir = 1
},
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"l" = (
@@ -126,16 +126,16 @@
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"s" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"t" = (
-/obj/structure/chair{
+/obj/machinery/light/spot,
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
-/obj/machinery/light/spot,
/turf/simulated/shuttle/floor,
/area/shuttle/transport)
"u" = (
diff --git a/_maps/map_files/shuttles/ferry_meat.dmm b/_maps/map_files/shuttles/ferry_meat.dmm
index a4008980d4a..a0935fb04d3 100644
--- a/_maps/map_files/shuttles/ferry_meat.dmm
+++ b/_maps/map_files/shuttles/ferry_meat.dmm
@@ -47,14 +47,14 @@
},
/area/shuttle/transport)
"h" = (
-/obj/structure/chair{
- dir = 4
- },
/obj/machinery/light/spot{
tag = "icon-tube1 (NORTH)";
icon_state = "tube1";
dir = 1
},
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
},
@@ -103,7 +103,7 @@
},
/area/shuttle/transport)
"n" = (
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
},
@@ -114,7 +114,7 @@
icon_state = "tube1";
dir = 1
},
-/obj/structure/chair,
+/obj/structure/chair/comfy/shuttle,
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
},
diff --git a/_maps/map_files/templates/medium_shuttle1.dmm b/_maps/map_files/templates/medium_shuttle1.dmm
index 109f921ed60..90acb3211a1 100644
--- a/_maps/map_files/templates/medium_shuttle1.dmm
+++ b/_maps/map_files/templates/medium_shuttle1.dmm
@@ -332,7 +332,7 @@
name = "Shuttle"
})
"L" = (
-/obj/structure/chair/comfy/black{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/templates/medium_shuttle2.dmm b/_maps/map_files/templates/medium_shuttle2.dmm
index 4a0e2e5e031..8966fc3ac7a 100644
--- a/_maps/map_files/templates/medium_shuttle2.dmm
+++ b/_maps/map_files/templates/medium_shuttle2.dmm
@@ -222,9 +222,7 @@
name = "Shuttle"
})
"B" = (
-/obj/structure/chair/comfy{
- tag = "icon-comfychair (EAST)";
- icon_state = "comfychair";
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/templates/medium_shuttle3.dmm b/_maps/map_files/templates/medium_shuttle3.dmm
index 382a3a3e18d..e87eec1f66b 100644
--- a/_maps/map_files/templates/medium_shuttle3.dmm
+++ b/_maps/map_files/templates/medium_shuttle3.dmm
@@ -187,9 +187,7 @@
name = "Shuttle"
})
"x" = (
-/obj/structure/chair/comfy{
- tag = "icon-comfychair (WEST)";
- icon_state = "comfychair";
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/templates/small_shuttle_1.dmm b/_maps/map_files/templates/small_shuttle_1.dmm
index 92066f62880..a1fae43e707 100644
--- a/_maps/map_files/templates/small_shuttle_1.dmm
+++ b/_maps/map_files/templates/small_shuttle_1.dmm
@@ -59,7 +59,7 @@
},
/area/ruin/powered)
"m" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/simulated/shuttle/floor,
@@ -88,7 +88,7 @@
/turf/simulated/shuttle/floor,
/area/ruin/powered)
"r" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/simulated/shuttle/floor,
@@ -108,7 +108,7 @@
},
/area/ruin/powered)
"u" = (
-/obj/structure/chair{
+/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/simulated/shuttle/floor,
diff --git a/_maps/test_all_maps.dm b/_maps/test_all_maps.dm
index f733f528a24..064bf8defaf 100644
--- a/_maps/test_all_maps.dm
+++ b/_maps/test_all_maps.dm
@@ -24,12 +24,27 @@
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_blooddrunk1.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_blooddrunk2.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_blooddrunk3.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_cube.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_cultaltar.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_dead_ratvar.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_envy.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_fountain_hall.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_gluttony.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_greed.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_hermit.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_hierophant.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_pizzaparty.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_pride.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_puzzle.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_random_ripley.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_seed_vault.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_sloth.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_survivalpod.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_swarmer_crash.dmm"
#include "map_files\RandomRuins\LavaRuins\lavaland_surface_syndicate_base1.dmm"
-
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_ufo_crash.dmm"
+ #include "map_files\RandomRuins\LavaRuins\lavaland_surface_xeno_nest.dmm"
+
// Space Ruins
#include "map_files\RandomRuins\SpaceRuins\abandonedzoo.dmm"
diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index d81ea35e1e9..c542d714ca6 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -231,6 +231,12 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
var/turf/T = loc
level = T.intact ? 2 : 1
add_fingerprint(usr)
+ if(!SSair.initialized) //If there's no atmos subsystem, we can't really initialize pipenets
+ SSair.machinery_to_construct.Add(src)
+ return
+ initialize_atmos_network()
+
+/obj/machinery/atmospherics/proc/initialize_atmos_network()
atmos_init()
var/list/nodes = pipeline_expansion()
for(var/obj/machinery/atmospherics/A in nodes)
diff --git a/code/LINDA/LINDA_fire.dm b/code/LINDA/LINDA_fire.dm
index 5e44dcf20cc..00fddd5b1f0 100644
--- a/code/LINDA/LINDA_fire.dm
+++ b/code/LINDA/LINDA_fire.dm
@@ -189,7 +189,7 @@
T.to_be_destroyed = 0
T.max_fire_temperature_sustained = 0
-/obj/effect/hotspot/Crossed(mob/living/L)
+/obj/effect/hotspot/Crossed(mob/living/L, oldloc)
..()
if(isliving(L))
L.fire_act()
diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm
index a3efbab50d9..308e7a5f6d9 100644
--- a/code/__DEFINES/gamemode.dm
+++ b/code/__DEFINES/gamemode.dm
@@ -6,6 +6,7 @@
#define TARGET_INVALID_UNREACHABLE 5
#define TARGET_INVALID_GOLEM 6
#define TARGET_INVALID_EVENT 7
+#define TARGET_INVALID_IS_TARGET 8
//gamemode istype helpers
#define GAMEMODE_IS_BLOB (SSticker && istype(SSticker.mode, /datum/game_mode/blob))
diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm
index 45953a2e47b..4a1e4f20f98 100644
--- a/code/__DEFINES/hud.dm
+++ b/code/__DEFINES/hud.dm
@@ -55,6 +55,7 @@
#define DATA_HUD_ABDUCTOR 18
#define ANTAG_HUD_DEVIL 19
#define ANTAG_HUD_EVENTMISC 20
+#define ANTAG_HUD_BLOB 21
// Notification action types
#define NOTIFY_JUMP "jump"
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 9cbf3df2e2b..049f2541bc1 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -215,7 +215,12 @@
for(type in view(range, dview_mob))
#define END_FOR_DVIEW dview_mob.loc = null
+//Turf locational stuff
#define get_turf(A) (get_step(A, 0))
+#define NORTH_OF_TURF(T) locate(T.x, T.y + 1, T.z)
+#define EAST_OF_TURF(T) locate(T.x + 1, T.y, T.z)
+#define SOUTH_OF_TURF(T) locate(T.x, T.y - 1, T.z)
+#define WEST_OF_TURF(T) locate(T.x - 1, T.y, T.z)
#define MIN_SUPPLIED_LAW_NUMBER 15
#define MAX_SUPPLIED_LAW_NUMBER 50
@@ -398,7 +403,7 @@
#define INVESTIGATE_BOMB "bombs"
// The SQL version required by this version of the code
-#define SQL_VERSION 7
+#define SQL_VERSION 8
// Vending machine stuff
#define CAT_NORMAL 1
@@ -476,4 +481,8 @@
#define SENSOR_COORDS 3
// Cult summon possibilities
-#define SUMMON_POSSIBILITIES 3
\ No newline at end of file
+#define SUMMON_POSSIBILITIES 3
+
+#define DICE_NOT_RIGGED 1
+#define DICE_BASICALLY_RIGGED 2
+#define DICE_TOTALLY_RIGGED 3
\ No newline at end of file
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index c567ba7adb2..aaf33820840 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -298,8 +298,12 @@ This is always put in the attack log.
loglevel = ATKLOG_FEW
else if(istype(user) && !user.ckey && !target.ckey) // Attacks between NPCs are only shown to admins with ATKLOG_ALL
loglevel = ATKLOG_ALL
- else if(!target.ckey) // Attacks by players on NPCs are only shown to admins with ATKLOG_ALL or ATKLOG_ALMOSTALL
+ else if(!user.ckey || !target.ckey) // Player v NPC combat is de-prioritized.
loglevel = ATKLOG_ALMOSTALL
+ else
+ var/area/A = get_area(target)
+ if(A && A.hide_attacklogs)
+ loglevel = ATKLOG_ALMOSTALL
msg_admin_attack("[key_name_admin(user)] vs [key_name_admin(target)]: [what_done]", loglevel)
diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm
index b90f7502e65..04d63e0e862 100644
--- a/code/__HELPERS/text.dm
+++ b/code/__HELPERS/text.dm
@@ -28,6 +28,11 @@
/*
* Text sanitization
*/
+// Can be used almost the same way as normal input for text
+/proc/clean_input(Message, Title, Default, mob/user=usr)
+ var/txt = input(user, Message, Title, Default) as text | null
+ if(txt)
+ 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)
@@ -125,8 +130,10 @@
//Filters out undesirable characters from names
/proc/reject_bad_name(var/t_in, var/allow_numbers=0, var/max_length=MAX_NAME_LEN)
+ // Decode so that names with characters like < are still rejected. Will be encoded again at the end
+ t_in = html_decode(t_in)
if(!t_in || length(t_in) > max_length)
- return //Rejects the input if it is null or if it is longer then the max length allowed
+ return //Rejects the input if it is null or if it is longer than the max length allowed
var/number_of_alphanumeric = 0
var/last_char_group = 0
@@ -185,7 +192,7 @@
for(var/bad_name in list("space","floor","wall","r-wall","monkey","unknown","inactive ai","plating")) //prevents these common metagamey names
if(cmptext(t_out,bad_name)) return //(not case sensitive)
- return t_out
+ return html_encode(t_out)
//checks text for html tags
//if tag is not in whitelist (var/list/paper_tag_whitelist in global.dm)
diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm
index f933105e13b..f4cdd766cb9 100644
--- a/code/_globalvars/misc.dm
+++ b/code/_globalvars/misc.dm
@@ -88,4 +88,6 @@ var/copier_items_printed_logged = FALSE
GLOBAL_VAR(map_name) // Self explanatory
-var/global/datum/datacore/data_core = null // Station datacore, manifest, etc
\ No newline at end of file
+var/global/datum/datacore/data_core = null // Station datacore, manifest, etc
+
+GLOBAL_VAR_INIT(panic_bunker_enabled, 0) // Is the panic bunker enabled
\ No newline at end of file
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 3f155fa8031..baa0adc07ec 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -72,11 +72,15 @@
var/assistantlimit = 0 //enables assistant limiting
var/assistantratio = 2 //how many assistants to security members
+ // The AFK subsystem will not be activated if any of the below config values are equal or less than 0
+ var/warn_afk_minimum = 0 // How long till you get a warning while being AFK
+ var/auto_cryo_afk = 0 // How long till you get put into cryo when you're AFK
+ var/auto_despawn_afk = 0 // How long till you actually despawn in cryo when you're AFK (Not ssd so not automatic)
+
var/auto_cryo_ssd_mins = 0
var/ssd_warning = 0
-
- var/prob_free_golems = 75 //chance for free golems spawners to appear roundstart
- var/unrestricted_free_golems = FALSE //if true, free golems can appear on all roundtypes
+
+ var/list_afk_minimum = 5 // How long people have to be AFK before it's listed on the "List AFK players" verb
var/traitor_objectives_amount = 2
var/shadowling_max_age = 0
@@ -305,20 +309,24 @@
if("jobs_have_minimal_access")
config.jobs_have_minimal_access = 1
- if("prob_free_golems")
- config.prob_free_golems = text2num(value)
-
- if("unrestricted_free_golems")
- config.unrestricted_free_golems = TRUE
-
if("shadowling_max_age")
config.shadowling_max_age = text2num(value)
+ if("warn_afk_minimum")
+ config.warn_afk_minimum = text2num(value)
+ if("auto_cryo_afk")
+ config.auto_cryo_afk = text2num(value)
+ if("auto_despawn_afk")
+ config.auto_despawn_afk = text2num(value)
+
if("auto_cryo_ssd_mins")
config.auto_cryo_ssd_mins = text2num(value)
if("ssd_warning")
config.ssd_warning = 1
+ if("list_afk_minimum")
+ config.list_afk_minimum = text2num(value)
+
if("ipintel_email")
if(value != "ch@nge.me")
config.ipintel_email = value
diff --git a/code/controllers/subsystem/afk.dm b/code/controllers/subsystem/afk.dm
new file mode 100644
index 00000000000..9f409fd35b4
--- /dev/null
+++ b/code/controllers/subsystem/afk.dm
@@ -0,0 +1,81 @@
+#define AFK_WARNED 1
+#define AFK_CRYOD 2
+
+SUBSYSTEM_DEF(afk)
+ name = "AFK Watcher"
+ wait = 300
+ flags = SS_BACKGROUND
+ var/list/afk_players = list() // Associative list. ckey as key and AFK state as value
+
+
+/datum/controller/subsystem/afk/Initialize()
+ if(config.warn_afk_minimum <= 0 || config.auto_cryo_afk <= 0 || config.auto_despawn_afk <= 0)
+ flags |= SS_NO_FIRE
+
+/datum/controller/subsystem/afk/fire()
+ var/list/toRemove = list()
+ for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
+ if(!H.ckey) // Useless non ckey creatures
+ continue
+
+ var/turf/T
+ // Only players and players with the AFK watch enabled
+ // No dead, unconcious, restrained, people without jobs, people on other Z levels than the station or antags
+ if(!H.client || !H.client.prefs.afk_watch || !H.mind || \
+ H.stat || H.restrained() || !H.job || H.mind.special_role || \
+ !is_station_level((T = get_turf(H)).z)) // Assign the turf as last. Small optimization
+ if(afk_players[H.ckey])
+ toRemove += H.ckey
+ continue
+
+ var/mins_afk = round(H.client.inactivity / 600)
+ if(mins_afk < config.warn_afk_minimum)
+ if(afk_players[H.ckey])
+ toRemove += H.ckey
+ continue
+
+ if(!afk_players[H.ckey])
+ afk_players[H.ckey] = AFK_WARNED
+ warn(H, "You are AFK for [mins_afk] minutes. You will be cryod after [config.auto_cryo_afk] total minutes and fully despawned after [config.auto_despawn_afk] total minutes. Please move or click in game if you want to avoid being despawned.")
+ else
+ var/area/A = T.loc // Turfs loc is the area
+ if(afk_players[H.ckey] == AFK_WARNED)
+ if(mins_afk >= config.auto_cryo_afk && A.can_get_auto_cryod)
+ if(A.fast_despawn)
+ toRemove += H.ckey
+ warn(H, "You are have been despawned after being AFK for [mins_afk] minutes. You have been despawned instantly due to you being in a secure area.")
+ msg_admins(H, mins_afk, T, "forcefully despawned", "AFK in a fast despawn area")
+ force_cryo_human(H)
+ else if(cryo_ssd(H))
+ afk_players[H.ckey] = AFK_CRYOD
+ msg_admins(H, mins_afk, T, "put into cryostorage")
+ warn(H, "You are AFK for [mins_afk] minutes and have been moved to cryostorage. After being AFK for [config.auto_despawn_afk] total minutes you will be fully despawned. Please eject yourself (right click, eject) out of the cryostorage if you want to avoid being despawned.")
+
+ else if(mins_afk >= config.auto_despawn_afk)
+ var/obj/machinery/cryopod/P = H.loc
+ msg_admins(H, mins_afk, T, "forcefully despawned")
+ warn(H, "You are have been despawned after being AFK for [mins_afk] minutes.")
+ toRemove += H.ckey
+ P.despawn_occupant()
+
+ removeFromWatchList(toRemove)
+
+/datum/controller/subsystem/afk/proc/warn(mob/living/carbon/human/H, text)
+ to_chat(H, text)
+ SEND_SOUND(H, 'sound/effects/adminhelp.ogg')
+ if(H.client)
+ window_flash(H.client)
+
+/datum/controller/subsystem/afk/proc/msg_admins(mob/living/carbon/human/H, mins_afk, turf/location, action, info)
+ log_admin("[key_name(H)] has been [action] by the AFK Watcher subsystem after being AFK for [mins_afk] minutes.[info ? " Extra info:" + info : ""]")
+ message_admins("[key_name_admin(H)] at ([get_area(location).name] [ADMIN_JMP(location)]) has been [action] by the AFK Watcher subsystem after being AFK for [mins_afk] minutes.[info ? " Extra info:" + info : ""]")
+
+/datum/controller/subsystem/afk/proc/removeFromWatchList(list/toRemove)
+ for(var/C in toRemove)
+ for(var/i in 1 to afk_players.len)
+ if(afk_players[i] == C)
+ afk_players.Cut(i, i + 1)
+ break
+
+#undef AFK_WARNED
+#undef AFK_CRYOD
\ No newline at end of file
diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm
index 79de45c3248..fe48494f321 100644
--- a/code/controllers/subsystem/air.dm
+++ b/code/controllers/subsystem/air.dm
@@ -30,6 +30,7 @@ SUBSYSTEM_DEF(air)
var/list/networks = list()
var/list/atmos_machinery = list()
var/list/pipe_init_dirs_cache = list()
+ var/list/machinery_to_construct = list()
@@ -67,9 +68,10 @@ SUBSYSTEM_DEF(air)
setup_allturfs()
setup_atmos_machinery(GLOB.machines)
setup_pipenets(GLOB.machines)
+ for(var/obj/machinery/atmospherics/A in machinery_to_construct)
+ A.initialize_atmos_network()
return ..()
-
/datum/controller/subsystem/air/fire(resumed = 0)
var/timer = TICK_USAGE_REAL
diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm
index 95553ab0d7e..2f415efa38d 100644
--- a/code/controllers/subsystem/events.dm
+++ b/code/controllers/subsystem/events.dm
@@ -249,7 +249,7 @@ SUBSYSTEM_DEF(events)
else if(href_list["back"])
selected_event_container = null
else if(href_list["set_name"])
- var/name = input("Enter event name.", "Set Name") as text|null
+ var/name = clean_input("Enter event name.", "Set Name")
if(name)
var/datum/event_meta/EM = locate(href_list["set_name"])
EM.name = name
diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm
index f2e0fdb0497..f379deec72b 100644
--- a/code/controllers/subsystem/input.dm
+++ b/code/controllers/subsystem/input.dm
@@ -33,23 +33,23 @@ SUBSYSTEM_DEF(input)
"default" = list(
"Tab" = "\".winset \\\"input.focus=true?map.focus=true input.background-color=[COLOR_INPUT_DISABLED]:input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
"O" = "ooc",
- "T" = "say",
- "M" = "me",
- "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
+ "T" = ".say",
+ "M" = ".me",
+ "Back" = "\".winset \\\"input.focus=true input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
"Any" = "\"KeyDown \[\[*\]\]\"",
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
),
"old_default" = list(
"Tab" = "\".winset \\\"mainwindow.macro=old_hotkeys map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\"",
- "Ctrl+T" = "say",
+ "Ctrl+T" = ".say",
"Ctrl+O" = "ooc",
),
"old_hotkeys" = list(
"Tab" = "\".winset \\\"mainwindow.macro=old_default input.focus=true input.background-color=[COLOR_INPUT_ENABLED]\\\"\"",
"O" = "ooc",
- "T" = "say",
- "M" = "me",
- "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
+ "T" = ".say",
+ "M" = ".me",
+ "Back" = "\".winset \\\"input.focus=true input.text=\\\"\\\"\\\"\"", // This makes it so backspace can remove default inputs
"Any" = "\"KeyDown \[\[*\]\]\"",
"Any+UP" = "\"KeyUp \[\[*\]\]\"",
),
@@ -115,6 +115,8 @@ SUBSYSTEM_DEF(input)
/datum/controller/subsystem/input/fire()
var/list/clients = GLOB.clients // Let's sing the list cache song
+ if(listclearnulls(clients)) // clear nulls before we run keyloop
+ log_world("Found a null in clients list!")
for(var/i in 1 to clients.len)
var/client/C = clients[i]
C.keyLoop()
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index b45ef833b9f..ec53c4b4d6b 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -20,7 +20,7 @@ SUBSYSTEM_DEF(mapping)
var/num_extra_space = rand(config.extra_space_ruin_levels_min, config.extra_space_ruin_levels_max)
for(var/i = 1, i <= num_extra_space, i++)
- var/zlev = space_manager.add_new_zlevel("[EMPTY_AREA] #[i]", linkage = CROSSLINKED)
+ var/zlev = space_manager.add_new_zlevel("[EMPTY_AREA] #[i]", linkage = CROSSLINKED, traits = list(REACHABLE))
seedRuins(list(zlev), rand(0, 3), /area/space, space_ruins_templates)
// Setup the Z-level linkage
diff --git a/code/controllers/subsystem/tickets/mentor_tickets.dm b/code/controllers/subsystem/tickets/mentor_tickets.dm
index 32f7faf4abb..d8bae77840c 100644
--- a/code/controllers/subsystem/tickets/mentor_tickets.dm
+++ b/code/controllers/subsystem/tickets/mentor_tickets.dm
@@ -8,7 +8,7 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets
name = "Mentor Tickets"
ticket_system_name = "Mentor Tickets"
ticket_name = "Mentor Ticket"
- span_text = ""
+ span_class = "mentorhelp"
close_rights = R_MENTOR | R_ADMIN
/datum/controller/subsystem/tickets/mentor_tickets/message_staff(var/msg)
@@ -17,5 +17,5 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets
/datum/controller/subsystem/tickets/mentor_tickets/Initialize()
close_messages = list("- [ticket_name] Closed -",
"Please try to be as descriptive as possible in mentor helps. Mentors do not know the full situation you're in and need more information to give you a helpful response.",
- "[span_text]Your [ticket_name] has now been closed.")
+ "Your [ticket_name] has now been closed.")
return ..()
diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm
index cf9aed29e83..1b1735b34c1 100644
--- a/code/controllers/subsystem/tickets/tickets.dm
+++ b/code/controllers/subsystem/tickets/tickets.dm
@@ -12,7 +12,7 @@
SUBSYSTEM_DEF(tickets)
name = "Admin Tickets"
- var/span_text = ""
+ var/span_class = "adminticket"
var/ticket_system_name = "Admin Tickets"
var/ticket_name = "Admin Ticket"
var/close_rights = R_ADMIN
@@ -30,7 +30,7 @@ SUBSYSTEM_DEF(tickets)
/datum/controller/subsystem/tickets/Initialize()
close_messages = list("- [ticket_name] Rejected! -",
"Please try to be calm, clear, and descriptive in admin helps, do not assume the staff member has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking.",
- "[span_text]Your [ticket_name] has now been closed.")
+ "Your [ticket_name] has now been closed.")
LAZYINITLIST(allTickets)
return ..()
@@ -40,7 +40,7 @@ SUBSYSTEM_DEF(tickets)
var/report
for(var/num in stales)
report += "[num], "
- message_staff("[span_text]Tickets [report] have been open for over [TICKET_TIMEOUT / 600] minutes. Changing status to stale.")
+ message_staff("Tickets [report] have been open for over [TICKET_TIMEOUT / 600] minutes. Changing status to stale.")
/datum/controller/subsystem/tickets/stat_entry()
..("Tickets: [LAZYLEN(allTickets)]")
@@ -80,7 +80,7 @@ SUBSYSTEM_DEF(tickets)
var/datum/ticket/existingTicket = checkForOpenTicket(C)
if(existingTicket)
existingTicket.setCooldownPeriod()
- to_chat(C.mob, "[span_text]Your [ticket_name] #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.")
+ to_chat(C.mob, "Your [ticket_name] #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.")
return
if(!title)
@@ -93,7 +93,7 @@ SUBSYSTEM_DEF(tickets)
T.mobControlled = C.mob
//Inform the user that they have opened a ticket
- to_chat(C, "[span_text]You have opened [ticket_name] number #[(getTicketCounter() - 1)]! Please be patient and we will help you soon!")
+ to_chat(C, "You have opened [ticket_name] number #[(getTicketCounter() - 1)]! Please be patient and we will help you soon!")
//Set ticket state with key N to open
/datum/controller/subsystem/tickets/proc/openTicket(N)
@@ -138,8 +138,10 @@ SUBSYSTEM_DEF(tickets)
var/datum/ticket/T = allTickets[N]
return T.clientName
-/datum/controller/subsystem/tickets/proc/assignStaffToTicket(client/C, var/N)
+/datum/controller/subsystem/tickets/proc/assignStaffToTicket(client/C, N)
var/datum/ticket/T = allTickets[N]
+ if(T.staffAssigned != null && T.staffAssigned != C && alert("Ticket is already assigned to [T.staffAssigned.ckey]. Are you sure you want to take it?","Take ticket","No","Yes") != "Yes")
+ return FALSE
T.assignStaff(C)
return TRUE
@@ -158,7 +160,7 @@ SUBSYSTEM_DEF(tickets)
var/ticketState // State of the ticket, open, closed, resolved etc
var/timeUntilStale // When the ticket goes stale
var/ticketCooldown // Cooldown before allowing the user to open another ticket.
- var/staffAssigned // Staff member who has assigned themselves to this ticket
+ var/client/staffAssigned // Staff member who has assigned themselves to this ticket
/datum/ticket/New(tit, cont, num)
title = tit
@@ -367,15 +369,15 @@ UI STUFF
if(href_list["resolve"])
var/indexNum = text2num(href_list["resolve"])
if(resolveTicket(indexNum))
- message_staff("[span_text][usr.client] / ([usr]) resolved [ticket_name] number [indexNum]")
- to_chat_safe(returnClient(indexNum), "[span_text]Your [ticket_name] has now been resolved.")
+ message_staff("[usr.client] / ([usr]) resolved [ticket_name] number [indexNum]")
+ to_chat_safe(returnClient(indexNum), "Your [ticket_name] has now been resolved.")
showUI(usr)
if(href_list["detailresolve"])
var/indexNum = text2num(href_list["detailresolve"])
if(resolveTicket(indexNum))
- message_staff("[span_text][usr.client] / ([usr]) resolved [ticket_name] number [indexNum]")
- to_chat_safe(returnClient(indexNum), "[span_text]Your [ticket_name] has now been resolved.")
+ message_staff("[usr.client] / ([usr]) resolved [ticket_name] number [indexNum]")
+ to_chat_safe(returnClient(indexNum), "Your [ticket_name] has now been resolved.")
showDetailUI(usr, indexNum)
if(href_list["detailclose"])
@@ -386,7 +388,7 @@ UI STUFF
if(alert("Are you sure? This will send a negative message.",,"Yes","No") != "Yes")
return
if(closeTicket(indexNum))
- message_staff("[span_text][usr.client] / ([usr]) closed [ticket_name] number [indexNum]")
+ message_staff("[usr.client] / ([usr]) closed [ticket_name] number [indexNum]")
to_chat_safe(returnClient(indexNum), close_messages)
showDetailUI(usr, indexNum)
@@ -394,7 +396,7 @@ UI STUFF
if(href_list["detailreopen"])
var/indexNum = text2num(href_list["detailreopen"])
if(openTicket(indexNum))
- message_staff("[span_text][usr.client] / ([usr]) re-opened [ticket_name] number [indexNum]")
+ message_staff("[usr.client] / ([usr]) re-opened [ticket_name] number [indexNum]")
showDetailUI(usr, indexNum)
if(href_list["assignstaff"])
@@ -404,8 +406,8 @@ UI STUFF
/datum/controller/subsystem/tickets/proc/takeTicket(var/index)
if(assignStaffToTicket(usr.client, index))
- if(span_text == "")
- message_staff("[span_text][usr.client] / ([usr]) has taken [ticket_name] number [index]")
+ if(span_class == "mentorhelp")
+ message_staff("[usr.client] / ([usr]) has taken [ticket_name] number [index]")
else
message_staff("[usr.client] / ([usr]) has taken [ticket_name] number [index]", TRUE)
- to_chat_safe(returnClient(index), "[span_text]Your [ticket_name] is being handled by [usr.client].")
+ to_chat_safe(returnClient(index), "Your [ticket_name] is being handled by [usr.client].")
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index e3a3ca6033a..befe5c0765a 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -119,7 +119,7 @@
owner = null
return ..()
-/obj/effect/ebeam/deadly/Crossed(atom/A)
+/obj/effect/ebeam/deadly/Crossed(atom/A, oldloc)
..()
A.ex_act(1)
diff --git a/code/datums/components/waddling.dm b/code/datums/components/waddling.dm
new file mode 100644
index 00000000000..a1f538e4dd7
--- /dev/null
+++ b/code/datums/components/waddling.dm
@@ -0,0 +1,15 @@
+/datum/component/waddling
+ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
+
+/datum/component/waddling/Initialize()
+ if(!isliving(parent))
+ return COMPONENT_INCOMPATIBLE
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Waddle)
+
+/datum/component/waddling/proc/Waddle()
+ var/mob/living/L = parent
+ if(L.incapacitated() || L.lying)
+ return
+ animate(L, pixel_z = 4, time = 0)
+ animate(pixel_z = 0, transform = turn(matrix(), pick(-12, 0, 12)), time=2)
+ animate(pixel_z = 0, transform = matrix(), time = 0)
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index e5948a47e30..365a4309413 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -22,7 +22,8 @@ var/datum/atom_hud/huds = list( \
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_EVENTMISC = new/datum/atom_hud/antag/hidden(),\
+ ANTAG_HUD_BLOB = new/datum/atom_hud/antag/hidden()\
)
/datum/atom_hud
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 266821db766..0ab0453cb95 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -42,6 +42,7 @@
var/list/kills = list()
var/list/datum/objective/objectives = list()
var/list/datum/objective/special_verbs = list()
+ var/list/targets = list()
var/has_been_rev = 0//Tracks if this mind has been a rev or not
diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm
index caec5fa8ea6..67e5438656e 100644
--- a/code/datums/ruins/lavaland.dm
+++ b/code/datums/ruins/lavaland.dm
@@ -12,6 +12,14 @@
Comes with a rustic wooden bar and suicidal bartender."
suffix = "lavaland_biodome_beach.dmm"
+/datum/map_template/ruin/lavaland/cube
+ name = "The Wishgranter Cube"
+ id = "wishgranter-cube"
+ description = "Nothing good can come from this. Learn from their mistakes and turn around."
+ suffix = "lavaland_surface_cube.dmm"
+ cost = 10
+ allow_duplicates = FALSE
+
/datum/map_template/ruin/lavaland/seed_vault
name = "Seed Vault"
id = "seed-vault"
@@ -38,6 +46,15 @@ datum/map_template/ruin/lavaland/ash_walker
cost = 20
allow_duplicates = FALSE
+/datum/map_template/ruin/lavaland/free_golem
+ name = "Free Golem Ship"
+ id = "golem-ship"
+ description = "Lumbering humanoids, made out of precious metals, move inside this ship. They frequently leave to mine more minerals, which they somehow turn into more of them. \
+ Seem very intent on research and individual liberty, and also geology based naming?"
+ cost = 20
+ suffix = "lavaland_surface_golem_ship.dmm"
+ allow_duplicates = FALSE
+
/datum/map_template/ruin/lavaland/animal_hospital
name = "Animal Hospital"
id = "animal-hospital"
@@ -46,6 +63,49 @@ datum/map_template/ruin/lavaland/ash_walker
suffix = "lavaland_surface_animal_hospital.dmm"
allow_duplicates = FALSE
+/datum/map_template/ruin/lavaland/sin
+ cost = 10
+ allow_duplicates = FALSE
+
+/datum/map_template/ruin/lavaland/sin/envy
+ name = "Ruin of Envy"
+ id = "envy"
+ description = "When you get what they have, then you'll finally be happy."
+ suffix = "lavaland_surface_envy.dmm"
+
+/datum/map_template/ruin/lavaland/sin/gluttony
+ name = "Ruin of Gluttony"
+ id = "gluttony"
+ description = "If you eat enough, then eating will be all that you do."
+ suffix = "lavaland_surface_gluttony.dmm"
+
+/datum/map_template/ruin/lavaland/sin/greed
+ name = "Ruin of Greed"
+ id = "greed"
+ description = "Sure you don't need magical powers, but you WANT them, and that's what's important."
+ suffix = "lavaland_surface_greed.dmm"
+
+/datum/map_template/ruin/lavaland/sin/pride
+ name = "Ruin of Pride"
+ id = "pride"
+ description = "Wormhole lifebelts are for LOSERS, who you are better than."
+ suffix = "lavaland_surface_pride.dmm"
+
+/datum/map_template/ruin/lavaland/sin/sloth
+ name = "Ruin of Sloth"
+ id = "sloth"
+ description = "..."
+ suffix = "lavaland_surface_sloth.dmm"
+ cost = 0
+
+/datum/map_template/ruin/lavaland/ratvar
+ name = "Dead God"
+ id = "ratvar"
+ description = "Ratvars final resting place."
+ suffix = "lavaland_surface_dead_ratvar.dmm"
+ cost = 0
+ allow_duplicates = FALSE
+
/datum/map_template/ruin/lavaland/hierophant
name = "Hierophant's Arena"
id = "hierophant"
@@ -70,6 +130,51 @@ datum/map_template/ruin/lavaland/ash_walker
name = "Blood-Drunk Miner (Hunter)"
suffix = "lavaland_surface_blooddrunk3.dmm"
+/datum/map_template/ruin/lavaland/ufo_crash
+ name = "UFO Crash"
+ id = "ufo-crash"
+ description = "Turns out that keeping your abductees unconscious is really important. Who knew?"
+ suffix = "lavaland_surface_ufo_crash.dmm"
+ cost = 5
+
+/datum/map_template/ruin/lavaland/xeno_nest
+ name = "Xenomorph Nest"
+ id = "xeno-nest"
+ description = "These xenomorphs got bored of horrifically slaughtering people on space stations, and have settled down on a nice lava filled hellscape to focus on what's really important in life. \
+ Quality memes."
+ suffix = "lavaland_surface_xeno_nest.dmm"
+ cost = 20
+
+/datum/map_template/ruin/lavaland/fountain
+ name = "Fountain Hall"
+ id = "fountain"
+ description = "The fountain has a warning on the side. DANGER: May have undeclared side effects that only become obvious when implemented."
+ suffix = "lavaland_surface_fountain_hall.dmm"
+ cost = 5
+
+/datum/map_template/ruin/lavaland/survivalcapsule
+ name = "Survival Capsule Ruins"
+ id = "survivalcapsule"
+ description = "What was once sanctuary to the common miner, is now their tomb."
+ suffix = "lavaland_surface_survivalpod.dmm"
+ cost = 5
+
+/datum/map_template/ruin/lavaland/pizza
+ name = "Ruined Pizza Party"
+ id = "pizza"
+ description = "Little Timmy's birthday pizza-bash took a turn for the worse when a bluespace anomaly passed by."
+ suffix = "lavaland_surface_pizzaparty.dmm"
+ allow_duplicates = FALSE
+ cost = 5
+
+/datum/map_template/ruin/lavaland/cultaltar
+ name = "Summoning Ritual"
+ id = "cultaltar"
+ description = "A place of vile worship, the scrawling of blood in the middle glowing eerily. A demonic laugh echoes throughout the caverns"
+ suffix = "lavaland_surface_cultaltar.dmm"
+ allow_duplicates = FALSE
+ cost = 10
+
/datum/map_template/ruin/lavaland/hermit
name = "Makeshift Shelter"
id = "hermitcave"
@@ -84,4 +189,19 @@ datum/map_template/ruin/lavaland/ash_walker
description = "A Syndicate shuttle had an unfortunate stowaway..."
suffix = "lavaland_surface_swarmer_crash.dmm"
allow_duplicates = FALSE
- cost = 20
\ No newline at end of file
+ cost = 20
+
+/datum/map_template/ruin/lavaland/miningripley
+ name = "Ripley"
+ id = "ripley"
+ description = "A heavily-damaged mining ripley, property of a very unfortunate miner. You might have to do a bit of work to fix this thing up."
+ suffix = "lavaland_surface_random_ripley.dmm"
+ allow_duplicates = FALSE
+ cost = 5
+
+/datum/map_template/ruin/lavaland/puzzle
+ name = "Ancient Puzzle"
+ id = "puzzle"
+ description = "Mystery to be solved."
+ suffix = "lavaland_surface_puzzle.dmm"
+ cost = 5
\ No newline at end of file
diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm
index 3c3906a25eb..3a70d05029e 100644
--- a/code/defines/procs/announce.dm
+++ b/code/defines/procs/announce.dm
@@ -95,7 +95,7 @@
receivers -= M
garbled_receivers |= M
for(var/mob/M in GLOB.dead_mob_list)
- if(M.client && M.stat == DEAD)
+ if(M.client && M.stat == DEAD && !isnewplayer(M))
receivers |= M
return list(receivers, garbled_receivers)
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index 91af56437cf..d5b4faef17c 100644
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -50,6 +50,7 @@ var/list/ghostteleportlocs = list()
icon_state = "start"
requires_power = FALSE
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ hide_attacklogs = TRUE
/area/adminconstruction
@@ -57,6 +58,7 @@ var/list/ghostteleportlocs = list()
icon_state = "start"
requires_power = FALSE
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ hide_attacklogs = TRUE
/area/space
icon_state = "space"
@@ -522,6 +524,7 @@ var/list/ghostteleportlocs = list()
icon_state = "thunder"
requires_power = FALSE
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
+ hide_attacklogs = TRUE
/area/tdome/arena_source
@@ -1400,10 +1403,12 @@ var/list/ghostteleportlocs = list()
name = "\improper Prison Wing"
icon_state = "sec_prison_perma"
fast_despawn = TRUE
+ can_get_auto_cryod = FALSE
/area/security/prison
name = "\improper Prison Wing"
icon_state = "sec_prison"
+ can_get_auto_cryod = FALSE
/area/security/prison/prison_break()
for(var/obj/structure/closet/secure_closet/brig/temp_closet in src)
@@ -1432,14 +1437,17 @@ var/list/ghostteleportlocs = list()
/area/security/execution
name = "\improper Execution"
icon_state = "execution"
+ can_get_auto_cryod = FALSE
/area/security/processing
name = "\improper Prisoner Processing"
icon_state = "prisonerprocessing"
+ can_get_auto_cryod = FALSE
/area/security/interrogation
name = "\improper Interrogation"
icon_state = "interrogation"
+ can_get_auto_cryod = FALSE
/area/security/seceqstorage
name = "\improper Security Equipment Storage"
@@ -1456,6 +1464,7 @@ var/list/ghostteleportlocs = list()
/area/security/interrogationobs
name = "\improper Interrogation Observation"
icon_state = "security"
+ can_get_auto_cryod = FALSE
/area/security/evidence
name = "\improper Evidence Room"
@@ -1464,6 +1473,7 @@ var/list/ghostteleportlocs = list()
/area/security/prisonlockers
name = "\improper Prisoner Lockers"
icon_state = "sec_prison_lockers"
+ can_get_auto_cryod = FALSE
/area/security/medbay
name = "\improper Security Medbay"
@@ -1472,6 +1482,7 @@ var/list/ghostteleportlocs = list()
/area/security/prisonershuttle
name = "\improper Security Prisoner Shuttle"
icon_state = "security"
+ can_get_auto_cryod = FALSE
/area/security/warden
name = "\improper Warden's Office"
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 638fe29ab6d..2e7448ec5c8 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -33,7 +33,7 @@
var/static_equip
var/static_light = FALSE
var/static_environ
-
+
var/has_gravity = TRUE
var/list/apc = list()
var/no_air = null
@@ -64,6 +64,8 @@
'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg')
var/fast_despawn = FALSE
+ var/can_get_auto_cryod = TRUE
+ var/hide_attacklogs = FALSE // For areas such as thunderdome, lavaland syndiebase, etc which generate a lot of spammy attacklogs. Reduces log priority.
/area/Initialize(mapload)
GLOB.all_areas += src
diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm
index 450470c8c61..d72c6cc0406 100644
--- a/code/game/area/areas/ruins/lavaland.dm
+++ b/code/game/area/areas/ruins/lavaland.dm
@@ -16,7 +16,7 @@
icon_state = "dk_yellow"
/area/ruin/powered/golem_ship
- name = "Free Golem Ship"
+ name = "Free Golem Landing"
icon_state = "dk_yellow"
/area/ruin/powered/greed
@@ -37,6 +37,7 @@
icon_state = "dk_yellow"
ambientsounds = list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg')
report_alerts = FALSE
+ hide_attacklogs = TRUE
/area/ruin/unpowered/syndicate_lava_base/engineering
name = "Syndicate Lavaland Engineering"
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index c52df8c7912..757f036c691 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -361,7 +361,7 @@
fingerprintshidden += text("\[[time_stamp()]\] (Wearing gloves). Real name: [], Key: []",H.real_name, H.key)
fingerprintslast = H.ckey
return 0
- if(!( fingerprints ))
+ if(!fingerprints)
if(fingerprintslast != H.ckey)
//Add the list if it does not exist.
if(!fingerprintshidden)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 486b553bb8e..1a23dc71070 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -219,7 +219,7 @@
// Previously known as HasEntered()
// This is automatically called when something enters your square
-/atom/movable/Crossed(atom/movable/AM)
+/atom/movable/Crossed(atom/movable/AM, oldloc)
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM)
/atom/movable/Bump(atom/A, yes) //the "yes" arg is to differentiate our Bump proc from byond's, without it every Bump() call would become a double Bump().
@@ -245,7 +245,9 @@
if(destination)
destination.Entered(src)
for(var/atom/movable/AM in destination)
- AM.Crossed(src)
+ if(AM == src)
+ continue
+ AM.Crossed(src, old_loc)
var/turf/oldturf = get_turf(old_loc)
var/turf/destturf = get_turf(destination)
var/old_z = (oldturf ? oldturf.z : null)
diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index 061d8ef91e7..c0d977d0ee9 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -437,4 +437,18 @@ var/global/list/bad_blocks[0]
var/datum/species/S = data["species"]
species = new S
b_type = data["b_type"]
- real_name = data["real_name"]
\ No newline at end of file
+ real_name = data["real_name"]
+
+/datum/dna/proc/transfer_identity(mob/living/carbon/human/destination)
+ if(!istype(destination))
+ return
+
+ // We manually set the species to ensure all proper species change procs are called.
+ destination.set_species(species.type, retain_damage = TRUE)
+ var/datum/dna/new_dna = Clone()
+ new_dna.species = destination.dna.species
+ destination.dna = new_dna
+ destination.dna.species.handle_dna(destination) // Handle DNA has to be re-called as the DNA was changed.
+
+ destination.UpdateAppearance()
+ domutcheck(destination, null, MUTCHK_FORCED)
diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
index 30934a07214..df61106c4ab 100644
--- a/code/game/gamemodes/blob/blob.dm
+++ b/code/game/gamemodes/blob/blob.dm
@@ -14,7 +14,6 @@ var/list/blob_nodes = list()
required_enemies = 1
recommended_enemies = 1
restricted_jobs = list("Cyborg", "AI")
- free_golems_disabled = TRUE
var/declared = 0
var/burst = 0
@@ -43,9 +42,11 @@ var/list/blob_nodes = list()
for(var/j = 0, j < cores_to_spawn, j++)
if(!possible_blobs.len)
break
+
var/datum/mind/blob = pick(possible_blobs)
infected_crew += blob
blob.special_role = SPECIAL_ROLE_BLOB
+ update_blob_icons_added(blob)
blob.restricted_roles = restricted_jobs
log_game("[key_name(blob)] has been selected as a Blob")
possible_blobs -= blob
@@ -67,8 +68,11 @@ var/list/blob_nodes = list()
var/datum/mind/blobmind = blob.mind
if(!istype(blobmind))
return 0
+
infected_crew += blobmind
blobmind.special_role = SPECIAL_ROLE_BLOB
+ update_blob_icons_added(blobmind)
+
log_game("[key_name(blob)] has been selected as a Blob")
greet_blob(blobmind)
to_chat(blob, "You feel very tired and bloated! You don't have long before you burst!")
@@ -186,16 +190,21 @@ var/list/blob_nodes = list()
return ..()
/datum/game_mode/blob/proc/stage(var/stage)
-
switch(stage)
if(0)
send_intercept(1)
declared = 1
-
if(1)
event_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg')
-
if(2)
send_intercept(2)
- return
+/datum/game_mode/proc/update_blob_icons_added(datum/mind/mob_mind)
+ var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_BLOB]
+ antaghud.join_hud(mob_mind.current)
+ set_antag_hud(mob_mind.current, "hudblob")
+
+/datum/game_mode/proc/update_blob_icons_removed(datum/mind/mob_mind)
+ var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_BLOB]
+ antaghud.leave_hud(mob_mind.current)
+ set_antag_hud(mob_mind.current, null)
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 2743277edb7..e7751ffcd8a 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -388,7 +388,7 @@
set name = "Blob Broadcast"
set desc = "Speak with your blob spores and blobbernauts as your mouthpieces. This action is free."
- var/speak_text = input(usr, "What would you like to say with your minions?", "Blob Broadcast", null) as text
+ var/speak_text = clean_input("What would you like to say with your minions?", "Blob Broadcast", null)
if(!speak_text)
return
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index bf56d1687c5..ed06ec4086d 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -142,7 +142,7 @@
take_damage(Proj.damage, Proj.damage_type)
return 0
-/obj/structure/blob/Crossed(var/mob/living/L)
+/obj/structure/blob/Crossed(var/mob/living/L, oldloc)
..()
L.blob_act(src)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 90ab53dfde2..021eb7461f5 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -43,7 +43,6 @@ var/global/list/all_cults = list()
required_players = 30
required_enemies = 3
recommended_enemies = 4
- free_golems_disabled = TRUE
var/datum/mind/sacrifice_target = null
var/finished = 0
diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm
index e93556ca843..2586c63bc91 100644
--- a/code/game/gamemodes/cult/cult_comms.dm
+++ b/code/game/gamemodes/cult/cult_comms.dm
@@ -42,7 +42,7 @@
for(var/mob/M in GLOB.player_list)
if(iscultist(M))
to_chat(M, my_message)
- else if(M in GLOB.dead_mob_list)
+ else if((M in GLOB.dead_mob_list) && !isnewplayer(M))
to_chat(M, " (F) [my_message] ")
log_say("(CULT) [message]", user)
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index c2dd811d640..c6a6a3b7490 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -271,7 +271,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
return
return
-/obj/effect/gateway/Crossed(AM as mob|obj)
+/obj/effect/gateway/Crossed(AM as mob|obj, oldloc)
spawn(0)
return
return
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index ef2a970adb3..ad073b4bf54 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -494,9 +494,8 @@ var/list/teleport_runes = list()
/obj/effect/rune/narsie/New()
..()
- cultist_name = "Summon [SSticker.cultdat.entity_name]"
- cultist_desc = "tears apart dimensional barriers, calling forth [SSticker.cultdat.entity_title3]. Requires 9 invokers."
-
+ cultist_name = "Summon [SSticker.cultdat ? SSticker.cultdat.entity_name : "your god"]"
+ cultist_desc = "tears apart dimensional barriers, calling forth [SSticker.cultdat ? SSticker.cultdat.entity_title3 : "your god"]. Requires 9 invokers."
/obj/effect/rune/narsie/check_icon()
return
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index e344c2b2029..aa366415f31 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -27,7 +27,6 @@
var/recommended_enemies = 0
var/newscaster_announcements = null
var/ert_disabled = 0
- var/free_golems_disabled = FALSE
var/uplink_welcome = "Syndicate Uplink Console:"
var/uplink_uses = 20
@@ -81,7 +80,6 @@
// feedback_set_details("revision","[revdata.revision]")
feedback_set_details("server_ip","[world.internet_address]:[world.port]")
generate_station_goals()
- check_free_golems()
start_state = new /datum/station_state()
start_state.count()
return 1
@@ -513,12 +511,6 @@ proc/display_roundstart_logout_report()
var/datum/station_goal/G = V
G.print_result()
-/datum/game_mode/proc/check_free_golems() //check config and gamemode for free golems setting and run the prob to check if the round will have free golems spawned or not
- if((config.unrestricted_free_golems || !free_golems_disabled) && prob(config.prob_free_golems))
- for(var/obj/effect/landmark/free_golem_spawn/L in GLOB.landmarks_list)
- if(isturf(L.loc))
- new /obj/effect/mob_spawn/human/golem/adamantine(L.loc)
-
/datum/game_mode/proc/update_eventmisc_icons_added(datum/mind/mob_mind)
var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_EVENTMISC]
antaghud.join_hud(mob_mind.current)
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index e73474bad7d..fb3c10e25ec 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -545,7 +545,7 @@
light_color = LIGHT_COLOR_CYAN
health = 10
-/obj/structure/swarmer/trap/Crossed(var/atom/movable/AM)
+/obj/structure/swarmer/trap/Crossed(var/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/types/fire.dm b/code/game/gamemodes/miniantags/guardian/types/fire.dm
index 58f4873e800..0c5052f48bd 100644
--- a/code/game/gamemodes/miniantags/guardian/types/fire.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/fire.dm
@@ -42,7 +42,7 @@
do_teleport(M, M, 10)
new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
-/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj)
+/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj, oldloc)
..()
collision_ignite(AM)
diff --git a/code/game/gamemodes/miniantags/guardian/types/ranged.dm b/code/game/gamemodes/miniantags/guardian/types/ranged.dm
index 3e57a059d10..fe8a566ad52 100644
--- a/code/game/gamemodes/miniantags/guardian/types/ranged.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/ranged.dm
@@ -103,7 +103,7 @@
invisibility = 1
-/obj/item/effect/snare/Crossed(AM as mob|obj)
+/obj/item/effect/snare/Crossed(AM as mob|obj, oldloc)
if(isliving(AM))
var/turf/snare_loc = get_turf(loc)
if(spawner)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 4e9d507c9ea..cf808f3709d 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -12,7 +12,6 @@ proc/issyndicate(mob/living/M as mob)
required_players = 30 // 30 players - 5 players to be the nuke ops = 25 players remaining
required_enemies = 5
recommended_enemies = 5
- free_golems_disabled = TRUE
var/const/agents_possible = 5 //If we ever need more syndicate agents.
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index bfc30780b81..07ee2219157 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -165,10 +165,13 @@
var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in item_names
if(!targetitem)
return
- var/list/obj/item/target_candidates = get_all_of_type(item_paths[targetitem], subtypes = TRUE)
- for(var/obj/item/candidate in target_candidates)
- if(!is_admin_level(candidate.loc.z))
- target = candidate
+
+ var/list/target_candidates = get_all_of_type(item_paths[targetitem], subtypes = TRUE)
+ for(var/obj/item/candidate in target_candidates)
+ if(!is_admin_level((get_turf(candidate)).z))
+ target = candidate
+ break
+
if(!target)
to_chat(usr, "Failed to locate [targetitem]!")
return
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 2d1b55c5b99..836c51d5a2c 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -25,6 +25,8 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
/datum/objective/proc/is_invalid_target(datum/mind/possible_target)
if(possible_target == owner)
return TARGET_INVALID_IS_OWNER
+ if(possible_target in owner.targets)
+ return TARGET_INVALID_IS_TARGET
if(!ishuman(possible_target.current))
return TARGET_INVALID_NOT_HUMAN
if(!possible_target.current.stat == DEAD)
@@ -52,7 +54,6 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
if(possible_targets.len > 0)
target = pick(possible_targets)
-
/datum/objective/assassinate
martyr_compatible = 1
@@ -361,9 +362,12 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
var/datum/theft_objective/O = new thefttype
if(owner.assigned_role in O.protected_jobs)
continue
+ if(O in owner.targets)
+ continue
if(O.flags & 2)
continue
- steal_target=O
+ steal_target = O
+
explanation_text = "Steal [steal_target]. One was last seen in [get_location()]. "
if(islist(O.protected_jobs) && O.protected_jobs.len)
explanation_text += "It may also be in the possession of the [jointext(O.protected_jobs, ", ")]."
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index c2855f5c338..3edf5b14e58 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -87,6 +87,7 @@
yandere_one.owner = traitor
traitor.objectives += yandere_one
yandere_one.find_target()
+ traitor.targets += yandere_one.target
objective_count++
var/datum/objective/maroon/yandere_two = new
yandere_two.owner = traitor
@@ -99,6 +100,7 @@
kill_objective.owner = traitor
kill_objective.find_target()
traitor.objectives += kill_objective
+ traitor.targets += kill_objective.target
var/datum/objective/survive/survive_objective = new
survive_objective.owner = traitor
@@ -124,26 +126,31 @@
destroy_objective.owner = traitor
destroy_objective.find_target()
traitor.objectives += destroy_objective
+ traitor.targets += destroy_objective.target
else if(prob(5))
var/datum/objective/debrain/debrain_objective = new
debrain_objective.owner = traitor
debrain_objective.find_target()
traitor.objectives += debrain_objective
+ traitor.targets += debrain_objective.target
else if(prob(30))
var/datum/objective/maroon/maroon_objective = new
maroon_objective.owner = traitor
maroon_objective.find_target()
traitor.objectives += maroon_objective
+ traitor.targets += maroon_objective.target
else
var/datum/objective/assassinate/kill_objective = new
kill_objective.owner = traitor
kill_objective.find_target()
traitor.objectives += kill_objective
+ traitor.targets += kill_objective.target
else
var/datum/objective/steal/steal_objective = new
steal_objective.owner = traitor
steal_objective.find_target()
traitor.objectives += steal_objective
+ traitor.targets += steal_objective.steal_target
if(is_hijacker && objective_count <= config.traitor_objectives_amount) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount
if(!(locate(/datum/objective/hijack) in traitor.objectives))
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index 5eb4b3f0242..7e1a375f15d 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -261,8 +261,10 @@
for(var/mob/living/carbon/C in hearers(4))
if(C == user)
continue
- if(ishuman(C) && (C:l_ear || C:r_ear) && istype((C:l_ear || C:r_ear), /obj/item/clothing/ears/earmuffs))
- continue
+ if(ishuman(C))
+ var/mob/living/carbon/human/H = C
+ if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
+ continue
if(!affects(C))
continue
to_chat(C, "You hear a ear piercing shriek and your senses dull!")
@@ -347,8 +349,16 @@
SSticker.mode.vampire_enthralled.Add(H.mind)
SSticker.mode.vampire_enthralled[H.mind] = user.mind
H.mind.special_role = SPECIAL_ROLE_VAMPIRE_THRALL
- to_chat(H, "You have been Enthralled by [user]. Follow [user.p_their()] every command.")
+
+ var/datum/objective/protect/serve_objective = new
+ serve_objective.owner = user.mind
+ serve_objective.target = H.mind
+ serve_objective.explanation_text = "You have been Enthralled by [user]. Follow [user.p_their()] every command."
+ H.mind.objectives += serve_objective
+
+ to_chat(H, "You have been Enthralled by [user]. Follow [user.p_their()] every command.")
to_chat(user, "You have successfully Enthralled [H]. If [H.p_they()] refuse[H.p_s()] to do as you say just adminhelp.")
+ H.Stun(2)
add_attack_logs(user, H, "Vampire-thralled")
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 7d941a41bde..6f96d4c22e2 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -906,3 +906,13 @@
spellname = "sacred flame"
icon_state ="booksacredflame"
desc = "Become one with the flames that burn within... and invite others to do so as well."
+
+/obj/item/spellbook/oneuse/random
+ icon_state = "random_book"
+
+/obj/item/spellbook/oneuse/random/initialize()
+ . = ..()
+ var/static/banned_spells = list(/obj/item/spellbook/oneuse/mime, /obj/item/spellbook/oneuse/mime/fingergun, /obj/item/spellbook/oneuse/mime/fingergun/fake, /obj/item/spellbook/oneuse/mime/greaterwall)
+ var/real_type = pick(subtypesof(/obj/item/spellbook/oneuse) - banned_spells)
+ new real_type(loc)
+ qdel(src)
\ No newline at end of file
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index e1f9ac2725d..5ac62401d23 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -7,7 +7,6 @@
required_players = 20
required_enemies = 1
recommended_enemies = 1
- free_golems_disabled = TRUE
var/use_huds = 0
var/finished = 0
var/but_wait_theres_more = 0
diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm
index 394fe3d0908..a31f694f7fc 100644
--- a/code/game/jobs/access.dm
+++ b/code/game/jobs/access.dm
@@ -601,28 +601,29 @@ proc/get_all_job_icons() //For all existing HUD icons
return GLOB.joblist + list("Prisoner")
/obj/proc/GetJobName() //Used in secHUD icon generation
- var/obj/item/card/id/I
+ var/assignmentName = "Unknown"
+ var/rankName = "Unknown"
if(istype(src, /obj/item/pda))
var/obj/item/pda/P = src
- I = P.id
+ assignmentName = P.ownjob
+ rankName = P.ownrank
else if(istype(src, /obj/item/card/id))
- I = src
+ var/obj/item/card/id/I = src
+ assignmentName = I.assignment
+ rankName = I.rank
+
- if(I)
- var/job_icons = get_all_job_icons()
- var/centcom = get_all_centcom_jobs()
+ var/job_icons = get_all_job_icons()
+ var/centcom = get_all_centcom_jobs()
- if(I.assignment in centcom) //Return with the NT logo if it is a Centcom job
- return "Centcom"
- if(I.rank in centcom)
- return "Centcom"
-
- if(I.assignment in job_icons) //Check if the job has a hud icon
- return I.assignment
- if(I.rank in job_icons)
- return I.rank
-
- else
- return
+ 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 job_icons) //Check if the job has a hud icon
+ return assignmentName
+ if(rankName in job_icons)
+ return rankName
+
return "Unknown" //Return unknown if none of the above apply
diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm
index 10db762c9f2..22c2d47e3b9 100644
--- a/code/game/jobs/job/support.dm
+++ b/code/game/jobs/job/support.dm
@@ -193,7 +193,38 @@
backpack = /obj/item/storage/backpack/explorer
satchel = /obj/item/storage/backpack/explorer
+/datum/outfit/job/mining/equipped
+ name = "Shaft Miner"
+ suit = /obj/item/clothing/suit/hooded/explorer
+ mask = /obj/item/clothing/mask/gas/explorer
+ glasses = /obj/item/clothing/glasses/meson
+ suit_store = /obj/item/tank/emergency_oxygen
+ internals_slot = slot_s_store
+ backpack_contents = list(
+ /obj/item/flashlight/seclite=1,\
+ /obj/item/kitchen/knife/combat/survival=1,
+ /obj/item/mining_voucher=1,
+ /obj/item/t_scanner/adv_mining_scanner/lesser=1,
+ /obj/item/gun/energy/kinetic_accelerator=1,\
+ /obj/item/stack/marker_beacon/ten=1
+ )
+
+ backpack = /obj/item/storage/backpack/explorer
+ satchel = /obj/item/storage/backpack/explorer
+
+/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ ..()
+ if(visualsOnly)
+ return
+ if(istype(H.wear_suit, /obj/item/clothing/suit/hooded))
+ var/obj/item/clothing/suit/hooded/S = H.wear_suit
+ S.ToggleHood()
+
+/datum/outfit/job/miner/equipped/hardsuit
+ name = "Shaft Miner (Equipment + Hardsuit)"
+ suit = /obj/item/clothing/suit/space/hardsuit/mining
+ mask = /obj/item/clothing/mask/breath
//Griff //BS12 EDIT
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index 2ee1e93683d..af73a13f27c 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -99,7 +99,7 @@
icon_state = "table2-idle"
return 0
-/obj/machinery/optable/Crossed(atom/movable/AM)
+/obj/machinery/optable/Crossed(atom/movable/AM, oldloc)
. = ..()
if(iscarbon(AM) && LAZYLEN(injected_reagents))
to_chat(AM, "You feel a series of tiny pricks!")
diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm
index d262b523808..1d0b8dde152 100644
--- a/code/game/machinery/atmo_control.dm
+++ b/code/game/machinery/atmo_control.dm
@@ -357,7 +357,7 @@
return O:id_tag in sensors
/obj/machinery/computer/general_air_control/linkWith(mob/user, obj/O, link/context)
- sensors[O:id_tag] = reject_bad_name(input(user, "Choose a sensor label:", "Sensor Label") as text|null, allow_numbers=1)
+ sensors[O:id_tag] = reject_bad_name(clean_input(user, "Choose a sensor label:", "Sensor Label"), allow_numbers=1)
return 1
/obj/machinery/computer/general_air_control/large_tank_control
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index d404db8ae0a..a34a49ca051 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -334,9 +334,6 @@
/obj/item/circuitboard/white_ship
name = "circuit Board (White Ship)"
build_path = /obj/machinery/computer/shuttle/white_ship
-/obj/item/circuitboard/golem_ship
- name = "circuit Board (Golem Ship)"
- build_path = /obj/machinery/computer/shuttle/golem_ship
/obj/item/circuitboard/shuttle/syndicate
name = "circuit board (Syndicate Shuttle)"
build_path = /obj/machinery/computer/shuttle/syndicate
@@ -346,7 +343,9 @@
/obj/item/circuitboard/shuttle/syndicate/drop_pod
name = "circuit board (Syndicate Drop Pod)"
build_path = /obj/machinery/computer/shuttle/syndicate/drop_pod
-
+/obj/item/circuitboard/shuttle/golem_ship
+ name = "circuit Board (Golem Ship)"
+ build_path = /obj/machinery/computer/shuttle/golem_ship
/obj/item/circuitboard/HolodeckControl
name = "Circuit board (Holodeck Control)"
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index d064dbda743..be27b0600cf 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -156,7 +156,7 @@
message_cooldown = 0
if("callshuttle")
- var/input = input(usr, "Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","") as text|null
+ var/input = clean_input("Please enter the reason for calling the shuttle.", "Shuttle Call Reason.","")
if(!input || ..() || !is_authenticated(usr))
SSnanoui.update_uis(src)
return
@@ -217,11 +217,11 @@
setMenuState(usr,COMM_SCREEN_STAT)
if("setmsg1")
- stat_msg1 = input("Line 1", "Enter Message Text", stat_msg1) as text|null
+ stat_msg1 = clean_input("Line 1", "Enter Message Text", stat_msg1)
setMenuState(usr,COMM_SCREEN_STAT)
if("setmsg2")
- stat_msg2 = input("Line 2", "Enter Message Text", stat_msg2) as text|null
+ stat_msg2 = clean_input("Line 2", "Enter Message Text", stat_msg2)
setMenuState(usr,COMM_SCREEN_STAT)
if("nukerequest")
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index fb09b40f440..dbe766a2c44 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -466,7 +466,7 @@
active2.fields["comments"] -= active2.fields["comments"][index]
if(href_list["search"])
- var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text
+ var/t1 = clean_input("Search String: (Name, DNA, or ID)", "Med. records", null, null)
if(!t1 || ..())
return 1
active1 = null
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index 87d35c2d7b4..d6e000d660d 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -281,7 +281,7 @@
auth = 0
screen = 0
else
- var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null)
+ var/dkey = trim(clean_input("Please enter the decryption key."))
if(dkey && dkey != "")
if(src.linkedServer.decryptkey == dkey)
auth = 1
@@ -332,7 +332,7 @@
message = noserver
else
if(auth)
- var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null)
+ var/dkey = trim(clean_input("Please enter the decryption key."))
if(dkey && dkey != "")
if(src.linkedServer.decryptkey == dkey)
var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):"))
@@ -395,7 +395,7 @@
//Select Your Name
if("Sender")
- customsender = input(usr, "Please enter the sender's name.") as text|null
+ customsender = clean_input("Please enter the sender's name.")
//Select Receiver
if("Recepient")
@@ -414,11 +414,11 @@
//Enter custom job
if("RecJob")
- customjob = input(usr, "Please enter the sender's job.") as text|null
+ customjob = clean_input("Please enter the sender's job.")
//Enter message
if("Message")
- custommessage = input(usr, "Please enter your message.") as text|null
+ custommessage = clean_input("Please enter your message.")
custommessage = sanitize(copytext(custommessage, 1, MAX_MESSAGE_LEN))
//Send message
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index c0c8c2d349e..bed10bb0923 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -398,7 +398,7 @@
switch(href_list["field"])
if("name")
if(istype(active1, /datum/data/record))
- var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text)
+ var/t1 = reject_bad_name(clean_input("Please input name:", "Secure. records", active1.fields["name"], null))
if(!t1 || !length(trim(t1)) || ..() || active1 != a1)
return 1
active1.fields["name"] = t1
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index ac10eb6e22d..5647ae73766 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -245,7 +245,7 @@
switch(href_list["field"])
if("name")
if(istype(active1, /datum/data/record))
- var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text)
+ var/t1 = reject_bad_name(clean_input("Please input name:", "Secure. records", active1.fields["name"], null))
if(!t1 || !length(trim(t1)) || incapable || active1 != a1)
return 1
active1.fields["name"] = t1
diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm
index 5209003fc59..b1a6f96e2eb 100644
--- a/code/game/machinery/embedded_controller/airlock_controllers.dm
+++ b/code/game/machinery/embedded_controller/airlock_controllers.dm
@@ -76,6 +76,21 @@
name = "Airlock Controller"
tag_secure = 1
+/obj/machinery/embedded_controller/radio/airlock/airlock_controller/Initialize(mapload, given_id_tag, given_frequency, given_tag_exterior_door, given_tag_interior_door, given_tag_airpump, given_tag_chamber_sensor)
+ if(given_id_tag)
+ id_tag = given_id_tag
+ if(given_frequency)
+ set_frequency(given_frequency)
+ if(given_tag_exterior_door)
+ tag_exterior_door = given_tag_exterior_door
+ if(given_tag_interior_door)
+ tag_interior_door = given_tag_interior_door
+ if(given_tag_airpump)
+ tag_airpump = given_tag_airpump
+ if(given_tag_chamber_sensor)
+ tag_chamber_sensor = given_tag_chamber_sensor
+ ..()
+
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
@@ -129,7 +144,6 @@
name = "Access Controller"
tag_secure = 1
-
/obj/machinery/embedded_controller/radio/airlock/access_controller/update_icon()
if(on && program)
if(program.memory["processing"])
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 2bc9196740e..f8305e0fb7d 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -553,9 +553,7 @@ Class Procs:
threatcount += 2
if(check_records || check_arrest)
- var/perpname = perp.name
- if(id)
- perpname = id.registered_name
+ var/perpname = perp.get_visible_name(TRUE)
var/datum/data/record/R = find_security_record("name", perpname)
if(check_records && !R)
diff --git a/code/game/machinery/telecomms/ntsl2.dm b/code/game/machinery/telecomms/ntsl2.dm
index 04f85750516..a5c4f3f1464 100644
--- a/code/game/machinery/telecomms/ntsl2.dm
+++ b/code/game/machinery/telecomms/ntsl2.dm
@@ -409,10 +409,10 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
// if(href_list["table"] && href_list["table"] in tables)
// if(requires_unlock[href_list["table"]] && !source.unlocked)
// return
- // var/new_key = input(user, "Provide a key for the new row.", "New Row") as text|null
+ // var/new_key = clean_input(user, "Provide a key for the new row.", "New Row")
// if(!new_key)
// return
- // var/new_value = input(user, "Provide a new value for the key [new_key]", "New Row") as text|null
+ // var/new_value = clean_input(user, "Provide a new value for the key [new_key]", "New Row")
// if(new_value == null)
// return
// if(word_blacklist.Find(new_value)) //uh oh, they tried to be naughty
@@ -439,7 +439,7 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
if(href_list["array"] && href_list["array"] in arrays)
if(requires_unlock[href_list["array"]] && !source.unlocked)
return
- var/new_value = input(user, "Provide a value for the new index.", "New Index") as text|null
+ var/new_value = clean_input(user, "Provide a value for the new index.", "New Index")
if(new_value == null)
return
var/list/array = vars[href_list["array"]]
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 6dbafe2534f..04e78e937aa 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1083,6 +1083,7 @@
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,
/obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1,
/obj/item/lighter/zippo = 3)
+ prices = list()
/obj/machinery/vending/cigarette/New()
..()
diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm
index b2851129a29..c4c4c674294 100644
--- a/code/game/machinery/wishgranter.dm
+++ b/code/game/machinery/wishgranter.dm
@@ -13,26 +13,28 @@
/obj/machinery/wish_granter/attack_hand(mob/living/carbon/user)
. = ..()
+
if(.)
- return
+ return ..()
+
if(charges <= 0)
- to_chat(user, "The Wish Granter lies silent.")
- return
+ to_chat(user, "The Wish Granter lies silent.")
+ return TRUE
else if(!ishuman(user))
- to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.")
+ to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's..")
return
else if(is_special_character(user))
- to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.")
+ to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.")
else if(!insisting)
- to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?")
+ to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?")
insisting = TRUE
else
- to_chat(user, "You speak. [pick("I want the station to disappear", "Humanity is corrupt, mankind must be destroyed", "I want to be rich", "I want to rule the world", "I want immortality.")]. The Wish Granter answers.")
- to_chat(user, "Your head pounds for a moment, before your vision clears. You are the avatar of the Wish Granter, and your power is LIMITLESS! And it's all yours. You need to make sure no one can take it from you. No one can know, first.")
+ to_chat(user, "You speak. [pick("I want the station to disappear", "Humanity is corrupt, mankind must be destroyed", "I want to be rich", "I want to rule the world", "I want immortality.")]. The Wish Granter answers.")
+ to_chat(user, "Your head pounds for a moment, before your vision clears. You are the avatar of the Wish Granter, and your power is LIMITLESS! And it's all yours. You need to make sure no one can take it from you. No one can know, first.")
charges--
insisting = FALSE
@@ -46,37 +48,43 @@
var/list/types = list()
/obj/machinery/wish_granter/super/attack_hand(mob/living/carbon/user)
+ . = ..()
+
+ if(.)
+ return ..()
+
if(!ishuman(user))
- to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.")
- return
- else if(is_special_character(user) || jobban_isbanned(user, ROLE_TRAITOR) || jobban_isbanned(user, "Syndicate"))
- to_chat(user, "Something instinctual makes you pull away.")
- return
+ to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.")
+ return TRUE
+
+ if(is_special_character(user) || jobban_isbanned(user, ROLE_TRAITOR) || jobban_isbanned(user, "Syndicate"))
+ to_chat(user, "Something instinctual makes you pull away.")
+ return TRUE
+
+ to_chat(user, "Your touch makes the Wish Granter stir. Are you really sure you want to do this?")
+
+ for(var/supname in GLOB.all_superheroes)
+ types += supname
+
+ var/wish
+ if(types.len == 1)
+ wish = pick(types)
else
-
- to_chat(user, "Your touch makes the Wish Granter stir. Are you really sure you want to do this?")
-
- for(var/supname in GLOB.all_superheroes)
- types += supname
-
- var/wish
- if(types.len == 1)
- wish = pick(types)
- else
- wish = input("You want to become...","Wish") as null|anything in types
+ wish = input("You want to become...", "Wish") as null|anything in types
- if(!src || !wish || user.stat == DEAD || (get_dist(src, user) > 4)) //another check after the input to check if someone already used it, closed it, or if they're dead, or if they ran off
- return
+ if(!wish || user.stat == DEAD || (get_dist(src, user) > 4)) // Another check after the input to check if someone already used it, closed it, or if they're dead, or if they ran off.
+ return
- var/datum/superheroes/S = GLOB.all_superheroes[wish]
- if(S.activated)
- to_chat(user,"There can only be one! Pick something else!")
- return
+ var/datum/superheroes/S = GLOB.all_superheroes[wish]
+ if(S.activated)
+ to_chat(user,"There can only be one! Pick something else!")
+ return
- S.create(user)
- S.activated = TRUE //sets this superhero as taken so we don't have duplicates
- playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
- visible_message("The wishgranter fades into mist..")
- add_attack_logs(null, user, "Became [GLOB.all_superheroes[wish]]")
- notify_ghosts("[GLOB.all_superheroes[wish]] has appeared in [get_area(user)].", source = user)
- qdel(src)
+ S.create(user)
+ S.activated = TRUE //sets this superhero as taken so we don't have duplicates
+
+ playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
+ visible_message("The wishgranter fades into mist..")
+ add_attack_logs(null, user, "Became [GLOB.all_superheroes[wish]]")
+ notify_ghosts("[GLOB.all_superheroes[wish]] has appeared in [get_area(user)].", source = user)
+ qdel(src)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 2ff5cabaaaa..258d0eb7898 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -23,6 +23,7 @@
infra_luminosity = 15 //byond implementation is bugged.
force = 5
armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
+ var/ruin_mecha = FALSE //if the mecha starts on a ruin, don't automatically give it a tracking beacon to prevent metagaming.
var/initial_icon = null //Mech type for resetting icon. Only used for reskinning kits (see custom items)
var/can_move = 0 // time of next allowed movement
var/mob/living/carbon/occupant = null
diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm
index e4c001a508a..516b57e898a 100644
--- a/code/game/mecha/working/working.dm
+++ b/code/game/mecha/working/working.dm
@@ -3,4 +3,5 @@
/obj/mecha/working/New()
..()
- trackers += new /obj/item/mecha_parts/mecha_tracking(src)
+ if(!ruin_mecha)
+ trackers += new /obj/item/mecha_parts/mecha_tracking(src)
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index 3c5fea2a967..c410a9130a0 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -88,7 +88,7 @@ var/global/list/image/splatter_cache = list()
return TRUE
//Add "bloodiness" of this blood's type, to the human's shoes
-/obj/effect/decal/cleanable/blood/Crossed(atom/movable/O)
+/obj/effect/decal/cleanable/blood/Crossed(atom/movable/O, oldloc)
if(!off_floor && ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm
index 8598381aaf1..1e45c2aa4cf 100644
--- a/code/game/objects/effects/decals/Cleanable/tracks.dm
+++ b/code/game/objects/effects/decals/Cleanable/tracks.dm
@@ -29,7 +29,7 @@ var/global/list/image/fluidtrack_cache = list()
blood_state = BLOOD_STATE_HUMAN //the icon state to load images from
-/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O)
+/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O, oldloc)
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index d061aca8d95..8bb117b832c 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -345,7 +345,7 @@ steam.start() -- spawns the effect
return 1
-/obj/effect/effect/bad_smoke/Crossed(mob/living/carbon/M as mob )
+/obj/effect/effect/bad_smoke/Crossed(mob/living/carbon/M as mob, oldloc)
..()
if(istype(M, /mob/living/carbon))
if(M.internal != null && M.wear_mask && (M.wear_mask.flags & AIRTIGHT))
@@ -569,7 +569,7 @@ steam.start() -- spawns the effect
M.coughedtime = 0
return
-/obj/effect/effect/sleep_smoke/Crossed(mob/living/carbon/M as mob )
+/obj/effect/effect/sleep_smoke/Crossed(mob/living/carbon/M as mob, oldloc)
..()
if(istype(M, /mob/living/carbon))
if(M.internal != null && M.wear_mask && (M.wear_mask.flags & AIRTIGHT))
@@ -672,7 +672,7 @@ steam.start() -- spawns the effect
R.updatehealth()
return
-/obj/effect/effect/mustard_gas/Crossed(mob/living/carbon/human/R as mob )
+/obj/effect/effect/mustard_gas/Crossed(mob/living/carbon/human/R as mob, oldloc)
..()
if(istype(R, /mob/living/carbon/human))
if(R.internal != null && usr.wear_mask && (R.wear_mask.flags & AIRTIGHT) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/storage/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
@@ -984,7 +984,7 @@ steam.start() -- spawns the effect
qdel(src)
-/obj/structure/foam/Crossed(var/atom/movable/AM)
+/obj/structure/foam/Crossed(var/atom/movable/AM, oldloc)
if(metal)
return
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index b44c4e3dd1b..f134bd44b10 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -94,7 +94,7 @@
spawn(5)
qdel(src)
-/obj/effect/particle_effect/foam/Crossed(atom/movable/AM)
+/obj/effect/particle_effect/foam/Crossed(atom/movable/AM, oldloc)
if(metal)
return
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index ddce32f68fa..93ab0c8e51b 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -52,7 +52,7 @@
steps--
return 1
-/obj/effect/particle_effect/smoke/Crossed(mob/living/M)
+/obj/effect/particle_effect/smoke/Crossed(mob/living/M, oldloc)
if(!istype(M))
return
smoke_mob(M)
@@ -207,4 +207,4 @@
return 1
/datum/effect_system/smoke_spread/sleeping
- effect_type = /obj/effect/particle_effect/smoke/sleeping
\ No newline at end of file
+ effect_type = /obj/effect/particle_effect/smoke/sleeping
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 547df1b96ef..76e28f013a1 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -11,7 +11,7 @@
/obj/effect/mine/proc/mineEffect(mob/living/victim)
to_chat(victim, "*click*")
-/obj/effect/mine/Crossed(AM as mob|obj)
+/obj/effect/mine/Crossed(AM as mob|obj, oldloc)
if(!isliving(AM))
return
var/mob/living/M = AM
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 691ed994875..f36902664f8 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -3,7 +3,6 @@
desc = "Looks unstable. Best to test it with the clown."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "portal"
- density = TRUE
unacidable = TRUE
anchored = TRUE
@@ -17,9 +16,6 @@
var/can_multitool_to_remove = FALSE
var/ignore_tele_proof_area_setting = FALSE
-/obj/effect/portal/Bumped(mob/M as mob|obj)
- teleport(M)
-
/obj/effect/portal/New(loc, turf/target, creator = null, lifespan = 300)
..()
@@ -49,10 +45,13 @@
/obj/effect/portal/singularity_act()
return
-/obj/effect/portal/Crossed(atom/movable/AM)
+/obj/effect/portal/Crossed(atom/movable/AM, oldloc)
if(isobserver(AM))
return ..()
+ if(target && (get_turf(oldloc) == get_turf(target)))
+ return ..()
+
if(!teleport(AM))
return ..()
diff --git a/code/game/objects/effects/spawners/airlock_spawner.dm b/code/game/objects/effects/spawners/airlock_spawner.dm
new file mode 100644
index 00000000000..496f02c61d1
--- /dev/null
+++ b/code/game/objects/effects/spawners/airlock_spawner.dm
@@ -0,0 +1,345 @@
+/*
+Spawners for mappers. Just plonk one down of the desired size and it will place the machinery for you. The red arrow things indicate where the chamber is.
+This spawner places pipe leading up to the interior door, you will need to finish it off yourself with a connector, canister, and pipe connecting the two. It also assumes you already put in wall and floor.
+*/
+
+#define HALF_X round((tiles_in_x_direction - 1) * 0.5) //These are required so that the airlock can be in the middle of the chamber wall
+#define HALF_Y round((tiles_in_y_direction - 1) * 0.5)
+#define CHAMBER_LONG 1
+#define CHAMBER_SQUARE 2
+#define CHAMBER_BIGGER 3
+#define DOOR_NORMAL_PLACEMENT 1
+#define DOOR_FLIPPED_PLACEMENT 2
+
+#define AIRPUMP_TAG "[id_to_link]_pump"
+#define SENSOR_TAG "[id_to_link]_sensor"
+#define OUTER_DOOR_TAG "[id_to_link]_outer"
+#define INNER_DOOR_TAG "[id_to_link]_inner"
+
+/obj/effect/spawner/airlock
+ name = "1 by 1 airlock spawner (interior north, exterior south)"
+ desc = "If you can see this, there's probably a missing airlock here. Better tell an admin and report this on the github."
+ icon = 'icons/obj/airlock_spawner.dmi'
+ icon_state = "1x1_N_to_S"
+ layer = SPLASHSCREEN_PLANE //So we absolutely always appear above everything else. We delete ourself after spawning so this is fine
+ var/interior_direction = NORTH //This is also the direction the spawner will send the pipe
+ var/exterior_direction = SOUTH
+ var/opposite_interior_direction //We're checking these often enough for them to merit their own vars
+ var/interior_direction_cw
+ var/interior_direction_ccw
+ var/north_or_south_interior //Used a bit everywhere for locational stuff
+ var/north_or_south_exterior //Likewise
+ var/tiles_in_x_direction = 1
+ var/tiles_in_y_direction = 1
+ var/id_to_link
+ var/radio_frequency = 1379
+ var/required_access = list(access_external_airlocks)
+ var/door_name = "external access"
+ var/door_type = /obj/machinery/door/airlock/external/glass
+ var/one_door_interior //For square airlocks, if you set this then a) only one door will spawn, and b) you can choose if the door should go opposite to how it normally goes. Please use the define
+ var/one_door_exterior //See above
+
+/obj/effect/spawner/airlock/Initialize()
+ ..()
+ forceMove(locate(x + 1, y + 1, z)) //Needs to move because our icon_state implies we are one turf to the northeast, when we're not
+ opposite_interior_direction = turn(interior_direction, 180) //Do it this way (instead of setting it directly) to avoid code mishaps
+ interior_direction_cw = turn(interior_direction, 90)
+ interior_direction_ccw = turn(interior_direction, 270)
+ if(interior_direction == NORTH || interior_direction == SOUTH)
+ north_or_south_interior = TRUE
+ if(exterior_direction == NORTH || exterior_direction == SOUTH)
+ north_or_south_exterior = TRUE
+ id_to_link = "[UID()]" //We want unique IDs, this will give us a unique ID
+ var/turf/turf_interior = get_airlock_location(interior_direction)
+ var/turf/turf_exterior = get_airlock_location(exterior_direction)
+ handle_door_creation(turf_interior, TRUE, one_door_interior)
+ handle_door_creation(turf_exterior, FALSE, one_door_exterior)
+ handle_pipes_creation(turf_interior)
+ handle_control_placement()
+ qdel(src)
+
+/obj/effect/spawner/airlock/proc/get_airlock_location(desired_direction) //Finds a turf to place an airlock and returns it, this turf will be in the middle of the relevant wall
+ var/turf/T
+ switch(desired_direction)
+ if(NORTH)
+ T = locate(x + HALF_X, y + tiles_in_y_direction, z)
+ if(SOUTH)
+ T = locate(x + HALF_X, y - 1, z)
+ if(EAST)
+ T = locate(x + tiles_in_x_direction, y + HALF_Y, z)
+ if(WEST)
+ T = locate(x - 1, y + HALF_Y, z)
+ return T
+
+/obj/effect/spawner/airlock/proc/handle_door_creation(turf/T, is_this_an_interior_airlock, one_door_only) //Creates a door (or two) and also creates a button
+ var/obj/machinery/door/airlock/A
+ if(one_door_only != DOOR_FLIPPED_PLACEMENT)
+ A = new door_type(T)
+ handle_door_stuff(A, is_this_an_interior_airlock)
+ var/obj/machinery/access_button/the_button = spawn_button(T, is_this_an_interior_airlock ? interior_direction : exterior_direction)
+ if(one_door_only == DOOR_NORMAL_PLACEMENT) //We only need one door, we are done
+ return
+ if(!(tiles_in_x_direction % 2) && (is_this_an_interior_airlock && north_or_south_interior || !is_this_an_interior_airlock && north_or_south_exterior)) //Handle extra airlock for aesthetics
+ A = new door_type(get_step(T, EAST))
+ handle_door_stuff(A, is_this_an_interior_airlock)
+ if(one_door_only == DOOR_FLIPPED_PLACEMENT)
+ the_button.forceMove(get_step(the_button, EAST))
+ else if(!(tiles_in_y_direction % 2) && (is_this_an_interior_airlock && !north_or_south_interior || !is_this_an_interior_airlock && !north_or_south_exterior)) //Handle extra airlock for aesthetics
+ A = new door_type(get_step(T, NORTH))
+ handle_door_stuff(A, is_this_an_interior_airlock)
+ if(one_door_only == DOOR_FLIPPED_PLACEMENT)
+ the_button.forceMove(get_step(the_button, NORTH))
+
+/obj/effect/spawner/airlock/proc/handle_door_stuff(obj/machinery/door/airlock/A, is_this_an_interior_airlock) //This sets up the door vars correctly and then locks it before first use
+ A.set_frequency(radio_frequency)
+ A.id_tag = is_this_an_interior_airlock ? INNER_DOOR_TAG : OUTER_DOOR_TAG
+ A.req_access = required_access
+ A.name = door_name
+ A.lock()
+
+/obj/effect/spawner/airlock/proc/spawn_button(turf/T, some_direction)
+ var/obj/machinery/access_button/the_button = new(T)
+ the_button.master_tag = id_to_link
+ the_button.set_frequency(radio_frequency)
+ switch(some_direction)
+ if(NORTH)
+ the_button.pixel_x -= 25
+ the_button.pixel_y = 7
+ if(EAST)
+ the_button.pixel_x = 7
+ the_button.pixel_y = -25
+ if(SOUTH)
+ the_button.pixel_x -= 25
+ the_button.pixel_y -= 7
+ if(WEST)
+ the_button.pixel_x -= 7
+ the_button.pixel_y -= 25
+ the_button.req_access = required_access
+ return the_button
+
+/obj/effect/spawner/airlock/proc/handle_control_placement() //Stick the sensor and controller on the same bit of wall, this will ONLY be unsuitable if airlocks are on both the south and west turfs
+ var/turf/T = get_turf(src)
+ var/obj/machinery/airlock_sensor/AS = new(T)
+ var/obj/machinery/embedded_controller/radio/airlock/airlock_controller/AC = new(T, id_to_link, radio_frequency, OUTER_DOOR_TAG, INNER_DOOR_TAG, AIRPUMP_TAG, SENSOR_TAG)
+ AC.req_access = required_access
+ AS.id_tag = SENSOR_TAG
+ AS.set_frequency(radio_frequency)
+ if(interior_direction != WEST && exterior_direction != WEST) //If west wall is free, place stuff there
+ AC.pixel_x -= 25
+ AC.pixel_y += 9
+ AS.pixel_x -= 25
+ AS.pixel_y -= 9
+ else if(interior_direction != SOUTH && exterior_direction != SOUTH) //If south wall is free, place stuff there
+ AC.pixel_x += 9
+ AC.pixel_y -= 25
+ AS.pixel_x -= 9
+ AS.pixel_y -= 25
+ else //Send them over to the other side of the chamber
+ T = locate(x + tiles_in_x_direction - 1, y + tiles_in_y_direction - 1, z)
+ AC.forceMove(T)
+ AS.forceMove(T)
+ AC.pixel_x += 25
+ AC.pixel_y += 9
+ AS.pixel_x += 25
+ AS.pixel_y -= 9
+
+/obj/effect/spawner/airlock/proc/handle_pipes_creation(turf/T) //This places all required piping down, then properly initializes it. T is the turf that the interior airlock occupies
+ var/turf/below_T = get_step(T, opposite_interior_direction)
+
+ var/two_way_pipe = interior_direction | opposite_interior_direction
+ var/chamber_shape //This determines the layout of the chamber and therefore how many vents should be present
+ if(tiles_in_x_direction == 2 && tiles_in_y_direction == 2)
+ chamber_shape = CHAMBER_SQUARE
+ else if(tiles_in_x_direction > 1 && tiles_in_y_direction > 1)
+ chamber_shape = CHAMBER_BIGGER
+ else
+ chamber_shape = CHAMBER_LONG
+ pipe_creation_helper(/obj/machinery/atmospherics/pipe/simple/visible, T, interior_direction, two_way_pipe)
+ switch(chamber_shape)
+ if(CHAMBER_LONG) //Easy enough, place a single vent
+ pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume,
+ below_T,
+ interior_direction)
+ if(CHAMBER_SQUARE) //We need a T-manifold and two vents for this
+ pipe_creation_helper(/obj/machinery/atmospherics/pipe/manifold/visible,
+ below_T,
+ north_or_south_interior ? WEST : SOUTH,
+ NORTH | EAST | (north_or_south_interior ? SOUTH : WEST))
+ pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume,
+ get_step(below_T, opposite_interior_direction),
+ interior_direction)
+ pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume,
+ north_or_south_interior ? EAST_OF_TURF(below_T) : NORTH_OF_TURF(below_T),
+ turn(interior_direction, interior_direction == SOUTH || interior_direction == EAST ? -90 : 90))
+ if(CHAMBER_BIGGER) //We need a central column of manifolds and a vent either side of each manifold
+ var/depth = north_or_south_interior ? tiles_in_y_direction : tiles_in_x_direction
+ var/turf/put_thing_here = below_T
+ for(var/i in 1 to depth)
+ if(i != depth)//We're placing more pipe later, so we need a 4-way manifold
+ pipe_creation_helper(/obj/machinery/atmospherics/pipe/manifold4w/visible, put_thing_here, interior_direction, NORTH | EAST | SOUTH | WEST)
+ else //We stop here, so place a T-manifold down
+ pipe_creation_helper(/obj/machinery/atmospherics/pipe/manifold/visible,
+ put_thing_here,
+ opposite_interior_direction,
+ interior_direction_cw | interior_direction | interior_direction_ccw)
+ pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume,
+ get_step(put_thing_here, interior_direction_cw),
+ interior_direction_ccw)
+ pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume,
+ get_step(put_thing_here, interior_direction_ccw),
+ interior_direction_cw)
+ put_thing_here = get_step(put_thing_here, opposite_interior_direction) //Now move the turf we're generating stuff from 1 forward
+
+/obj/effect/spawner/airlock/proc/pipe_creation_helper(path, location, direction, initialization_directions) //Create some kind of atmospherics machinery and initialize it properly
+ var/obj/machinery/atmospherics/A = new path(location)
+ A.dir = direction
+ A.on_construction(A.dir, initialization_directions ? initialization_directions : A.dir)
+ if(istype(A, /obj/machinery/atmospherics/unary/vent_pump/high_volume))
+ var/obj/machinery/atmospherics/unary/vent_pump/high_volume/created_pump = A
+ created_pump.id_tag = AIRPUMP_TAG
+ created_pump.set_frequency(radio_frequency)
+
+
+//Premade airlocks for mappers, probably won't need all of these but whatever
+/obj/effect/spawner/airlock/s_to_n
+ name = "1 by 1 airlock spawner (interior south, exterior north)"
+ icon_state = "1x1_S_to_N"
+ interior_direction = SOUTH
+ exterior_direction = NORTH
+/obj/effect/spawner/airlock/e_to_w
+ name = "1 by 1 airlock spawner (interior east, exterior west)"
+ icon_state = "1x1_E_to_W"
+ interior_direction = EAST
+ exterior_direction = WEST
+/obj/effect/spawner/airlock/w_to_e
+ name = "1 by 1 airlock spawner (interior west, exterior east)"
+ icon_state = "1x1_W_to_E"
+ interior_direction = WEST
+ exterior_direction = EAST
+
+/obj/effect/spawner/airlock/long //Long and thin
+ name = "long airlock spawner (interior north, exterior south)"
+ icon_state = "1x2_N_to_S"
+ tiles_in_y_direction = 2
+/obj/effect/spawner/airlock/s_to_n/long
+ name = "long airlock spawner (interior south, exterior north)"
+ icon_state = "1x2_S_to_N"
+ tiles_in_y_direction = 2
+/obj/effect/spawner/airlock/e_to_w/long
+ name = "long airlock spawner (interior east, exterior west)"
+ icon_state = "1x2_E_to_W"
+ tiles_in_x_direction = 2
+/obj/effect/spawner/airlock/w_to_e/long
+ name = "long airlock spawner (interior west, exterior east)"
+ icon_state = "1x2_W_to_E"
+ tiles_in_x_direction = 2
+
+/obj/effect/spawner/airlock/long/square //Square
+ name = "square airlock spawner (interior north, exterior south)"
+ icon_state = "2x2_N_to_S"
+ tiles_in_x_direction = 2
+/obj/effect/spawner/airlock/s_to_n/long/square
+ name = "square airlock spawner (interior south, exterior north)"
+ icon_state = "2x2_S_to_N"
+ tiles_in_x_direction = 2
+/obj/effect/spawner/airlock/e_to_w/long/square
+ name = "square airlock spawner (interior east, exterior west)"
+ icon_state = "2x2_E_to_W"
+ tiles_in_y_direction = 2
+/obj/effect/spawner/airlock/w_to_e/long/square
+ name = "square airlock spawner (interior west, exterior east)"
+ icon_state = "2x2_W_to_E"
+ tiles_in_y_direction = 2
+/obj/effect/spawner/airlock/long/square/e_to_s
+ name = "square airlock spawner (interior east, exterior south)"
+ icon_state = "2x2_E_to_S"
+ interior_direction = EAST
+ exterior_direction = SOUTH
+
+/obj/effect/spawner/airlock/long/square/wide
+ name = "rectangular airlock spawner (interior north, exterior south)"
+ icon_state = "3x2_N_to_S"
+ tiles_in_x_direction = 3
+/obj/effect/spawner/airlock/s_to_n/long/square/wide
+ name = "rectangular airlock spawner (interior south, exterior north)"
+ icon_state = "3x2_S_to_N"
+ tiles_in_x_direction = 3
+/obj/effect/spawner/airlock/e_to_w/long/square/wide
+ name = "rectangular airlock spawner (interior east, exterior west)"
+ icon_state = "3x2_E_to_W"
+ tiles_in_y_direction = 3
+/obj/effect/spawner/airlock/w_to_e/long/square/wide
+ name = "rectangular airlock spawner (interior west, exterior east)"
+ icon_state = "3x2_W_to_E"
+ tiles_in_y_direction = 3
+
+/obj/effect/spawner/airlock/long/square/three
+ name = "3 by 3 square airlock spawner (interior north, exterior south)"
+ icon_state = "3x3_N_to_S"
+ interior_direction = NORTH
+ exterior_direction = SOUTH
+ tiles_in_x_direction = 3
+ tiles_in_y_direction = 3
+
+/obj/effect/spawner/airlock/e_to_w/arrivals
+ required_access = null
+
+/obj/effect/spawner/airlock/engineer
+ required_access = list(access_engine)
+ door_name = "engineering external access"
+/obj/effect/spawner/airlock/e_to_w/engineer
+ required_access = list(access_engine)
+ door_name = "engineering external access"
+/obj/effect/spawner/airlock/s_to_n/engineer
+ required_access = list(access_engine)
+ door_name = "engineering external access"
+/obj/effect/spawner/airlock/long/engineer
+ required_access = list(access_engine)
+ door_name = "engineering external access"
+/obj/effect/spawner/airlock/long/square/engine
+ required_access = list(access_engine)
+ door_name = "engine external access"
+ icon_state = "2x2_N_to_S_leftdoors"
+ door_type = /obj/machinery/door/airlock/external
+ one_door_interior = DOOR_NORMAL_PLACEMENT
+ one_door_exterior = DOOR_NORMAL_PLACEMENT
+/obj/effect/spawner/airlock/long/square/engine/reversed
+ icon_state = "2x2_N_to_S_rightdoors"
+ one_door_interior = DOOR_FLIPPED_PLACEMENT
+ one_door_exterior = DOOR_FLIPPED_PLACEMENT
+
+/obj/effect/spawner/airlock/w_to_e/long/square/wide/mining
+ door_name = "mining external access"
+ required_access = list(access_mining)
+/obj/effect/spawner/airlock/long/square/wide/mining
+ door_name = "mining external access"
+ required_access = list(access_mining)
+
+/obj/effect/spawner/airlock/e_to_w/minisat
+ door_name = "minisat external access"
+ required_access = list(access_minisat)
+/obj/effect/spawner/airlock/long/square/e_to_s/telecoms
+ door_name = "telecoms external access"
+ required_access = list(access_tcomsat, access_external_airlocks)
+ door_type = /obj/machinery/door/airlock/external
+
+/obj/effect/spawner/airlock/long/square/three/syndicate
+ name = "3 by 3 square airlock spawner (interior west, exterior north)"
+ icon_state = "3x3_W_to_N"
+ interior_direction = WEST
+ exterior_direction = NORTH
+ door_name = "ship external access"
+ req_access = list(access_syndicate)
+ door_type = /obj/machinery/door/airlock/external
+
+#undef HALF_X
+#undef HALF_Y
+#undef CHAMBER_LONG
+#undef CHAMBER_SQUARE
+#undef CHAMBER_BIGGER
+#undef DOOR_NORMAL_PLACEMENT
+#undef DOOR_FLIPPED_PLACEMENT
+#undef AIRPUMP_TAG
+#undef SENSOR_TAG
+#undef OUTER_DOOR_TAG
+#undef INNER_DOOR_TAG
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index e8cd72b81e9..c1231e698fc 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -1,23 +1,43 @@
/* Simple object type, calls a proc when "stepped" on by something */
/obj/effect/step_trigger
- var/affect_ghosts = 0
- var/stopper = 1 // stops throwers
- invisibility = 101 // nope cant see this shit
- anchored = 1
+ var/affect_ghosts = FALSE
+ var/stopper = TRUE // stops throwers
+ var/mobs_only = FALSE
+ invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit
+ anchored = TRUE
/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
- return 0
+ return FALSE
-/obj/effect/step_trigger/Crossed(H as mob|obj)
- ..()
+/obj/effect/step_trigger/Crossed(var/H, oldloc)
+ . = ..()
if(!H)
return
- if(istype(H, /mob/dead/observer) && !affect_ghosts)
+ if(isobserver(H) && !affect_ghosts)
+ return
+ if(!ismob(H) && mobs_only)
return
Trigger(H)
+/obj/effect/step_trigger/singularity_act()
+ return
+/obj/effect/step_trigger/singularity_pull()
+ return
+
+/* Sends a message to mob when triggered*/
+
+/obj/effect/step_trigger/message
+ var/message //the message to give to the mob
+ var/once = 1
+ mobs_only = TRUE
+
+/obj/effect/step_trigger/message/Trigger(mob/M)
+ if(M.client)
+ to_chat(M, "[message]")
+ if(once)
+ qdel(src)
/* Tosses things in a certain direction */
@@ -30,57 +50,57 @@
var/nostop = 0 // if 1: will only be stopped by teleporters
var/list/affecting = list()
- Trigger(var/atom/A)
- if(!A || !istype(A, /atom/movable))
+/obj/effect/step_trigger/thrower/Trigger(atom/A)
+ if(!A || !ismovableatom(A))
+ return
+ var/atom/movable/AM = A
+ var/curtiles = 0
+ var/stopthrow = 0
+ for(var/obj/effect/step_trigger/thrower/T in orange(2, src))
+ if(AM in T.affecting)
return
- var/atom/movable/AM = A
- var/curtiles = 0
- var/stopthrow = 0
- for(var/obj/effect/step_trigger/thrower/T in orange(2, src))
- if(AM in T.affecting)
- return
- if(ismob(AM))
- var/mob/M = AM
- if(immobilize)
- M.canmove = 0
+ if(isliving(AM))
+ var/mob/living/M = AM
+ if(immobilize)
+ M.canmove = FALSE
- affecting.Add(AM)
- while(AM && !stopthrow)
- if(tiles)
- if(curtiles >= tiles)
- break
- if(AM.z != src.z)
+ affecting.Add(AM)
+ while(AM && !stopthrow)
+ if(tiles)
+ if(curtiles >= tiles)
break
+ if(AM.z != src.z)
+ break
- curtiles++
+ curtiles++
- sleep(speed)
+ sleep(speed)
- // Calculate if we should stop the process
- if(!nostop)
- for(var/obj/effect/step_trigger/T in get_step(AM, direction))
- if(T.stopper && T != src)
- stopthrow = 1
- else
- for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction))
- if(T.stopper)
- stopthrow = 1
+ // Calculate if we should stop the process
+ if(!nostop)
+ for(var/obj/effect/step_trigger/T in get_step(AM, direction))
+ if(T.stopper && T != src)
+ stopthrow = 1
+ else
+ for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction))
+ if(T.stopper)
+ stopthrow = 1
- if(AM)
- var/predir = AM.dir
- step(AM, direction)
- if(!facedir)
- AM.dir = predir
+ if(AM)
+ var/predir = AM.dir
+ step(AM, direction)
+ if(!facedir)
+ AM.setDir(predir)
- affecting.Remove(AM)
+ affecting.Remove(AM)
- if(ismob(AM))
- var/mob/M = AM
- if(immobilize)
- M.canmove = 1
+ if(isliving(AM))
+ var/mob/living/M = AM
+ if(immobilize)
+ M.canmove = TRUE
/* Stops things thrown by a thrower, doesn't do anything */
@@ -93,12 +113,11 @@
var/teleport_y = 0
var/teleport_z = 0
- Trigger(var/atom/movable/A)
- if(teleport_x && teleport_y && teleport_z)
+/obj/effect/step_trigger/teleporter/Trigger(atom/movable/A)
+ if(teleport_x && teleport_y && teleport_z)
- A.x = teleport_x
- A.y = teleport_y
- A.z = teleport_z
+ var/turf/T = locate(teleport_x, teleport_y, teleport_z)
+ A.forceMove(T)
/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */
@@ -107,11 +126,73 @@
var/teleport_y_offset = 0
var/teleport_z_offset = 0
- Trigger(var/atom/movable/A)
- if(teleport_x && teleport_y && teleport_z)
- if(teleport_x_offset && teleport_y_offset && teleport_z_offset)
+/obj/effect/step_trigger/teleporter/random/Trigger(atom/movable/A)
+ if(teleport_x && teleport_y && teleport_z)
+ if(teleport_x_offset && teleport_y_offset && teleport_z_offset)
- A.x = rand(teleport_x, teleport_x_offset)
- A.y = rand(teleport_y, teleport_y_offset)
- A.z = rand(teleport_z, teleport_z_offset)
+ var/turf/T = locate(rand(teleport_x, teleport_x_offset), rand(teleport_y, teleport_y_offset), rand(teleport_z, teleport_z_offset))
+ if (T)
+ A.forceMove(T)
+/* Fancy teleporter, creates sparks and smokes when used */
+
+/obj/effect/step_trigger/teleport_fancy
+ var/locationx
+ var/locationy
+ var/uses = 1 //0 for infinite uses
+ var/entersparks = 0
+ var/exitsparks = 0
+ var/entersmoke = 0
+ var/exitsmoke = 0
+
+/obj/effect/step_trigger/teleport_fancy/Trigger(mob/M)
+ var/dest = locate(locationx, locationy, z)
+ M.Move(dest)
+
+ if(entersparks)
+ var/datum/effect_system/spark_spread/s = new
+ s.set_up(4, 1, src)
+ s.start()
+ if(exitsparks)
+ var/datum/effect_system/spark_spread/s = new
+ s.set_up(4, 1, dest)
+ s.start()
+
+ if(entersmoke)
+ var/datum/effect_system/smoke_spread/s = new
+ s.set_up(4, 1, src, 0)
+ s.start()
+ if(exitsmoke)
+ var/datum/effect_system/smoke_spread/s = new
+ s.set_up(4, 1, dest, 0)
+ s.start()
+
+ uses--
+ if(uses == 0)
+ qdel(src)
+
+/* Simple sound player, Mapper friendly! */
+
+/obj/effect/step_trigger/sound_effect
+ var/sound //eg. path to the sound, inside '' eg: 'growl.ogg'
+ var/volume = 100
+ var/freq_vary = 1 //Should the frequency of the sound vary?
+ var/extra_range = 0 // eg World.view = 7, extra_range = 1, 7+1 = 8, 8 turfs radius
+ var/happens_once = 0
+ var/triggerer_only = 0 //Whether the triggerer is the only person who hears this
+
+
+/obj/effect/step_trigger/sound_effect/Trigger(atom/movable/A)
+ var/turf/T = get_turf(A)
+
+ if(!T)
+ return
+
+ if(triggerer_only && ismob(A))
+ var/mob/B = A
+ B.playsound_local(T, sound, volume, freq_vary)
+ else
+ playsound(T, sound, volume, freq_vary, extra_range)
+
+ if(happens_once)
+ qdel(src)
\ No newline at end of file
diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm
index f6b654ccbbe..1dc126faa6c 100644
--- a/code/game/objects/effects/temporary_visuals/clockcult.dm
+++ b/code/game/objects/effects/temporary_visuals/clockcult.dm
@@ -6,6 +6,10 @@
randomdir = 0
layer = ABOVE_NORMAL_TURF_LAYER
+/obj/effect/temp_visual/ratvar/door
+ icon_state = "ratvardoorglow"
+ layer = CLOSED_DOOR_LAYER //above closed doors
+
/obj/effect/temp_visual/ratvar/door/window
icon_state = "ratvarwindoorglow"
layer = ABOVE_WINDOW_LAYER
@@ -16,9 +20,27 @@
/obj/effect/temp_visual/ratvar/beam/grille
layer = BELOW_OBJ_LAYER
+/obj/effect/temp_visual/ratvar/beam/itemconsume
+ layer = HIGH_OBJ_LAYER
+
+/obj/effect/temp_visual/ratvar/beam/falsewall
+ layer = OBJ_LAYER
+
+/obj/effect/temp_visual/ratvar/beam/catwalk
+ layer = LATTICE_LAYER
+
+/obj/effect/temp_visual/ratvar/wall
+ icon_state = "ratvarwallglow"
+
+/obj/effect/temp_visual/ratvar/wall/false
+ layer = OBJ_LAYER
+
/obj/effect/temp_visual/ratvar/floor
icon_state = "ratvarfloorglow"
+/obj/effect/temp_visual/ratvar/floor/catwalk
+ layer = LATTICE_LAYER
+
/obj/effect/temp_visual/ratvar/window
icon_state = "ratvarwindowglow"
layer = ABOVE_OBJ_LAYER
@@ -26,6 +48,10 @@
/obj/effect/temp_visual/ratvar/window/single
icon_state = "ratvarwindowglow_s"
+/obj/effect/temp_visual/ratvar/gear
+ icon_state = "ratvargearglow"
+ layer = BELOW_OBJ_LAYER
+
/obj/effect/temp_visual/ratvar/grille
icon_state = "ratvargrilleglow"
layer = BELOW_OBJ_LAYER
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 073cd0df669..9dbb02553ca 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -578,7 +578,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/proc/is_equivalent(obj/item/I)
return I == src
-/obj/item/Crossed(atom/movable/AM)
+/obj/item/Crossed(atom/movable/AM, oldloc)
. = ..()
if(prob(trip_chance) && ishuman(AM))
var/mob/living/carbon/human/H = AM
diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm
index 05d9d4389ad..a80352c01ba 100644
--- a/code/game/objects/items/control_wand.dm
+++ b/code/game/objects/items/control_wand.dm
@@ -50,6 +50,7 @@
to_chat(user, "[D]'s ID scan is disabled!")
return
if(D.check_access(src.ID))
+ D.add_hiddenprint(user)
switch(mode)
if(WAND_OPEN)
if(D.density)
diff --git a/code/game/objects/items/devices/voice.dm b/code/game/objects/items/devices/voice.dm
index 339271cdcca..38bcd16f01e 100644
--- a/code/game/objects/items/devices/voice.dm
+++ b/code/game/objects/items/devices/voice.dm
@@ -34,7 +34,7 @@
A.UpdateButtonIcon()
/obj/item/voice_changer/proc/set_voice(mob/user)
- var/chosen_voice = input(user, "What voice would you like to mimic? Leave this empty to use the voice on your ID card.", "Set Voice Changer", voice) as text
+ var/chosen_voice = clean_input("What voice would you like to mimic? Leave this empty to use the voice on your ID card.", "Set Voice Changer", voice, user)
if(!chosen_voice)
voice = null
to_chat(user, "You are now mimicking the voice on your ID card.")
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 0bdc88c5b52..0e95f509463 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -195,8 +195,6 @@
heal_burn = 25
//Medical Herbs//
-
-
/obj/item/stack/medical/bruise_pack/comfrey
name = "\improper Comfrey leaf"
singular_name = "Comfrey leaf"
@@ -217,48 +215,55 @@
color = "#4CC5C7"
heal_burn = 12
-
-//Splints//
-
-
+// Splints
/obj/item/stack/medical/splint
name = "medical splints"
singular_name = "medical splint"
icon_state = "splint"
- unique_handling = 1
+ unique_handling = TRUE
self_delay = 100
+ var/other_delay = 0
/obj/item/stack/medical/splint/attack(mob/living/M, mob/user)
if(..())
- return 1
+ return TRUE
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
var/limb = affecting.name
+
if(!(affecting.limb_name in list("l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot")))
to_chat(user, "You can't apply a splint there!")
- return
+ return TRUE
+
if(affecting.status & ORGAN_SPLINTED)
to_chat(user, "[H]'s [limb] is already splinted!")
- if(alert(user, "Would you like to remove the splint from [H]'s [limb]?", "Removing.", "Yes", "No") == "Yes")
+ if(alert(user, "Would you like to remove the splint from [H]'s [limb]?", "Splint removal.", "Yes", "No") == "Yes")
affecting.status &= ~ORGAN_SPLINTED
H.handle_splints()
to_chat(user, "You remove the splint from [H]'s [limb].")
- return
- if(M == user)
- user.visible_message("[user] starts to apply [src] to [user.p_their()] [limb].", \
- "You start to apply [src] to your [limb].", \
- "You hear something being wrapped.")
- if(!do_mob(user, H, self_delay))
- return
- else
- user.visible_message("[user] applies [src] to [H]'s [limb].", \
- "You apply [src] to [H]'s [limb].", \
- "You hear something being wrapped.")
+ return TRUE
+
+ if((M == user && self_delay > 0) || (M != user && other_delay > 0))
+ user.visible_message("[user] starts to apply [src] to [H]'s [limb].", \
+ "You start to apply [src] to [H]'s [limb].", \
+ "You hear something being wrapped.")
+
+ if(M == user && !do_mob(user, H, self_delay))
+ return TRUE
+ else if(!do_mob(user, H, other_delay))
+ return TRUE
+
+ user.visible_message("[user] applies [src] to [H]'s [limb].", \
+ "You apply [src] to [H]'s [limb].")
affecting.status |= ORGAN_SPLINTED
affecting.splinted_count = H.step_count
H.handle_splints()
-
use(1)
+
+/obj/item/stack/medical/splint/tribal
+ name = "tribal splints"
+ icon_state = "tribal_splint"
+ other_delay = 50
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index c32a65f3def..9ec921fef92 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -16,6 +16,7 @@
var/global/list/datum/stack_recipe/metal_recipes = list(
new /datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = 1, on_floor = 1),
+ new /datum/stack_recipe("shuttle seat", /obj/structure/chair/comfy/shuttle, 2, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = 1, on_floor = 1),
@@ -216,6 +217,8 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
null, \
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1), \
new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \
+ null, \
+ new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 3), \
)
/obj/item/stack/sheet/cloth
@@ -335,10 +338,13 @@ var/global/list/datum/stack_recipe/cult = list ( \
* Brass
*/
var/global/list/datum/stack_recipe/brass_recipes = list (\
+ new/datum/stack_recipe("wall gear", /obj/structure/clockwork/wall_gear, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
+ null,
new/datum/stack_recipe/window("brass windoor", /obj/machinery/door/window/clockwork, 2, time = 30, on_floor = TRUE, window_checks = TRUE), \
null,
new/datum/stack_recipe/window("directional brass window", /obj/structure/window/reinforced/clockwork, time = 0, on_floor = TRUE, window_checks = TRUE), \
new/datum/stack_recipe/window("fulltile brass window", /obj/structure/window/reinforced/clockwork/fulltile, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \
+ new/datum/stack_recipe("brass chair", /obj/structure/chair/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 5, one_per_turf = TRUE, on_floor = TRUE), \
)
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 75decb95413..f0830f34c40 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -31,7 +31,7 @@
if(S.merge_type == merge_type)
merge(S)
-/obj/item/stack/Crossed(obj/O)
+/obj/item/stack/Crossed(obj/O, oldloc)
if(amount >= max_amount || ismob(loc)) // Prevents unnecessary call. Also prevents merging stack automatically in a mob's inventory
return
if(istype(O, merge_type) && !O.throwing)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 09712304f87..a8ddcf6d315 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -208,6 +208,7 @@
origin_tech = null
attack_verb = list("attacked", "struck", "hit")
brightness_on = 0
+ sharp_when_wielded = FALSE // It's a toy
/obj/item/twohanded/dualsaber/toy/hit_reaction()
return 0
@@ -283,7 +284,7 @@
..()
pop_burst()
-/obj/item/toy/snappop/Crossed(H as mob|obj)
+/obj/item/toy/snappop/Crossed(H as mob|obj, oldloc)
if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off
var/mob/living/carbon/M = H
if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN)
diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm
index cfb52c452c2..736ba1cc767 100644
--- a/code/game/objects/items/weapons/dice.dm
+++ b/code/game/objects/items/weapons/dice.dm
@@ -26,20 +26,34 @@
if(special_die == "100")
new /obj/item/dice/d100(src)
+/obj/item/storage/pill_bottle/dice/suicide_act(mob/user)
+ user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (OXYLOSS)
+
/obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6
name = "die"
desc = "A die with six sides. Basic and servicable."
icon = 'icons/obj/dice.dmi'
icon_state = "d6"
w_class = WEIGHT_CLASS_TINY
+
var/sides = 6
var/result = null
var/list/special_faces = list() //entries should match up to sides var if used
-/obj/item/dice/New()
- result = rand(1, sides)
+ var/rigged = DICE_NOT_RIGGED
+ var/rigged_value
+
+/obj/item/dice/Initialize(mapload)
+ . = ..()
+ if(!result)
+ result = roll(sides)
update_icon()
+/obj/item/dice/suicide_act(mob/user)
+ user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (OXYLOSS)
+
/obj/item/dice/d1
name = "d1"
desc = "A die with one side. Deterministic!"
@@ -118,11 +132,19 @@
. = ..()
/obj/item/dice/proc/diceroll(mob/user)
- result = rand(1, sides)
- var/fake_result = rand(1, sides)//Daredevil isn't as good as he used to be
+ result = roll(sides)
+ if(rigged != DICE_NOT_RIGGED && result != rigged_value)
+ if(rigged == DICE_BASICALLY_RIGGED && prob(Clamp(1/(sides - 1) * 100, 25, 80)))
+ result = rigged_value
+ else if(rigged == DICE_TOTALLY_RIGGED)
+ result = rigged_value
+
+ . = result
+
+ var/fake_result = roll(sides)//Daredevil isn't as good as he used to be
var/comment = ""
if(sides == 20 && result == 20)
- comment = "Nat 20!"
+ comment = "NAT 20!"
else if(sides == 20 && result == 1)
comment = "Ouch, bad luck."
update_icon()
@@ -131,16 +153,18 @@
if(special_faces.len == sides)
result = special_faces[result]
if(user != null) //Dice was rolled in someone's hand
- user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
+ user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
"You throw [src]. It lands on [result]. [comment]", \
"You hear [src] rolling, it sounds like a [fake_result].")
- else if(!throwing) //Dice was thrown and is coming to rest
+ else if(!src.throwing) //Dice was thrown and is coming to rest
visible_message("[src] rolls to a stop, landing on [result]. [comment]")
/obj/item/dice/d20/e20/diceroll(mob/user as mob, thrown)
if(triggered)
return
- ..()
+
+ . = ..()
+
if(result == 1)
to_chat(user, "Rocks fall, you die.")
user.gib()
@@ -167,7 +191,7 @@
/obj/item/dice/update_icon()
overlays.Cut()
- overlays += "[src.icon_state][src.result]"
+ overlays += "[icon_state][result]"
/obj/item/storage/box/dice
name = "Box of dice"
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index d17287b01a6..c35eed4fae5 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -48,9 +48,9 @@
/obj/item/grenade/plastic/receive_signal()
prime()
-/obj/item/grenade/plastic/Crossed(atom/movable/AM)
+/obj/item/grenade/plastic/Crossed(atom/movable/AM, oldloc)
if(nadeassembly)
- nadeassembly.Crossed(AM)
+ nadeassembly.Crossed(AM, oldloc)
/obj/item/grenade/plastic/on_found(mob/finder)
if(nadeassembly)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 31bc6bcf556..3e313bcac33 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -239,9 +239,9 @@
if(nadeassembly)
nadeassembly.process_movement()
-/obj/item/grenade/chem_grenade/Crossed(atom/movable/AM)
+/obj/item/grenade/chem_grenade/Crossed(atom/movable/AM, oldloc)
if(nadeassembly)
- nadeassembly.Crossed(AM)
+ nadeassembly.Crossed(AM, oldloc)
/obj/item/grenade/chem_grenade/on_found(mob/finder)
if(nadeassembly)
@@ -289,7 +289,7 @@
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
var/turf/T = get_turf(src)
var/area/A = get_area(T)
- message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([admin_jump_link(M)]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]")
+ message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]")
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z]) [contained]")
update_mob()
@@ -419,7 +419,7 @@
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
var/turf/T = get_turf(src)
var/area/A = get_area(T)
- message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([ADMIN_FLW(M,"FLW")]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([ADMIN_FLW(last,"FLW")]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).")
+ message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).")
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])")
else
addtimer(CALLBACK(src, .proc/prime), det_time)
diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm
index 66e0ba6b110..77ae8fc73bb 100644
--- a/code/game/objects/items/weapons/legcuffs.dm
+++ b/code/game/objects/items/weapons/legcuffs.dm
@@ -87,7 +87,7 @@
return
..()
-/obj/item/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
+/obj/item/restraints/legcuffs/beartrap/Crossed(AM as mob|obj, oldloc)
if(armed && isturf(src.loc))
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/hostile/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
var/mob/living/L = AM
@@ -193,6 +193,6 @@
/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom)
if(iscarbon(hit_atom))
var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
- B.Crossed(hit_atom)
+ B.Crossed(hit_atom, null)
qdel(src)
..()
diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm
index 428bfcd8fab..4c8697da247 100644
--- a/code/game/objects/items/weapons/shards.dm
+++ b/code/game/objects/items/weapons/shards.dm
@@ -67,7 +67,7 @@
else
return ..()
-/obj/item/shard/Crossed(AM as mob|obj)
+/obj/item/shard/Crossed(AM as mob|obj, oldloc)
if(isliving(AM))
var/mob/living/M = AM
if(M.incorporeal_move || M.flying || M.throwing)//you are incorporal or flying or being thrown ..no shard stepping!
diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
index 9cd4178aaf2..edccca3ff4a 100644
--- a/code/game/objects/items/weapons/storage/lockbox.dm
+++ b/code/game/objects/items/weapons/storage/lockbox.dm
@@ -116,15 +116,10 @@
/obj/item/storage/lockbox/medal/New()
..()
- new /obj/item/clothing/accessory/medal/gold/heroism(src)
- new /obj/item/clothing/accessory/medal/silver/security(src)
- new /obj/item/clothing/accessory/medal/silver/valor(src)
- new /obj/item/clothing/accessory/medal/nobel_science(src)
- new /obj/item/clothing/accessory/medal/bronze_heart(src)
- new /obj/item/clothing/accessory/medal/conduct(src)
- new /obj/item/clothing/accessory/medal/conduct(src)
- new /obj/item/clothing/accessory/medal/conduct(src)
new /obj/item/clothing/accessory/medal/gold/captain(src)
+ new /obj/item/clothing/accessory/medal/silver/leadership(src)
+ new /obj/item/clothing/accessory/medal/silver/valor(src)
+ new /obj/item/clothing/accessory/medal/heart(src)
/obj/item/storage/lockbox/t4
name = "lockbox (T4)"
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index e7e91178890..15456386541 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -28,12 +28,15 @@
var/force_wielded = 0
var/wieldsound = null
var/unwieldsound = null
+ var/sharp_when_wielded = FALSE
/obj/item/twohanded/proc/unwield(mob/living/carbon/user)
if(!wielded || !user)
return
wielded = FALSE
force = force_unwielded
+ if(sharp_when_wielded)
+ sharp = FALSE
var/sf = findtext(name," (Wielded)")
if(sf)
name = copytext(name, 1, sf)
@@ -66,6 +69,8 @@
return
wielded = TRUE
force = force_wielded
+ if(sharp_when_wielded)
+ sharp = TRUE
name = "[name] (Wielded)"
update_icon()
if(user)
@@ -224,7 +229,7 @@
origin_tech = "magnets=4;syndicate=5"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
block_chance = 75
- sharp = TRUE
+ sharp_when_wielded = TRUE // only sharp when wielded
light_power = 2
var/brightness_on = 2
var/colormap = list(red=LIGHT_COLOR_RED, blue=LIGHT_COLOR_LIGHTBLUE, green=LIGHT_COLOR_GREEN, purple=LIGHT_COLOR_PURPLE, rainbow=LIGHT_COLOR_WHITE)
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index d23f4c9d606..bf13a05f691 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -235,14 +235,22 @@
var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive
layer = MOB_LAYER
+/obj/structure/alien/egg/grown
+ status = GROWN
+ icon_state = "egg"
+
+/obj/structure/alien/egg/burst
+ status = BURST
+ icon_state = "egg_hatched"
/obj/structure/alien/egg/New()
new /obj/item/clothing/mask/facehugger(src)
..()
- spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
- Grow()
if(status == BURST)
obj_integrity = integrity_failure
+ else if(status != GROWN)
+ spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
+ Grow()
/obj/structure/alien/egg/attack_alien(mob/living/carbon/alien/user)
return attack_hand(user)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 03b0172c959..2037293d734 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -452,7 +452,7 @@
icon_closed = transparent ? "bluespacetrans" : "bluespace"
icon_state = opened ? icon_opened : icon_closed
-/obj/structure/closet/bluespace/Crossed(atom/movable/AM)
+/obj/structure/closet/bluespace/Crossed(atom/movable/AM, oldloc)
if(AM.density)
icon_state = opened ? "bluespaceopentrans" : "bluespacetrans"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index afb3ae15df4..0cd6e541398 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -38,6 +38,7 @@
new /obj/item/rpd(src)
new /obj/item/reagent_containers/food/drinks/mug/ce(src)
new /obj/item/organ/internal/cyberimp/eyes/meson(src)
+ new /obj/item/clothing/accessory/medal/engineering(src)
/obj/structure/closet/secure_closet/engineering_electrical
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 33496dc8cdf..189cbc5893d 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -194,6 +194,7 @@
new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src)
new /obj/item/door_remote/chief_medical_officer(src)
new /obj/item/reagent_containers/food/drinks/mug/cmo(src)
+ new /obj/item/clothing/accessory/medal/medical(src)
/obj/structure/closet/secure_closet/animal
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 6be824a4246..4d688f65dac 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -77,7 +77,7 @@
new /obj/item/door_remote/research_director(src)
new /obj/item/reagent_containers/food/drinks/mug/rd(src)
new /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic(src)
-
+ new /obj/item/clothing/accessory/medal/science(src)
/obj/structure/closet/secure_closet/research_reagents
name = "research chemical storage closet"
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 746c9cb52ef..fe6b0082207 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -60,7 +60,7 @@
new /obj/item/clothing/accessory/petcollar(src)
new /obj/item/door_remote/civillian(src)
new /obj/item/reagent_containers/food/drinks/mug/hop(src)
-
+ new /obj/item/clothing/accessory/medal/service(src)
/obj/structure/closet/secure_closet/hop2
name = "head of personnel's attire"
@@ -128,7 +128,7 @@
new /obj/item/door_remote/head_of_security(src)
new /obj/item/reagent_containers/food/drinks/mug/hos(src)
new /obj/item/organ/internal/cyberimp/eyes/hud/security(src)
-
+ new /obj/item/clothing/accessory/medal/security(src)
/obj/structure/closet/secure_closet/warden
name = "warden's locker"
@@ -464,4 +464,5 @@
new /obj/item/clothing/head/powdered_wig(src)
new /obj/item/gavelblock(src)
new /obj/item/gavelhammer(src)
- new /obj/item/clothing/head/justice_wig(src)
\ No newline at end of file
+ new /obj/item/clothing/head/justice_wig(src)
+ new /obj/item/clothing/accessory/medal/legal(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 9b777d45b58..4a70729d7e9 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -9,19 +9,26 @@
/obj/structure/falsewall
name = "wall"
desc = "A huge chunk of metal used to seperate rooms."
- anchored = 1
+ anchored = TRUE
icon = 'icons/turf/walls/wall.dmi'
icon_state = "wall"
- var/mineral = "metal"
- var/walltype = "metal"
- var/opening = 0
- density = 1
- opacity = 1
+
+ var/mineral = /obj/item/stack/sheet/metal
+ var/mineral_amount = 2
+ var/walltype = /turf/simulated/wall
+ var/girder_type = /obj/structure/girder/displaced
+ var/opening = FALSE
+
+ density = TRUE
+ opacity = TRUE
+
+ can_deconstruct = TRUE
canSmoothWith = list(
/turf/simulated/wall,
/turf/simulated/wall/r_wall,
/obj/structure/falsewall,
+ /obj/structure/falsewall/brass,
/obj/structure/falsewall/reinforced, // WHY DO WE SMOOTH WITH FALSE R-WALLS WHEN WE DON'T SMOOTH WITH REAL R-WALLS. //because we do smooth with real r-walls now
/turf/simulated/wall/rust,
/turf/simulated/wall/r_wall/rust)
@@ -31,6 +38,10 @@
..()
air_update_turf(1)
+/obj/structure/falsewall/ratvar_act()
+ new /obj/structure/falsewall/brass(loc)
+ qdel(src)
+
/obj/structure/falsewall/Destroy()
density = 0
air_update_turf(1)
@@ -124,18 +135,11 @@
/obj/structure/falsewall/proc/dismantle(mob/user)
user.visible_message("[user] dismantles the false wall.", "You dismantle the false wall.")
- new /obj/structure/girder/displaced(loc)
- if(mineral == "metal")
- if(istype(src, /obj/structure/falsewall/reinforced))
- new /obj/item/stack/sheet/plasteel(loc, 2)
- else
- new /obj/item/stack/sheet/metal(loc, 2)
- else if(mineral == "wood")
- new/obj/item/stack/sheet/wood(loc, 2)
- else
- var/P = text2path("/obj/item/stack/sheet/mineral/[mineral]")
- new P(loc)
- new P(loc)
+ if(can_deconstruct)
+ new girder_type(loc)
+ if(mineral_amount)
+ for(var/i in 1 to mineral_amount)
+ new mineral(loc)
playsound(src, 'sound/items/welder.ogg', 100, 1)
qdel(src)
@@ -148,7 +152,8 @@
desc = "A huge chunk of reinforced metal used to seperate rooms."
icon = 'icons/turf/walls/reinforced_wall.dmi'
icon_state = "r_wall"
- walltype = "rwall"
+ walltype = /turf/simulated/wall/r_wall
+ mineral = /obj/item/stack/sheet/plasteel
/obj/structure/falsewall/reinforced/ChangeToWall(delete = 1)
var/turf/T = get_turf(src)
@@ -166,8 +171,8 @@
desc = "A wall with uranium plating. This is probably a bad idea."
icon = 'icons/turf/walls/uranium_wall.dmi'
icon_state = "uranium"
- mineral = "uranium"
- walltype = "uranium"
+ mineral = /obj/item/stack/sheet/mineral/uranium
+ walltype = /turf/simulated/wall/mineral/uranium
var/active = null
var/last_event = 0
canSmoothWith = list(/obj/structure/falsewall/uranium, /turf/simulated/wall/mineral/uranium)
@@ -201,8 +206,8 @@
desc = "A wall with gold plating. Swag!"
icon = 'icons/turf/walls/gold_wall.dmi'
icon_state = "gold"
- mineral = "gold"
- walltype = "gold"
+ mineral = /obj/item/stack/sheet/mineral/gold
+ walltype = /turf/simulated/wall/mineral/gold
canSmoothWith = list(/obj/structure/falsewall/gold, /turf/simulated/wall/mineral/gold)
/obj/structure/falsewall/silver
@@ -210,8 +215,8 @@
desc = "A wall with silver plating. Shiny."
icon = 'icons/turf/walls/silver_wall.dmi'
icon_state = "silver"
- mineral = "silver"
- walltype = "silver"
+ mineral = /obj/item/stack/sheet/mineral/silver
+ walltype = /turf/simulated/wall/mineral/silver
canSmoothWith = list(/obj/structure/falsewall/silver, /turf/simulated/wall/mineral/silver)
/obj/structure/falsewall/diamond
@@ -219,8 +224,8 @@
desc = "A wall with diamond plating. You monster."
icon = 'icons/turf/walls/diamond_wall.dmi'
icon_state = "diamond"
- mineral = "diamond"
- walltype = "diamond"
+ mineral = /obj/item/stack/sheet/mineral/diamond
+ walltype = /turf/simulated/wall/mineral/diamond
canSmoothWith = list(/obj/structure/falsewall/diamond, /turf/simulated/wall/mineral/diamond)
@@ -229,18 +234,18 @@
desc = "A wall with plasma plating. This is definately a bad idea."
icon = 'icons/turf/walls/plasma_wall.dmi'
icon_state = "plasma"
- mineral = "plasma"
- walltype = "plasma"
+ mineral = /obj/item/stack/sheet/mineral/plasma
+ walltype = /turf/simulated/wall/mineral/plasma
canSmoothWith = list(/obj/structure/falsewall/plasma, /turf/simulated/wall/mineral/plasma, /turf/simulated/wall/mineral/alien)
/obj/structure/falsewall/plasma/attackby(obj/item/W, mob/user, params)
if(is_hot(W) > 300)
- message_admins("Plasma falsewall ignited by [key_name_admin(user)] in ([x],[y],[z] - JMP)",0,1)
- log_game("Plasma falsewall ignited by [key_name(user)] in ([x],[y],[z])")
+ message_admins("Plasma falsewall ignited by [key_name_admin(user)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma falsewall ignited by [key_name(user)] in [AREACOORD(T)]")
investigate_log("was ignited by [key_name(user)]","atmos")
burnbabyburn()
- return
- ..()
+ else
+ return ..()
/obj/structure/falsewall/plasma/proc/burnbabyburn(user)
playsound(src, 'sound/items/welder.ogg', 100, 1)
@@ -258,8 +263,8 @@
desc = "A strange-looking alien wall."
icon = 'icons/turf/walls/plasma_wall.dmi'
icon_state = "plasma"
- mineral = "alien"
- walltype = "alien"
+ mineral = /obj/item/stack/sheet/mineral/abductor
+ walltype = /turf/simulated/wall/mineral/abductor
canSmoothWith = list(/obj/structure/falsewall/alien, /turf/simulated/wall/mineral/alien)
@@ -268,16 +273,16 @@
desc = "A wall with bananium plating. Honk!"
icon = 'icons/turf/walls/bananium_wall.dmi'
icon_state = "bananium"
- mineral = "clown"
- walltype = "clown"
+ mineral = /obj/item/stack/sheet/mineral/bananium
+ walltype = /turf/simulated/wall/mineral/bananium
canSmoothWith = list(/obj/structure/falsewall/bananium, /turf/simulated/wall/mineral/bananium)
/obj/structure/falsewall/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating."
icon_state = "sandstone"
- mineral = "sandstone"
- walltype = "sandstone"
+ mineral = /obj/item/stack/sheet/mineral/sandstone
+ walltype = /turf/simulated/wall/mineral/sandstone
canSmoothWith = list(/obj/structure/falsewall/sandstone, /turf/simulated/wall/mineral/sandstone)
/obj/structure/falsewall/wood
@@ -285,8 +290,8 @@
desc = "A wall with wooden plating. Stiff."
icon = 'icons/turf/walls/wood_wall.dmi'
icon_state = "wood"
- mineral = "wood"
- walltype = "wood"
+ mineral = /obj/item/stack/sheet/wood
+ walltype = /turf/simulated/wall/mineral/wood
canSmoothWith = list(/obj/structure/falsewall/wood, /turf/simulated/wall/mineral/wood)
/obj/structure/falsewall/iron
@@ -294,8 +299,9 @@
desc = "A wall with rough metal plating."
icon = 'icons/turf/walls/iron_wall.dmi'
icon_state = "iron"
- mineral = "metal"
- walltype = "iron"
+ mineral = /obj/item/stack/rods
+ mineral_amount = 5
+ walltype = /turf/simulated/wall/mineral/iron
canSmoothWith = list(/obj/structure/falsewall/iron, /turf/simulated/wall/mineral/iron)
/obj/structure/falsewall/abductor
@@ -303,8 +309,8 @@
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
icon_state = "abductor"
- mineral = "abductor"
- walltype = "abductor"
+ mineral = /obj/item/stack/sheet/mineral/abductor
+ walltype = /turf/simulated/wall/mineral/abductor
canSmoothWith = list(/obj/structure/falsewall/abductor, /turf/simulated/wall/mineral/abductor)
/obj/structure/falsewall/titanium
@@ -324,3 +330,23 @@
walltype = /turf/simulated/wall/mineral/plastitanium
smooth = SMOOTH_MORE
canSmoothWith = list(/turf/simulated/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine/heater)
+
+/obj/structure/falsewall/brass
+ name = "clockwork wall"
+ desc = "A huge chunk of warm metal. The clanging of machinery emanates from within."
+ icon = 'icons/turf/walls/clockwork_wall.dmi'
+ icon_state = "clockwork_wall"
+ resistance_flags = FIRE_PROOF
+ unacidable = TRUE
+ mineral_amount = 1
+ canSmoothWith = list(/obj/effect/clockwork/overlay/wall, /obj/structure/falsewall/brass)
+ girder_type = /obj/structure/clockwork/wall_gear/displaced
+ walltype = /turf/simulated/wall/clockwork
+ mineral = /obj/item/stack/tile/brass
+
+/obj/structure/falsewall/brass/New(loc)
+ ..()
+ var/turf/T = get_turf(src)
+ new /obj/effect/temp_visual/ratvar/wall/false(T)
+ new /obj/effect/temp_visual/ratvar/beam/falsewall(T)
+
diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm
index 356d52e9d2a..a6a4f699314 100644
--- a/code/game/objects/structures/fluff.dm
+++ b/code/game/objects/structures/fluff.dm
@@ -63,3 +63,19 @@
/obj/structure/fluff/drake_statue/falling //A variety of statue in disrepair; parts are broken off and a gemstone is missing
desc = "A towering basalt sculpture of a drake. Cracks run down its surface and parts of it have fallen off."
icon_state = "drake_statue_falling"
+
+/obj/structure/fluff/divine
+ name = "Miracle"
+ icon = 'icons/obj/hand_of_god_structures.dmi'
+ anchored = TRUE
+ density = TRUE
+
+/obj/structure/fluff/divine/nexus
+ name = "nexus"
+ desc = "It anchors a deity to this world. It radiates an unusual aura. It looks well protected from explosive shock."
+ icon_state = "nexus"
+
+/obj/structure/fluff/divine/conduit
+ name = "conduit"
+ desc = "It allows a deity to extend their reach. Their powers are just as potent near a conduit as a nexus."
+ icon_state = "conduit"
\ No newline at end of file
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 134a0767024..c1233aaee0c 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -32,6 +32,8 @@
if(resistance_flags & INDESTRUCTIBLE)
return
if(istype(C, /obj/item/wirecutters))
+ var/obj/item/wirecutters/W = C
+ playsound(loc, W.usesound, 50, 1)
to_chat(user, "Slicing [name] joints...")
deconstruct()
else
@@ -58,6 +60,26 @@
if(current_size >= STAGE_FOUR)
qdel(src)
+/obj/structure/lattice/clockwork
+ name = "cog lattice"
+ desc = "A lightweight support lattice. These hold the Justicar's station together."
+ icon = 'icons/obj/smooth_structures/lattice_clockwork.dmi'
+
+/obj/structure/lattice/clockwork/Initialize(mapload)
+ . = ..()
+ ratvar_act()
+
+/obj/structure/lattice/clockwork/ratvar_act()
+ if((x + y) % 2 != 0)
+ icon = 'icons/obj/smooth_structures/lattice_clockwork_large.dmi'
+ pixel_x = -9
+ pixel_y = -9
+ else
+ icon = 'icons/obj/smooth_structures/lattice_clockwork.dmi'
+ pixel_x = 0
+ pixel_y = 0
+ return TRUE
+
/obj/structure/lattice/catwalk
name = "catwalk"
desc = "A catwalk for easier EVA maneuvering and cable placement."
@@ -81,3 +103,30 @@
for(var/obj/structure/cable/C in T)
C.deconstruct()
..()
+
+/obj/structure/lattice/catwalk/clockwork
+ name = "clockwork catwalk"
+ icon = 'icons/obj/smooth_structures/catwalk_clockwork.dmi'
+ canSmoothWith = list(/obj/structure/lattice,
+ /turf/simulated/floor,
+ /turf/simulated/wall,
+ /obj/structure/falsewall)
+ smooth = SMOOTH_MORE
+
+/obj/structure/lattice/catwalk/clockwork/Initialize(mapload)
+ . = ..()
+ ratvar_act()
+ if(!mapload)
+ new /obj/effect/temp_visual/ratvar/floor/catwalk(loc)
+ new /obj/effect/temp_visual/ratvar/beam/catwalk(loc)
+
+/obj/structure/lattice/catwalk/clockwork/ratvar_act()
+ if((x + y) % 2 != 0)
+ icon = 'icons/obj/smooth_structures/catwalk_clockwork_large.dmi'
+ pixel_x = -9
+ pixel_y = -9
+ else
+ icon = 'icons/obj/smooth_structures/catwalk_clockwork.dmi'
+ pixel_x = 0
+ pixel_y = 0
+ return TRUE
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index d8898a7d671..923fab9e885 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -6,7 +6,6 @@
icon_state = "mirror"
density = 0
anchored = 1
- var/shattered = 0
var/list/ui_users = list()
/obj/structure/mirror/New(turf/T, newdir = SOUTH, building = FALSE)
@@ -23,7 +22,7 @@
pixel_x = 32
/obj/structure/mirror/attack_hand(mob/user)
- if(shattered)
+ if(broken)
return
if(ishuman(user))
@@ -36,9 +35,9 @@
AC.ui_interact(user)
/obj/structure/mirror/proc/shatter()
- if(shattered)
+ if(broken)
return
- shattered = 1
+ broken = TRUE
icon_state = "mirror_broke"
playsound(src, "shatter", 70, 1)
desc = "Oh no, seven years of bad luck!"
@@ -46,7 +45,7 @@
/obj/structure/mirror/bullet_act(obj/item/projectile/Proj)
if(prob(Proj.damage * 2))
- if(!shattered)
+ if(!broken)
shatter()
else
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
@@ -58,7 +57,7 @@
if(isscrewdriver(I))
user.visible_message("[user] begins to unfasten [src].", "You begin to unfasten [src].")
if(do_after(user, 30 * I.toolspeed, target = src))
- if(shattered)
+ if(broken)
user.visible_message("[user] drops the broken shards to the floor.", "You drop the broken shards on the floor.")
new /obj/item/shard(get_turf(user))
else
@@ -68,7 +67,7 @@
return
user.do_attack_animation(src)
- if(shattered)
+ if(broken)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
@@ -85,7 +84,7 @@
if(islarva(user))
return
user.do_attack_animation(src)
- if(shattered)
+ if(broken)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
user.visible_message("[user] smashes [src]!")
@@ -100,7 +99,7 @@
if(M.melee_damage_upper <= 0)
return
M.do_attack_animation(src)
- if(shattered)
+ if(broken)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
user.visible_message("[user] smashes [src]!")
@@ -113,7 +112,7 @@
if(!S.is_adult)
return
user.do_attack_animation(src)
- if(shattered)
+ if(broken)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
user.visible_message("[user] smashes [src]!")
@@ -136,7 +135,7 @@
icon_state = "magic_mirror"
/obj/structure/mirror/magic/attack_hand(mob/user)
- if(!ishuman(user))
+ if(!ishuman(user) || broken)
return
var/mob/living/carbon/human/H = user
@@ -154,6 +153,9 @@
H.dna.real_name = newname
if(H.mind)
H.mind.name = newname
+
+ if(newname)
+ curse(user)
if("Body")
var/list/race_list = list("Human", "Tajaran", "Skrell", "Unathi", "Diona", "Vulpkanin")
@@ -172,6 +174,7 @@
AC.whitelist = race_list
ui_users[user] = AC
AC.ui_interact(user)
+
if("Voice")
var/voice_choice = input(user, "Perhaps...", "Voice effects") as null|anything in list("Comic Sans", "Wingdings", "Swedish", "Chav")
var/voice_mutation
@@ -192,8 +195,17 @@
H.dna.SetSEState(voice_mutation, TRUE)
genemutcheck(H, voice_mutation, null, MUTCHK_FORCED)
+ if(voice_choice)
+ curse(user)
+
+/obj/structure/mirror/magic/on_ui_close(mob/user)
+ curse(user)
+
/obj/structure/mirror/magic/attackby(obj/item/I, mob/living/user, params)
return
/obj/structure/mirror/magic/shatter()
- return //can't be broken. it's magic, i ain't gotta explain shit
\ No newline at end of file
+ return //can't be broken. it's magic, i ain't gotta explain shit
+
+/obj/structure/mirror/magic/proc/curse(mob/living/user)
+ return
\ No newline at end of file
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 903ee22c683..005f0e721fb 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -28,6 +28,11 @@
W.setDir(dir)
qdel(src)
+/obj/structure/chair/ratvar_act()
+ var/obj/structure/chair/brass/B = new(get_turf(src))
+ B.setDir(dir)
+ qdel(src)
+
/obj/structure/chair/Move(atom/newloc, direct)
..()
handle_rotation()
@@ -146,35 +151,38 @@
name = "comfy chair"
desc = "It looks comfy."
icon_state = "comfychair"
- color = rgb(255,255,255)
+ color = rgb(255, 255, 255)
burn_state = FLAMMABLE
burntime = 30
buildstackamount = 2
item_chair = null
var/image/armrest = null
-/obj/structure/chair/comfy/New()
- armrest = image("icons/obj/chairs.dmi", "comfychair_armrest")
+/obj/structure/chair/comfy/Initialize(mapload)
+ armrest = GetArmrest()
armrest.layer = ABOVE_MOB_LAYER
return ..()
+/obj/structure/chair/comfy/proc/GetArmrest()
+ return mutable_appearance('icons/obj/chairs.dmi', "comfychair_armrest")
+
/obj/structure/chair/comfy/Destroy()
QDEL_NULL(armrest)
return ..()
/obj/structure/chair/comfy/post_buckle_mob(mob/living/M)
- ..()
- if(buckled_mob)
- overlays += armrest
- else
- overlays -= armrest
+ . = ..()
+ update_armrest()
/obj/structure/chair/comfy/post_unbuckle_mob(mob/living/M)
- ..()
- if(buckled_mob)
- overlays -= armrest
+ . = ..()
+ update_armrest()
+
+/obj/structure/chair/comfy/proc/update_armrest()
+ if(has_buckled_mobs())
+ add_overlay(armrest)
else
- overlays += armrest
+ cut_overlay(armrest)
/obj/structure/chair/comfy/brown
color = rgb(141,70,0)
@@ -209,6 +217,14 @@
item_chair = null
buildstackamount = 5
+/obj/structure/chair/comfy/shuttle
+ name = "shuttle seat"
+ desc = "A comfortable, secure seat. It has a more sturdy looking buckling system, for smoother flights."
+ icon_state = "shuttle_chair"
+
+/obj/structure/chair/comfy/shuttle/GetArmrest()
+ return mutable_appearance('icons/obj/chairs.dmi', "shuttle_chair_armrest")
+
/obj/structure/chair/office/Bump(atom/A)
..()
if(!buckled_mob)
@@ -416,3 +432,41 @@
desc = "You sit in this. Either by will or force. Looks REALLY uncomfortable."
icon_state = "chairold"
item_chair = null
+
+// Brass chair
+/obj/structure/chair/brass
+ name = "brass chair"
+ desc = "A spinny chair made of brass. It looks uncomfortable."
+ icon_state = "brass_chair"
+ max_integrity = 150
+ buildstacktype = /obj/item/stack/tile/brass
+ buildstackamount = 1
+ item_chair = null
+ var/turns = 0
+
+/obj/structure/chair/brass/Destroy()
+ STOP_PROCESSING(SSfastprocess, src)
+ . = ..()
+
+/obj/structure/chair/brass/process()
+ setDir(turn(dir,-90))
+ playsound(src, 'sound/effects/servostep.ogg', 50, FALSE)
+ turns++
+ if(turns >= 8)
+ STOP_PROCESSING(SSfastprocess, src)
+
+/obj/structure/chair/brass/ratvar_act()
+ return
+
+/obj/structure/chair/brass/AltClick(mob/living/user)
+ turns = 0
+ if(!istype(user) || user.incapacitated() || !in_range(src, user))
+ return
+ if(!isprocessing)
+ user.visible_message("[user] spins [src] around, and Ratvarian technology keeps it spinning FOREVER.", \
+ "Automated spinny chairs. The pinnacle of Ratvarian technology.")
+ START_PROCESSING(SSfastprocess, src)
+ else
+ user.visible_message("[user] stops [src]'s uncontrollable spinning.", \
+ "You grab [src] and stop its wild spinning.")
+ STOP_PROCESSING(SSfastprocess, src)
\ No newline at end of file
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 999e90cd89f..ac013ebcf93 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -377,7 +377,7 @@
qdel(i)
. = ..()
-/obj/structure/table/glass/Crossed(atom/movable/AM)
+/obj/structure/table/glass/Crossed(atom/movable/AM, oldloc)
. = ..()
if(!can_deconstruct)
return
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 726d9a88a7f..ada70921c99 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -363,7 +363,7 @@
qdel(mymist)
ismist = 0
-/obj/machinery/shower/Crossed(atom/movable/O)
+/obj/machinery/shower/Crossed(atom/movable/O, oldloc)
..()
wash(O)
if(ismob(O))
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index ddf71b96798..5c8f2022189 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -111,18 +111,35 @@
/turf/simulated/floor/clockwork
name = "clockwork floor"
desc = "Tightly-pressed brass tiles. They emit minute vibration."
- icon_state = "clockwork_floor"
+ icon_state = "plating"
+ baseturf = /turf/simulated/floor/clockwork
+ var/dropped_brass
+ var/uses_overlay = TRUE
+ var/obj/effect/clockwork/overlay/floor/realappearence
-/turf/simulated/floor/clockwork/New()
- ..()
- new /obj/effect/temp_visual/ratvar/floor(src)
- new /obj/effect/temp_visual/ratvar/beam(src)
+/turf/simulated/floor/clockwork/Initialize(mapload)
+ . = ..()
+ if(uses_overlay)
+ new /obj/effect/temp_visual/ratvar/floor(src)
+ new /obj/effect/temp_visual/ratvar/beam(src)
+ realappearence = new /obj/effect/clockwork/overlay/floor(src)
+ realappearence.linked = src
+
+/turf/simulated/floor/clockwork/Destroy()
+ if(uses_overlay && realappearence)
+ QDEL_NULL(realappearence)
+ return ..()
+
+/turf/simulated/floor/clockwork/ReplaceWithLattice()
+ . = ..()
+ for(var/obj/structure/lattice/L in src)
+ L.ratvar_act()
/turf/simulated/floor/clockwork/attackby(obj/item/I, mob/living/user, params)
if(iscrowbar(I))
user.visible_message("[user] begins slowly prying up [src]...", "You begin painstakingly prying up [src]...")
playsound(src, I.usesound, 20, 1)
- if(!do_after(user, 70*I.toolspeed, target = src))
+ if(!do_after(user, 70 * I.toolspeed, target = src))
return 0
user.visible_message("[user] pries up [src]!", "You pry up [src]!")
playsound(src, I.usesound, 80, 1)
@@ -131,7 +148,11 @@
return ..()
/turf/simulated/floor/clockwork/make_plating()
- new /obj/item/stack/tile/brass(src)
+ if(!dropped_brass)
+ new /obj/item/stack/tile/brass(src)
+ dropped_brass = TRUE
+ if(baseturf == type)
+ return
return ..()
/turf/simulated/floor/clockwork/narsie_act()
@@ -140,3 +161,12 @@
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
+ addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
+
+/turf/simulated/floor/clockwork/reebe
+ name = "cogplate"
+ desc = "Warm brass plating. You can feel it gently vibrating, as if machinery is on the other side."
+ icon_state = "reebe"
+ baseturf = /turf/simulated/floor/clockwork/reebe
+ uses_overlay = FALSE
+ planetary_atmos = TRUE
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index cf514a43d96..2ef4602d268 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -17,6 +17,14 @@
icon_plating = icon_state
update_icon()
+/turf/simulated/floor/plating/damaged/New()
+ ..()
+ break_tile()
+
+/turf/simulated/floor/plating/burnt/New()
+ ..()
+ burn_tile()
+
/turf/simulated/floor/plating/update_icon()
if(!..())
return
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 8163bc75acc..5a8f842307e 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -22,6 +22,7 @@
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall
var/hardness = 40 //lower numbers are harder. Used to determine the probability of a hulk smashing through.
+ var/slicing_duration = 100
var/engraving //engraving on the wall
var/engraving_quality
@@ -340,7 +341,7 @@
to_chat(user, "You begin slicing through the outer plating.")
playsound(src, WT.usesound, 100, 1)
- if(do_after(user, 100 * WT.toolspeed, target = src) && WT && WT.isOn())
+ if(do_after(user, slicing_duration * WT.toolspeed, target = src) && WT && WT.isOn())
to_chat(user, "You remove the outer plating.")
dismantle_wall()
else
diff --git a/code/game/turfs/simulated/walls_indestructible.dm b/code/game/turfs/simulated/walls_indestructible.dm
index 0357578c762..e25992a2555 100644
--- a/code/game/turfs/simulated/walls_indestructible.dm
+++ b/code/game/turfs/simulated/walls_indestructible.dm
@@ -69,4 +69,8 @@
desc = "A wall made out of smooth, cold stone."
icon = 'icons/turf/walls/hierophant_wall.dmi'
icon_state = "hierophant"
- smooth = SMOOTH_TRUE
\ No newline at end of file
+ smooth = SMOOTH_TRUE
+
+/turf/simulated/wall/indestructible/uranium
+ icon = 'icons/turf/walls/uranium_wall.dmi'
+ icon_state = "uranium"
\ No newline at end of file
diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm
index 9b4cba19f0a..b2d6b40c123 100644
--- a/code/game/turfs/simulated/walls_misc.dm
+++ b/code/game/turfs/simulated/walls_misc.dm
@@ -50,3 +50,100 @@
desc = "A huge chunk of reinforced metal used to seperate rooms. It seems to have additional plating to protect against heat."
icon = 'icons/turf/walls/coated_reinforced_wall.dmi'
max_temperature = INFINITY
+
+//Clockwork walls
+/turf/simulated/wall/clockwork
+ name = "clockwork wall"
+ desc = "A huge chunk of warm metal. The clanging of machinery emanates from within."
+ explosion_block = 2
+ hardness = 10
+ slicing_duration = 80
+ sheet_type = /obj/item/stack/tile/brass
+ sheet_amount = 1
+ girder_type = /obj/structure/clockwork/wall_gear
+ baseturf = /turf/simulated/floor/clockwork/reebe
+ var/heated
+ var/obj/effect/clockwork/overlay/wall/realappearance
+
+/turf/simulated/wall/clockwork/Initialize()
+ . = ..()
+ new /obj/effect/temp_visual/ratvar/wall(src)
+ new /obj/effect/temp_visual/ratvar/beam(src)
+ realappearance = new /obj/effect/clockwork/overlay/wall(src)
+ realappearance.linked = src
+
+/turf/simulated/wall/clockwork/Destroy()
+ if(realappearance)
+ qdel(realappearance)
+ realappearance = null
+
+ return ..()
+
+/turf/simulated/wall/clockwork/ReplaceWithLattice()
+ ..()
+ for(var/obj/structure/lattice/L in src)
+ L.ratvar_act()
+
+/turf/simulated/wall/clockwork/narsie_act()
+ ..()
+ if(istype(src, /turf/simulated/wall/clockwork)) //if we haven't changed type
+ var/previouscolor = color
+ color = "#960000"
+ animate(src, color = previouscolor, time = 8)
+ addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
+
+/turf/simulated/wall/clockwork/dismantle_wall(devastated=0, explode=0)
+ if(devastated)
+ devastate_wall()
+ ChangeTurf(baseturf)
+ else
+ playsound(src, 'sound/items/welder.ogg', 100, 1)
+ var/newgirder = break_wall()
+ if(newgirder) //maybe we want a gear!
+ transfer_fingerprints_to(newgirder)
+ ChangeTurf(baseturf)
+
+ for(var/obj/O in src) //Eject contents!
+ if(istype(O, /obj/structure/sign/poster))
+ var/obj/structure/sign/poster/P = O
+ P.roll_and_drop(src)
+ else
+ O.forceMove(src)
+
+/turf/simulated/wall/clockwork/devastate_wall()
+ for(var/i in 1 to 2)
+ new/obj/item/clockwork/alloy_shards/large(src)
+ for(var/i in 1 to 2)
+ new/obj/item/clockwork/alloy_shards/medium(src)
+ for(var/i in 1 to 3)
+ new/obj/item/clockwork/alloy_shards/small(src)
+
+/turf/simulated/wall/clockwork/attack_hulk(mob/living/user, does_attack_animation = 0)
+ ..()
+ if(heated)
+ to_chat(user, "The wall is searing hot to the touch!")
+ user.adjustFireLoss(5)
+ playsound(src, 'sound/machines/fryer/deep_fryer_emerge.ogg', 50, TRUE)
+
+/turf/simulated/wall/clockwork/mech_melee_attack(obj/mecha/M)
+ ..()
+ if(heated)
+ to_chat(M.occupant, "The wall's intense heat completely reflects your [M.name]'s attack!")
+ M.take_damage(20, BURN)
+
+/turf/simulated/wall/clockwork/proc/turn_up_the_heat()
+ if(!heated)
+ name = "superheated [name]"
+ visible_message("[src] sizzles with heat!")
+ playsound(src, 'sound/machines/fryer/deep_fryer_emerge.ogg', 50, TRUE)
+ heated = TRUE
+ hardness = -100 //Lower numbers are tougher, so this makes the wall essentially impervious to smashing
+ slicing_duration = 150
+ animate(realappearance, color = "#FFC3C3", time = 5)
+ else
+ name = initial(name)
+ visible_message("[src] cools down.")
+ heated = FALSE
+ hardness = initial(hardness)
+ slicing_duration = initial(slicing_duration)
+ animate(realappearance, color = initial(realappearance.color), time = 25)
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index 8febe20e840..0b171dac199 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -229,3 +229,19 @@
setCloneLoss(100, FALSE)
updatehealth()
+
+/mob/living/simple_animal/mouse/verb/suicide()
+ set hidden = 1
+ if(stat == DEAD)
+ to_chat(src, "You're already dead!")
+ return
+ if(suiciding)
+ to_chat(src, "You're already committing suicide! Be patient!")
+ return
+
+ var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
+
+ if(confirm == "Yes")
+ suiciding = TRUE
+ visible_message("[src] is playing dead permanently! It looks like [p_theyre()] trying to commit suicide.")
+ adjustOxyLoss(max(100 - getBruteLoss(100), 0))
\ No newline at end of file
diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm
index 9245f5174ce..045819c365b 100644
--- a/code/modules/admin/IsBanned.dm
+++ b/code/modules/admin/IsBanned.dm
@@ -108,7 +108,7 @@ world/IsBanned(key, address, computer_id, check_ipintel = TRUE)
var/appealmessage = ""
if(config.banappeals)
appealmessage = " You may appeal it at [config.banappeals]."
- expires = " This is a permanent ban.[appealmessage]"
+ expires = " This ban does not expire automatically and must be appealed.[appealmessage]"
var/desc = "\nReason: You, or another user of this computer or connection ([pckey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban was applied by [ackey] on [bantime].[expires]"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 06c2361b90a..7687b22f71c 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -77,9 +77,11 @@ var/list/admin_verbs_admin = list(
/client/proc/toggle_mentor_chat,
/client/proc/toggle_advanced_interaction, /*toggle admin ability to interact with not only machines, but also atoms such as buttons and doors*/
/client/proc/list_ssds,
+ /client/proc/list_afks,
/client/proc/cmd_admin_headset_message,
/client/proc/spawn_floor_cluwne,
- /client/proc/show_discord_duplicates,
+ /client/proc/show_discord_duplicates, // This needs removing at some point, ingame discord linking got removed in #11359
+ /client/proc/toggle_panic_bunker
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
@@ -475,7 +477,7 @@ var/list/admin_verbs_ticket = list(
if(holder.fakekey)
holder.fakekey = null
else
- var/new_key = ckeyEx(input("Enter your desired display name.", "Fake Key", key) as text|null)
+ var/new_key = ckeyEx(clean_input("Enter your desired display name.", "Fake Key", key))
if(!new_key) return
if(length(new_key) >= 26)
new_key = copytext(new_key, 1, 26)
@@ -497,7 +499,7 @@ var/list/admin_verbs_ticket = list(
holder.fakekey = null
holder.big_brother = 0
else
- var/new_key = ckeyEx(input("Enter your desired display name. Unlike normal stealth mode, this will not appear in Who at all, except for other heads.", "Fake Key", key) as text|null)
+ var/new_key = ckeyEx(clean_input("Enter your desired display name. Unlike normal stealth mode, this will not appear in Who at all, except for other heads.", "Fake Key", key))
if(!new_key)
return
if(length(new_key) >= 26)
@@ -638,7 +640,7 @@ var/list/admin_verbs_ticket = list(
return
if(O)
- var/message = input("What do you want the message to be?", "Make Sound") as text|null
+ var/message = clean_input("What do you want the message to be?", "Make Sound")
if(!message)
return
for(var/mob/V in hearers(O))
@@ -889,7 +891,7 @@ var/list/admin_verbs_ticket = list(
to_chat(usr, "Your attack logs preference is now: show ALMOST ALL attack logs (notable exceptions: NPCs attacking other NPCs, vampire bites, equipping/stripping, people pushing each other over)")
else if(prefs.atklog == ATKLOG_ALMOSTALL)
prefs.atklog = ATKLOG_MOST
- to_chat(usr, "Your attack logs preference is now: show MOST attack logs (like ALMOST ALL, except that it also hides attacks by players on NPCs)")
+ to_chat(usr, "Your attack logs preference is now: show MOST attack logs (like ALMOST ALL, except that it also hides player v. NPC combat, and certain areas like lavaland syndie base and thunderdome)")
else if(prefs.atklog == ATKLOG_MOST)
prefs.atklog = ATKLOG_FEW
to_chat(usr, "Your attack logs preference is now: show FEW attack logs (only the most important stuff: attacks on SSDs, use of explosives, messing with the engine, gibbing, AI wiping, forcefeeding, acid sprays, and organ extraction)")
@@ -1026,4 +1028,17 @@ var/list/admin_verbs_ticket = list(
if(!check_rights(R_ADMIN))
return
- holder.discord_duplicates()
\ No newline at end of file
+ holder.discord_duplicates()
+
+/client/proc/toggle_panic_bunker()
+ set name = "Toggle Panic Bunker"
+ set category = "Admin"
+ set desc = "Disables new players connecting."
+
+ if(!check_rights(R_ADMIN))
+ return
+
+ GLOB.panic_bunker_enabled = !GLOB.panic_bunker_enabled
+
+ log_admin("[key_name(usr)] has [GLOB.panic_bunker_enabled ? "activated" : "deactivated"] the panic bunker.")
+ message_admins("[key_name_admin(usr)] has [GLOB.panic_bunker_enabled ? "activated" : "deactivated"] the panic bunker.")
diff --git a/code/modules/admin/sql_notes.dm b/code/modules/admin/sql_notes.dm
index 9024959b943..18112f584c2 100644
--- a/code/modules/admin/sql_notes.dm
+++ b/code/modules/admin/sql_notes.dm
@@ -5,7 +5,7 @@
to_chat(usr, "Failed to establish database connection.")
return
if(!target_ckey)
- var/new_ckey = ckey(input(usr,"Who would you like to add a note for?","Enter a ckey",null) as text|null)
+ var/new_ckey = ckey(clean_input("Who would you like to add a note for?","Enter a ckey",null))
if(!new_ckey)
return
new_ckey = ckey(new_ckey)
diff --git a/code/modules/admin/stickyban.dm b/code/modules/admin/stickyban.dm
index bddebcff602..61759f2e36d 100644
--- a/code/modules/admin/stickyban.dm
+++ b/code/modules/admin/stickyban.dm
@@ -16,7 +16,7 @@
if(data["ckey"])
ckey = ckey(data["ckey"])
else
- ckey = input(usr,"Ckey","Ckey","") as text|null
+ ckey = clean_input("Ckey","Ckey","")
if(!ckey)
return
ckey = ckey(ckey)
@@ -26,7 +26,7 @@
if(data["reason"])
ban["message"] = data["reason"]
else
- var/reason = input(usr,"Reason","Reason","Ban Evasion") as text|null
+ var/reason = clean_input("Reason","Reason","Ban Evasion")
if(!reason)
return
ban["message"] = "[reason]"
@@ -112,7 +112,7 @@
to_chat(usr, "Error: No sticky ban for [ckey] found!")
return
var/oldreason = ban["message"]
- var/reason = input(usr,"Reason","Reason","[ban["message"]]") as text|null
+ var/reason = clean_input("Reason","Reason","[ban["message"]]")
if(!reason || reason == oldreason)
return
//we have to do this again incase something changed while we waited for input
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index ffa33df033f..e45224b175b 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -189,7 +189,7 @@
var/task = href_list["editrights"]
if(task == "add")
- var/new_ckey = ckey(input(usr,"New admin's ckey","Admin ckey", null) as text|null)
+ var/new_ckey = ckey(clean_input("New admin's ckey","Admin ckey", null))
if(!new_ckey) return
if(new_ckey in admin_datums)
to_chat(usr, "Error: Topic 'editrights': [new_ckey] is already an admin")
@@ -1015,14 +1015,14 @@
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].")
- to_chat(M, "This is a permanent ban.")
+ to_chat(M, "This ban does not expire automatically and must be appealed.")
if(config.banappeals)
to_chat(M, "To try to resolve this matter head to [config.banappeals]")
else
to_chat(M, "No ban appeals URL has been set.")
- ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
- log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
- message_admins("[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
+ ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This ban does not expire automatically and must be appealed.")
+ log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis ban does not expire automatically and must be appealed.")
+ message_admins("[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis ban does not expire automatically and must be appealed.")
feedback_inc("ban_perma",1)
DB_ban_record(BANTYPE_PERMA, M, -1, reason)
@@ -1700,7 +1700,7 @@
var/eviltype = input(src.owner, "Which type of evil fax do you wish to send [H]?","Its good to be baaaad...", "") as null|anything in etypes
if(!(eviltype in etypes))
return
- var/customname = input(src.owner, "Pick a title for the evil fax.", "Fax Title") as text|null
+ var/customname = clean_input("Pick a title for the evil fax.", "Fax Title", , owner)
if(!customname)
customname = "paper"
var/obj/item/paper/evilfax/P = new /obj/item/paper/evilfax(null)
@@ -2001,7 +2001,7 @@
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
- if(!isLivingSSD(H))
+ if(!href_list["cryoafk"] && !isLivingSSD(H))
to_chat(usr, "This can only be used on living, SSD players.")
return
if(istype(H.loc, /obj/machinery/cryopod))
@@ -2012,6 +2012,11 @@
else if(cryo_ssd(H))
log_admin("[key_name(usr)] sent [H.job] [H] to cryo.")
message_admins("[key_name_admin(usr)] sent [H.job] [H] to cryo.")
+ if(href_list["cryoafk"]) // Warn them if they are send to storage and are AFK
+ to_chat(H, "The admins have moved you to cryo storage for being AFK. Please eject yourself (right click, eject) out of the cryostorage if you want to avoid being despawned.")
+ SEND_SOUND(H, 'sound/effects/adminhelp.ogg')
+ if(H.client)
+ window_flash(H.client)
else if(href_list["FaxReplyTemplate"])
if(!check_rights(R_ADMIN))
return
@@ -2183,7 +2188,7 @@
return
input = P.parsepencode(input) // Encode everything from pencode to html
- var/customname = input(src.owner, "Pick a title for the fax.", "Fax Title") as text|null
+ var/customname = clean_input("Pick a title for the fax.", "Fax Title", , owner)
if(!customname)
customname = "paper"
@@ -2216,14 +2221,14 @@
if("clown")
stampvalue = "clown"
else if(stamptype == "text")
- stampvalue = input(src.owner, "What should the stamp say?", "Stamp Text") as text|null
+ stampvalue = clean_input("What should the stamp say?", "Stamp Text", , owner)
else if(stamptype == "none")
stamptype = ""
else
qdel(P)
return
- sendername = input(src.owner, "What organization does the fax come from? This determines the prefix of the paper (i.e. Central Command- Title). This is optional.", "Organization") as text|null
+ sendername = clean_input("What organization does the fax come from? This determines the prefix of the paper (i.e. Central Command- Title). This is optional.", "Organization", , owner)
if(sender)
notify = alert(src.owner, "Would you like to inform the original sender that a fax has arrived?","Notify Sender","Yes","No")
@@ -3283,7 +3288,7 @@
return
var/datum/station_goal/G = new picked()
if(picked == /datum/station_goal)
- var/newname = input("Enter goal name:") as text|null
+ var/newname = clean_input("Enter goal name:")
if(!newname)
return
G.name = newname
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 685dc1eff2e..853b367e15b 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -18,7 +18,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
var/list/type = list("Mentorhelp","Adminhelp")
var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type
if(selected_type)
- msg = input("Please enter your message.", "Admin Help", null, null) as text|null
+ msg = clean_input("Please enter your message.", "Admin Help", null)
//clean the input msg
if(!msg)
@@ -27,7 +27,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(handle_spam_prevention(msg, MUTE_ADMINHELP, OOC_COOLDOWN))
return
- msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
+ msg = sanitize_simple(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg) return
var/original_msg = msg
@@ -185,7 +185,4 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
else
send2irc(source, "[msg] - All admins AFK ([admin_number_afk]/[admin_number_total]) or skipped ([admin_number_ignored]/[admin_number_total])")
return admin_number_present
-
-/client/proc/get_adminhelp()
- var/msg = input(src, "Please describe your problem concisely and an admin will help as soon as they're able.", "Adminhelp contents") as text|null
- adminhelp(msg)
\ No newline at end of file
+
\ No newline at end of file
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 83531c9b0b9..2352c442313 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -3,7 +3,7 @@
set category = null
set name = "Admin PM Mob"
if(!holder)
- to_chat(src, "Error: Admin-PM-Context: Only administrators may use this command.")
+ to_chat(src, "Error: Admin-PM-Context: Only administrators may use this command.")
return
if( !ismob(M) || !M.client ) return
cmd_admin_pm(M.client,null)
@@ -14,7 +14,7 @@
set category = "Admin"
set name = "Admin PM Name"
if(!holder)
- to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.")
+ to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.")
return
var/list/client/targets[0]
for(var/client/T)
@@ -37,7 +37,7 @@
set category = "Admin"
set name = "Admin PM Key"
if(!holder)
- to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.")
+ to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.")
return
var/list/client/targets[0]
for(var/client/T)
@@ -60,7 +60,7 @@
//Fetching a message if needed. src is the sender and C is the target client
/client/proc/cmd_admin_pm(whom, msg, type = "PM")
if(prefs.muted & MUTE_ADMINHELP)
- to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).")
+ to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).")
return
var/client/C
@@ -89,7 +89,7 @@
//get message text, limit it's length.and clean/escape html
if(!msg)
set_typing(C, TRUE)
- msg = input(src,"Message:", "Private message to [holder ? key_name(C, FALSE) : key_name_hidden(C, FALSE)]") as text|null
+ msg = clean_input("Message:", "Private message to [holder ? key_name(C, FALSE) : key_name_hidden(C, FALSE)]", , src)
set_typing(C, FALSE)
if(!msg)
@@ -106,9 +106,11 @@
//clean the message if it's not sent by a high-rank admin
if(!check_rights(R_SERVER|R_DEBUG,0))
- msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
+ msg = sanitize_simple(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg)
return
+ else
+ msg = pencode_to_html(msg)
var/recieve_span = "playerreply"
var/send_pm_type = " "
@@ -127,7 +129,7 @@
recieve_pm_type = holder.rank
else if(!C.holder)
- to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.")
+ to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.")
return
var/recieve_message = ""
@@ -147,7 +149,7 @@
spawn(0) //so we don't hold the caller proc up
var/sender = src
var/sendername = key
- var/reply = input(C, msg,"[recieve_pm_type] [type] from-[sendername]", "") as text|null //show message and await a reply
+ var/reply = clean_input(msg,"[recieve_pm_type] [type] from-[sendername]", "", C) //show message and await a reply
if(C && reply)
if(sender)
C.cmd_admin_pm(sender,reply) //sender is still about, let's reply to them
@@ -159,7 +161,7 @@
var/emoji_msg = "[msg]"
recieve_message = "[type] from-[recieve_pm_type][C.holder ? key_name(src, TRUE, type) : key_name_hidden(src, TRUE, type)]: [emoji_msg]"
to_chat(C, recieve_message)
- to_chat(src, "[send_pm_type][type] to-[holder ? key_name(C, TRUE, type) : key_name_hidden(C, TRUE, type)]: [emoji_msg]")
+ to_chat(src, "[send_pm_type][type] to-[holder ? key_name(C, TRUE, type) : key_name_hidden(C, TRUE, type)]: [emoji_msg]")
/*if(holder && !C.holder)
C.last_pm_recieved = world.time
@@ -213,10 +215,10 @@
/client/proc/cmd_admin_irc_pm()
if(prefs.muted & MUTE_ADMINHELP)
- to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).")
+ to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).")
return
- var/msg = input(src,"Message:", "Private message to admins on IRC / 400 character limit") as text|null
+ var/msg = clean_input("Message:", "Private message to admins on IRC / 400 character limit", , src) as text|null
if(!msg)
return
@@ -230,14 +232,14 @@
send2adminirc("PlayerPM from [key_name(src)]: [html_decode(msg)]")
- to_chat(src, "IRC PM to-IRC-Admins: [msg]")
+ to_chat(src, "IRC PM to-IRC-Admins: [msg]")
log_admin("PM: [key_name(src)]->IRC: [msg]")
for(var/client/X in GLOB.admins)
if(X == src)
continue
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob))
- to_chat(X, "PM: [key_name(src, TRUE, 0)]->IRC-Admins: [msg]")
+ to_chat(X, "PM: [key_name(src, TRUE, 0)]->IRC-Admins: [msg]")
/client/verb/open_pms_ui()
set name = "My PMs"
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 6a419ebb29a..008eaa4a910 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -68,7 +68,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
target = null
targetselected = 0
- var/procname = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null
+ var/procname = clean_input("Proc path, eg: /proc/fake_blood","Path:", null)
if(!procname) return
if(targetselected && !hascall(target,procname))
@@ -102,7 +102,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_PROCCALL))
return
- var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null
+ var/procname = clean_input("Proc name, eg: fake_blood","Proc:", null)
if(!procname)
return
@@ -149,7 +149,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
return null
if("text")
- lst += input("Enter new text:","Text",null) as text
+ lst += clean_input("Enter new text:","Text",null)
if("num")
lst += input("Enter new number:","Num",0) as num
@@ -271,7 +271,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
return 0
var/obj/item/paicard/card = new(T)
var/mob/living/silicon/pai/pai = new(card)
- var/raw_name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text
+ var/raw_name = clean_input("Enter your pAI name:", "pAI Name", "Personal AI", choice)
var/new_name = reject_bad_name(raw_name, 1)
if(new_name)
pai.name = new_name
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index 93389acbdd8..23d171e69a0 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -145,7 +145,7 @@
if(!check_rights(R_DEBUG))
return
- var/filter = input("Contains what?","Filter") as text|null
+ var/filter = clean_input("Contains what?","Filter")
if(!filter)
return
@@ -166,7 +166,7 @@
if(!check_rights(R_DEBUG))
return
- var/refstring = input("Which reference?","Ref") as text|null
+ var/refstring = clean_input("Which reference?","Ref")
if(!refstring)
return
diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm
index b21a0c05cc3..209352993a0 100644
--- a/code/modules/admin/verbs/freeze.dm
+++ b/code/modules/admin/verbs/freeze.dm
@@ -28,7 +28,7 @@ var/global/list/frozen_mob_list = list()
/mob/living/proc/admin_Freeze(var/client/admin, skip_overlays = FALSE)
if(istype(admin))
- to_chat(src, "You have been frozen by [key_name(admin)]")
+ to_chat(src, "You have been frozen by [admin]")
message_admins("[key_name_admin(admin)] froze [key_name_admin(src)]")
log_admin("[key_name(admin)] froze [key_name(src)]")
@@ -45,7 +45,7 @@ var/global/list/frozen_mob_list = list()
/mob/living/proc/admin_unFreeze(var/client/admin, skip_overlays = FALSE)
if(istype(admin))
- to_chat(src, "You have been unfrozen by [key_name(admin)]")
+ to_chat(src, "You have been unfrozen by [admin]")
message_admins("[key_name_admin(admin)] unfroze [key_name_admin(src)]")
log_admin("[key_name(admin)] unfroze [key_name(src)]")
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index a87308bb9b1..80a171494ea 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -132,13 +132,13 @@ var/intercom_range_display_status = 0
if(!check_rights(R_DEBUG))
return
- var/level = input("Which z-level?","Level?") as text
+ var/level = clean_input("Which z-level?","Level?")
if(!level) return
var/num_level = text2num(level)
if(!num_level) return
if(!isnum(num_level)) return
- var/type_text = input("Which type path?","Path?") as text
+ var/type_text = clean_input("Which type path?","Path?")
if(!type_text) return
var/type_path = text2path(type_text)
if(!type_path) return
@@ -170,7 +170,7 @@ var/intercom_range_display_status = 0
if(!check_rights(R_DEBUG))
return
- var/type_text = input("Which type path?","") as text
+ var/type_text = clean_input("Which type path?","")
if(!type_text) return
var/type_path = text2path(type_text)
if(!type_path) return
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index ec731458109..9ae1c93b8d6 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -54,7 +54,7 @@
if(!check_rights(R_SERVER|R_EVENT))
return
- var/msg = input("Message:", text("Subtle PM to [M.key]")) as text
+ var/msg = clean_input("Message:", text("Subtle PM to [M.key]"))
if(!msg)
return
@@ -109,10 +109,11 @@
if(!check_rights(R_SERVER|R_EVENT))
return
- var/msg = input("Message:", text("Enter the text you wish to appear to everyone:")) as text
+ var/msg = clean_input("Message:", text("Enter the text you wish to appear to everyone:"))
if(!msg)
return
+ msg = pencode_to_html(msg)
to_chat(world, "[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins("GlobalNarrate: [key_name_admin(usr)]: [msg]
", 1)
@@ -131,10 +132,11 @@
if(!M)
return
- var/msg = input("Message:", text("Enter the text you wish to appear to your target:")) as text
+ var/msg = clean_input("Message:", text("Enter the text you wish to appear to your target:"))
if( !msg )
return
+ msg = pencode_to_html(msg)
to_chat(M, msg)
log_admin("DirectNarrate: [key_name(usr)] to ([key_name(M)]): [msg]")
@@ -169,7 +171,7 @@
return
message_admins("[key_name_admin(src)] has started answering [key_name_admin(H)]'s [sender] request.")
- var/input = input("Please enter a message to reply to [key_name(H)] via their headset.", "Outgoing message from [sender]", "") as text|null
+ var/input = clean_input("Please enter a message to reply to [key_name(H)] via their headset.", "Outgoing message from [sender]", "")
if(!input)
message_admins("[key_name_admin(src)] decided not to answer [key_name_admin(H)]'s [sender] request.")
return
@@ -550,7 +552,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_EVENT))
return
- var/input = input(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", "") as text|null
+ var/input = clean_input("Please enter anything you want the AI to do. Anything. Serious.", "What?", "")
if(!input)
return
@@ -603,14 +605,15 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/type = input(usr, "Pick a type of report to send", "Report Type", "") as anything in MsgType
if(type == "Custom")
- type = input(usr, "What would you like the report type to be?", "Report Type", "Encrypted Transmission") as text|null
+ type = clean_input("What would you like the report type to be?", "Report Type", "Encrypted Transmission")
- var/customname = input(usr, "Pick a title for the report.", "Title", MsgType[type]) as text|null
+ var/customname = clean_input("Pick a title for the report.", "Title", MsgType[type])
if(!customname)
return
var/input = input(usr, "Please enter anything you want. Anything. Serious.", "What's the message?") as message|null
if(!input)
return
+ input = html_encode(input)
switch(alert("Should this be announced to the general population?",,"Yes","No", "Cancel"))
if("Yes")
@@ -1001,6 +1004,57 @@ Traitors and the like can also be revived with the previous role mostly intact.
msg += "