Overhauls and 2/28 sync (#244)
* map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures * lazy fix for bleeding edgy (#252) * map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures
This commit is contained in:
@@ -138,12 +138,15 @@ First, read the comments in this byond thread, starting here:http://www.byond.co
|
||||
|
||||
There are two key points here:
|
||||
|
||||
1) Defining a list in the type definition incurs a hidden proc call - init, if you must define a list at startup, do so in New() and avoid the overhead of a second call (init() and then new())
|
||||
1) Defining a list in the type definition incurs a hidden proc call - init, if you must define a list at startup, do so in New()/Initialize and avoid the overhead of a second call (init() and then new())
|
||||
|
||||
2)Offsets list creation overhead to the point where the list is actually required (which for many objects, may be never at all).
|
||||
|
||||
Remember, this tradeoff makes sense in many cases but not all, you should think carefully about your implementation before deciding if this is an appropriate thing to do
|
||||
|
||||
###Prefer `Initialize` over `New` for atoms
|
||||
Our game controller is pretty good at handling long operations and lag. But, it can't control what happens when the map is loaded, which calls `New` for all atoms on the map. If you're creating a new atom, use the `Initialize` proc to do what you would normally do in `New`. This cuts down on the number of proc calls needed when the world is loaded. See here for details on `Initialize`: https://github.com/tgstation/tgstation/blob/master/code/game/atoms.dm#L49
|
||||
|
||||
###No magic numbers or strings
|
||||
Make these #defines with a name that more clearly states what it's for.
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
19 February 2017, by Jordie0608
|
||||
|
||||
Optimised and indexed significant portions of the schema.
|
||||
|
||||
See the file 'optimisations_2017-02-19.sql' for instructions on how to apply these changes to your database.
|
||||
|
||||
Remember to add a prefix to the table name if you use them
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
30 January 2017, by Lzimann
|
||||
|
||||
Modified table 'death', adding the columns 'mapname' and 'server'.
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
/*
|
||||
It is recommended you do not perfom any of these queries while your server is live as they will lock the tables during execution.
|
||||
|
||||
Backup your database before starting; Breaking errors may occur when old data is not be compatible with new column formats.
|
||||
i.e. A field that is null or empty due to rows existing before the column was added, data corruption or incorrect inputs will prevent altering the column to be NOT NULL.
|
||||
To account where this is likely to occur, these queries check if fields have valid data and if not will replace invalid data with 0.
|
||||
Some fields may be out of range for new column lengths, this will also cause a breaking error.
|
||||
For instance `death`.`bruteloss` is now SMALLINT and won't accept any values over 65535.
|
||||
Data in this table can thus be truncated using a query such as:
|
||||
UPDATE `[database]`.`[table]` SET `[column]` = LEAST(`[column]`, [max column size])
|
||||
To truncate a text field you would have to use SUBSTRING(), however I don't suggest you truncate any text fields.
|
||||
If you wish to instead preserve this data you will need to modify the schema and queries to accomodate.
|
||||
|
||||
Take note some columns have been renamed, removed or changed type. Any services relying on these columns will have to be updated per changes.
|
||||
|
||||
----------------------------------------------------*/
|
||||
|
||||
START TRANSACTION;
|
||||
ALTER TABLE `feedback`.`ban`
|
||||
DROP COLUMN `rounds`
|
||||
, CHANGE COLUMN `bantype` `bantype` ENUM('PERMABAN', 'TEMPBAN', 'JOB_PERMABAN', 'JOB_TEMPBAN', 'ADMIN_PERMABAN', 'ADMIN_TEMPBAN') NOT NULL
|
||||
, CHANGE COLUMN `reason` `reason` VARCHAR(2048) NOT NULL
|
||||
, CHANGE COLUMN `who` `who` VARCHAR(2048) NOT NULL
|
||||
, CHANGE COLUMN `adminwho` `adminwho` VARCHAR(2048) NOT NULL
|
||||
, CHANGE COLUMN `unbanned` `unbanned` TINYINT UNSIGNED NULL DEFAULT NULL
|
||||
, ADD COLUMN `server_ip` INT UNSIGNED NOT NULL AFTER `serverip`
|
||||
, ADD COLUMN `server_port` SMALLINT UNSIGNED NOT NULL AFTER `server_ip`
|
||||
, ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`
|
||||
, ADD COLUMN `a_ipTEMP` INT UNSIGNED NOT NULL AFTER `a_ip`
|
||||
, ADD COLUMN `unbanned_ipTEMP` INT UNSIGNED NULL DEFAULT NULL AFTER `unbanned_ip`;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`ban`
|
||||
SET `server_ip` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`serverip`, ':', 1)), ''), INET_ATON('0.0.0.0'))
|
||||
, `server_port` = IF(`serverip` LIKE '%:_%', CAST(SUBSTRING_INDEX(`serverip`, ':', -1) AS UNSIGNED), '0')
|
||||
, `ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`ip`, ':', 1)), ''), INET_ATON('0.0.0.0'))
|
||||
, `a_ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`a_ip`, ':', 1)), ''), INET_ATON('0.0.0.0'))
|
||||
, `unbanned_ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`unbanned_ip`, ':', 1)), ''), INET_ATON('0.0.0.0'));
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`ban`
|
||||
DROP COLUMN `unbanned_ip`
|
||||
, DROP COLUMN `a_ip`
|
||||
, DROP COLUMN `ip`
|
||||
, DROP COLUMN `serverip`
|
||||
, CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL
|
||||
, CHANGE COLUMN `a_ipTEMP` `a_ip` INT(10) UNSIGNED NOT NULL
|
||||
, CHANGE COLUMN `unbanned_ipTEMP` `unbanned_ip` INT(10) UNSIGNED NULL DEFAULT NULL;
|
||||
COMMIT;
|
||||
|
||||
START TRANSACTION;
|
||||
ALTER TABLE `feedback`.`connection_log`
|
||||
ADD COLUMN `server_ip` INT UNSIGNED NOT NULL AFTER `serverip`
|
||||
, ADD COLUMN `server_port` SMALLINT UNSIGNED NOT NULL AFTER `server_ip`
|
||||
, ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`connection_log`
|
||||
SET `server_ip` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`serverip`, ':', 1)), ''), INET_ATON('0.0.0.0'))
|
||||
, `server_port` = IF(`serverip` LIKE '%:_%', CAST(SUBSTRING_INDEX(`serverip`, ':', -1) AS UNSIGNED), '0')
|
||||
, `ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`ip`, ':', 1)), ''), INET_ATON('0.0.0.0'));
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`connection_log`
|
||||
DROP COLUMN `ip`
|
||||
, DROP COLUMN `serverip`
|
||||
, CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL;
|
||||
COMMIT;
|
||||
|
||||
START TRANSACTION;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`death`
|
||||
SET `bruteloss` = LEAST(`bruteloss`, 65535)
|
||||
, `brainloss` = LEAST(`brainloss`, 65535)
|
||||
, `fireloss` = LEAST(`fireloss`, 65535)
|
||||
, `oxyloss` = LEAST(`oxyloss`, 65535);
|
||||
ALTER TABLE `feedback`.`death`
|
||||
CHANGE COLUMN `pod` `pod` VARCHAR(50) NOT NULL
|
||||
, CHANGE COLUMN `coord` `coord` VARCHAR(32) NOT NULL
|
||||
, CHANGE COLUMN `mapname` `mapname` VARCHAR(32) NOT NULL
|
||||
, CHANGE COLUMN `job` `job` VARCHAR(32) NOT NULL
|
||||
, CHANGE COLUMN `special` `special` VARCHAR(32) NULL DEFAULT NULL
|
||||
, CHANGE COLUMN `name` `name` VARCHAR(96) NOT NULL
|
||||
, CHANGE COLUMN `byondkey` `byondkey` VARCHAR(32) NOT NULL
|
||||
, CHANGE COLUMN `laname` `laname` VARCHAR(96) NULL DEFAULT NULL
|
||||
, CHANGE COLUMN `lakey` `lakey` VARCHAR(32) NULL DEFAULT NULL
|
||||
, CHANGE COLUMN `gender` `gender` ENUM('neuter', 'male', 'female', 'plural') NOT NULL
|
||||
, CHANGE COLUMN `bruteloss` `bruteloss` SMALLINT UNSIGNED NOT NULL
|
||||
, CHANGE COLUMN `brainloss` `brainloss` SMALLINT UNSIGNED NOT NULL
|
||||
, CHANGE COLUMN `fireloss` `fireloss` SMALLINT UNSIGNED NOT NULL
|
||||
, CHANGE COLUMN `oxyloss` `oxyloss` SMALLINT UNSIGNED NOT NULL
|
||||
, ADD COLUMN `server_ip` INT UNSIGNED NOT NULL AFTER `server`
|
||||
, ADD COLUMN `server_port` SMALLINT UNSIGNED NOT NULL AFTER `server_ip`;
|
||||
UPDATE `feedback`.`death`
|
||||
SET `server_ip` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`server`, ':', 1)), ''), INET_ATON('0.0.0.0'))
|
||||
, `server_port` = IF(`server` LIKE '%:_%', CAST(SUBSTRING_INDEX(`server`, ':', -1) AS UNSIGNED), '0');
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`death`
|
||||
DROP COLUMN `server`;
|
||||
COMMIT;
|
||||
|
||||
ALTER TABLE `feedback`.`library`
|
||||
CHANGE COLUMN `category` `category` ENUM('Any', 'Fiction', 'Non-Fiction', 'Adult', 'Reference', 'Religion') NOT NULL
|
||||
, CHANGE COLUMN `ckey` `ckey` VARCHAR(32) NOT NULL DEFAULT 'LEGACY'
|
||||
, CHANGE COLUMN `datetime` `datetime` DATETIME NOT NULL
|
||||
, CHANGE COLUMN `deleted` `deleted` TINYINT(1) UNSIGNED NULL DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `feedback`.`messages`
|
||||
CHANGE COLUMN `type` `type` ENUM('memo', 'message', 'message sent', 'note', 'watchlist entry') NOT NULL
|
||||
, CHANGE COLUMN `text` `text` VARCHAR(2048) NOT NULL
|
||||
, CHANGE COLUMN `secret` `secret` TINYINT(1) UNSIGNED NOT NULL;
|
||||
|
||||
START TRANSACTION;
|
||||
ALTER TABLE `feedback`.`player`
|
||||
ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`player`
|
||||
SET `ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`ip`, ':', 1)), ''), INET_ATON('0.0.0.0'));
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`player`
|
||||
DROP COLUMN `ip`
|
||||
, CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL;
|
||||
COMMIT;
|
||||
|
||||
START TRANSACTION;
|
||||
ALTER TABLE `feedback`.`poll_question`
|
||||
CHANGE COLUMN `polltype` `polltype` ENUM('OPTION', 'TEXT', 'NUMVAL', 'MULTICHOICE', 'IRV') NOT NULL
|
||||
, CHANGE COLUMN `adminonly` `adminonly` TINYINT(1) UNSIGNED NOT NULL
|
||||
, CHANGE COLUMN `createdby_ckey` `createdby_ckey` VARCHAR(32) NULL DEFAULT NULL
|
||||
, CHANGE COLUMN `dontshow` `dontshow` TINYINT(1) UNSIGNED NOT NULL
|
||||
, ADD COLUMN `createdby_ipTEMP` INT UNSIGNED NOT NULL AFTER `createdby_ip`
|
||||
, DROP COLUMN `for_trialmin`;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`poll_question`
|
||||
SET `createdby_ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`createdby_ip`, ':', 1)), ''), INET_ATON('0.0.0.0'));
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`poll_question`
|
||||
DROP COLUMN `createdby_ip`
|
||||
, CHANGE COLUMN `createdby_ipTEMP` `createdby_ip` INT(10) UNSIGNED NOT NULL;
|
||||
COMMIT;
|
||||
|
||||
START TRANSACTION;
|
||||
ALTER TABLE `feedback`.`poll_textreply`
|
||||
CHANGE COLUMN `replytext` `replytext` VARCHAR(2048) NOT NULL
|
||||
, ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`poll_textreply`
|
||||
SET `ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`ip`, ':', 1)), ''), INET_ATON('0.0.0.0'));
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`poll_textreply`
|
||||
DROP COLUMN `ip`
|
||||
, CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL;
|
||||
COMMIT;
|
||||
|
||||
START TRANSACTION;
|
||||
ALTER TABLE `feedback`.`poll_vote`
|
||||
CHANGE COLUMN `ckey` `ckey` VARCHAR(32) NOT NULL
|
||||
, ADD COLUMN `ipTEMP` INT UNSIGNED NOT NULL AFTER `ip`;
|
||||
SET SQL_SAFE_UPDATES = 0;
|
||||
UPDATE `feedback`.`poll_vote`
|
||||
SET `ipTEMP` = COALESCE(NULLIF(INET_ATON(SUBSTRING_INDEX(`ip`, ':', 1)), ''), INET_ATON('0.0.0.0'));
|
||||
SET SQL_SAFE_UPDATES = 1;
|
||||
ALTER TABLE `feedback`.`poll_vote`
|
||||
DROP COLUMN `ip`
|
||||
, CHANGE COLUMN `ipTEMP` `ip` INT(10) UNSIGNED NOT NULL;
|
||||
COMMIT;
|
||||
|
||||
/*----------------------------------------------------
|
||||
|
||||
These queries are to be run after the above.
|
||||
These indexes are designed with only the codebase queries in mind.
|
||||
You may find it helpful to modify or create your own indexes if you utilise additional queries for other services.
|
||||
|
||||
----------------------------------------------------*/
|
||||
|
||||
ALTER TABLE `feedback`.`ban`
|
||||
ADD INDEX `idx_ban_checkban` (`ckey` ASC, `bantype` ASC, `expiration_time` ASC, `unbanned` ASC, `job` ASC)
|
||||
, ADD INDEX `idx_ban_isbanned` (`ckey` ASC, `ip` ASC, `computerid` ASC, `bantype` ASC, `expiration_time` ASC, `unbanned` ASC)
|
||||
, ADD INDEX `idx_ban_count` (`id` ASC, `a_ckey` ASC, `bantype` ASC, `expiration_time` ASC, `unbanned` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`ipintel`
|
||||
ADD INDEX `idx_ipintel` (`ip` ASC, `intel` ASC, `date` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`library`
|
||||
ADD INDEX `idx_lib_id_del` (`id` ASC, `deleted` ASC)
|
||||
, ADD INDEX `idx_lib_del_title` (`deleted` ASC, `title` ASC)
|
||||
, ADD INDEX `idx_lib_search` (`deleted` ASC, `author` ASC, `title` ASC, `category` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`messages`
|
||||
ADD INDEX `idx_msg_ckey_time` (`targetckey` ASC, `timestamp` ASC)
|
||||
, ADD INDEX `idx_msg_type_ckeys_time` (`type` ASC, `targetckey` ASC, `adminckey` ASC, `timestamp` ASC)
|
||||
, ADD INDEX `idx_msg_type_ckey_time_odr` (`type` ASC, `targetckey` ASC, `timestamp` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`player`
|
||||
ADD INDEX `idx_player_cid_ckey` (`computerid` ASC, `ckey` ASC)
|
||||
, ADD INDEX `idx_player_ip_ckey` (`ip` ASC, `ckey` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`poll_option`
|
||||
ADD INDEX `idx_pop_pollid` (`pollid` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`poll_question`
|
||||
ADD INDEX `idx_pquest_question_time_ckey` (`question` ASC, `starttime` ASC, `endtime` ASC, `createdby_ckey` ASC, `createdby_ip` ASC)
|
||||
, ADD INDEX `idx_pquest_time_admin` (`starttime` ASC, `endtime` ASC, `adminonly` ASC)
|
||||
, ADD INDEX `idx_pquest_id_time_type_admin` (`id` ASC, `starttime` ASC, `endtime` ASC, `polltype` ASC, `adminonly` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`poll_vote`
|
||||
ADD INDEX `idx_pvote_pollid_ckey` (`pollid` ASC, `ckey` ASC)
|
||||
, ADD INDEX `idx_pvote_optionid_ckey` (`optionid` ASC, `ckey` ASC);
|
||||
|
||||
ALTER TABLE `feedback`.`poll_textreply`
|
||||
ADD INDEX `idx_ptext_pollid_ckey` (`pollid` ASC, `ckey` ASC);
|
||||
+116
-98
@@ -59,18 +59,9 @@ CREATE TABLE `admin_ranks` (
|
||||
`rank` varchar(40) NOT NULL,
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
insert into admin_ranks (rank, flags) values ('Moderator',2);
|
||||
insert into admin_ranks (rank, flags) values ('Admin Candidate',2);
|
||||
insert into admin_ranks (rank, flags) values ('Trial Admin',5638);
|
||||
insert into admin_ranks (rank, flags) values ('Badmin',5727);
|
||||
insert into admin_ranks (rank, flags) values ('Game Admin',8063);
|
||||
insert into admin_ranks (rank, flags) values ('Game Master',65535);
|
||||
insert into admin_ranks (rank, flags) values ('Host',65535);
|
||||
insert into admin_ranks (rank, flags) values ('Coder',5168);
|
||||
|
||||
--
|
||||
-- Table structure for table `ban`
|
||||
--
|
||||
@@ -81,28 +72,31 @@ DROP TABLE IF EXISTS `ban`;
|
||||
CREATE TABLE `ban` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`bantime` datetime NOT NULL,
|
||||
`serverip` varchar(32) NOT NULL,
|
||||
`bantype` varchar(32) NOT NULL,
|
||||
`reason` text NOT NULL,
|
||||
`server_ip` int(10) unsigned NOT NULL,
|
||||
`server_port` smallint(5) unsigned NOT NULL,
|
||||
`bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN') NOT NULL,
|
||||
`reason` varchar(2048) NOT NULL,
|
||||
`job` varchar(32) DEFAULT NULL,
|
||||
`duration` int(11) NOT NULL,
|
||||
`rounds` int(11) DEFAULT NULL,
|
||||
`expiration_time` datetime NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`computerid` varchar(32) NOT NULL,
|
||||
`ip` varchar(32) NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`a_ckey` varchar(32) NOT NULL,
|
||||
`a_computerid` varchar(32) NOT NULL,
|
||||
`a_ip` varchar(32) NOT NULL,
|
||||
`who` text NOT NULL,
|
||||
`adminwho` text NOT NULL,
|
||||
`a_ip` int(10) unsigned NOT NULL,
|
||||
`who` varchar(2048) NOT NULL,
|
||||
`adminwho` varchar(2048) NOT NULL,
|
||||
`edits` text,
|
||||
`unbanned` int(2) DEFAULT NULL,
|
||||
`unbanned` tinyint(3) unsigned DEFAULT NULL,
|
||||
`unbanned_datetime` datetime DEFAULT NULL,
|
||||
`unbanned_ckey` varchar(32) DEFAULT NULL,
|
||||
`unbanned_computerid` varchar(32) DEFAULT NULL,
|
||||
`unbanned_ip` varchar(32) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`unbanned_ip` int(10) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_ban_checkban` (`ckey`,`bantype`,`expiration_time`,`unbanned`,`job`),
|
||||
KEY `idx_ban_isbanned` (`ckey`,`ip`,`computerid`,`bantype`,`expiration_time`,`unbanned`),
|
||||
KEY `idx_ban_count` (`id`,`a_ckey`,`bantype`,`expiration_time`,`unbanned`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -116,9 +110,10 @@ DROP TABLE IF EXISTS `connection_log`;
|
||||
CREATE TABLE `connection_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime DEFAULT NULL,
|
||||
`serverip` varchar(45) DEFAULT NULL,
|
||||
`server_ip` int(10) unsigned NOT NULL,
|
||||
`server_port` smallint(5) unsigned NOT NULL,
|
||||
`ckey` varchar(45) DEFAULT NULL,
|
||||
`ip` varchar(18) DEFAULT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`computerid` varchar(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
@@ -133,23 +128,23 @@ DROP TABLE IF EXISTS `death`;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `death` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`pod` text NOT NULL COMMENT 'Place of death',
|
||||
`coord` text NOT NULL COMMENT 'X, Y, Z POD',
|
||||
`mapname` text NOT NULL,
|
||||
`server` text NOT NULL,
|
||||
`pod` varchar(50) NOT NULL,
|
||||
`coord` varchar(32) NOT NULL,
|
||||
`mapname` varchar(32) NOT NULL,
|
||||
`server_ip` int(10) unsigned NOT NULL,
|
||||
`server_port` smallint(5) unsigned NOT NULL,
|
||||
`tod` datetime NOT NULL COMMENT 'Time of death',
|
||||
`job` text NOT NULL,
|
||||
`special` text NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`byondkey` text NOT NULL,
|
||||
`laname` text NOT NULL COMMENT 'Last attacker name',
|
||||
`lakey` text NOT NULL COMMENT 'Last attacker key',
|
||||
`gender` text NOT NULL,
|
||||
`bruteloss` int(11) NOT NULL,
|
||||
`brainloss` int(11) NOT NULL,
|
||||
`fireloss` int(11) NOT NULL,
|
||||
`oxyloss` int(11) NOT NULL,
|
||||
|
||||
`job` varchar(32) NOT NULL,
|
||||
`special` varchar(32) DEFAULT NULL,
|
||||
`name` varchar(96) NOT NULL,
|
||||
`byondkey` varchar(32) NOT NULL,
|
||||
`laname` varchar(96) DEFAULT NULL,
|
||||
`lakey` varchar(32) DEFAULT NULL,
|
||||
`gender` enum('neuter','male','female','plural') NOT NULL,
|
||||
`bruteloss` smallint(5) unsigned NOT NULL,
|
||||
`brainloss` smallint(5) unsigned NOT NULL,
|
||||
`fireloss` smallint(5) unsigned NOT NULL,
|
||||
`oxyloss` smallint(5) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@@ -172,6 +167,22 @@ CREATE TABLE `feedback` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `ipintel`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ipintel`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `ipintel` (
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`intel` double NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`ip`),
|
||||
KEY `idx_ipintel` (`ip`,`intel`,`date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `legacy_population`
|
||||
--
|
||||
@@ -193,22 +204,49 @@ CREATE TABLE `legacy_population` (
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `library`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `library` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`author` varchar(45) NOT NULL,
|
||||
`title` varchar(45) NOT NULL,
|
||||
`content` text NOT NULL,
|
||||
`category` varchar(45) NOT NULL,
|
||||
`ckey` varchar(45) DEFAULT 'LEGACY',
|
||||
`datetime` datetime DEFAULT NULL,
|
||||
`deleted` tinyint(1) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`category` enum('Any','Fiction','Non-Fiction','Adult','Reference','Religion') NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL DEFAULT 'LEGACY',
|
||||
`datetime` datetime NOT NULL,
|
||||
`deleted` tinyint(1) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `deleted_idx` (`deleted`),
|
||||
KEY `idx_lib_id_del` (`id`,`deleted`),
|
||||
KEY `idx_lib_del_title` (`deleted`,`title`),
|
||||
KEY `idx_lib_search` (`deleted`,`author`,`title`,`category`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Create an index to speed up the libary
|
||||
-- Table structure for table `messages`
|
||||
--
|
||||
CREATE INDEX deleted_idx ON `library` (`deleted`);
|
||||
|
||||
DROP TABLE IF EXISTS `messages`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `messages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`type` enum('memo','message','message sent','note','watchlist entry') NOT NULL,
|
||||
`targetckey` varchar(32) NOT NULL,
|
||||
`adminckey` varchar(32) NOT NULL,
|
||||
`text` varchar(2048) NOT NULL,
|
||||
`timestamp` datetime NOT NULL,
|
||||
`server` varchar(32) DEFAULT NULL,
|
||||
`secret` tinyint(1) unsigned NOT NULL,
|
||||
`lasteditor` varchar(32) DEFAULT NULL,
|
||||
`edits` text,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`),
|
||||
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`),
|
||||
KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `player`
|
||||
@@ -222,11 +260,13 @@ CREATE TABLE `player` (
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`firstseen` datetime NOT NULL,
|
||||
`lastseen` datetime NOT NULL,
|
||||
`ip` varchar(18) NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`computerid` varchar(32) NOT NULL,
|
||||
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `ckey` (`ckey`)
|
||||
UNIQUE KEY `ckey` (`ckey`),
|
||||
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
|
||||
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -247,7 +287,8 @@ CREATE TABLE `poll_option` (
|
||||
`descmin` varchar(32) DEFAULT NULL,
|
||||
`descmid` varchar(32) DEFAULT NULL,
|
||||
`descmax` varchar(32) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_pop_pollid` (`pollid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -260,17 +301,19 @@ DROP TABLE IF EXISTS `poll_question`;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `poll_question` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`polltype` varchar(16) NOT NULL DEFAULT 'OPTION',
|
||||
`polltype` enum('OPTION','TEXT','NUMVAL','MULTICHOICE','IRV') NOT NULL,
|
||||
`starttime` datetime NOT NULL,
|
||||
`endtime` datetime NOT NULL,
|
||||
`question` varchar(255) NOT NULL,
|
||||
`adminonly` tinyint(1) DEFAULT '0',
|
||||
`adminonly` tinyint(1) unsigned NOT NULL,
|
||||
`multiplechoiceoptions` int(2) DEFAULT NULL,
|
||||
`createdby_ckey` varchar(45) NULL DEFAULT NULL,
|
||||
`createdby_ip` varchar(45) NULL DEFAULT NULL,
|
||||
`for_trialmin` varchar(45) NULL DEFAULT NULL,
|
||||
`dontshow` tinyint(1) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
`createdby_ckey` varchar(32) DEFAULT NULL,
|
||||
`createdby_ip` int(10) unsigned NOT NULL,
|
||||
`dontshow` tinyint(1) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`,`createdby_ip`),
|
||||
KEY `idx_pquest_time_admin` (`starttime`,`endtime`,`adminonly`),
|
||||
KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -286,10 +329,11 @@ CREATE TABLE `poll_textreply` (
|
||||
`datetime` datetime NOT NULL,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`ip` varchar(18) NOT NULL,
|
||||
`replytext` text NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`replytext` varchar(2048) NOT NULL,
|
||||
`adminrank` varchar(32) NOT NULL DEFAULT 'Player',
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -305,47 +349,21 @@ CREATE TABLE `poll_vote` (
|
||||
`datetime` datetime NOT NULL,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`optionid` int(11) NOT NULL,
|
||||
`ckey` varchar(255) NOT NULL,
|
||||
`ip` varchar(16) NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`adminrank` varchar(32) NOT NULL,
|
||||
`rating` int(2) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`),
|
||||
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
--
|
||||
-- Table structure for table `ipintel`
|
||||
--
|
||||
|
||||
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;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `messages`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `messages`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `messages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT ,
|
||||
`type` varchar(32) NOT NULL ,
|
||||
`targetckey` varchar(32) NOT NULL ,
|
||||
`adminckey` varchar(32) NOT NULL ,
|
||||
`text` text NOT NULL ,
|
||||
`timestamp` datetime NOT NULL ,
|
||||
`server` varchar(32) NULL ,
|
||||
`secret` tinyint(1) NULL DEFAULT 1 ,
|
||||
`lasteditor` varchar(32) NULL ,
|
||||
`edits` text NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
@@ -34,7 +34,7 @@ CREATE TABLE `SS13_admin` (
|
||||
-- Table structure for table `SS13_admin_log`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SS13_admin_log`;
|
||||
DROP TABLE IF EXISTS `SS13_dmin_log`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_admin_log` (
|
||||
@@ -59,18 +59,9 @@ CREATE TABLE `SS13_admin_ranks` (
|
||||
`rank` varchar(40) NOT NULL,
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Moderator',2);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Admin Candidate',2);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Trial Admin',5638);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Badmin',5727);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Game Admin',8063);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Game Master',65535);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Host',65535);
|
||||
insert into SS13_admin_ranks (rank, flags) values ('Coder',5168);
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_ban`
|
||||
--
|
||||
@@ -81,28 +72,31 @@ DROP TABLE IF EXISTS `SS13_ban`;
|
||||
CREATE TABLE `SS13_ban` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`bantime` datetime NOT NULL,
|
||||
`serverip` varchar(32) NOT NULL,
|
||||
`bantype` varchar(32) NOT NULL,
|
||||
`reason` text NOT NULL,
|
||||
`server_ip` int(10) unsigned NOT NULL,
|
||||
`server_port` smallint(5) unsigned NOT NULL,
|
||||
`bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN') NOT NULL,
|
||||
`reason` varchar(2048) NOT NULL,
|
||||
`job` varchar(32) DEFAULT NULL,
|
||||
`duration` int(11) NOT NULL,
|
||||
`rounds` int(11) DEFAULT NULL,
|
||||
`expiration_time` datetime NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`computerid` varchar(32) NOT NULL,
|
||||
`ip` varchar(32) NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`a_ckey` varchar(32) NOT NULL,
|
||||
`a_computerid` varchar(32) NOT NULL,
|
||||
`a_ip` varchar(32) NOT NULL,
|
||||
`who` text NOT NULL,
|
||||
`adminwho` text NOT NULL,
|
||||
`a_ip` int(10) unsigned NOT NULL,
|
||||
`who` varchar(2048) NOT NULL,
|
||||
`adminwho` varchar(2048) NOT NULL,
|
||||
`edits` text,
|
||||
`unbanned` int(2) DEFAULT NULL,
|
||||
`unbanned` tinyint(3) unsigned DEFAULT NULL,
|
||||
`unbanned_datetime` datetime DEFAULT NULL,
|
||||
`unbanned_ckey` varchar(32) DEFAULT NULL,
|
||||
`unbanned_computerid` varchar(32) DEFAULT NULL,
|
||||
`unbanned_ip` varchar(32) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`unbanned_ip` int(10) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_ban_checkban` (`ckey`,`bantype`,`expiration_time`,`unbanned`,`job`),
|
||||
KEY `idx_ban_isbanned` (`ckey`,`ip`,`computerid`,`bantype`,`expiration_time`,`unbanned`),
|
||||
KEY `idx_ban_count` (`id`,`a_ckey`,`bantype`,`expiration_time`,`unbanned`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -116,9 +110,10 @@ DROP TABLE IF EXISTS `SS13_connection_log`;
|
||||
CREATE TABLE `SS13_connection_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime DEFAULT NULL,
|
||||
`serverip` varchar(45) DEFAULT NULL,
|
||||
`server_ip` int(10) unsigned NOT NULL,
|
||||
`server_port` smallint(5) unsigned NOT NULL,
|
||||
`ckey` varchar(45) DEFAULT NULL,
|
||||
`ip` varchar(18) DEFAULT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`computerid` varchar(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
@@ -133,22 +128,23 @@ DROP TABLE IF EXISTS `SS13_death`;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_death` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`pod` text NOT NULL COMMENT 'Place of death',
|
||||
`coord` text NOT NULL COMMENT 'X, Y, Z POD',
|
||||
`mapname` text NOT NULL,
|
||||
`server` text NOT NULL,
|
||||
`pod` varchar(50) NOT NULL,
|
||||
`coord` varchar(32) NOT NULL,
|
||||
`mapname` varchar(32) NOT NULL,
|
||||
`server_ip` int(10) unsigned NOT NULL,
|
||||
`server_port` smallint(5) unsigned NOT NULL,
|
||||
`tod` datetime NOT NULL COMMENT 'Time of death',
|
||||
`job` text NOT NULL,
|
||||
`special` text NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`byondkey` text NOT NULL,
|
||||
`laname` text NOT NULL COMMENT 'Last attacker name',
|
||||
`lakey` text NOT NULL COMMENT 'Last attacker key',
|
||||
`gender` text NOT NULL,
|
||||
`bruteloss` int(11) NOT NULL,
|
||||
`brainloss` int(11) NOT NULL,
|
||||
`fireloss` int(11) NOT NULL,
|
||||
`oxyloss` int(11) NOT NULL,
|
||||
`job` varchar(32) NOT NULL,
|
||||
`special` varchar(32) DEFAULT NULL,
|
||||
`name` varchar(96) NOT NULL,
|
||||
`byondkey` varchar(32) NOT NULL,
|
||||
`laname` varchar(96) DEFAULT NULL,
|
||||
`lakey` varchar(32) DEFAULT NULL,
|
||||
`gender` enum('neuter','male','female','plural') NOT NULL,
|
||||
`bruteloss` smallint(5) unsigned NOT NULL,
|
||||
`brainloss` smallint(5) unsigned NOT NULL,
|
||||
`fireloss` smallint(5) unsigned NOT NULL,
|
||||
`oxyloss` smallint(5) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@@ -171,6 +167,22 @@ CREATE TABLE `SS13_feedback` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_ipintel`
|
||||
--
|
||||
|
||||
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(10) unsigned NOT NULL,
|
||||
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`intel` double NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`ip`),
|
||||
KEY `idx_ipintel` (`ip`,`intel`,`date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_legacy_population`
|
||||
--
|
||||
@@ -192,17 +204,49 @@ CREATE TABLE `SS13_legacy_population` (
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SS13_library`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_library` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`author` varchar(45) NOT NULL,
|
||||
`title` varchar(45) NOT NULL,
|
||||
`content` text NOT NULL,
|
||||
`category` varchar(45) NOT NULL,
|
||||
`ckey` varchar(45) DEFAULT 'LEGACY',
|
||||
`datetime` datetime DEFAULT NULL,
|
||||
`deleted` tinyint(1) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`category` enum('Any','Fiction','Non-Fiction','Adult','Reference','Religion') NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL DEFAULT 'LEGACY',
|
||||
`datetime` datetime NOT NULL,
|
||||
`deleted` tinyint(1) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `deleted_idx` (`deleted`),
|
||||
KEY `idx_lib_id_del` (`id`,`deleted`),
|
||||
KEY `idx_lib_del_title` (`deleted`,`title`),
|
||||
KEY `idx_lib_search` (`deleted`,`author`,`title`,`category`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_messages`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SS13_messages`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_messages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`type` enum('memo','message','message sent','note','watchlist entry') NOT NULL,
|
||||
`targetckey` varchar(32) NOT NULL,
|
||||
`adminckey` varchar(32) NOT NULL,
|
||||
`text` varchar(2048) NOT NULL,
|
||||
`timestamp` datetime NOT NULL,
|
||||
`server` varchar(32) DEFAULT NULL,
|
||||
`secret` tinyint(1) unsigned NOT NULL,
|
||||
`lasteditor` varchar(32) DEFAULT NULL,
|
||||
`edits` text,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`),
|
||||
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`),
|
||||
KEY `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_player`
|
||||
@@ -216,11 +260,13 @@ CREATE TABLE `SS13_player` (
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`firstseen` datetime NOT NULL,
|
||||
`lastseen` datetime NOT NULL,
|
||||
`ip` varchar(18) NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`computerid` varchar(32) NOT NULL,
|
||||
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `ckey` (`ckey`)
|
||||
UNIQUE KEY `ckey` (`ckey`),
|
||||
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
|
||||
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -241,7 +287,8 @@ CREATE TABLE `SS13_poll_option` (
|
||||
`descmin` varchar(32) DEFAULT NULL,
|
||||
`descmid` varchar(32) DEFAULT NULL,
|
||||
`descmax` varchar(32) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_pop_pollid` (`pollid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -254,17 +301,19 @@ DROP TABLE IF EXISTS `SS13_poll_question`;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_poll_question` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`polltype` varchar(16) NOT NULL DEFAULT 'OPTION',
|
||||
`polltype` enum('OPTION','TEXT','NUMVAL','MULTICHOICE','IRV') NOT NULL,
|
||||
`starttime` datetime NOT NULL,
|
||||
`endtime` datetime NOT NULL,
|
||||
`question` varchar(255) NOT NULL,
|
||||
`adminonly` tinyint(1) DEFAULT '0',
|
||||
`adminonly` tinyint(1) unsigned NOT NULL,
|
||||
`multiplechoiceoptions` int(2) DEFAULT NULL,
|
||||
`createdby_ckey` varchar(45) NULL DEFAULT NULL,
|
||||
`createdby_ip` varchar(45) NULL DEFAULT NULL,
|
||||
`for_trialmin` varchar(45) NULL DEFAULT NULL,
|
||||
`dontshow` tinyint(1) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
`createdby_ckey` varchar(32) DEFAULT NULL,
|
||||
`createdby_ip` int(10) unsigned NOT NULL,
|
||||
`dontshow` tinyint(1) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_pquest_question_time_ckey` (`question`,`starttime`,`endtime`,`createdby_ckey`,`createdby_ip`),
|
||||
KEY `idx_pquest_time_admin` (`starttime`,`endtime`,`adminonly`),
|
||||
KEY `idx_pquest_id_time_type_admin` (`id`,`starttime`,`endtime`,`polltype`,`adminonly`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -280,10 +329,11 @@ CREATE TABLE `SS13_poll_textreply` (
|
||||
`datetime` datetime NOT NULL,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`ip` varchar(18) NOT NULL,
|
||||
`replytext` text NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`replytext` varchar(2048) NOT NULL,
|
||||
`adminrank` varchar(32) NOT NULL DEFAULT 'Player',
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_ptext_pollid_ckey` (`pollid`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -299,47 +349,21 @@ CREATE TABLE `SS13_poll_vote` (
|
||||
`datetime` datetime NOT NULL,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`optionid` int(11) NOT NULL,
|
||||
`ckey` varchar(255) NOT NULL,
|
||||
`ip` varchar(16) NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`ip` int(10) unsigned NOT NULL,
|
||||
`adminrank` varchar(32) NOT NULL,
|
||||
`rating` int(2) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_pvote_pollid_ckey` (`pollid`,`ckey`),
|
||||
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_ipintel`
|
||||
--
|
||||
|
||||
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;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_messages`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SS13_messages`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_messages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT ,
|
||||
`type` varchar(32) NOT NULL ,
|
||||
`targetckey` varchar(32) NOT NULL ,
|
||||
`adminckey` varchar(32) NOT NULL ,
|
||||
`text` text NOT NULL ,
|
||||
`timestamp` datetime NOT NULL ,
|
||||
`server` varchar(32) NULL ,
|
||||
`secret` tinyint(1) NULL DEFAULT 1 ,
|
||||
`lasteditor` varchar(32) NULL ,
|
||||
`edits` text NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
@@ -90,6 +90,7 @@
|
||||
/obj/item/seeds/glowshroom,
|
||||
/obj/item/seeds/glowshroom,
|
||||
/obj/item/weapon/reagent_containers/glass/bucket,
|
||||
/obj/item/weapon/storage/bag/plants/portaseeder,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4
|
||||
dir = 8
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium/interior{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
|
||||
@@ -22,15 +22,15 @@
|
||||
/area/lavaland/surface/outdoors)
|
||||
"f" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"g" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/unpowered)
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
/area/ruin/unpowered)
|
||||
"e" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 8
|
||||
dir = 4;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/ruin/unpowered)
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"ab" = (/turf/open/floor/plating/lava/smooth/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"ac" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"ad" = (/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"ae" = (/obj/structure/closet/secure_closet/bar{req_access = null;req_access_txt = "150"},/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"af" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/obj/structure/sign/barsign{pixel_y = 32;req_access = null;req_access_txt = "150"},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"ag" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"ah" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi';icon_state = "minibar_left";name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"ai" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi';icon_state = "minibar_right";name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"aj" = (/obj/structure/dresser,/obj/structure/mirror{desc = "Mirror mirror on the wall, who is the most robust of them all?";pixel_x = -26},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"ak" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21";layer = 4.1},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"ae" = (/obj/structure/closet/secure_closet/bar{req_access = null; req_access_txt = "150"},/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"af" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/obj/item/weapon/reagent_containers/food/snacks/syndicake,/obj/structure/sign/barsign{pixel_y = 32; req_access = null; req_access_txt = "150"},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"ag" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"ah" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_left"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"ai" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_right"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"aj" = (/obj/structure/dresser,/obj/structure/mirror{desc = "Mirror mirror on the wall, who is the most robust of them all?"; pixel_x = -26},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"ak" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"al" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-22"},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"am" = (/obj/structure/table/wood,/obj/item/weapon/clipboard,/obj/item/toy/figure/syndie,/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"an" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
@@ -16,14 +16,14 @@
|
||||
"ap" = (/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aq" = (/obj/item/stack/sheet/mineral/plastitanium{amount = 30},/obj/item/stack/rods{amount = 50},/obj/structure/table/reinforced,/turf/open/floor/plasteel/podhatch{dir = 9},/area/ruin/powered/syndicate_lava_base)
|
||||
"ar" = (/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"as" = (/obj/effect/mob_spawn/human/lavaland_syndicate{tag = "icon-sleeper_s (EAST)";icon_state = "sleeper_s";dir = 4},/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"as" = (/obj/effect/mob_spawn/human/lavaland_syndicate{tag = "icon-sleeper_s (EAST)"; icon_state = "sleeper_s"; dir = 4},/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"at" = (/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"au" = (/obj/effect/mob_spawn/human/lavaland_syndicate{tag = "icon-sleeper_s (WEST)";icon_state = "sleeper_s";dir = 8},/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"av" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"au" = (/obj/effect/mob_spawn/human/lavaland_syndicate{tag = "icon-sleeper_s (WEST)"; icon_state = "sleeper_s"; dir = 8},/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"av" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"aw" = (/obj/item/stack/cable_coil/white,/obj/item/stack/cable_coil/white,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/obj/structure/table/reinforced,/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"ax" = (/obj/structure/table/wood,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"ay" = (/obj/structure/table/wood,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/obj/item/ammo_box/magazine/sniper_rounds,/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"az" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"az" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"aA" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"aB" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/open/floor/wood{icon_state = "wood-broken4"},/area/ruin/powered/syndicate_lava_base)
|
||||
"aC" = (/obj/structure/table/wood,/obj/item/weapon/storage/box/drinkingglasses,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
@@ -31,153 +31,149 @@
|
||||
"aE" = (/obj/structure/table/wood,/obj/item/weapon/lighter{pixel_y = 3},/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"aF" = (/obj/structure/table/wood,/obj/item/weapon/storage/fancy/donut_box,/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"aG" = (/obj/structure/extinguisher_cabinet{pixel_x = 26},/turf/open/floor/wood,/area/ruin/powered/syndicate_lava_base)
|
||||
"aH" = (/obj/effect/mob_spawn/human/lavaland_syndicate/comms{tag = "icon-sleeper_s (EAST)";icon_state = "sleeper_s";dir = 4},/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"aH" = (/obj/effect/mob_spawn/human/lavaland_syndicate/comms{tag = "icon-sleeper_s (EAST)"; icon_state = "sleeper_s"; dir = 4},/turf/open/floor/plasteel/grimy,/area/ruin/powered/syndicate_lava_base)
|
||||
"aI" = (/obj/structure/sign/nosmoking_2,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"aJ" = (/obj/structure/closet/crate/bin,/obj/item/trash/syndi_cakes,/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"aK" = (/obj/structure/chair/stool/bar,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aL" = (/obj/structure/chair/stool/bar,/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"aM" = (/obj/structure/table/wood,/obj/item/weapon/lipstick/random{pixel_x = 3;pixel_y = 3},/obj/item/weapon/lipstick/random{pixel_x = -3;pixel_y = -3},/obj/item/weapon/lipstick/random,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aM" = (/obj/structure/table/wood,/obj/item/weapon/lipstick/random{pixel_x = 3; pixel_y = 3},/obj/item/weapon/lipstick/random{pixel_x = -3; pixel_y = -3},/obj/item/weapon/lipstick/random,/obj/item/weapon/soap/syndie,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aN" = (/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aO" = (/obj/structure/dresser,/obj/structure/mirror{desc = "Mirror mirror on the wall, who is the most robust of them all?";pixel_x = 26},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aO" = (/obj/structure/dresser,/obj/structure/mirror{desc = "Mirror mirror on the wall, who is the most robust of them all?"; pixel_x = 26},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aP" = (/obj/item/target,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aQ" = (/obj/structure/closet/emcloset{anchored = 1},/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/device/flashlight/seclite,/obj/item/clothing/mask/gas,/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aR" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21";layer = 4.1},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aS" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0;name = "self destruct device"},/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"aT" = (/obj/machinery/door/airlock/hatch{name = "Dormitories";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aU" = (/obj/structure/closet/emcloset,/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/device/flashlight/seclite,/obj/item/clothing/mask/gas,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"aV" = (/obj/machinery/door/airlock/hatch{name = "Storage Closet";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aW" = (/obj/machinery/door/airlock/hatch{name = "Restroom";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aX" = (/obj/structure/mirror{desc = "Mirror mirror on the wall, who is the most robust of them all?";pixel_x = 28},/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aR" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aS" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0; name = "self destruct device"},/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"aT" = (/obj/machinery/door/airlock/hatch{name = "Dormitories"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aU" = (/obj/structure/closet/emcloset,/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/device/flashlight/seclite,/obj/item/clothing/mask/gas,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"aV" = (/obj/machinery/door/airlock/hatch{name = "Storage Closet"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aW" = (/obj/machinery/door/airlock/hatch{name = "Restroom"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aX" = (/obj/structure/mirror{desc = "Mirror mirror on the wall, who is the most robust of them all?"; pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aY" = (/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"aZ" = (/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"ba" = (/obj/structure/closet/emcloset{anchored = 1},/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/device/flashlight/seclite,/obj/item/clothing/mask/gas,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"bb" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0;name = "self destruct device"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"aZ" = (/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"ba" = (/obj/structure/closet/emcloset{anchored = 1},/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/device/flashlight/seclite,/obj/item/clothing/mask/gas,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"bb" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0; name = "self destruct device"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bc" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-22"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bd" = (/obj/structure/bookcase/random,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"be" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21";layer = 4.1},/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"be" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1},/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"bf" = (/obj/structure/bookcase/random,/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"bg" = (/obj/structure/toilet{tag = "icon-toilet00 (WEST)";icon_state = "toilet00";dir = 8},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bh" = (/obj/machinery/door/airlock/hatch{name = "Lounge";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bg" = (/obj/structure/toilet{tag = "icon-toilet00 (WEST)"; icon_state = "toilet00"; dir = 8},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bh" = (/obj/machinery/door/airlock/hatch{name = "Lounge"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bi" = (/obj/machinery/chem_dispenser,/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bj" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)";icon_state = "podhatch";dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"bk" = (/obj/machinery/chem_master,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bl" = (/obj/structure/noticeboard{pixel_y = 32},/obj/machinery/reagentgrinder{desc = "Used to grind things up into raw materials and liquids.";pixel_y = 5},/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bj" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)"; icon_state = "podhatch"; dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"bk" = (/obj/machinery/chem_master,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bl" = (/obj/structure/noticeboard{pixel_y = 32},/obj/machinery/reagentgrinder{desc = "Used to grind things up into raw materials and liquids."; pixel_y = 5},/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bm" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/folder/white,/obj/item/weapon/book/manual/wiki/chemistry,/obj/item/weapon/book/manual/wiki/chemistry,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bn" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers{pixel_x = 3;pixel_y = 3},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/gun/syringe/syndicate,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bn" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/gun/syringe/syndicate,/obj/item/weapon/storage/box/beakers,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bo" = (/turf/open/floor/plasteel/podhatch{dir = 9},/area/ruin/powered/syndicate_lava_base)
|
||||
"bp" = (/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bq" = (/obj/structure/table/reinforced,/obj/machinery/reagentgrinder{desc = "Used to grind things up into raw materials and liquids.";pixel_y = 5},/obj/structure/noticeboard{pixel_y = 32},/turf/open/floor/plasteel/podhatch/corner,/area/ruin/powered/syndicate_lava_base)
|
||||
"br" = (/obj/structure/reagent_dispensers/virusfood{pixel_y = 32},/obj/structure/table/reinforced,/obj/item/device/healthanalyzer,/obj/item/stack/sheet/mineral/plasma{amount = 5;layer = 3.1},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bs" = (/obj/structure/extinguisher_cabinet{pixel_x = 0;pixel_y = 32},/obj/machinery/computer/pandemic,/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bt" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers{pixel_x = 3;pixel_y = 3},/obj/item/weapon/storage/box/syringes,/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bu" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"bq" = (/obj/structure/table/reinforced,/obj/machinery/reagentgrinder{desc = "Used to grind things up into raw materials and liquids."; pixel_y = 5},/obj/structure/noticeboard{pixel_y = 32},/turf/open/floor/plasteel/podhatch/corner,/area/ruin/powered/syndicate_lava_base)
|
||||
"br" = (/obj/structure/reagent_dispensers/virusfood{pixel_y = 32},/obj/structure/table/reinforced,/obj/item/device/healthanalyzer,/obj/item/stack/sheet/mineral/plasma{amount = 5; layer = 3.1},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bs" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 32},/obj/machinery/computer/pandemic,/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bt" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/syringes,/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bu" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"bv" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/powered/syndicate_lava_base)
|
||||
"bw" = (/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bx" = (/obj/structure/bed/roller,/turf/open/floor/plasteel/vault{dir = 8},/area/space)
|
||||
"bx" = (/obj/structure/bed/roller,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"by" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bz" = (/obj/structure/bed/roller,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bA" = (/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bB" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bC" = (/obj/machinery/door/window/brigdoor,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bD" = (/obj/machinery/chem_heater,/obj/structure/extinguisher_cabinet{pixel_x = -26},/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"bE" = (/obj/structure/chair/office/dark{dir = 1},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bF" = (/obj/structure/closet/crate/bin,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"bG" = (/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"bH" = (/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer{pixel_x = 3;pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = 3;pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = 3;pixel_y = 3},/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bI" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/wiki/infections,/obj/item/stack/sheet/mineral/silver{amount = 10},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bJ" = (/obj/structure/chair/office/dark{dir = 8},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bK" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen";req_access_txt = "150"},/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"bL" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plasteel/vault{dir = 5},/area/space)
|
||||
"bM" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/ballistic/automatic/c20r/toy/unrestricted,/obj/item/weapon/gun/ballistic/automatic/c20r/toy/unrestricted,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bN" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21";layer = 4.1},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bO" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/suit/toggle/labcoat,/obj/item/clothing/suit/toggle/labcoat,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bP" = (/obj/machinery/smartfridge/chemistry/virology,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bQ" = (/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bR" = (/obj/structure/closet/crate/bin,/turf/open/floor/plasteel/podhatch{dir = 9},/area/ruin/powered/syndicate_lava_base)
|
||||
"bS" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)";icon_state = "podhatch";dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"bT" = (/obj/machinery/chem_heater,/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bU" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bV" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bW" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen";req_access_txt = "150"},/turf/open/floor/plasteel/black,/area/space)
|
||||
"bX" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bY" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bZ" = (/obj/structure/table/reinforced,/obj/item/weapon/suppressor/specialoffer,/obj/item/weapon/gun/ballistic/automatic/toy/pistol/unrestricted,/obj/item/weapon/gun/ballistic/automatic/toy/pistol/unrestricted,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"ca" = (/obj/machinery/chem_master,/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cb" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cc" = (/obj/machinery/chem_dispenser,/obj/structure/extinguisher_cabinet{pixel_x = 26},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)";icon_state = "podhatch";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"cd" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/mask/surgical,/obj/item/clothing/head/bio_hood/general,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"ce" = (/obj/machinery/shower{dir = 4;icon_state = "shower";name = "emergency shower"},/obj/machinery/shower{dir = 8;icon_state = "shower";name = "emergency shower"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cf" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)";icon_state = "podhatch";dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"cg" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/stack/sheet/mineral/gold{amount = 10},/obj/item/stack/sheet/mineral/uranium{amount = 10},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)";icon_state = "podhatch";dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"ch" = (/turf/open/floor/plasteel/vault{dir = 8},/area/space)
|
||||
"ci" = (/obj/structure/bed/roller,/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cj" = (/obj/structure/sign/securearea,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"ck" = (/obj/machinery/door/airlock/hatch{name = "Firing Range";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cl" = (/obj/machinery/door/airlock/hatch{name = "Chemistry Lab";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cm" = (/obj/structure/sign/chemistry,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"cn" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0;name = "self destruct device"},/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"co" = (/obj/structure/sign/biohazard,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"cp" = (/obj/machinery/door/airlock/hatch{name = "Virology Lab";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cq" = (/obj/structure/rack,/obj/item/ammo_box/foambox{pixel_x = -3;pixel_y = 3},/obj/item/ammo_box/foambox,/obj/item/ammo_box/foambox{pixel_x = 3;pixel_y = -3},/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cr" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-22"},/turf/open/floor/plasteel/podhatch{dir = 9},/area/ruin/powered/syndicate_lava_base)
|
||||
"cs" = (/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)";icon_state = "podhatch";dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"ct" = (/turf/open/floor/plasteel/podhatch/corner{tag = "icon-podhatchcorner (EAST)";icon_state = "podhatchcorner";dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"cu" = (/turf/open/floor/plasteel/podhatch/corner{tag = "icon-podhatchcorner (WEST)";icon_state = "podhatchcorner";dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cv" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21";layer = 4.1},/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cw" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/sign/bluecross_2,/turf/open/floor/plating,/area/ruin/powered/syndicate_lava_base)
|
||||
"cx" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 3;pixel_y = 3},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3;pixel_y = -3},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"cy" = (/obj/machinery/sleeper/syndie{dir = 8},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cz" = (/obj/structure/closet/crate/secure,/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/clown,/obj/item/target/clown,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"cA" = (/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"cB" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0;name = "self destruct device"},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cC" = (/obj/structure/extinguisher_cabinet{pixel_y = -32},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cD" = (/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cE" = (/turf/open/floor/plasteel/podhatch/corner{tag = "icon-podhatchcorner (NORTH)";icon_state = "podhatchcorner";dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"cF" = (/turf/open/floor/plasteel/podhatch/corner,/area/ruin/powered/syndicate_lava_base)
|
||||
"cG" = (/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)";icon_state = "podhatch";dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"cH" = (/obj/machinery/door/airlock/hatch{name = "Infirmary";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cI" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cJ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "lavalandsyndi";name = "Syndicate Research Experimentor Shutters"},/turf/open/floor/plating,/area/ruin/powered/syndicate_lava_base)
|
||||
"cK" = (/obj/machinery/door/airlock/hatch{name = "Experimentation Room";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cL" = (/obj/machinery/door/airlock/hatch{name = "Telecommunications Control";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cM" = (/turf/open/floor/engine,/area/ruin/powered/syndicate_lava_base)
|
||||
"cN" = (/obj/structure/noticeboard{pixel_y = 32},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cO" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/device/multitool,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cP" = (/obj/item/weapon/surgicaldrill,/obj/item/weapon/circular_saw,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cQ" = (/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/obj/structure/mirror{pixel_x = 30},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cR" = (/obj/item/stack/cable_coil/white{pixel_x = 3;pixel_y = 3},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/stack/cable_coil/white,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cS" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cT" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 0;dir = 8;freerange = 1;listening = 1;name = "Pirate Radio Listening Channel";pixel_x = 0},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cU" = (/obj/machinery/computer/camera_advanced,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cV" = (/obj/structure/filingcabinet/chestdrawer,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cW" = (/obj/item/weapon/cautery,/obj/item/weapon/scalpel,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cX" = (/obj/structure/table/optable,/obj/item/weapon/surgical_drapes,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cY" = (/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cZ" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"da" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-22"},/obj/structure/extinguisher_cabinet{pixel_x = -26},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"db" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1;dir = 8;freerange = 1;listening = 0;name = "Pirate Radio Broadcast Channel";pixel_x = 0},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dc" = (/obj/structure/sign/fire{pixel_x = -32},/turf/open/floor/engine,/area/ruin/powered/syndicate_lava_base)
|
||||
"dd" = (/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/obj/item/weapon/screwdriver/nuke,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"de" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/plasteel{amount = 15},/obj/item/device/electropack,/obj/item/device/taperecorder,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"df" = (/obj/structure/filingcabinet/security,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dg" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dh" = (/obj/machinery/computer/message_monitor,/obj/item/weapon/paper/monitorkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"di" = (/turf/open/floor/plasteel/vault{tag = "icon-vault (NORTHEAST)";dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dj" = (/obj/effect/baseturf_helper,/turf/open/floor/plasteel/vault{tag = "icon-vault (NORTHEAST)";dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dk" = (/obj/machinery/button/door{id = "lavalandsyndi";name = "Syndicate Experimentor Lockdown Control";pixel_x = 26;req_access_txt = "150"},/turf/open/floor/engine,/area/ruin/powered/syndicate_lava_base)
|
||||
"dl" = (/obj/machinery/button/door{id = "lavalandsyndi";name = "Syndicate Experimentor Lockdown Control";pixel_x = -26;req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dm" = (/obj/item/stack/sheet/mineral/plastitanium{amount = 30},/obj/item/stack/rods{amount = 50},/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dn" = (/obj/structure/filingcabinet/medical,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"do" = (/turf/open/floor/plasteel/circuit/gcircuit,/area/ruin/powered/syndicate_lava_base)
|
||||
"dp" = (/obj/machinery/door/poddoor/preopen{id = "lavalandsyndi";name = "Syndicate Research Experimentor Shutters"},/obj/machinery/door/airlock/hatch{name = "Experimentation Room";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dq" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dr" = (/obj/machinery/telecomms/relay/preset/ruskie{use_power = 0},/turf/open/floor/plasteel/vault{tag = "icon-vault (NORTHEAST)";dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"ds" = (/obj/machinery/door/airlock/hatch{name = "Syndicate Recon Outpost";req_access_txt = "150"},/obj/structure/fans/tiny,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dt" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen";req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"du" = (/obj/structure/sign/vacuum{pixel_x = -32},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dv" = (/obj/structure/sign/xeno_warning_mining{pixel_x = 32},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dw" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dx" = (/obj/structure/sign/securearea{pixel_y = 32},/turf/open/floor/plating/lava/smooth/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"bz" = (/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bA" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bB" = (/obj/machinery/door/window/brigdoor,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bC" = (/obj/machinery/chem_heater,/obj/structure/extinguisher_cabinet{pixel_x = -26},/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"bD" = (/obj/structure/chair/office/dark{dir = 1},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bE" = (/obj/structure/closet/crate/bin,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"bF" = (/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"bG" = (/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer{pixel_x = 3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = 3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = 3; pixel_y = 3},/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bH" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/wiki/infections,/obj/item/stack/sheet/mineral/silver{amount = 10},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bI" = (/obj/structure/chair/office/dark{dir = 8},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bJ" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen"; req_access_txt = "150"},/turf/open/floor/plasteel/black,/area/ruin/powered/syndicate_lava_base)
|
||||
"bK" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/ballistic/automatic/c20r/toy/unrestricted,/obj/item/weapon/gun/ballistic/automatic/c20r/toy/unrestricted,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bL" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bM" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/suit/toggle/labcoat,/obj/item/clothing/suit/toggle/labcoat,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bN" = (/obj/machinery/smartfridge/chemistry/virology,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bO" = (/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bP" = (/obj/structure/closet/crate/bin,/turf/open/floor/plasteel/podhatch{dir = 9},/area/ruin/powered/syndicate_lava_base)
|
||||
"bQ" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)"; icon_state = "podhatch"; dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"bR" = (/obj/machinery/chem_heater,/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bS" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"bT" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bU" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"bV" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bW" = (/obj/structure/table/reinforced,/obj/item/weapon/suppressor/specialoffer,/obj/item/weapon/gun/ballistic/automatic/toy/pistol/unrestricted,/obj/item/weapon/gun/ballistic/automatic/toy/pistol/unrestricted,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bX" = (/obj/machinery/chem_master,/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"bY" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"bZ" = (/obj/machinery/chem_dispenser,/obj/structure/extinguisher_cabinet{pixel_x = 26},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (EAST)"; icon_state = "podhatch"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"ca" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/mask/surgical,/obj/item/clothing/head/bio_hood/general,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/science,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"cb" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cc" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)"; icon_state = "podhatch"; dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"cd" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/stack/sheet/mineral/gold{amount = 10},/obj/item/stack/sheet/mineral/uranium{amount = 10},/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)"; icon_state = "podhatch"; dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"ce" = (/obj/structure/bed/roller,/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cf" = (/obj/structure/sign/securearea,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"cg" = (/obj/machinery/door/airlock/hatch{name = "Firing Range"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"ch" = (/obj/machinery/door/airlock/hatch{name = "Chemistry Lab"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"ci" = (/obj/structure/sign/chemistry,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"cj" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0; name = "self destruct device"},/turf/open/floor/plasteel/podhatch{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"ck" = (/obj/structure/sign/biohazard,/turf/closed/wall/mineral/plastitanium,/area/ruin/powered/syndicate_lava_base)
|
||||
"cl" = (/obj/machinery/door/airlock/hatch{name = "Virology Lab"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cm" = (/obj/structure/rack,/obj/item/ammo_box/foambox{pixel_x = -3; pixel_y = 3},/obj/item/ammo_box/foambox,/obj/item/ammo_box/foambox{pixel_x = 3; pixel_y = -3},/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cn" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-22"},/turf/open/floor/plasteel/podhatch{dir = 9},/area/ruin/powered/syndicate_lava_base)
|
||||
"co" = (/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (NORTH)"; icon_state = "podhatch"; dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"cp" = (/turf/open/floor/plasteel/podhatch/corner{tag = "icon-podhatchcorner (EAST)"; icon_state = "podhatchcorner"; dir = 4},/area/ruin/powered/syndicate_lava_base)
|
||||
"cq" = (/turf/open/floor/plasteel/podhatch/corner{tag = "icon-podhatchcorner (WEST)"; icon_state = "podhatchcorner"; dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cr" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21"; layer = 4.1},/turf/open/floor/plasteel/podhatch{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cs" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/sign/bluecross_2,/turf/open/floor/plating,/area/ruin/powered/syndicate_lava_base)
|
||||
"ct" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/open/floor/plasteel/vault,/area/ruin/powered/syndicate_lava_base)
|
||||
"cu" = (/obj/machinery/sleeper/syndie{dir = 8},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cv" = (/obj/structure/closet/crate/secure,/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/clown,/obj/item/target/clown,/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"cw" = (/turf/open/floor/plasteel/podhatch{dir = 10},/area/ruin/powered/syndicate_lava_base)
|
||||
"cx" = (/obj/machinery/syndicatebomb/badmin/varplosion{can_unanchor = 0; name = "self destruct device"},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cy" = (/obj/structure/extinguisher_cabinet{pixel_y = -32},/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cz" = (/turf/open/floor/plasteel/podhatch,/area/ruin/powered/syndicate_lava_base)
|
||||
"cA" = (/turf/open/floor/plasteel/podhatch/corner{tag = "icon-podhatchcorner (NORTH)"; icon_state = "podhatchcorner"; dir = 1},/area/ruin/powered/syndicate_lava_base)
|
||||
"cB" = (/turf/open/floor/plasteel/podhatch/corner,/area/ruin/powered/syndicate_lava_base)
|
||||
"cC" = (/turf/open/floor/plasteel/podhatch{tag = "icon-podhatch (SOUTHEAST)"; icon_state = "podhatch"; dir = 6},/area/ruin/powered/syndicate_lava_base)
|
||||
"cD" = (/obj/machinery/door/airlock/hatch{name = "Infirmary"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cE" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cF" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "lavalandsyndi"; name = "Syndicate Research Experimentor Shutters"},/turf/open/floor/plating,/area/ruin/powered/syndicate_lava_base)
|
||||
"cG" = (/obj/machinery/door/airlock/hatch{name = "Experimentation Room"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cH" = (/obj/machinery/door/airlock/hatch{name = "Telecommunications Control"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cI" = (/turf/open/floor/engine,/area/ruin/powered/syndicate_lava_base)
|
||||
"cJ" = (/obj/structure/noticeboard{pixel_y = 32},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cK" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/device/multitool,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cL" = (/obj/item/weapon/surgicaldrill,/obj/item/weapon/circular_saw,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cM" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 30},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cN" = (/obj/item/stack/cable_coil/white{pixel_x = 3; pixel_y = 3},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/stack/cable_coil/white,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cO" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cP" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cQ" = (/obj/machinery/computer/camera_advanced,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cR" = (/obj/structure/filingcabinet/chestdrawer,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cS" = (/obj/item/weapon/cautery,/obj/item/weapon/scalpel,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cT" = (/obj/structure/table/optable,/obj/item/weapon/surgical_drapes,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cU" = (/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cV" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cW" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-22"},/obj/structure/extinguisher_cabinet{pixel_x = -26},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"cX" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"cY" = (/obj/structure/sign/fire{pixel_x = -32},/turf/open/floor/engine,/area/ruin/powered/syndicate_lava_base)
|
||||
"cZ" = (/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/obj/item/weapon/screwdriver/nuke,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"da" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/plasteel{amount = 15},/obj/item/device/electropack,/obj/item/device/taperecorder,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"db" = (/obj/structure/filingcabinet/security,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dc" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dd" = (/obj/machinery/computer/message_monitor,/obj/item/weapon/paper/monitorkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"de" = (/turf/open/floor/plasteel/vault{tag = "icon-vault (NORTHEAST)"; dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"df" = (/obj/effect/baseturf_helper,/turf/open/floor/plasteel/vault{tag = "icon-vault (NORTHEAST)"; dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dg" = (/obj/machinery/button/door{id = "lavalandsyndi"; name = "Syndicate Experimentor Lockdown Control"; pixel_x = 26; req_access_txt = "150"},/turf/open/floor/engine,/area/ruin/powered/syndicate_lava_base)
|
||||
"dh" = (/obj/machinery/button/door{id = "lavalandsyndi"; name = "Syndicate Experimentor Lockdown Control"; pixel_x = -26; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"di" = (/obj/item/stack/sheet/mineral/plastitanium{amount = 30},/obj/item/stack/rods{amount = 50},/obj/structure/table/reinforced,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dj" = (/obj/structure/filingcabinet/medical,/turf/open/floor/plasteel/vault{dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"dk" = (/turf/open/floor/plasteel/circuit/gcircuit,/area/ruin/powered/syndicate_lava_base)
|
||||
"dl" = (/obj/machinery/door/poddoor/preopen{id = "lavalandsyndi"; name = "Syndicate Research Experimentor Shutters"},/obj/machinery/door/airlock/hatch{name = "Experimentation Room"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dm" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dn" = (/obj/machinery/telecomms/relay/preset/ruskie{use_power = 0},/turf/open/floor/plasteel/vault{tag = "icon-vault (NORTHEAST)"; dir = 5},/area/ruin/powered/syndicate_lava_base)
|
||||
"do" = (/obj/machinery/door/airlock/hatch{name = "Syndicate Recon Outpost"; req_access_txt = "150"},/obj/structure/fans/tiny,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dp" = (/obj/machinery/door/airlock/hatch{name = "Monkey Pen"; req_access_txt = "150"},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dq" = (/obj/structure/sign/vacuum{pixel_x = -32},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dr" = (/obj/structure/sign/xeno_warning_mining{pixel_x = 32},/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"ds" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/mob/living/carbon/monkey,/turf/open/floor/plasteel/vault{dir = 8},/area/ruin/powered/syndicate_lava_base)
|
||||
"dt" = (/obj/structure/sign/securearea{pixel_y = 32},/turf/open/floor/plating/lava/smooth/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaabaaaaabababababababababababababababababababababababababababababaaaa
|
||||
@@ -195,26 +191,26 @@ ababababababababadapaPapadaQapaoaRadapaoapaoapaSadadaTadaTadadadadababababab
|
||||
abababababacababadapaNapadaUaoapapaVaoapaoapaoapaTapapapapapaWaXadababababab
|
||||
abababababababacadaYaNaZadbabbaobcadbdbeapaobcbfadaRapapapaRadbgadacabababab
|
||||
abababababababacadapaNapadadadadadadadadbhbhadadadadadadadadadadadadadababab
|
||||
abababababababacadaYaNaZadbibjbkblbmbnadbobpadbqbrbsbtbubvbwbzbybzbAadababab
|
||||
abababababacabacadbBbCbBadbDbEbFbGbGbHbvaYaZbvbIbJapapapbvbKbybybKbyadababab
|
||||
abababababacababadbMaNbNadaRapapapapbObvaYaZbvbPapaoaoaoaoaoaoaoaoaoadababab
|
||||
abababababacabacadapapapadbQaoapbRbSbTbvaYaZbvbUapapbbbVbybKbybybXbyadababab
|
||||
abababababababacadbYapbZadbQapapcacbccadaYaZadcdcebRcfcgbyaNcibyaNciadababab
|
||||
ababababababacabadcjckadadcjclcmadbvadadcnaZadcocpadbvbvadadadadadadadababab
|
||||
ababababababababadcqapaRbvcrcscscscscscsctcucscscscscscscvcwcxapcyadabababab
|
||||
aaabababababacacadczapapckcAcBcCcDcDcDcDcEcFcDcDcDcDcDcDcGcHapapcIadabababab
|
||||
aaabababababacadadadcJadadadadadadcKcjadaYaZadadcLcjadadadadapapcyadabababab
|
||||
abababababababadcMcMcMcMcMcMcMcjaRapapadaYaZadaRapapcNbbcOadcPapcQadabababab
|
||||
abababababababadcMcMcMcMcMcMcMcJcRapapadaYaZadapaocScTcUcVadcWcXcYadabababab
|
||||
abababababababadcMcMcMcMcMcMcMcJbHapcZadaYaZaddaaodbbJapaNadadadadadabababab
|
||||
ababababababacaddccMcMcMcMcMcMcJddapdeadaYaZaddfaodgdhapaNcLdidjdiadabababab
|
||||
abababababababadcMcMcMcMcMcMdkaddlapdmadaYaZaddnapapapapbNaddododoadabababab
|
||||
ababababababacadcMcMcMcMcMcMcMdpapapdqadcAcGadadadadadadadaddodrdoadabababab
|
||||
ababababababacadcMcMcMcMcMcMcMaddaapaRaddsdsadacacacacacabadadadadadabababab
|
||||
ababababababacadadadadadadadadadbvdtbvaddudvadacacacababababababacacabababab
|
||||
ababababababacacacabababacacacaddwaNdwadaNaNadacababababacababababababababab
|
||||
ababababababababababababababacadadadadaddsdsadababacacababababababababababab
|
||||
abababababababababababababababababababdxababdxababababababababababababababab
|
||||
abababababababacadaYaNaZadbibjbkblbmbnadbobpadbqbrbsbtbubvbwbxbybxbzadababab
|
||||
abababababacabacadbAbBbAadbCbDbEbFbFbGbvaYaZbvbHbIapapapbvbJbybybJbyadababab
|
||||
abababababacababadbKaNbLadaRapapapapbMbvaYaZbvbNapaoaoaoaoaoaoaoaoaoadababab
|
||||
abababababacabacadapapapadbOaoapbPbQbRbvaYaZbvbSapapbbbTbybJbybybUbyadababab
|
||||
abababababababacadbVapbWadbOapapbXbYbZadaYaZadcacbbPcccdbyaNcebyaNceadababab
|
||||
ababababababacabadcfcgadadcfchciadbvadadcjaZadckcladbvbvadadadadadadadababab
|
||||
ababababababababadcmapaRbvcncococococococpcqcococococococrcsctapcuadabababab
|
||||
aaabababababacacadcvapapcgcwcxcyczczczczcAcBczczczczczczcCcDapapcEadabababab
|
||||
aaabababababacadadadcFadadadadadadcGcfadaYaZadadcHcfadadadadapapcuadabababab
|
||||
abababababababadcIcIcIcIcIcIcIcfaRapapadaYaZadaRapapcJbbcKadcLapcMadabababab
|
||||
abababababababadcIcIcIcIcIcIcIcFcNapapadaYaZadapaocOcPcQcRadcScTcUadabababab
|
||||
abababababababadcIcIcIcIcIcIcIcFbGapcVadaYaZadcWaocXbIapaNadadadadadabababab
|
||||
ababababababacadcYcIcIcIcIcIcIcFcZapdaadaYaZaddbaodcddapaNcHdedfdeadabababab
|
||||
abababababababadcIcIcIcIcIcIdgaddhapdiadaYaZaddjapapapapbLaddkdkdkadabababab
|
||||
ababababababacadcIcIcIcIcIcIcIdlapapdmadcwcCadadadadadadadaddkdndkadabababab
|
||||
ababababababacadcIcIcIcIcIcIcIadcWapaRaddodoadacacacacacabadadadadadabababab
|
||||
ababababababacadadadadadadadadadbvdpbvaddqdradacacacababababababacacabababab
|
||||
ababababababacacacabababacacacaddsaNdsadaNaNadacababababacababababababababab
|
||||
ababababababababababababababacadadadadaddodoadababacacababababababababababab
|
||||
abababababababababababababababababababdtababdtababababababababababababababab
|
||||
abababababababababababababababababababababababababababababababababababababaa
|
||||
aaababababababababababababababababababababababababababababababababababababaa
|
||||
aaaaabaaababababababababababababababababababababababababababababababaaaaaaaa
|
||||
|
||||
@@ -280,7 +280,7 @@
|
||||
"ft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
|
||||
"fu" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
|
||||
"fv" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
|
||||
"fw" = (/obj/effect/mob_spawn/derelict_drone,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
|
||||
"fw" = (/obj/item/drone_shell/dusty,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
|
||||
"fx" = (/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
|
||||
"fy" = (/obj/structure/table,/obj/item/device/assembly/flash/handheld,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
|
||||
"fz" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/electronics/airlock,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access)
|
||||
@@ -427,7 +427,7 @@
|
||||
"ik" = (/obj/structure/chair,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical)
|
||||
"il" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/medical)
|
||||
"im" = (/obj/item/weapon/storage/box/lights/mixed,/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
|
||||
"in" = (/obj/effect/mob_spawn/derelict_drone,/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
|
||||
"in" = (/obj/item/drone_shell/dusty,/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
|
||||
"io" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/singularity_engine)
|
||||
"ip" = (/obj/item/stack/cable_coil/cut{amount = 2;dir = 2;icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary)
|
||||
"iq" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/unpowered/no_grav)
|
||||
@@ -720,7 +720,7 @@
|
||||
"nR" = (/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
|
||||
"nS" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
|
||||
"nT" = (/obj/docking_port/stationary{dheight = 0;dir = 2;dwidth = 11;height = 22;id = "whiteship_z4";name = "KSS13: Derelict";width = 35},/turf/open/space,/area/space)
|
||||
"nU" = (/obj/machinery/power/terminal{icon_state = "term";dir = 1},/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/effect/mob_spawn/derelict_drone,/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
|
||||
"nU" = (/obj/machinery/power/terminal{icon_state = "term";dir = 1},/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/item/drone_shell/dusty,/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
|
||||
"nV" = (/turf/open/floor/plating/airless,/area/derelict/se_solar)
|
||||
"nW" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
|
||||
"nX" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless,/area/derelict/se_solar)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
/area/ruin/powered)
|
||||
"ar" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/powered)
|
||||
@@ -222,7 +222,7 @@
|
||||
/area/ruin/powered)
|
||||
"aN" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
@@ -626,9 +626,9 @@
|
||||
/area/ruin/unpowered)
|
||||
"ca" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/left{
|
||||
tag = "icon-burst_l (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "burst_l";
|
||||
dir = 4
|
||||
tag = "icon-burst_l (EAST)"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered)
|
||||
@@ -712,7 +712,7 @@
|
||||
/area/ruin/unpowered)
|
||||
"co" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered)
|
||||
@@ -847,9 +847,9 @@
|
||||
/area/ruin/unpowered)
|
||||
"cF" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/right{
|
||||
tag = "icon-burst_r (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "burst_r";
|
||||
dir = 4
|
||||
tag = "icon-burst_r (EAST)"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered)
|
||||
|
||||
@@ -1,46 +1,697 @@
|
||||
"a" = (/turf/open/space,/area/space)
|
||||
"b" = (/turf/closed/mineral/random,/area/ruin/unpowered/no_grav)
|
||||
"c" = (/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered/no_grav)
|
||||
"d" = (/turf/closed/wall/mineral/clown,/area/ruin/unpowered)
|
||||
"e" = (/obj/machinery/door/airlock/clown,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"f" = (/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered)
|
||||
"g" = (/obj/effect/mob_spawn/human/clown,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"h" = (/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"i" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"j" = (/obj/structure/closet/crate{icon_state = "crateopen";opened = 1},/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"k" = (/obj/structure/closet/secure_closet{name = "clown locker";req_access_txt = "46"},/obj/item/clothing/shoes/clown_shoes/banana_shoes,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2;name = "2maintenance loot spawner"},/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"l" = (/obj/structure/shuttle/engine/heater{color = "#FFFF00";dir = 4;icon_state = "heater"},/obj/structure/window/reinforced{color = "#FFFF00";dir = 8},/turf/open/floor/plating/airless{color = "#FFFF00"},/area/ruin/unpowered)
|
||||
"m" = (/obj/structure/shuttle/engine/propulsion{color = "#FFFF00";dir = 8;icon_state = "propulsion_l"},/turf/open/space,/area/ruin/unpowered)
|
||||
"n" = (/turf/closed/mineral/random,/area/ruin/unpowered)
|
||||
"o" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered)
|
||||
"p" = (/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"q" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/chair{dir = 8},/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered)
|
||||
"r" = (/obj/effect/mob_spawn/human/clown{name = "Clown Pilot"},/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"s" = (/obj/item/weapon/paper{info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!"},/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"t" = (/obj/structure/grille{color = "#FFFF00"},/obj/structure/window/reinforced{color = "#FFFF00"},/obj/structure/window/reinforced{color = "#FFFF00";dir = 4},/obj/structure/window/reinforced{color = "#FFFF00";dir = 8},/turf/open/floor/plating/airless{color = "#FFFF00"},/area/ruin/unpowered)
|
||||
"u" = (/obj/item/weapon/shard,/obj/structure/chair{dir = 8},/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"v" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"w" = (/obj/item/weapon/storage/bag/ore,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"x" = (/obj/item/weapon/pickaxe,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"y" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
"z" = (/obj/item/weapon/shovel,/turf/open/floor/mineral/bananium/airless,/area/ruin/unpowered)
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
"b" = (
|
||||
/turf/closed/mineral/random,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"c" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"d" = (
|
||||
/turf/closed/wall/mineral/clown,
|
||||
/area/ruin/unpowered)
|
||||
"e" = (
|
||||
/obj/machinery/door/airlock/clown,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"f" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
"g" = (
|
||||
/obj/effect/mob_spawn/human/clown,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"h" = (
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"i" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"j" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
},
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"k" = (
|
||||
/obj/structure/closet/secure_closet{
|
||||
name = "clown locker";
|
||||
req_access_txt = "46"
|
||||
},
|
||||
/obj/item/clothing/shoes/clown_shoes/banana_shoes,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
name = "2maintenance loot spawner"
|
||||
},
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"l" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
color = "#FFFF00";
|
||||
dir = 4;
|
||||
icon_state = "heater"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
color = "#FFFF00";
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
color = "#FFFF00"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"m" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
color = "#FFFF00";
|
||||
dir = 4;
|
||||
icon_state = "propulsion_l"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/unpowered)
|
||||
"n" = (
|
||||
/turf/closed/mineral/random,
|
||||
/area/ruin/unpowered)
|
||||
"o" = (
|
||||
/obj/item/weapon/shard{
|
||||
icon_state = "small"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
"p" = (
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"q" = (
|
||||
/obj/item/weapon/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
"r" = (
|
||||
/obj/effect/mob_spawn/human/clown{
|
||||
name = "Clown Pilot"
|
||||
},
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"s" = (
|
||||
/obj/item/weapon/paper{
|
||||
info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!"
|
||||
},
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"t" = (
|
||||
/obj/structure/grille{
|
||||
color = "#FFFF00"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
color = "#FFFF00"
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
color = "#FFFF00";
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
color = "#FFFF00";
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
color = "#FFFF00"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"u" = (
|
||||
/obj/item/weapon/shard,
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"v" = (
|
||||
/obj/item/weapon/shard{
|
||||
icon_state = "medium"
|
||||
},
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"w" = (
|
||||
/obj/item/weapon/storage/bag/ore,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"x" = (
|
||||
/obj/item/weapon/pickaxe,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"y" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/obj/item/weapon/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"z" = (
|
||||
/obj/item/weapon/shovel,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
|
||||
(1,1,1) = {"
|
||||
abbaaaaccccccaaaaaaaaaaaaaaa
|
||||
bbbbaabbbbbccbbbaaaaaaaaaaaa
|
||||
bbbbbbbbbbbccbbaaaaaaaaaaaaa
|
||||
abbbbbbbbbbbbbbaaaaaaaaaaaaa
|
||||
abbbbbbbbbbbbccaadddeeddddda
|
||||
aabbbbbbbbbbbbcdddfghhiijklm
|
||||
aaabbbbbbbbbbbbnnnohhhhhphlm
|
||||
aabbbbbbbbbbbbbnnqrhsphphplm
|
||||
aabbbbbbbbbbbbbthuhvhghhhplm
|
||||
aabbbbbbbbbbbbbdddwxhhyyizlm
|
||||
aabbbbbbbbbbbbbbbdddeeddddda
|
||||
abbbbbbbbbbbbbbbbbbbbbbbbaaa
|
||||
abbabbbbbccbbbbbbbbbbbaaaaaa
|
||||
aaaabbbbcccbbbbbbbbbaaaaaaaa
|
||||
aaaabbaaaaccbcbbcccaaaaaaaaa
|
||||
aaaabaaaaaacbbbbbbcaaaaaaaaa
|
||||
aaaaaaaaaaaaaabbbbcaaaaaaaaa
|
||||
a
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
c
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
n
|
||||
n
|
||||
t
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
n
|
||||
n
|
||||
h
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
d
|
||||
n
|
||||
q
|
||||
u
|
||||
d
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
f
|
||||
o
|
||||
r
|
||||
h
|
||||
w
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
c
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
g
|
||||
h
|
||||
h
|
||||
v
|
||||
x
|
||||
d
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
h
|
||||
h
|
||||
s
|
||||
h
|
||||
h
|
||||
e
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
e
|
||||
h
|
||||
h
|
||||
p
|
||||
g
|
||||
h
|
||||
e
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
i
|
||||
h
|
||||
h
|
||||
h
|
||||
y
|
||||
d
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(24,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
i
|
||||
h
|
||||
p
|
||||
h
|
||||
y
|
||||
d
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
j
|
||||
p
|
||||
h
|
||||
h
|
||||
i
|
||||
d
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(26,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
k
|
||||
h
|
||||
p
|
||||
p
|
||||
z
|
||||
d
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(27,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
d
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
d
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(28,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
m
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -43,9 +43,9 @@
|
||||
/area/ruin/unpowered)
|
||||
"l" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
tag = "icon-propulsion (WEST)";
|
||||
dir = 4;
|
||||
icon_state = "propulsion";
|
||||
dir = 8
|
||||
tag = "icon-propulsion (WEST)"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered)
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
/area/ruin/powered/authorship)
|
||||
"e" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
tag = "icon-propulsion (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
tag = "icon-propulsion (EAST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered/authorship)
|
||||
|
||||
@@ -147,7 +147,9 @@
|
||||
/turf/closed/wall,
|
||||
/area/ruin/powered/spacebar/bar)
|
||||
"aG" = (
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen,
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered/spacebar/bar)
|
||||
"aH" = (
|
||||
|
||||
@@ -342,10 +342,10 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/maint)
|
||||
"bc" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"bd" = (
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -398,8 +398,8 @@
|
||||
id = "XCCHangar1";
|
||||
name = "XCC Main Hangar"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"bm" = (
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -998,23 +998,23 @@
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dn" = (
|
||||
/obj/structure/closet/crate,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"do" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dp" = (
|
||||
/obj/structure/closet/crate/large,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dq" = (
|
||||
/obj/structure/dresser,
|
||||
@@ -1045,10 +1045,10 @@
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dv" = (
|
||||
/obj/structure/closet/crate,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dw" = (
|
||||
/obj/structure/tank_dispenser,
|
||||
@@ -1085,10 +1085,10 @@
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dB" = (
|
||||
/obj/structure/ore_box,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dC" = (
|
||||
/obj/structure/table,
|
||||
@@ -1147,23 +1147,23 @@
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dM" = (
|
||||
/obj/structure/closet/crate/large,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dN" = (
|
||||
/obj/structure/closet/crate,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dO" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"dP" = (
|
||||
/turf/open/floor/plasteel/yellow/side{
|
||||
@@ -1494,8 +1494,8 @@
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"eS" = (
|
||||
/obj/machinery/telecomms/relay/preset/ruskie,
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"eT" = (
|
||||
/obj/machinery/door/airlock/engineering{
|
||||
@@ -1841,16 +1841,16 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"fV" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"fW" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"fX" = (
|
||||
/turf/open/floor/plasteel/green/corner,
|
||||
@@ -1958,17 +1958,17 @@
|
||||
},
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"gn" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"go" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"gp" = (
|
||||
/obj/machinery/shieldgen,
|
||||
@@ -2151,7 +2151,7 @@
|
||||
"gS" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4
|
||||
dir = 8
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium/interior,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
@@ -2450,10 +2450,10 @@
|
||||
pixel_y = 7;
|
||||
req_access_txt = "2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"hL" = (
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
@@ -2465,10 +2465,10 @@
|
||||
pixel_x = -3;
|
||||
pixel_y = -2
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"hN" = (
|
||||
/obj/structure/rack,
|
||||
@@ -2637,8 +2637,8 @@
|
||||
id = "XCCsec3";
|
||||
name = "XCC Main Access Shutters"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"iu" = (
|
||||
/obj/structure/flora/ausbushes,
|
||||
@@ -2685,12 +2685,12 @@
|
||||
id = "XCCMechs";
|
||||
name = "XCC Mech Bay"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"iz" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"iA" = (
|
||||
/obj/machinery/mass_driver{
|
||||
@@ -2698,8 +2698,8 @@
|
||||
id = "XCCMechs";
|
||||
name = "gravpult"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"iB" = (
|
||||
/turf/open/floor/plasteel/loadingarea{
|
||||
@@ -3114,8 +3114,8 @@
|
||||
id = "XCCFerry";
|
||||
name = "XCC Ferry Hangar"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"jM" = (
|
||||
/obj/structure/chair,
|
||||
@@ -3153,16 +3153,16 @@
|
||||
id = "XCCsec1";
|
||||
name = "XCC Checkpoint 1 Shutters"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"jS" = (
|
||||
/obj/machinery/door/poddoor/shutters{
|
||||
id = "XCCsec2";
|
||||
name = "XCC Checkpoint 2 Shutters"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/general)
|
||||
"jT" = (
|
||||
/obj/structure/grille,
|
||||
@@ -3255,10 +3255,10 @@
|
||||
pixel_y = 7;
|
||||
req_access_txt = "2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"kg" = (
|
||||
/obj/machinery/gateway{
|
||||
@@ -3277,10 +3277,10 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"kj" = (
|
||||
/turf/open/floor/plasteel{
|
||||
/obj/effect/turf_decal/delivery{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/delivery{
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 6
|
||||
},
|
||||
/area/awaymission/centcomAway/general)
|
||||
@@ -3752,8 +3752,8 @@
|
||||
id = "XCCtdomemelee";
|
||||
name = "XCC Thunderdome Melee"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/thunderdome)
|
||||
"lB" = (
|
||||
/obj/item/weapon/reagent_containers/glass/rag,
|
||||
@@ -3807,8 +3807,8 @@
|
||||
id = "XCCtdome";
|
||||
name = "XCC Thunderdome"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/thunderdome)
|
||||
"lK" = (
|
||||
/obj/machinery/igniter,
|
||||
@@ -3925,8 +3925,8 @@
|
||||
id = "XCCtdomeguns";
|
||||
name = "XCC Thunderdome Guns"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/centcomAway/thunderdome)
|
||||
"mc" = (
|
||||
/obj/item/weapon/soap/nanotrasen,
|
||||
@@ -4116,51 +4116,51 @@
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mE" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mF" = (
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mG" = (
|
||||
/obj/machinery/shieldgen,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mH" = (
|
||||
/obj/machinery/portable_atmospherics/canister/air,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mI" = (
|
||||
/obj/machinery/portable_atmospherics/pump,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mJ" = (
|
||||
/obj/machinery/portable_atmospherics/canister/air,
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mK" = (
|
||||
/turf/open/floor/plating,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/cafe)
|
||||
"mL" = (
|
||||
/obj/structure/table,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -479,32 +479,32 @@
|
||||
/obj/machinery/gateway{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (NORTHWEST)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (NORTHWEST)"
|
||||
},
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bB" = (
|
||||
/obj/machinery/gateway{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bC" = (
|
||||
/obj/machinery/gateway{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (NORTHEAST)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (NORTHEAST)"
|
||||
},
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bD" = (
|
||||
/obj/structure/cable{
|
||||
@@ -623,10 +623,10 @@
|
||||
/obj/machinery/gateway{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bT" = (
|
||||
/obj/machinery/gateway/centeraway{
|
||||
@@ -638,12 +638,12 @@
|
||||
/obj/machinery/gateway{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (EAST)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (EAST)"
|
||||
},
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bV" = (
|
||||
/obj/structure/sign/nosmoking_1{
|
||||
@@ -677,31 +677,31 @@
|
||||
/obj/machinery/gateway{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (SOUTHWEST)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (SOUTHWEST)"
|
||||
},
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"bZ" = (
|
||||
/obj/machinery/gateway,
|
||||
/obj/effect/landmark{
|
||||
name = "awaystart"
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"ca" = (
|
||||
/obj/machinery/gateway{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (SOUTHEAST)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel/black{
|
||||
tag = "icon-warndark (SOUTHEAST)"
|
||||
},
|
||||
/area/awaymission/research/interior/gateway)
|
||||
"cb" = (
|
||||
/obj/machinery/power/apc{
|
||||
@@ -4575,9 +4575,9 @@
|
||||
"mf" = (
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
tag = "icon-propulsion (WEST)";
|
||||
dir = 4;
|
||||
icon_state = "propulsion";
|
||||
dir = 8
|
||||
tag = "icon-propulsion (WEST)"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium/interior,
|
||||
/area/awaymission/research/exterior)
|
||||
|
||||
@@ -581,8 +581,8 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"bX" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "burst_l";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "burst_l"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
@@ -626,8 +626,8 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"cf" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
@@ -936,8 +936,8 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"df" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_r";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion_r"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
@@ -1067,10 +1067,10 @@
|
||||
},
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"dC" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"dD" = (
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
@@ -1189,10 +1189,10 @@
|
||||
},
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"dW" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"dX" = (
|
||||
/obj/effect/mob_spawn/human/engineer/rig{
|
||||
@@ -1287,10 +1287,10 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"ej" = (
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"ek" = (
|
||||
/obj/structure/grille,
|
||||
@@ -2247,8 +2247,8 @@
|
||||
/area/awaymission/spacebattle/syndicate7)
|
||||
"hm" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_r";
|
||||
dir = 8
|
||||
dir = 4;
|
||||
icon_state = "propulsion_r"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/awaymission/spacebattle/syndicate7)
|
||||
@@ -2273,10 +2273,10 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"hr" = (
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"hs" = (
|
||||
/obj/structure/girder,
|
||||
@@ -2297,8 +2297,8 @@
|
||||
/area/awaymission/spacebattle/syndicate7)
|
||||
"hv" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_l";
|
||||
dir = 8
|
||||
dir = 4;
|
||||
icon_state = "propulsion_l"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/awaymission/spacebattle/syndicate7)
|
||||
@@ -2387,10 +2387,10 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"hM" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"hN" = (
|
||||
/obj/structure/rack,
|
||||
@@ -2596,8 +2596,8 @@
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"iv" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "burst_r";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "burst_r"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+161322
-8556
File diff suppressed because it is too large
Load Diff
@@ -9179,9 +9179,6 @@
|
||||
})
|
||||
"aoh" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/mineral/ore_redemption{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
@@ -9190,6 +9187,10 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/mineral/ore_redemption{
|
||||
input_dir = 4;
|
||||
output_dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/miningdock)
|
||||
"aoi" = (
|
||||
|
||||
+22048
-21640
File diff suppressed because it is too large
Load Diff
+110072
-42083
File diff suppressed because it is too large
Load Diff
@@ -720,7 +720,7 @@
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/mob/living/simple_animal/bot/secbot/beepsky{
|
||||
desc = "Powered by tears and swet of laborer.";
|
||||
desc = "Powered by the tears and sweat of laborers.";
|
||||
name = "Prison Ofitser"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -1297,25 +1297,25 @@
|
||||
id = "mining_internal"
|
||||
},
|
||||
/obj/structure/plasticflaps,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/area/mine/production)
|
||||
"cG" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "mining_internal"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-warnplate (NORTH)";
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/mine/production)
|
||||
"cH" = (
|
||||
/obj/machinery/light/small,
|
||||
@@ -1333,13 +1333,13 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-warnplatecorner (EAST)";
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 4
|
||||
},
|
||||
/area/mine/production)
|
||||
"cJ" = (
|
||||
/obj/machinery/airalarm{
|
||||
@@ -2151,10 +2151,10 @@
|
||||
frequency = 1439;
|
||||
pixel_y = 23
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/area/mine/production)
|
||||
"eu" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
@@ -2173,16 +2173,16 @@
|
||||
/area/mine/production)
|
||||
"ev" = (
|
||||
/obj/structure/ore_box,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/area/mine/production)
|
||||
"ew" = (
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/area/mine/production)
|
||||
"ex" = (
|
||||
/obj/structure/cable{
|
||||
@@ -2318,10 +2318,10 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/area/mine/production)
|
||||
"eM" = (
|
||||
/obj/structure/cable{
|
||||
@@ -2451,10 +2451,10 @@
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/area/mine/production)
|
||||
"eX" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump{
|
||||
@@ -2488,12 +2488,12 @@
|
||||
input_dir = 1;
|
||||
output_dir = 2
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/area/mine/production)
|
||||
"fa" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
@@ -2572,13 +2572,13 @@
|
||||
dir = 2;
|
||||
id = "mining_internal"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-warnplate (WEST)";
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/area/mine/production)
|
||||
"fj" = (
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -2678,12 +2678,12 @@
|
||||
dir = 1;
|
||||
output_dir = 2
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/area/mine/production)
|
||||
"fv" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump{
|
||||
@@ -2765,10 +2765,10 @@
|
||||
},
|
||||
/area/mine/laborcamp)
|
||||
"fF" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/area/mine/laborcamp)
|
||||
"fG" = (
|
||||
/obj/machinery/mineral/processing_unit{
|
||||
@@ -12288,7 +12288,7 @@ fK
|
||||
fK
|
||||
fK
|
||||
dq
|
||||
fP
|
||||
dq
|
||||
fL
|
||||
fK
|
||||
dq
|
||||
|
||||
+494
-494
File diff suppressed because it is too large
Load Diff
@@ -68,8 +68,8 @@
|
||||
/area/shuttle/escape)
|
||||
"am" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
/area/shuttle/escape)
|
||||
"h" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_r";
|
||||
dir = 8
|
||||
dir = 4;
|
||||
icon_state = "propulsion_r"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
@@ -69,8 +69,8 @@
|
||||
/area/shuttle/escape)
|
||||
"o" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 8
|
||||
dir = 4;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
@@ -96,8 +96,8 @@
|
||||
/area/shuttle/escape)
|
||||
"t" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_l";
|
||||
dir = 8
|
||||
dir = 4;
|
||||
icon_state = "propulsion_l"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
|
||||
@@ -1,77 +1,731 @@
|
||||
"aa" = (/turf/open/space,/area/space)
|
||||
"ab" = (/turf/closed/indestructible/riveted/uranium,/area/shuttle/escape)
|
||||
"ac" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating{tag = "icon-wood-broken2";icon_state = "wood-broken2"},/area/shuttle/escape)
|
||||
"ad" = (/obj/machinery/door/airlock/gold,/obj/effect/forcefield/luxury_shuttle{name = "Ticket Booth"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"ae" = (/obj/docking_port/mobile/emergency{dir = 2;dwidth = 5;height = 14;name = "Luxury emergency shuttle";timid = 1;width = 25},/obj/machinery/door/airlock/gold,/obj/effect/forcefield/luxury_shuttle{name = "Ticket Booth"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"af" = (/turf/open/floor/plating{tag = "icon-wood-broken3";icon_state = "wood-broken3"},/area/shuttle/escape)
|
||||
"ag" = (/turf/open/floor/plating{tag = "icon-wood";icon_state = "wood"},/area/shuttle/escape)
|
||||
"ah" = (/turf/open/floor/plating{tag = "icon-wood-broken";icon_state = "wood-broken"},/area/shuttle/escape)
|
||||
"ai" = (/turf/open/floor/plating{tag = "icon-wood-broken5";icon_state = "wood-broken5"},/area/shuttle/escape)
|
||||
"aj" = (/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"ak" = (/obj/item/weapon/twohanded/required/kirbyplants{tag = "icon-plant-10";icon_state = "plant-10"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"al" = (/obj/structure/mirror{pixel_y = 32},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"am" = (/turf/open/floor/plating{tag = "icon-wood-broken7";icon_state = "wood-broken7"},/area/shuttle/escape)
|
||||
"an" = (/turf/open/floor/plating{tag = "icon-wood-broken2";icon_state = "wood-broken2"},/area/shuttle/escape)
|
||||
"ao" = (/turf/open/floor/plating{tag = "icon-wood-broken6";icon_state = "wood-broken6"},/area/shuttle/escape)
|
||||
"ap" = (/obj/structure/toilet{dir = 4;icon_state = "toilet00";tag = "icon-toilet00 (NORTH)"},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"aq" = (/obj/machinery/door/airlock/gold,/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"ar" = (/obj/structure/shuttle/engine/propulsion{dir = 4},/turf/open/floor/plating/airless,/area/shuttle/escape)
|
||||
"as" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/shuttle/escape)
|
||||
"at" = (/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"au" = (/obj/structure/chair/comfy,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"av" = (/obj/structure/chair/comfy{tag = "icon-comfychair (EAST)";icon_state = "comfychair";dir = 4},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"aw" = (/obj/machinery/computer/communications,/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"ax" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"ay" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/notasandwich,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"az" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/pastatomato,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aA" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/kebab/tofu,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aB" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/honkdae,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aC" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/enchiladas,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aD" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aE" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/burger/baconburger,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aF" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/benedict,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aG" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aH" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/chowmein,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aI" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/dulcedebatataslice,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aJ" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aK" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/carneburrito,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aL" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aM" = (/obj/machinery/computer/emergency_shuttle,/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"aN" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aO" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/khachapuri,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aP" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/grilledcheese,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aQ" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aR" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/honeybun,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aS" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/eggplantparm,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aT" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/copypasta,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aU" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/bearsteak,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aV" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aW" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/cherrycupcake,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aX" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aY" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/hotdog,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"aZ" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/pie/grapetart,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"ba" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/burger/superbite,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"bb" = (/obj/structure/table/wood/fancy,/obj/item/weapon/reagent_containers/food/snacks/cakeslice/slimecake,/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"bc" = (/obj/machinery/computer/station_alert,/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"bd" = (/obj/structure/chair/comfy{tag = "icon-comfychair (NORTH)";icon_state = "comfychair";dir = 1},/turf/open/floor/carpet,/area/shuttle/escape)
|
||||
"be" = (/obj/machinery/computer/crew,/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"bf" = (/obj/machinery/sleeper{tag = "icon-sleeper-open (EAST)";icon_state = "sleeper-open";dir = 4},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"bg" = (/obj/item/weapon/twohanded/required/kirbyplants{icon_state = "plant-21";layer = 4.1;pixel_x = -3;pixel_y = 3},/turf/open/floor/mineral/gold,/area/shuttle/escape)
|
||||
"bh" = (/turf/open/floor/plating/beach/coastline_b,/area/shuttle/escape)
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
"ab" = (
|
||||
/turf/closed/indestructible/riveted/uranium,
|
||||
/area/shuttle/escape)
|
||||
"ac" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken2";
|
||||
icon_state = "wood-broken2"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"ad" = (
|
||||
/obj/machinery/door/airlock/gold,
|
||||
/obj/effect/forcefield/luxury_shuttle{
|
||||
name = "Ticket Booth"
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"ae" = (
|
||||
/obj/docking_port/mobile/emergency{
|
||||
dir = 2;
|
||||
dwidth = 5;
|
||||
height = 14;
|
||||
name = "Luxury emergency shuttle";
|
||||
timid = 1;
|
||||
width = 25
|
||||
},
|
||||
/obj/machinery/door/airlock/gold,
|
||||
/obj/effect/forcefield/luxury_shuttle{
|
||||
name = "Ticket Booth"
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"af" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken3";
|
||||
icon_state = "wood-broken3"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"ag" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood";
|
||||
icon_state = "wood"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"ah" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken";
|
||||
icon_state = "wood-broken"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"ai" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken5";
|
||||
icon_state = "wood-broken5"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"aj" = (
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"ak" = (
|
||||
/obj/item/weapon/twohanded/required/kirbyplants{
|
||||
tag = "icon-plant-10";
|
||||
icon_state = "plant-10"
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"al" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_y = 32
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"am" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken7";
|
||||
icon_state = "wood-broken7"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"an" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken2";
|
||||
icon_state = "wood-broken2"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"ao" = (
|
||||
/turf/open/floor/plating{
|
||||
tag = "icon-wood-broken6";
|
||||
icon_state = "wood-broken6"
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"ap" = (
|
||||
/obj/structure/toilet{
|
||||
dir = 4;
|
||||
icon_state = "toilet00";
|
||||
tag = "icon-toilet00 (NORTH)"
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"aq" = (
|
||||
/obj/machinery/door/airlock/gold,
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"ar" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
"as" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
"at" = (
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"au" = (
|
||||
/obj/structure/chair/comfy,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"av" = (
|
||||
/obj/structure/chair/comfy{
|
||||
tag = "icon-comfychair (EAST)";
|
||||
icon_state = "comfychair";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"aw" = (
|
||||
/obj/machinery/computer/communications,
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"ax" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"ay" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/notasandwich,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"az" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pastatomato,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aA" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/kebab/tofu,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aB" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honkdae,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aC" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/enchiladas,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aD" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candiedapple,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aE" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/baconburger,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aF" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/benedict,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aG" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/chocolate,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aH" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chowmein,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aI" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dulcedebatataslice,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aJ" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salad/validsalad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aK" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carneburrito,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aL" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aM" = (
|
||||
/obj/machinery/computer/emergency_shuttle,
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"aN" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aO" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/khachapuri,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aP" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aQ" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aR" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeybun,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aS" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aT" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/copypasta,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aU" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bearsteak,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aV" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aW" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cherrycupcake,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aX" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aY" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hotdog,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"aZ" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/grapetart,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"ba" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/superbite,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"bb" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cakeslice/slimecake,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"bc" = (
|
||||
/obj/machinery/computer/station_alert,
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"bd" = (
|
||||
/obj/structure/chair/comfy{
|
||||
tag = "icon-comfychair (NORTH)";
|
||||
icon_state = "comfychair";
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"be" = (
|
||||
/obj/machinery/computer/crew,
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"bf" = (
|
||||
/obj/machinery/sleeper{
|
||||
tag = "icon-sleeper-open (EAST)";
|
||||
icon_state = "sleeper-open";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"bg" = (
|
||||
/obj/item/weapon/twohanded/required/kirbyplants{
|
||||
icon_state = "plant-21";
|
||||
layer = 4.1;
|
||||
pixel_x = -3;
|
||||
pixel_y = 3
|
||||
},
|
||||
/turf/open/floor/mineral/gold,
|
||||
/area/shuttle/escape)
|
||||
"bh" = (
|
||||
/turf/open/floor/plating/beach/coastline_b,
|
||||
/area/shuttle/escape)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaababababababababababacabadabababababaeababababab
|
||||
ababafagagagahagagaiagagabajajajajajajajabakajalab
|
||||
abamaganagagagagagaoagafabajajajajajajajabapajajab
|
||||
abababababababababababababajajajajajajajabababaqab
|
||||
abababakajajajajajajajajajajajajajajajajajajajajab
|
||||
arasabajatauauauauauauauauauauauauauauauatajavawab
|
||||
arasabajataxayazaAaBaCaDaEaFaGaHaIaJaKaLatajavaMab
|
||||
arasabajataNaOaPaQaRaSaTaUaVaWaXaYaZbabbatajavbcab
|
||||
arasabajatbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdatajavbeab
|
||||
abababajajajajajajajajajajajajajajajajajajajajajab
|
||||
abbfajajajajajajajajajajajajajajajajajajajajajajab
|
||||
abbfajajajbgbhbhbhbhbhbhbhbhbhbhbhbhbhbgajajajajab
|
||||
abababakajbgbhbhbhbhbhbhbhbhbhbhbhbhbhbgajajajakab
|
||||
aaabababababababababababababababababababababababab
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
ab
|
||||
ab
|
||||
am
|
||||
ab
|
||||
ab
|
||||
as
|
||||
as
|
||||
as
|
||||
as
|
||||
ab
|
||||
bf
|
||||
bf
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
ab
|
||||
af
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
ab
|
||||
ag
|
||||
an
|
||||
ab
|
||||
ak
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
ak
|
||||
ab
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aj
|
||||
at
|
||||
at
|
||||
at
|
||||
at
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
ab
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aj
|
||||
au
|
||||
ax
|
||||
aN
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bg
|
||||
bg
|
||||
ab
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
ab
|
||||
ah
|
||||
ag
|
||||
ab
|
||||
aj
|
||||
au
|
||||
ay
|
||||
aO
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aj
|
||||
au
|
||||
az
|
||||
aP
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aj
|
||||
au
|
||||
aA
|
||||
aQ
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
ab
|
||||
ai
|
||||
ao
|
||||
ab
|
||||
aj
|
||||
au
|
||||
aB
|
||||
aR
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
aj
|
||||
au
|
||||
aC
|
||||
aS
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
ac
|
||||
ag
|
||||
af
|
||||
ab
|
||||
aj
|
||||
au
|
||||
aD
|
||||
aT
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aj
|
||||
au
|
||||
aE
|
||||
aU
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
ad
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aF
|
||||
aV
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aG
|
||||
aW
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aH
|
||||
aX
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aI
|
||||
aY
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aJ
|
||||
aZ
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aK
|
||||
ba
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bh
|
||||
bh
|
||||
ab
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
ae
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
au
|
||||
aL
|
||||
bb
|
||||
bd
|
||||
aj
|
||||
aj
|
||||
bg
|
||||
bg
|
||||
ab
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aj
|
||||
at
|
||||
at
|
||||
at
|
||||
at
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
ab
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
ab
|
||||
ak
|
||||
ap
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
ab
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
ab
|
||||
aj
|
||||
aj
|
||||
ab
|
||||
aj
|
||||
av
|
||||
av
|
||||
av
|
||||
av
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
ab
|
||||
"}
|
||||
(24,1,1) = {"
|
||||
ab
|
||||
al
|
||||
aj
|
||||
aq
|
||||
aj
|
||||
aw
|
||||
aM
|
||||
bc
|
||||
be
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
ak
|
||||
ab
|
||||
"}
|
||||
(25,1,1) = {"
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
"}
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
/area/shuttle/abandoned)
|
||||
"ak" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_l";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion_l"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/abandoned)
|
||||
@@ -236,8 +236,8 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"az" = (
|
||||
/obj/structure/closet/crate{
|
||||
@@ -254,8 +254,8 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"aA" = (
|
||||
/obj/item/weapon/storage/box/lights/mixed,
|
||||
@@ -277,8 +277,8 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"aB" = (
|
||||
/obj/structure/closet/crate{
|
||||
@@ -304,13 +304,13 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"aC" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/abandoned)
|
||||
@@ -431,10 +431,10 @@
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "cargo bay"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
/obj/effect/turf_decal/delivery{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/delivery{
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/abandoned)
|
||||
@@ -444,10 +444,10 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
/obj/effect/turf_decal/delivery{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/delivery{
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/abandoned)
|
||||
@@ -456,10 +456,10 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
/obj/effect/turf_decal/delivery{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/delivery{
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/abandoned)
|
||||
@@ -470,10 +470,10 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
/obj/effect/turf_decal/delivery{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/delivery{
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/abandoned)
|
||||
@@ -594,8 +594,8 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"bb" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
@@ -603,8 +603,8 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"bc" = (
|
||||
/obj/structure/closet/firecloset/full,
|
||||
@@ -612,8 +612,8 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"bd" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
@@ -695,10 +695,10 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
/obj/effect/turf_decal/delivery{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/delivery{
|
||||
/turf/open/floor/plasteel{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/abandoned)
|
||||
@@ -1551,8 +1551,8 @@
|
||||
/area/shuttle/abandoned)
|
||||
"cO" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion_r";
|
||||
dir = 4
|
||||
dir = 8;
|
||||
icon_state = "propulsion_r"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/abandoned)
|
||||
|
||||
@@ -1,31 +1,236 @@
|
||||
"a" = (/turf/open/space,/area/space)
|
||||
"b" = (/turf/closed/wall/mineral/titanium,/area/shuttle/abandoned)
|
||||
"c" = (/obj/structure/shuttle/engine/propulsion/burst{tag = "icon-propulsion (NORTH)";icon_state = "propulsion";dir = 1},/turf/closed/wall/mineral/titanium,/area/shuttle/abandoned)
|
||||
"d" = (/obj/machinery/door/airlock/glass{name = "Shuttle Airlock"},/turf/open/floor/plasteel/black,/area/shuttle/abandoned)
|
||||
"e" = (/turf/open/floor/plasteel/black,/area/shuttle/abandoned)
|
||||
"f" = (/turf/open/floor/plasteel,/area/shuttle/abandoned)
|
||||
"g" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/closed/wall/mineral/titanium,/area/shuttle/abandoned)
|
||||
"h" = (/obj/structure/window/reinforced{dir = 1;layer = 2.9},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/glass,/obj/item/weapon/gun/medbeam,/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"i" = (/obj/structure/chair,/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"j" = (/obj/structure/window/reinforced{dir = 1;layer = 2.9},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/weapon/gun/energy/laser/retro,/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"k" = (/obj/structure/shuttle/engine/propulsion/burst{tag = "icon-propulsion (WEST)";icon_state = "propulsion";dir = 8},/turf/closed/wall/mineral/titanium,/area/shuttle/abandoned)
|
||||
"l" = (/obj/structure/chair{dir = 4},/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"m" = (/obj/machinery/computer/shuttle/white_ship,/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"n" = (/obj/structure/chair{dir = 8},/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"o" = (/obj/machinery/door/airlock/glass{name = "Shuttle Airlock"},/obj/docking_port/mobile{dheight = 0;dir = 8;dwidth = 4;height = 9;id = "whiteship";launch_status = 0;name = "White Ship";port_angle = 90;preferred_direction = 1;roundstart_move = "whiteship_away";timid = 1;width = 9},/turf/open/floor/plasteel/black,/area/shuttle/abandoned)
|
||||
"p" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/glass,/obj/item/weapon/tank/internals/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/hardsuit/engine/elite,/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"q" = (/obj/structure/chair{dir = 1},/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"r" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/table/glass,/obj/item/clothing/shoes/magboots,/turf/open/floor/plating/abductor,/area/shuttle/abandoned)
|
||||
"s" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/closed/wall/mineral/titanium,/area/shuttle/abandoned)
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
"b" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"c" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
tag = "icon-propulsion (NORTH)";
|
||||
icon_state = "propulsion";
|
||||
dir = 1
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"d" = (
|
||||
/obj/machinery/door/airlock/glass{
|
||||
name = "Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/shuttle/abandoned)
|
||||
"e" = (
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/shuttle/abandoned)
|
||||
"f" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/abandoned)
|
||||
"g" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 8
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"h" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1;
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/weapon/gun/medbeam,
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"i" = (
|
||||
/obj/structure/chair,
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"j" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1;
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/table/glass,
|
||||
/obj/machinery/recharger,
|
||||
/obj/item/weapon/gun/energy/laser/retro,
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"k" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst{
|
||||
dir = 4;
|
||||
icon_state = "propulsion";
|
||||
tag = "icon-propulsion (WEST)"
|
||||
},
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
"l" = (
|
||||
/obj/structure/chair{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"m" = (
|
||||
/obj/machinery/computer/shuttle/white_ship,
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"n" = (
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"o" = (
|
||||
/obj/machinery/door/airlock/glass{
|
||||
name = "Shuttle Airlock"
|
||||
},
|
||||
/obj/docking_port/mobile{
|
||||
dheight = 0;
|
||||
dir = 8;
|
||||
dwidth = 4;
|
||||
height = 9;
|
||||
id = "whiteship";
|
||||
launch_status = 0;
|
||||
name = "White Ship";
|
||||
port_angle = 90;
|
||||
preferred_direction = 1;
|
||||
roundstart_move = "whiteship_away";
|
||||
timid = 1;
|
||||
width = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/shuttle/abandoned)
|
||||
"p" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/weapon/tank/internals/oxygen,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine/elite,
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"q" = (
|
||||
/obj/structure/chair{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"r" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/clothing/shoes/magboots,
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/shuttle/abandoned)
|
||||
"s" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/abandoned)
|
||||
|
||||
(1,1,1) = {"
|
||||
aabcdcbaa
|
||||
abbefebba
|
||||
bbeefeebb
|
||||
geehijeek
|
||||
dfflmnffo
|
||||
geepqreek
|
||||
bbeefeebb
|
||||
abbefebba
|
||||
aabsdsbaa
|
||||
a
|
||||
a
|
||||
b
|
||||
g
|
||||
d
|
||||
g
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
e
|
||||
f
|
||||
e
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
f
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
c
|
||||
e
|
||||
e
|
||||
h
|
||||
l
|
||||
p
|
||||
e
|
||||
e
|
||||
s
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
d
|
||||
f
|
||||
f
|
||||
i
|
||||
m
|
||||
q
|
||||
f
|
||||
f
|
||||
d
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
c
|
||||
e
|
||||
e
|
||||
j
|
||||
n
|
||||
r
|
||||
e
|
||||
e
|
||||
s
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
f
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
e
|
||||
f
|
||||
e
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
k
|
||||
o
|
||||
k
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
/area/space)
|
||||
"b" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/left{
|
||||
tag = "icon-burst_l (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "burst_l";
|
||||
dir = 4
|
||||
tag = "icon-burst_l (EAST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered{
|
||||
@@ -149,9 +149,9 @@
|
||||
})
|
||||
"w" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/right{
|
||||
tag = "icon-burst_r (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "burst_r";
|
||||
dir = 4
|
||||
tag = "icon-burst_r (EAST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered{
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
/area/space)
|
||||
"b" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/left{
|
||||
tag = "icon-burst_l (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "burst_l";
|
||||
dir = 4
|
||||
tag = "icon-burst_l (EAST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered{
|
||||
@@ -43,9 +43,9 @@
|
||||
})
|
||||
"f" = (
|
||||
/obj/structure/shuttle/engine/propulsion/burst/right{
|
||||
tag = "icon-burst_r (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "burst_r";
|
||||
dir = 4
|
||||
tag = "icon-burst_r (EAST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered{
|
||||
|
||||
@@ -93,9 +93,9 @@
|
||||
})
|
||||
"n" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
tag = "icon-propulsion (EAST)";
|
||||
dir = 8;
|
||||
icon_state = "propulsion";
|
||||
dir = 4
|
||||
tag = "icon-propulsion (EAST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered{
|
||||
@@ -129,9 +129,9 @@
|
||||
})
|
||||
"r" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
tag = "icon-propulsion (WEST)";
|
||||
dir = 4;
|
||||
icon_state = "propulsion";
|
||||
dir = 8
|
||||
tag = "icon-propulsion (WEST)"
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/ruin/powered{
|
||||
|
||||
@@ -64,3 +64,15 @@
|
||||
#define MILK_RATE 5
|
||||
#define MILK_RATE_MULT 1
|
||||
#define MILK_EFFICIENCY 1
|
||||
|
||||
|
||||
// Admin ticket things
|
||||
#define TICKET_RESOLVED "Yes"
|
||||
#define TICKET_UNRESOLVED "No"
|
||||
#define TICKET_UNASSIGNED "N/A"
|
||||
|
||||
#define TICKET_REPLIED "Yes"
|
||||
#define TICKET_UNREPLIED "No"
|
||||
|
||||
#define TICKET_INACTIVE "No"
|
||||
#define TICKET_ACTIVE "Yes"
|
||||
@@ -12,7 +12,8 @@ var/global/list/clockwork_generals_invoked = list("nezbere" = FALSE, "sevtug" =
|
||||
var/global/list/all_clockwork_objects = list() //All clockwork items, structures, and effects in existence
|
||||
var/global/list/all_clockwork_mobs = list() //All clockwork SERVANTS (not creatures) in existence
|
||||
var/global/list/clockwork_component_cache = list(BELLIGERENT_EYE = 0, VANGUARD_COGWHEEL = 0, GEIS_CAPACITOR = 0, REPLICANT_ALLOY = 0, HIEROPHANT_ANSIBLE = 0) //The pool of components that caches draw from
|
||||
var/global/ratvar_awakens = 0 //If Ratvar has been summoned; not a boolean, for proper handling of multiple ratvars
|
||||
var/global/ratvar_awakens = 0 //If Ratvar has been summoned; not a boolean, for proper handling of multiple Ratvars
|
||||
var/global/nezbere_invoked = 0 //If Nezbere has been invoked; not a boolean, for proper handling of multiple Nezberes
|
||||
var/global/clockwork_gateway_activated = FALSE //if a gateway to the celestial derelict has ever been successfully activated
|
||||
var/global/list/all_scripture = list() //a list containing scripture instances; not used to track existing scripture
|
||||
|
||||
@@ -48,7 +49,9 @@ var/global/list/all_scripture = list() //a list containing scripture instances;
|
||||
|
||||
#define MAX_COMPONENTS_BEFORE_RAND (10*LOWER_PROB_PER_COMPONENT) //the number of each component, times LOWER_PROB_PER_COMPONENT, you need to have before component generation will become random
|
||||
|
||||
#define CLOCKWORK_GENERAL_COOLDOWN 3000 //how long clockwork generals go on cooldown after use, defaults to 5 minutes
|
||||
#define GLOBAL_CLOCKWORK_GENERAL_COOLDOWN 3000 //how long globally-affecting clockwork generals go on cooldown after use, defaults to 5 minutes
|
||||
|
||||
#define CLOCKWORK_GENERAL_COOLDOWN 2000 //how long clockwork generals go on cooldown after use, defaults to 3 minutes 20 seconds
|
||||
|
||||
//clockcult power defines
|
||||
#define MIN_CLOCKCULT_POWER 25 //the minimum amount of power clockcult machines will handle gracefully
|
||||
@@ -83,9 +86,9 @@ var/global/list/all_scripture = list() //a list containing scripture instances;
|
||||
#define GATEWAY_RATVAR_ARRIVAL 300 //when progress is at or above this, game over ratvar's here everybody go home
|
||||
|
||||
//Objective defines
|
||||
#define CLOCKCULT_GATEWAY "gateway"
|
||||
#define CLOCKCULT_GATEWAY "summon ratvar"
|
||||
|
||||
#define CLOCKCULT_ESCAPE "escape"
|
||||
#define CLOCKCULT_ESCAPE "proselytize the station"
|
||||
|
||||
//misc clockcult stuff
|
||||
#define MARAUDER_EMERGE_THRESHOLD 65 //marauders cannot emerge unless host is at this% or less health
|
||||
@@ -95,3 +98,5 @@ var/global/list/all_scripture = list() //a list containing scripture instances;
|
||||
#define PROSELYTIZER_REPAIR_PER_TICK 4 //how much a proselytizer repairs each tick, and also how many deciseconds each tick is
|
||||
|
||||
#define OCULAR_WARDEN_EXCLUSION_RANGE 3 //the range at which ocular wardens cannot be placed near other ocular wardens
|
||||
|
||||
#define RATVARIAN_SPEAR_DURATION 1800 //how long ratvarian spears last; defaults to 3 minutes
|
||||
|
||||
@@ -132,4 +132,13 @@
|
||||
#define IS_SHARP 1
|
||||
#define IS_SHARP_ACCURATE 2
|
||||
|
||||
//His Grace.
|
||||
#define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep.
|
||||
#define HIS_GRACE_PECKISH 20 //Slightly hungry.
|
||||
#define HIS_GRACE_HUNGRY 60 //Getting closer. Increases damage up to a minimum of 20.
|
||||
#define HIS_GRACE_FAMISHED 100 //Dangerous. Increases damage up to a minimum of 25 and cannot be dropped.
|
||||
#define HIS_GRACE_STARVING 120 //Incredibly close to breaking loose. Increases damage up to a minimum of 30.
|
||||
#define HIS_GRACE_CONSUME_OWNER 140 //His Grace consumes His owner at this point and becomes aggressive.
|
||||
#define HIS_GRACE_FALL_ASLEEP 160 //If it reaches this point, He falls asleep and resets.
|
||||
|
||||
#define HIS_GRACE_FORCE_BONUS 4 //How much force is gained per kill.
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#define GIRDER_DISPLACED 3
|
||||
#define GIRDER_DISASSEMBLED 4
|
||||
|
||||
|
||||
//rwall construction states
|
||||
#define INTACT 0
|
||||
#define SUPPORT_LINES 1
|
||||
@@ -18,6 +19,10 @@
|
||||
#define SUPPORT_RODS 5
|
||||
#define SHEATH 6
|
||||
|
||||
//plastic flaps construction states
|
||||
#define PLASTIC_FLAPS_NORMAL 0
|
||||
#define PLASTIC_FLAPS_DETACHED 1
|
||||
|
||||
//default_unfasten_wrench() return defines
|
||||
#define CANT_UNFASTEN 0
|
||||
#define FAILED_UNFASTEN 1
|
||||
@@ -49,8 +54,7 @@
|
||||
|
||||
//Construction defines for the pinion airlock
|
||||
#define GEAR_SECURE 1
|
||||
#define GEAR_UNFASTENED 2
|
||||
#define GEAR_LOOSE 3
|
||||
#define GEAR_LOOSE 2
|
||||
|
||||
//other construction-related things
|
||||
|
||||
@@ -68,6 +72,7 @@
|
||||
#define MAT_DIAMOND "$diamond"
|
||||
#define MAT_URANIUM "$uranium"
|
||||
#define MAT_PLASMA "$plasma"
|
||||
#define MAT_BLUESPACE "$bluespace"
|
||||
#define MAT_BANANIUM "$bananium"
|
||||
#define MAT_TITANIUM "$titanium"
|
||||
#define MAT_BIOMASS "$biomass"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#define CONDUCT 64 // conducts electricity (metal etc.)
|
||||
#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way
|
||||
#define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff
|
||||
#define FPRINT 256 // takes a fingerprint
|
||||
#define OVERLAY_QUEUED 256 //atom queued to SSoverlay
|
||||
#define ON_BORDER 512 // item has priority to check when entering or leaving
|
||||
|
||||
#define EARBANGPROTECT 1024
|
||||
|
||||
@@ -128,6 +128,8 @@ var/list/static/global/pointed_types = typecacheof(list(
|
||||
|
||||
#define is_pointed(W) (is_type_in_typecache(W, pointed_types))
|
||||
|
||||
#define isbodypart(A) (istype(A, /obj/item/bodypart))
|
||||
|
||||
//Assemblies
|
||||
#define isassembly(O) (istype(O, /obj/item/device/assembly))
|
||||
|
||||
|
||||
@@ -74,3 +74,6 @@
|
||||
#define HUD_LAYER 19
|
||||
#define ABOVE_HUD_PLANE 20
|
||||
#define ABOVE_HUD_LAYER 20
|
||||
|
||||
#define SPLASHSCREEN_LAYER 21
|
||||
#define SPLASHSCREEN_PLANE 21
|
||||
@@ -16,8 +16,12 @@
|
||||
|
||||
#define STATUS_EFFECT_POWERREGEN /datum/status_effect/cyborg_power_regen //Regenerates power on a given cyborg over time
|
||||
|
||||
#define STATUS_EFFECT_HISGRACE /datum/status_effect/his_grace //His Grace.
|
||||
|
||||
/////////////
|
||||
// DEBUFFS //
|
||||
/////////////
|
||||
|
||||
#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark
|
||||
|
||||
#define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath.
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
#define TICK_LIMIT_MC 70
|
||||
#define TICK_LIMIT_MC_INIT_DEFAULT 98
|
||||
|
||||
#define TICK_CHECK ( world.tick_usage > CURRENT_TICKLIMIT ? stoplag() : 0 )
|
||||
#define TICK_CHECK ( world.tick_usage > CURRENT_TICKLIMIT )
|
||||
#define CHECK_TICK if (world.tick_usage > CURRENT_TICKLIMIT) stoplag()
|
||||
|
||||
@@ -465,4 +465,35 @@
|
||||
#define LAZYADD(L, I) if(!L) { L = list(); } L += I;
|
||||
#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= L.len ? L[I] : null) : L[I]) : null)
|
||||
#define LAZYLEN(L) length(L)
|
||||
#define LAZYCLEARLIST(L) if(L) L.Cut()
|
||||
#define LAZYCLEARLIST(L) if(L) L.Cut()
|
||||
|
||||
/* Definining a counter as a series of key -> numeric value entries
|
||||
|
||||
* All these procs modify in place.
|
||||
*/
|
||||
|
||||
/proc/counterlist_scale(list/L, scalar)
|
||||
var/list/out = list()
|
||||
for(var/key in L)
|
||||
out[key] = L[key] * scalar
|
||||
. = out
|
||||
|
||||
/proc/counterlist_sum(list/L)
|
||||
. = 0
|
||||
for(var/key in L)
|
||||
. += L[key]
|
||||
|
||||
/proc/counterlist_normalise(list/L)
|
||||
var/avg = counterlist_sum(L)
|
||||
if(avg != 0)
|
||||
. = counterlist_scale(L, 1 / avg)
|
||||
else
|
||||
. = L
|
||||
|
||||
/proc/counterlist_combine(list/L1, list/L2)
|
||||
for(var/key in L2)
|
||||
var/other_value = L2[key]
|
||||
if(key in L1)
|
||||
L1[key] += other_value
|
||||
else
|
||||
L1[key] = other_value
|
||||
@@ -22,9 +22,15 @@
|
||||
if (config.log_admin)
|
||||
diary << "\[[time_stamp()]]ADMIN: [text]"
|
||||
|
||||
//Items using this proc are stripped from public logs - use with caution
|
||||
/proc/log_admin_private(text)
|
||||
admin_log.Add(text)
|
||||
if (config.log_admin)
|
||||
diary << "\[[time_stamp()]]ADMINPRIVATE: [text]"
|
||||
|
||||
/proc/log_adminsay(text)
|
||||
if (config.log_adminchat)
|
||||
log_admin("ASAY: [text]")
|
||||
log_admin_private("ASAY: [text]")
|
||||
|
||||
/proc/log_dsay(text)
|
||||
if (config.log_adminchat)
|
||||
@@ -108,4 +114,4 @@
|
||||
if(istype(T))
|
||||
return "[A.loc] [COORD(T)] ([A.loc.type])"
|
||||
else if(A.loc)
|
||||
return "[A.loc] (0, 0, 0) ([A.loc.type])"
|
||||
return "[A.loc] (0, 0, 0) ([A.loc.type])"
|
||||
|
||||
@@ -17,12 +17,6 @@
|
||||
var/area/Y = get_area(X)
|
||||
return Y.name
|
||||
|
||||
/proc/get_area_master(O)
|
||||
var/area/A = get_area(O)
|
||||
if(A && A.master)
|
||||
A = A.master
|
||||
return A
|
||||
|
||||
/proc/get_area_by_name(N) //get area by its name
|
||||
for(var/area/A in world)
|
||||
if(A.name == N)
|
||||
@@ -81,13 +75,13 @@
|
||||
return heard
|
||||
|
||||
/proc/alone_in_area(area/the_area, mob/must_be_alone, check_type = /mob/living/carbon)
|
||||
var/area/our_area = get_area_master(the_area)
|
||||
var/area/our_area = get_area(the_area)
|
||||
for(var/C in living_mob_list)
|
||||
if(!istype(C, check_type))
|
||||
continue
|
||||
if(C == must_be_alone)
|
||||
continue
|
||||
if(our_area == get_area_master(C))
|
||||
if(our_area == get_area(C))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -238,32 +238,31 @@
|
||||
else if(adjacencies & N_EAST)
|
||||
se = "4-e"
|
||||
|
||||
var/list/New = list()
|
||||
var/list/New
|
||||
|
||||
if(A.top_left_corner != nw)
|
||||
A.overlays -= A.top_left_corner
|
||||
A.cut_overlay(A.top_left_corner)
|
||||
A.top_left_corner = nw
|
||||
New += nw
|
||||
LAZYADD(New, nw)
|
||||
|
||||
if(A.top_right_corner != ne)
|
||||
A.overlays -= A.top_right_corner
|
||||
A.cut_overlay(A.top_right_corner)
|
||||
A.top_right_corner = ne
|
||||
New += ne
|
||||
LAZYADD(New, ne)
|
||||
|
||||
if(A.bottom_right_corner != sw)
|
||||
A.overlays -= A.bottom_right_corner
|
||||
A.cut_overlay(A.bottom_right_corner)
|
||||
A.bottom_right_corner = sw
|
||||
New += sw
|
||||
LAZYADD(New, sw)
|
||||
|
||||
if(A.bottom_left_corner != se)
|
||||
A.overlays -= A.bottom_left_corner
|
||||
A.cut_overlay(A.bottom_left_corner)
|
||||
A.bottom_left_corner = se
|
||||
New += se
|
||||
|
||||
if(New.len)
|
||||
LAZYADD(New, se)
|
||||
|
||||
if(New)
|
||||
A.add_overlay(New)
|
||||
|
||||
|
||||
/proc/find_type_in_direction(atom/source, direction)
|
||||
var/turf/target_turf = get_step(source, direction)
|
||||
if(!target_turf)
|
||||
@@ -312,13 +311,13 @@
|
||||
queue_smooth(A)
|
||||
|
||||
/atom/proc/clear_smooth_overlays()
|
||||
overlays -= top_left_corner
|
||||
cut_overlay(top_left_corner)
|
||||
top_left_corner = null
|
||||
overlays -= top_right_corner
|
||||
cut_overlay(top_right_corner)
|
||||
top_right_corner = null
|
||||
overlays -= bottom_right_corner
|
||||
cut_overlay(bottom_right_corner)
|
||||
bottom_right_corner = null
|
||||
overlays -= bottom_left_corner
|
||||
cut_overlay(bottom_left_corner)
|
||||
bottom_left_corner = null
|
||||
|
||||
/atom/proc/replace_smooth_overlays(nw, ne, sw, se)
|
||||
|
||||
@@ -943,27 +943,6 @@ var/global/list/friendly_animal_types = list()
|
||||
return J
|
||||
return 0
|
||||
|
||||
/atom/proc/cut_overlays()
|
||||
overlays.Cut()
|
||||
overlays += priority_overlays
|
||||
|
||||
/atom/proc/add_overlay(image, priority = 0)
|
||||
var/list/new_overlays = overlays.Copy()
|
||||
new_overlays -= image
|
||||
if(priority)
|
||||
if(!priority_overlays)
|
||||
priority_overlays = list()
|
||||
priority_overlays += image
|
||||
new_overlays += image
|
||||
else
|
||||
if(priority_overlays)
|
||||
new_overlays -= priority_overlays
|
||||
new_overlays += image
|
||||
new_overlays += priority_overlays
|
||||
else
|
||||
new_overlays += image
|
||||
overlays = new_overlays
|
||||
|
||||
var/global/list/humanoid_icon_cache = list()
|
||||
//For creating consistent icons for human looking simple animals
|
||||
/proc/get_flat_human_icon(var/icon_id,var/outfit,var/datum/preferences/prefs)
|
||||
|
||||
@@ -21,8 +21,10 @@
|
||||
//return 1
|
||||
|
||||
//returns timestamp in a sql and ISO 8601 friendly format
|
||||
/proc/SQLtime()
|
||||
return time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
/proc/SQLtime(timevar)
|
||||
if(!timevar)
|
||||
timevar = world.realtime
|
||||
return time2text(timevar, "YYYY-MM-DD hh:mm:ss")
|
||||
|
||||
|
||||
/var/midnight_rollovers = 0
|
||||
|
||||
@@ -1191,7 +1191,7 @@ B --><-- A
|
||||
return
|
||||
A.add_overlay(I)
|
||||
sleep(duration)
|
||||
A.overlays -= I
|
||||
A.cut_overlay(I)
|
||||
|
||||
/proc/get_areas_in_z(zlevel)
|
||||
. = list()
|
||||
@@ -1286,6 +1286,7 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
|
||||
#define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255)))
|
||||
|
||||
#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE)
|
||||
#define QDEL_NULL(item) qdel(item); item = null
|
||||
|
||||
/proc/random_nukecode()
|
||||
var/val = rand(0, 99999)
|
||||
@@ -1336,3 +1337,59 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
|
||||
if(W.ini_dir == dir_to_check || W.ini_dir == FULLTILE_WINDOW_DIR || dir_to_check == FULLTILE_WINDOW_DIR)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//WHATEVER YOU USE THIS FOR MUST BE SANITIZED TO SHIT, IT USES SHELL
|
||||
//It also sleeps
|
||||
|
||||
//Set this to TRUE before calling
|
||||
//This prevents RCEs from badmins
|
||||
//kevinz000 if you touch this I will hunt you down
|
||||
var/valid_HTTPSGet = FALSE
|
||||
/proc/HTTPSGet(url)
|
||||
if(findtext(url, "\""))
|
||||
valid_HTTPSGet = FALSE
|
||||
|
||||
if(!valid_HTTPSGet)
|
||||
if(usr)
|
||||
CRASH("[usr.ckey]([usr]) just attempted an invalid HTTPSGet on: [url]!")
|
||||
else
|
||||
CRASH("Invalid HTTPSGet call on: [url]")
|
||||
valid_HTTPSGet = FALSE
|
||||
|
||||
//"This has got to be the ugliest hack I have ever done"
|
||||
//warning, here be dragons
|
||||
/*
|
||||
| @___oo
|
||||
/\ /\ / (__,,,,|
|
||||
) /^\) ^\/ _)
|
||||
) /^\/ _)
|
||||
) _ / / _)
|
||||
/\ )/\/ || | )_)
|
||||
< > |(,,) )__)
|
||||
|| / \)___)\
|
||||
| \____( )___) )___
|
||||
\______(_______;;; __;;;
|
||||
*/
|
||||
var/temp_file = "HTTPSGetOutput.txt"
|
||||
var/command
|
||||
if(world.system_type == MS_WINDOWS)
|
||||
command = "powershell -Command \"wget [url] -OutFile [temp_file]\""
|
||||
else if(world.system_type == UNIX)
|
||||
command = "wget -O [temp_file] [url]"
|
||||
else
|
||||
CRASH("Invalid world.system_type ([world.system_type])? Yell at Lummox.")
|
||||
|
||||
world.log << "HTTPSGet: [url]"
|
||||
var/result = shell(command)
|
||||
if(result != 0)
|
||||
world.log << "Download failed: shell exited with code: [result]"
|
||||
return
|
||||
|
||||
var/f = file(temp_file)
|
||||
if(!f)
|
||||
world.log << "Download failed: Temp file not found"
|
||||
return
|
||||
|
||||
. = file2text(f)
|
||||
f = null
|
||||
fdel(temp_file)
|
||||
|
||||
@@ -9,9 +9,6 @@ var/changelog_hash = ""
|
||||
|
||||
var/ooc_allowed = 1 // used with admin verbs to disable ooc - not a config option apparently
|
||||
var/dooc_allowed = 1
|
||||
//citadel code
|
||||
var/looc_allowed = 1
|
||||
var/dlooc_allowed = 1
|
||||
var/abandon_allowed = 1
|
||||
var/enter_allowed = 1
|
||||
var/guests_allowed = 1
|
||||
|
||||
@@ -55,14 +55,4 @@ var/list/awaydestinations = list() //a list of landmarks that the warpgate can t
|
||||
//used by jump-to-area etc. Updated by area/updateName()
|
||||
var/list/sortedAreas = list()
|
||||
|
||||
//List of preloaded templates
|
||||
var/list/datum/map_template/map_templates = list()
|
||||
|
||||
var/list/datum/map_template/ruins_templates = list()
|
||||
var/list/datum/map_template/space_ruins_templates = list()
|
||||
var/list/datum/map_template/lava_ruins_templates = list()
|
||||
|
||||
var/list/datum/map_template/shuttle_templates = list()
|
||||
var/list/datum/map_template/shelter_templates = list()
|
||||
|
||||
var/list/transit_markers = list()
|
||||
|
||||
@@ -14,8 +14,9 @@
|
||||
moved = 0
|
||||
usr.update_action_buttons() //redraw buttons that are no longer considered "moved"
|
||||
return 1
|
||||
if(usr.next_move >= world.time) // Is this needed ?
|
||||
if(usr.next_click > world.time)
|
||||
return
|
||||
usr.next_click = world.time + 1
|
||||
linked_action.Trigger()
|
||||
return 1
|
||||
|
||||
@@ -71,7 +72,7 @@
|
||||
. = list()
|
||||
.["bg_icon"] = ui_style_icon
|
||||
.["bg_state"] = "template"
|
||||
|
||||
|
||||
//TODO : Make these fit theme
|
||||
.["toggle_icon"] = 'icons/mob/actions.dmi'
|
||||
.["toggle_hide"] = "hide"
|
||||
|
||||
+58
-52
@@ -16,49 +16,49 @@
|
||||
if(!category)
|
||||
return
|
||||
|
||||
var/obj/screen/alert/alert
|
||||
var/obj/screen/alert/thealert
|
||||
if(alerts[category])
|
||||
alert = alerts[category]
|
||||
if(new_master && new_master != alert.master)
|
||||
WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [alert.master]")
|
||||
thealert = alerts[category]
|
||||
if(new_master && new_master != thealert.master)
|
||||
WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [thealert.master]")
|
||||
clear_alert(category)
|
||||
return .()
|
||||
else if(alert.type != type)
|
||||
else if(thealert.type != type)
|
||||
clear_alert(category)
|
||||
return .()
|
||||
else if(!severity || severity == alert.severity)
|
||||
if(alert.timeout)
|
||||
else if(!severity || severity == thealert.severity)
|
||||
if(thealert.timeout)
|
||||
clear_alert(category)
|
||||
return .()
|
||||
else //no need to update
|
||||
return 0
|
||||
else
|
||||
alert = new type()
|
||||
thealert = new type()
|
||||
|
||||
if(new_master)
|
||||
var/old_layer = new_master.layer
|
||||
var/old_plane = new_master.plane
|
||||
new_master.layer = FLOAT_LAYER
|
||||
new_master.plane = FLOAT_PLANE
|
||||
alert.overlays += new_master
|
||||
thealert.add_overlay(new_master)
|
||||
new_master.layer = old_layer
|
||||
new_master.plane = old_plane
|
||||
alert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts()
|
||||
alert.master = new_master
|
||||
thealert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts()
|
||||
thealert.master = new_master
|
||||
else
|
||||
alert.icon_state = "[initial(alert.icon_state)][severity]"
|
||||
alert.severity = severity
|
||||
thealert.icon_state = "[initial(thealert.icon_state)][severity]"
|
||||
thealert.severity = severity
|
||||
|
||||
alerts[category] = alert
|
||||
alerts[category] = thealert
|
||||
if(client && hud_used)
|
||||
hud_used.reorganize_alerts()
|
||||
alert.transform = matrix(32, 6, MATRIX_TRANSLATE)
|
||||
animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
|
||||
thealert.transform = matrix(32, 6, MATRIX_TRANSLATE)
|
||||
animate(thealert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
|
||||
|
||||
if(alert.timeout)
|
||||
addtimer(CALLBACK(src, .proc/alert_timeout, alert, category), alert.timeout)
|
||||
alert.timeout = world.time + alert.timeout - world.tick_lag
|
||||
return alert
|
||||
if(thealert.timeout)
|
||||
addtimer(CALLBACK(src, .proc/alert_timeout, thealert, category), thealert.timeout)
|
||||
thealert.timeout = world.time + thealert.timeout - world.tick_lag
|
||||
return thealert
|
||||
|
||||
/mob/proc/alert_timeout(obj/screen/alert/alert, category)
|
||||
if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout)
|
||||
@@ -286,17 +286,15 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
else
|
||||
name = "Next Tier Requirements"
|
||||
var/validservants = 0
|
||||
var/unconverted_ais_exist = FALSE
|
||||
var/unconverted_ais_exist = get_unconverted_ais()
|
||||
for(var/mob/living/L in living_mob_list)
|
||||
if(is_servant_of_ratvar(L) && (ishuman(L) || issilicon(L)))
|
||||
validservants++
|
||||
else if(isAI(L))
|
||||
unconverted_ais_exist++
|
||||
var/req_servants = 0
|
||||
var/req_caches = 0
|
||||
var/req_cv = 0
|
||||
var/req_ai = FALSE
|
||||
desc = "Requirements for <b>[current_state] Scripture:</b>"
|
||||
var/list/textlist = list("Requirements for <b>[current_state] Scripture:</b>")
|
||||
switch(current_state) //get our requirements based on the tier
|
||||
if(SCRIPTURE_SCRIPT)
|
||||
req_servants = SCRIPT_SERVANT_REQ
|
||||
@@ -314,31 +312,32 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
req_caches = JUDGEMENT_CACHE_REQ
|
||||
req_cv = JUDGEMENT_CV_REQ
|
||||
req_ai = TRUE
|
||||
desc += "<br><b>[validservants]/[req_servants]</b> Servants"
|
||||
textlist += "<br><b>[validservants]/[req_servants]</b> Servants"
|
||||
if(validservants < req_servants)
|
||||
icon_state += "-servants" //in this manner, generate an icon key based on what we're missing
|
||||
else
|
||||
desc += ": <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
desc += "<br><b>[clockwork_caches]/[req_caches]</b> Tinkerer's Caches"
|
||||
textlist += ": <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
textlist += "<br><b>[clockwork_caches]/[req_caches]</b> Tinkerer's Caches"
|
||||
if(clockwork_caches < req_caches)
|
||||
icon_state += "-caches"
|
||||
else
|
||||
desc += ": <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
textlist += ": <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
if(req_cv) //cv only shows up if the tier requires it
|
||||
desc += "<br><b>[clockwork_construction_value]/[req_cv]</b> Construction Value"
|
||||
textlist += "<br><b>[clockwork_construction_value]/[req_cv]</b> Construction Value"
|
||||
if(clockwork_construction_value < req_cv)
|
||||
icon_state += "-cv"
|
||||
else
|
||||
desc += ": <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
textlist += ": <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
if(req_ai) //same for ai
|
||||
if(unconverted_ais_exist)
|
||||
if(unconverted_ais_exist > 1)
|
||||
desc += "<br><b>[unconverted_ais_exist] unconverted AIs exist!</b><br>"
|
||||
textlist += "<br><b>[unconverted_ais_exist] unconverted AIs exist!</b><br>"
|
||||
else
|
||||
desc += "<br><b>An unconverted AI exists!</b>"
|
||||
textlist += "<br><b>An unconverted AI exists!</b>"
|
||||
icon_state += "-ai"
|
||||
else
|
||||
desc += "<br>No unconverted AIs exist: <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
textlist += "<br>No unconverted AIs exist: <b><font color=#5A6068>\[CHECK\]</font></b>"
|
||||
desc = textlist.Join()
|
||||
|
||||
/obj/screen/alert/clockwork/infodump
|
||||
name = "Global Records"
|
||||
@@ -351,55 +350,62 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
else
|
||||
var/servants = 0
|
||||
var/validservants = 0
|
||||
var/unconverted_ais_exist = FALSE
|
||||
var/unconverted_ais_exist = get_unconverted_ais()
|
||||
var/list/scripture_states = scripture_unlock_check()
|
||||
var/list/textlist
|
||||
for(var/mob/living/L in living_mob_list)
|
||||
if(is_servant_of_ratvar(L))
|
||||
servants++
|
||||
if(ishuman(L) || issilicon(L))
|
||||
validservants++
|
||||
else if(isAI(L))
|
||||
unconverted_ais_exist++
|
||||
if(servants > 1)
|
||||
if(validservants > 1)
|
||||
desc = "<b>[servants]</b> Servants, <b>[validservants]</b> of which count towards scripture.<br>"
|
||||
textlist = list("<b>[servants]</b> Servants, <b>[validservants]</b> of which count towards scripture.<br>")
|
||||
else
|
||||
desc = "<b>[servants]</b> Servants, [validservants ? "<b>[validservants]</b> of which counts":"none of which count"] towards scripture.<br>"
|
||||
textlist = list("<b>[servants]</b> Servants, [validservants ? "<b>[validservants]</b> of which counts":"none of which count"] towards scripture.<br>")
|
||||
else
|
||||
desc = "<b>[servants]</b> Servant, who [validservants ? "counts":"does not count"] towards scripture.<br>"
|
||||
desc += "<b>[clockwork_caches ? "[clockwork_caches]</b> Tinkerer's Caches.":"No Tinkerer's Caches, construct one!</b>"]<br>\
|
||||
textlist = list("<b>[servants]</b> Servant, who [validservants ? "counts":"does not count"] towards scripture.<br>")
|
||||
textlist += "<b>[clockwork_caches ? "[clockwork_caches]</b> Tinkerer's Caches.":"No Tinkerer's Caches, construct one!</b>"]<br>\
|
||||
<b>[clockwork_construction_value]</b> Construction Value.<br>"
|
||||
if(clockwork_daemons)
|
||||
desc += "<b>[clockwork_daemons]</b> Tinkerer's Daemons: <b>[servants * 0.2 < clockwork_daemons ? "DISABLED":"ACTIVE"]</b><br>"
|
||||
textlist += "<b>[clockwork_daemons]</b> Tinkerer's Daemons: <b>[servants * 0.2 < clockwork_daemons ? "DISABLED":"ACTIVE"]</b><br>"
|
||||
else
|
||||
desc += "No Tinkerer's Daemons.<br>"
|
||||
textlist += "No Tinkerer's Daemons.<br>"
|
||||
for(var/obj/structure/destructible/clockwork/massive/celestial_gateway/G in all_clockwork_objects)
|
||||
var/area/gate_area = get_area(G)
|
||||
desc += "Ark Location: <b>[uppertext(gate_area.map_name)]</b><br>"
|
||||
if(G.ratvar_portal)
|
||||
desc += "Seconds until Ratvar's arrival: <b>[G.get_arrival_text(TRUE)]</b><br>"
|
||||
textlist += "Ark Location: <b>[uppertext(gate_area.map_name)]</b><br>"
|
||||
if(G.still_needs_components())
|
||||
textlist += "Ark Components required: "
|
||||
for(var/i in G.required_components)
|
||||
if(G.required_components[i])
|
||||
textlist += "<b><font color=[get_component_color_bright(i)]>[G.required_components[i]]</font></b> "
|
||||
textlist += "<br>"
|
||||
else
|
||||
desc += "Seconds until Proselytization: <b>[G.get_arrival_text(TRUE)]</b><br>"
|
||||
if(G.ratvar_portal)
|
||||
textlist += "Seconds until Ratvar's arrival: <b>[G.get_arrival_text(TRUE)]</b><br>"
|
||||
else
|
||||
textlist += "Seconds until Proselytization: <b>[G.get_arrival_text(TRUE)]</b><br>"
|
||||
if(unconverted_ais_exist)
|
||||
if(unconverted_ais_exist > 1)
|
||||
desc += "<b>[unconverted_ais_exist] unconverted AIs exist!</b><br>"
|
||||
textlist += "<b>[unconverted_ais_exist] unconverted AIs exist!</b><br>"
|
||||
else
|
||||
desc += "<b>An unconverted AI exists!</b><br>"
|
||||
textlist += "<b>An unconverted AI exists!</b><br>"
|
||||
if(scripture_states[SCRIPTURE_REVENANT])
|
||||
var/inathneq_available = clockwork_generals_invoked["inath-neq"] <= world.time
|
||||
var/sevtug_available = clockwork_generals_invoked["sevtug"] <= world.time
|
||||
var/nezbere_available = clockwork_generals_invoked["nezbere"] <= world.time
|
||||
var/nezcrentr_available = clockwork_generals_invoked["nzcrentr"] <= world.time
|
||||
if(inathneq_available || sevtug_available || nezbere_available || nezcrentr_available)
|
||||
desc += "Generals available:<b>[inathneq_available ? "<br><font color=#1E8CE1>INATH-NEQ</font>":""][sevtug_available ? "<br><font color=#AF0AAF>SEVTUG</font>":""]\
|
||||
textlist += "Generals available:<b>[inathneq_available ? "<br><font color=#1E8CE1>INATH-NEQ</font>":""][sevtug_available ? "<br><font color=#AF0AAF>SEVTUG</font>":""]\
|
||||
[nezbere_available ? "<br><font color=#5A6068>NEZBERE</font>":""][nezcrentr_available ? "<br><font color=#DAAA18>NZCRENTR</font>":""]</b><br>"
|
||||
else
|
||||
desc += "Generals available: <b>NONE</b><br>"
|
||||
textlist += "Generals available: <b>NONE</b><br>"
|
||||
else
|
||||
desc += "Generals available: <b>NONE</b><br>"
|
||||
textlist += "Generals available: <b>NONE</b><br>"
|
||||
for(var/i in scripture_states)
|
||||
if(i != SCRIPTURE_DRIVER) //ignore the always-unlocked stuff
|
||||
desc += "[i] Scripture: <b>[scripture_states[i] ? "UNLOCKED":"LOCKED"]</b><br>"
|
||||
textlist += "[i] Scripture: <b>[scripture_states[i] ? "UNLOCKED":"LOCKED"]</b><br>"
|
||||
desc = textlist.Join()
|
||||
..()
|
||||
|
||||
//GUARDIANS
|
||||
|
||||
@@ -36,7 +36,12 @@
|
||||
|
||||
/datum/hud/proc/apply_parallax_pref()
|
||||
var/client/C = mymob.client
|
||||
if(C.prefs)
|
||||
if(C.prefs)
|
||||
var/pref = C.prefs.parallax
|
||||
if (isnull(pref))
|
||||
pref = PARALLAX_HIGH
|
||||
if (C.byond_version < 511)
|
||||
pref = PARALLAX_DISABLE
|
||||
switch(C.prefs.parallax)
|
||||
if (PARALLAX_INSANE)
|
||||
C.parallax_throttle = FALSE
|
||||
@@ -220,8 +225,9 @@
|
||||
/obj/screen/parallax_layer/proc/update_o(view)
|
||||
if (!view)
|
||||
view = world.view
|
||||
var/list/new_overlays = list()
|
||||
|
||||
var/count = Ceiling(view/(480/world.icon_size))+1
|
||||
var/list/new_overlays = new
|
||||
for(var/x in -count to count)
|
||||
for(var/y in -count to count)
|
||||
if(x == 0 && y == 0)
|
||||
@@ -229,8 +235,8 @@
|
||||
var/image/I = image(icon, null, icon_state)
|
||||
I.transform = matrix(1, 0, x*480, 0, 1, y*480)
|
||||
new_overlays += I
|
||||
|
||||
overlays = new_overlays
|
||||
cut_overlays()
|
||||
add_overlay(new_overlays)
|
||||
view_sized = view
|
||||
|
||||
/obj/screen/parallax_layer/layer_1
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
backdrop.transform = matrix(200, 0, 0, 0, 200, 0)
|
||||
backdrop.layer = BACKGROUND_LAYER
|
||||
backdrop.blend_mode = BLEND_OVERLAY
|
||||
overlays += backdrop
|
||||
add_overlay(backdrop)
|
||||
..()
|
||||
|
||||
/obj/screen/plane_master/game_world
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/obj/screen/Destroy()
|
||||
master = null
|
||||
hud = null
|
||||
return ..()
|
||||
|
||||
/obj/screen/examine(mob/user)
|
||||
@@ -664,3 +665,32 @@
|
||||
if(word_messages.len && talk_cooldown < world.time)
|
||||
talk_cooldown = world.time + 10
|
||||
L.say(pick(word_messages))
|
||||
|
||||
/obj/screen/splash
|
||||
icon = 'icons/misc/fullscreen.dmi'
|
||||
icon_state = "title"
|
||||
screen_loc = "1,1"
|
||||
layer = SPLASHSCREEN_LAYER
|
||||
plane = SPLASHSCREEN_PLANE
|
||||
var/client/holder
|
||||
|
||||
/obj/screen/splash/New(client/C, fadeout, qdel_after = TRUE)
|
||||
..()
|
||||
holder = C
|
||||
holder.screen += src
|
||||
var/titlescreen = TITLESCREEN
|
||||
if(titlescreen)
|
||||
icon_state = titlescreen
|
||||
if(fadeout)
|
||||
animate(src, alpha = 0, time = 30)
|
||||
else
|
||||
alpha = 0
|
||||
animate(src, alpha = 255, time = 30)
|
||||
if(qdel_after)
|
||||
QDEL_IN(src, 30)
|
||||
|
||||
/obj/screen/splash/Destroy()
|
||||
if(holder)
|
||||
holder.screen -= src
|
||||
holder = null
|
||||
return ..()
|
||||
@@ -60,6 +60,10 @@ var/global/list/milk_id_list = list("milk")
|
||||
//mentor stuff
|
||||
var/list/mentors = list()
|
||||
|
||||
//Looc stuff
|
||||
var/global/looc_allowed = 1
|
||||
var/global/dlooc_allowed = 1
|
||||
|
||||
/client/proc/reload_mentors()
|
||||
set name = "Reload Mentors"
|
||||
set category = "Admin"
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
var/autoadmin = 0
|
||||
var/autoadmin_rank = "Game Admin"
|
||||
|
||||
/datum/protected_configuration/SDQL_update()
|
||||
return FALSE
|
||||
|
||||
/datum/protected_configuration/vv_get_var(var_name)
|
||||
return debug_variable(var_name, "SECRET", 0, src)
|
||||
|
||||
@@ -76,6 +79,7 @@
|
||||
var/forumurl = "http://tgstation13.org/phpBB/index.php" //default forums
|
||||
var/rulesurl = "http://www.tgstation13.org/wiki/Rules" // default rules
|
||||
var/githuburl = "https://www.github.com/tgstation/-tg-station" //default github
|
||||
var/githubrepoid
|
||||
|
||||
var/forbid_singulo_possession = 0
|
||||
var/useircbot = 0
|
||||
@@ -247,15 +251,6 @@
|
||||
var/error_silence_time = 6000 // How long a unique error will be silenced for
|
||||
var/error_msg_delay = 50 // How long to wait between messaging admins about occurrences of a unique error
|
||||
|
||||
var/mentors_mobname_only = 0 // Only display mob name to mentors in mentorhelps
|
||||
var/mentor_legacy_system = 0 // Whether to use the legacy mentor system (flat file) instead of SQL
|
||||
// Discord crap.
|
||||
var/discord_url = "hfdksjhfa.com"
|
||||
var/discord_password
|
||||
var/announce_watchlist = 0
|
||||
var/announce_adminhelps = 0
|
||||
|
||||
|
||||
/datum/configuration/New()
|
||||
gamemode_cache = typecacheof(/datum/game_mode,TRUE)
|
||||
for(var/T in gamemode_cache)
|
||||
@@ -367,7 +362,7 @@
|
||||
if("servername")
|
||||
config.server_name = value
|
||||
if("serversqlname")
|
||||
config.server_sql_name = 1
|
||||
config.server_sql_name = value
|
||||
if("stationname")
|
||||
config.station_name = value
|
||||
if("hostedby")
|
||||
@@ -384,6 +379,8 @@
|
||||
config.rulesurl = value
|
||||
if("githuburl")
|
||||
config.githuburl = value
|
||||
if("githubrepoid")
|
||||
config.githubrepoid = value
|
||||
if("guest_jobban")
|
||||
config.guest_jobban = 1
|
||||
if("guest_ban")
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
/datum/configuration
|
||||
var/mentors_mobname_only = 0 // Only display mob name to mentors in mentorhelps
|
||||
var/mentor_legacy_system = 0 // Whether to use the legacy mentor system (flat file) instead of SQL
|
||||
// Discord crap.
|
||||
var/discord_url = "hfdksjhfa.com"
|
||||
var/discord_password
|
||||
var/announce_watchlist = 0
|
||||
var/announce_adminhelps = 0
|
||||
@@ -39,6 +39,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
|
||||
var/make_runtime = 0
|
||||
|
||||
var/initializations_finished_with_no_players_logged_in //I wonder what this could be?
|
||||
// Has round started? (So we know what subsystems to run)
|
||||
var/round_started = 0
|
||||
|
||||
@@ -49,6 +50,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
var/datum/subsystem/queue_tail //End of queue linked list (used for appending to the list)
|
||||
var/queue_priority_count = 0 //Running total so that we don't have to loop thru the queue each run to split up the tick
|
||||
var/queue_priority_count_bg = 0 //Same, but for background subsystems
|
||||
var/map_loading = FALSE //Are we loading in a new map?
|
||||
|
||||
/datum/controller/master/New()
|
||||
// Highlander-style: there can only be one! Kill off the old and replace it with the new.
|
||||
@@ -129,24 +131,29 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
// Sort subsystems by init_order, so they initialize in the correct order.
|
||||
sortTim(subsystems, /proc/cmp_subsystem_init)
|
||||
|
||||
var/start_timeofday = REALTIMEOFDAY
|
||||
// Initialize subsystems.
|
||||
CURRENT_TICKLIMIT = config.tick_limit_mc_init
|
||||
for (var/datum/subsystem/SS in subsystems)
|
||||
if (SS.flags & SS_NO_INIT)
|
||||
continue
|
||||
SS.Initialize(world.timeofday)
|
||||
SS.Initialize(REALTIMEOFDAY)
|
||||
CHECK_TICK
|
||||
CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
var/time = (REALTIMEOFDAY - start_timeofday) / 10
|
||||
|
||||
world << "<span class='boldannounce'>Initializations complete!</span>"
|
||||
log_world("Initializations complete.")
|
||||
var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!"
|
||||
world << "<span class='boldannounce'>[msg]</span>"
|
||||
log_world(msg)
|
||||
|
||||
// Sort subsystems by display setting for easy access.
|
||||
sortTim(subsystems, /proc/cmp_subsystem_display)
|
||||
// Set world options.
|
||||
world.sleep_offline = 1
|
||||
world.fps = config.fps
|
||||
var/initialized_tod = REALTIMEOFDAY
|
||||
sleep(1)
|
||||
initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10
|
||||
// Loop.
|
||||
Master.StartProcessing(0)
|
||||
|
||||
@@ -224,7 +231,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
normalsubsystems += tickersubsystems
|
||||
lobbysubsystems += tickersubsystems
|
||||
|
||||
init_timeofday = world.timeofday
|
||||
init_timeofday = REALTIMEOFDAY
|
||||
init_time = world.time
|
||||
|
||||
iteration = 1
|
||||
@@ -233,7 +240,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
var/list/subsystems_to_check
|
||||
//the actual loop.
|
||||
while (1)
|
||||
tickdrift = max(0, MC_AVERAGE_FAST(tickdrift, (((world.timeofday - init_timeofday) - (world.time - init_time)) / world.tick_lag)))
|
||||
tickdrift = max(0, MC_AVERAGE_FAST(tickdrift, (((REALTIMEOFDAY - init_timeofday) - (world.time - init_time)) / world.tick_lag)))
|
||||
if (processing <= 0)
|
||||
CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
sleep(10)
|
||||
@@ -496,3 +503,17 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%))")
|
||||
stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration])"))
|
||||
|
||||
/datum/controller/master/proc/StartLoadingMap()
|
||||
//disallow more than one map to load at once, multithreading it will just cause race conditions
|
||||
while(map_loading)
|
||||
stoplag()
|
||||
for(var/S in subsystems)
|
||||
var/datum/subsystem/SS = S
|
||||
SS.StartLoadingMap()
|
||||
map_loading = TRUE
|
||||
|
||||
/datum/controller/master/proc/StopLoadingMap(bounds = null)
|
||||
map_loading = FALSE
|
||||
for(var/S in subsystems)
|
||||
var/datum/subsystem/SS = S
|
||||
SS.StopLoadingMap()
|
||||
@@ -154,8 +154,8 @@
|
||||
|
||||
//used to initialize the subsystem AFTER the map has loaded
|
||||
/datum/subsystem/proc/Initialize(start_timeofday)
|
||||
var/time = (world.timeofday - start_timeofday) / 10
|
||||
var/msg = "Initialized [name] subsystem within [time] seconds!"
|
||||
var/time = (REALTIMEOFDAY - start_timeofday) / 10
|
||||
var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!"
|
||||
world << "<span class='boldannounce'>[msg]</span>"
|
||||
log_world(msg)
|
||||
return time
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
|
||||
|
||||
if(can_fire)
|
||||
if(can_fire && !(SS_NO_FIRE in flags))
|
||||
msg = "[round(cost,1)]ms|[round(tick_usage,1)]%|[round(ticks,0.1)]\t[msg]"
|
||||
else
|
||||
msg = "OFFLINE\t[msg]"
|
||||
@@ -211,3 +211,8 @@
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
//when we enter dmm_suite.load_map
|
||||
/datum/subsystem/proc/StartLoadingMap()
|
||||
|
||||
//when we exit dmm_suite.load_map
|
||||
/datum/subsystem/proc/StopLoadingMap()
|
||||
@@ -34,8 +34,7 @@ var/datum/subsystem/acid/SSacid
|
||||
|
||||
if(O.acid_level && O.acid_processing())
|
||||
else
|
||||
O.overlays -= acid_overlay
|
||||
O.priority_overlays -= acid_overlay
|
||||
O.cut_overlay(acid_overlay, TRUE)
|
||||
processing -= O
|
||||
|
||||
if (MC_TICK_CHECK)
|
||||
|
||||
@@ -268,11 +268,11 @@ var/datum/subsystem/air/SSair
|
||||
else
|
||||
T.requires_activation = TRUE
|
||||
|
||||
/datum/subsystem/air/proc/begin_map_load()
|
||||
/datum/subsystem/air/StartLoadingMap()
|
||||
LAZYINITLIST(queued_for_activation)
|
||||
map_loading = TRUE
|
||||
|
||||
/datum/subsystem/air/proc/end_map_load()
|
||||
/datum/subsystem/air/StopLoadingMap()
|
||||
map_loading = FALSE
|
||||
for(var/T in queued_for_activation)
|
||||
add_to_active(T)
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
var/datum/subsystem/atoms/SSatoms
|
||||
|
||||
#define INITIALIZATION_INSSATOMS 0 //New should not call Initialize
|
||||
#define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE)
|
||||
#define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE)
|
||||
|
||||
/datum/subsystem/atoms
|
||||
name = "Atoms"
|
||||
init_order = 11
|
||||
flags = SS_NO_FIRE
|
||||
|
||||
var/initialized = INITIALIZATION_INSSATOMS
|
||||
var/old_initialized
|
||||
|
||||
/datum/subsystem/atoms/New()
|
||||
NEW_SS_GLOBAL(SSatoms)
|
||||
|
||||
/datum/subsystem/atoms/Initialize(timeofday)
|
||||
fire_overlay.appearance_flags = RESET_COLOR
|
||||
setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
|
||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||
InitializeAtoms()
|
||||
return ..()
|
||||
|
||||
/datum/subsystem/atoms/proc/InitializeAtoms(list/atoms = null)
|
||||
if(initialized == INITIALIZATION_INSSATOMS)
|
||||
return
|
||||
|
||||
var/list/late_loaders
|
||||
|
||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||
|
||||
if(atoms)
|
||||
for(var/I in atoms)
|
||||
var/atom/A = I
|
||||
if(!A.initialized) //this check is to make sure we don't call it twice on an object that was created in a previous Initialize call
|
||||
var/start_tick = world.time
|
||||
if(A.Initialize(TRUE))
|
||||
LAZYADD(late_loaders, A)
|
||||
if(start_tick != world.time)
|
||||
WARNING("[A]: [A.type] slept during it's Initialize!")
|
||||
CHECK_TICK
|
||||
testing("Initialized [atoms.len] atoms")
|
||||
else
|
||||
#ifdef TESTING
|
||||
var/count = 0
|
||||
#endif
|
||||
for(var/atom/A in world)
|
||||
if(!A.initialized) //this check is to make sure we don't call it twice on an object that was created in a previous Initialize call
|
||||
var/start_tick = world.time
|
||||
if(A.Initialize(TRUE))
|
||||
LAZYADD(late_loaders, A)
|
||||
#ifdef TESTING
|
||||
else
|
||||
++count
|
||||
#endif TESTING
|
||||
if(start_tick != world.time)
|
||||
WARNING("[A]: [A.type] slept during it's Initialize!")
|
||||
CHECK_TICK
|
||||
testing("Roundstart initialized [count] atoms")
|
||||
|
||||
initialized = INITIALIZATION_INNEW_REGULAR
|
||||
|
||||
if(late_loaders)
|
||||
for(var/I in late_loaders)
|
||||
var/atom/A = I
|
||||
var/start_tick = world.time
|
||||
A.Initialize(FALSE)
|
||||
if(start_tick != world.time)
|
||||
WARNING("[A]: [A.type] slept during it's Initialize!")
|
||||
CHECK_TICK
|
||||
testing("Late-initialized [late_loaders.len] atoms")
|
||||
|
||||
/datum/subsystem/atoms/proc/map_loader_begin()
|
||||
old_initialized = initialized
|
||||
initialized = INITIALIZATION_INSSATOMS
|
||||
|
||||
/datum/subsystem/atoms/proc/map_loader_stop()
|
||||
initialized = old_initialized
|
||||
|
||||
/datum/subsystem/atoms/Recover()
|
||||
initialized = SSatoms.initialized
|
||||
if(initialized == INITIALIZATION_INNEW_MAPLOAD)
|
||||
InitializeAtoms()
|
||||
old_initialized = SSatoms.old_initialized
|
||||
|
||||
/datum/subsystem/atoms/proc/setupGenetics()
|
||||
var/list/avnums = new /list(DNA_STRUC_ENZYMES_BLOCKS)
|
||||
for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++)
|
||||
avnums[i] = i
|
||||
CHECK_TICK
|
||||
|
||||
for(var/A in subtypesof(/datum/mutation/human))
|
||||
var/datum/mutation/human/B = new A()
|
||||
if(B.dna_block == NON_SCANNABLE)
|
||||
continue
|
||||
B.dna_block = pick_n_take(avnums)
|
||||
if(B.quality == POSITIVE)
|
||||
good_mutations |= B
|
||||
else if(B.quality == NEGATIVE)
|
||||
bad_mutations |= B
|
||||
else if(B.quality == MINOR_NEGATIVE)
|
||||
not_good_mutations |= B
|
||||
CHECK_TICK
|
||||
@@ -24,6 +24,7 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
|
||||
var/list/didntgc = list() // list of all types that have failed to GC associated with the number of times that's happened.
|
||||
// the types are stored as strings
|
||||
var/list/sleptDestroy = list() //Same as above but these are paths that slept during their Destroy call
|
||||
|
||||
var/list/noqdelhint = list()// list of all types that do not return a QDEL_HINT
|
||||
// all types that did not respect qdel(A, force=TRUE) and returned one
|
||||
@@ -168,13 +169,17 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
del(D)
|
||||
else if(isnull(D.gc_destroyed))
|
||||
D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED
|
||||
var/start_time = world.time
|
||||
var/hint = D.Destroy(force) // Let our friend know they're about to get fucked up.
|
||||
if(world.time != start_time)
|
||||
SSgarbage.sleptDestroy["[D.type]"]++
|
||||
if(!D)
|
||||
return
|
||||
switch(hint)
|
||||
if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion.
|
||||
SSgarbage.QueueForQueuing(D)
|
||||
if (QDEL_HINT_IWILLGC)
|
||||
D.gc_destroyed = world.time
|
||||
return
|
||||
if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory.
|
||||
if(!force)
|
||||
@@ -346,8 +351,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
//if find_references isn't working for some datum
|
||||
//update this list using tools/DMTreeToGlobalsList
|
||||
/datum/proc/find_references_in_globals()
|
||||
SearchVar(last_irc_status)
|
||||
SearchVar(failed_db_connections)
|
||||
SearchVar(nextmap)
|
||||
SearchVar(mapchanging)
|
||||
SearchVar(rebootingpendingmapchange)
|
||||
@@ -554,12 +557,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
SearchVar(ruin_landmarks)
|
||||
SearchVar(awaydestinations)
|
||||
SearchVar(sortedAreas)
|
||||
SearchVar(map_templates)
|
||||
SearchVar(ruins_templates)
|
||||
SearchVar(space_ruins_templates)
|
||||
SearchVar(lava_ruins_templates)
|
||||
SearchVar(shuttle_templates)
|
||||
SearchVar(shelter_templates)
|
||||
SearchVar(transit_markers)
|
||||
SearchVar(clients)
|
||||
SearchVar(admins)
|
||||
@@ -684,8 +681,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
SearchVar(wire_colors)
|
||||
SearchVar(wire_color_directory)
|
||||
SearchVar(wire_name_directory)
|
||||
SearchVar(possiblethemes)
|
||||
SearchVar(max_secret_rooms)
|
||||
SearchVar(blood_splatter_icons)
|
||||
SearchVar(all_radios)
|
||||
SearchVar(radiochannels)
|
||||
@@ -796,7 +791,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
SearchVar(brass_recipes)
|
||||
SearchVar(disposalpipeID2State)
|
||||
SearchVar(RPD_recipes)
|
||||
SearchVar(highlander_claymores)
|
||||
SearchVar(biblenames)
|
||||
SearchVar(biblestates)
|
||||
SearchVar(bibleitemstates)
|
||||
@@ -842,7 +836,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
SearchVar(pipenetwarnings)
|
||||
SearchVar(the_gateway)
|
||||
SearchVar(potentialRandomZlevels)
|
||||
SearchVar(maploader)
|
||||
SearchVar(use_preloader)
|
||||
SearchVar(_preloader)
|
||||
SearchVar(swapmaps_iconcache)
|
||||
|
||||
@@ -2,13 +2,21 @@ var/datum/subsystem/mapping/SSmapping
|
||||
|
||||
/datum/subsystem/mapping
|
||||
name = "Mapping"
|
||||
init_order = 13
|
||||
init_order = 12
|
||||
flags = SS_NO_FIRE
|
||||
display_order = 50
|
||||
|
||||
var/list/nuke_tiles = list()
|
||||
var/list/nuke_threats = list()
|
||||
|
||||
var/list/map_templates = list()
|
||||
|
||||
var/list/ruins_templates = list()
|
||||
var/list/space_ruins_templates = list()
|
||||
var/list/lava_ruins_templates = list()
|
||||
|
||||
var/list/shuttle_templates = list()
|
||||
var/list/shelter_templates = list()
|
||||
|
||||
/datum/subsystem/mapping/New()
|
||||
NEW_SS_GLOBAL(SSmapping)
|
||||
@@ -25,8 +33,6 @@ var/datum/subsystem/mapping/SSmapping
|
||||
if (mining_type == "lavaland")
|
||||
seedRuins(list(5), config.lavaland_budget, /area/lavaland/surface/outdoors, lava_ruins_templates)
|
||||
spawn_rivers()
|
||||
else
|
||||
make_mining_asteroid_secrets()
|
||||
|
||||
// deep space ruins
|
||||
var/space_zlevels = list()
|
||||
@@ -68,3 +74,67 @@ var/datum/subsystem/mapping/SSmapping
|
||||
|
||||
/datum/subsystem/mapping/Recover()
|
||||
flags |= SS_NO_INIT
|
||||
map_templates = SSmapping.map_templates
|
||||
ruins_templates = SSmapping.ruins_templates
|
||||
space_ruins_templates = SSmapping.space_ruins_templates
|
||||
lava_ruins_templates = SSmapping.lava_ruins_templates
|
||||
shuttle_templates = SSmapping.shuttle_templates
|
||||
shelter_templates = SSmapping.shelter_templates
|
||||
|
||||
/datum/subsystem/mapping/proc/preloadTemplates(path = "_maps/templates/") //see master controller setup
|
||||
var/list/filelist = flist(path)
|
||||
for(var/map in filelist)
|
||||
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
|
||||
map_templates[T.name] = T
|
||||
|
||||
preloadRuinTemplates()
|
||||
preloadShuttleTemplates()
|
||||
preloadShelterTemplates()
|
||||
|
||||
/datum/subsystem/mapping/proc/preloadRuinTemplates()
|
||||
// Still supporting bans by filename
|
||||
var/list/banned = generateMapList("config/lavaruinblacklist.txt")
|
||||
banned += generateMapList("config/spaceruinblacklist.txt")
|
||||
|
||||
for(var/item in subtypesof(/datum/map_template/ruin))
|
||||
var/datum/map_template/ruin/ruin_type = item
|
||||
// screen out the abstract subtypes
|
||||
if(!initial(ruin_type.id))
|
||||
continue
|
||||
var/datum/map_template/ruin/R = new ruin_type()
|
||||
|
||||
if(banned.Find(R.mappath))
|
||||
continue
|
||||
|
||||
map_templates[R.name] = R
|
||||
ruins_templates[R.name] = R
|
||||
|
||||
if(istype(R, /datum/map_template/ruin/lavaland))
|
||||
lava_ruins_templates[R.name] = R
|
||||
else if(istype(R, /datum/map_template/ruin/space))
|
||||
space_ruins_templates[R.name] = R
|
||||
|
||||
/datum/subsystem/mapping/proc/preloadShuttleTemplates()
|
||||
var/list/unbuyable = generateMapList("config/unbuyableshuttles.txt")
|
||||
|
||||
for(var/item in subtypesof(/datum/map_template/shuttle))
|
||||
var/datum/map_template/shuttle/shuttle_type = item
|
||||
if(!(initial(shuttle_type.suffix)))
|
||||
continue
|
||||
|
||||
var/datum/map_template/shuttle/S = new shuttle_type()
|
||||
if(unbuyable.Find(S.mappath))
|
||||
S.can_be_bought = FALSE
|
||||
|
||||
shuttle_templates[S.shuttle_id] = S
|
||||
map_templates[S.shuttle_id] = S
|
||||
|
||||
/datum/subsystem/mapping/proc/preloadShelterTemplates()
|
||||
for(var/item in subtypesof(/datum/map_template/shelter))
|
||||
var/datum/map_template/shelter/shelter_type = item
|
||||
if(!(initial(shelter_type.mappath)))
|
||||
continue
|
||||
var/datum/map_template/shelter/S = new shelter_type()
|
||||
|
||||
shelter_templates[S.shelter_id] = S
|
||||
map_templates[S.shelter_id] = S
|
||||
@@ -1,89 +1,17 @@
|
||||
var/datum/subsystem/objects/SSobj
|
||||
|
||||
#define INITIALIZATION_INSSOBJ 0 //New should not call Initialize
|
||||
#define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE)
|
||||
#define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE)
|
||||
|
||||
/datum/subsystem/objects
|
||||
name = "Objects"
|
||||
init_order = 12
|
||||
priority = 40
|
||||
flags = SS_NO_INIT
|
||||
|
||||
var/initialized = INITIALIZATION_INSSOBJ
|
||||
var/old_initialized
|
||||
var/list/processing = list()
|
||||
var/list/currentrun = list()
|
||||
|
||||
/datum/subsystem/objects/New()
|
||||
NEW_SS_GLOBAL(SSobj)
|
||||
|
||||
/datum/subsystem/objects/Initialize(timeofdayl)
|
||||
fire_overlay.appearance_flags = RESET_COLOR
|
||||
setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
|
||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||
InitializeAtoms()
|
||||
. = ..()
|
||||
|
||||
/datum/subsystem/objects/proc/InitializeAtoms(list/objects = null)
|
||||
if(initialized == INITIALIZATION_INSSOBJ)
|
||||
return
|
||||
|
||||
var/list/late_loaders
|
||||
|
||||
initialized = INITIALIZATION_INNEW_MAPLOAD
|
||||
|
||||
if(objects)
|
||||
for(var/I in objects)
|
||||
var/atom/A = I
|
||||
if(!A.initialized) //this check is to make sure we don't call it twice on an object that was created in a previous Initialize call
|
||||
var/start_tick = world.time
|
||||
if(A.Initialize(TRUE))
|
||||
LAZYADD(late_loaders, A)
|
||||
if(start_tick != world.time)
|
||||
WARNING("[A]: [A.type] slept during it's Initialize!")
|
||||
CHECK_TICK
|
||||
testing("Initialized [objects.len] atoms")
|
||||
else
|
||||
#ifdef TESTING
|
||||
var/count = 0
|
||||
#endif
|
||||
for(var/atom/A in world)
|
||||
if(!A.initialized) //this check is to make sure we don't call it twice on an object that was created in a previous Initialize call
|
||||
var/start_tick = world.time
|
||||
if(A.Initialize(TRUE))
|
||||
LAZYADD(late_loaders, A)
|
||||
#ifdef TESTING
|
||||
else
|
||||
++count
|
||||
#endif TESTING
|
||||
if(start_tick != world.time)
|
||||
WARNING("[A]: [A.type] slept during it's Initialize!")
|
||||
CHECK_TICK
|
||||
testing("Roundstart initialized [count] atoms")
|
||||
|
||||
initialized = INITIALIZATION_INNEW_REGULAR
|
||||
|
||||
if(late_loaders)
|
||||
for(var/I in late_loaders)
|
||||
var/atom/A = I
|
||||
var/start_tick = world.time
|
||||
A.Initialize(FALSE)
|
||||
if(start_tick != world.time)
|
||||
WARNING("[A]: [A.type] slept during it's Initialize!")
|
||||
CHECK_TICK
|
||||
testing("Late-initialized [late_loaders.len] atoms")
|
||||
|
||||
/datum/subsystem/objects/proc/map_loader_begin()
|
||||
old_initialized = initialized
|
||||
initialized = INITIALIZATION_INSSOBJ
|
||||
|
||||
/datum/subsystem/objects/proc/map_loader_stop()
|
||||
initialized = old_initialized
|
||||
|
||||
/datum/subsystem/objects/stat_entry()
|
||||
..("P:[processing.len]")
|
||||
|
||||
|
||||
/datum/subsystem/objects/fire(resumed = 0)
|
||||
if (!resumed)
|
||||
src.currentrun = processing.Copy()
|
||||
@@ -101,10 +29,4 @@ var/datum/subsystem/objects/SSobj
|
||||
return
|
||||
|
||||
/datum/subsystem/objects/Recover()
|
||||
initialized = SSobj.initialized
|
||||
if(initialized == INITIALIZATION_INNEW_MAPLOAD)
|
||||
InitializeAtoms()
|
||||
old_initialized = SSobj.old_initialized
|
||||
|
||||
if (istype(SSobj.processing))
|
||||
processing = SSobj.processing
|
||||
processing = SSobj.processing
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
var/datum/subsystem/processing/overlays/SSoverlays
|
||||
|
||||
/datum/subsystem/processing/overlays
|
||||
name = "Overlay"
|
||||
flags = SS_TICKER|SS_FIRE_IN_LOBBY
|
||||
wait = 1
|
||||
priority = 500
|
||||
init_order = -6
|
||||
|
||||
stat_tag = "Ov"
|
||||
currentrun = null
|
||||
var/list/overlay_icon_state_caches
|
||||
var/initialized = FALSE
|
||||
|
||||
/datum/subsystem/processing/overlays/New()
|
||||
NEW_SS_GLOBAL(SSoverlays)
|
||||
LAZYINITLIST(overlay_icon_state_caches)
|
||||
|
||||
/datum/subsystem/processing/overlays/Initialize()
|
||||
initialized = TRUE
|
||||
for(var/I in processing)
|
||||
var/atom/A = I
|
||||
A.compile_overlays()
|
||||
CHECK_TICK
|
||||
processing.Cut()
|
||||
..()
|
||||
|
||||
/datum/subsystem/processing/overlays/Recover()
|
||||
overlay_icon_state_caches = SSoverlays.overlay_icon_state_caches
|
||||
processing = SSoverlays.processing
|
||||
|
||||
/datum/subsystem/processing/overlays/fire()
|
||||
while(processing.len)
|
||||
var/atom/thing = processing[processing.len]
|
||||
processing.len--
|
||||
if(thing)
|
||||
thing.compile_overlays(FALSE)
|
||||
if(MC_TICK_CHECK)
|
||||
break
|
||||
|
||||
/atom/proc/compile_overlays()
|
||||
if(LAZYLEN(priority_overlays) && LAZYLEN(our_overlays))
|
||||
overlays = our_overlays + priority_overlays
|
||||
else if(LAZYLEN(our_overlays))
|
||||
overlays = our_overlays
|
||||
else if(LAZYLEN(priority_overlays))
|
||||
overlays = priority_overlays
|
||||
else
|
||||
overlays.Cut()
|
||||
flags &= ~OVERLAY_QUEUED
|
||||
|
||||
/atom/proc/iconstate2appearance(iconstate)
|
||||
var/static/image/stringbro = new()
|
||||
var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
|
||||
var/list/cached_icon = icon_states_cache[icon]
|
||||
if (cached_icon)
|
||||
var/cached_appearance = cached_icon["[iconstate]"]
|
||||
if (cached_appearance)
|
||||
return cached_appearance
|
||||
stringbro.icon = icon
|
||||
stringbro.icon_state = iconstate
|
||||
if (!cached_icon) //not using the macro to save an associated lookup
|
||||
cached_icon = list()
|
||||
icon_states_cache[icon] = cached_icon
|
||||
var/cached_appearance = stringbro.appearance
|
||||
cached_icon["[iconstate]"] = cached_appearance
|
||||
return cached_appearance
|
||||
|
||||
#define NOT_QUEUED_ALREADY (!(flags & OVERLAY_QUEUED))
|
||||
#define QUEUE_FOR_COMPILE flags |= OVERLAY_QUEUED; SSoverlays.processing += src;
|
||||
/atom/proc/cut_overlays(priority = FALSE)
|
||||
var/list/cached_overlays = our_overlays
|
||||
var/list/cached_priority = priority_overlays
|
||||
|
||||
var/need_compile = FALSE
|
||||
|
||||
if(LAZYLEN(cached_overlays)) //don't queue empty lists, don't cut priority overlays
|
||||
cached_overlays.Cut() //clear regular overlays
|
||||
need_compile = TRUE
|
||||
|
||||
if(priority && LAZYLEN(cached_priority))
|
||||
cached_priority.Cut()
|
||||
need_compile = TRUE
|
||||
|
||||
if(NOT_QUEUED_ALREADY && need_compile)
|
||||
QUEUE_FOR_COMPILE
|
||||
|
||||
/atom/proc/cut_overlay(list/overlays, priority)
|
||||
var/static/image/appearance_bro = new()
|
||||
if(!overlays)
|
||||
return
|
||||
|
||||
if (!islist(overlays))
|
||||
overlays = list(overlays)
|
||||
else
|
||||
listclearnulls(overlays)
|
||||
for (var/i in 1 to length(overlays))
|
||||
if (istext(overlays[i]))
|
||||
overlays[i] = iconstate2appearance(overlays[i])
|
||||
else
|
||||
var/image/I = overlays[i]
|
||||
appearance_bro.appearance = overlays[i]
|
||||
appearance_bro.dir = I.dir
|
||||
overlays[i] = appearance_bro.appearance
|
||||
|
||||
var/list/cached_overlays = our_overlays //sanic
|
||||
var/list/cached_priority = priority_overlays
|
||||
var/init_o_len = LAZYLEN(cached_overlays)
|
||||
var/init_p_len = LAZYLEN(cached_priority) //starter pokemon
|
||||
|
||||
LAZYREMOVE(cached_overlays, overlays)
|
||||
if(priority)
|
||||
LAZYREMOVE(cached_priority, overlays)
|
||||
|
||||
if(NOT_QUEUED_ALREADY && ((init_o_len != LAZYLEN(cached_priority)) || (init_p_len != LAZYLEN(cached_overlays))))
|
||||
QUEUE_FOR_COMPILE
|
||||
|
||||
/atom/proc/add_overlay(list/overlays, priority = FALSE)
|
||||
var/static/image/appearance_bro = new()
|
||||
if(!overlays)
|
||||
return
|
||||
|
||||
if (!islist(overlays))
|
||||
overlays = list(overlays)
|
||||
else
|
||||
listclearnulls(overlays)
|
||||
for (var/i in 1 to length(overlays))
|
||||
if (istext(overlays[i]))
|
||||
overlays[i] = iconstate2appearance(overlays[i])
|
||||
else
|
||||
var/image/I = overlays[i]
|
||||
appearance_bro.appearance = overlays[i]
|
||||
appearance_bro.dir = I.dir
|
||||
overlays[i] = appearance_bro.appearance
|
||||
|
||||
LAZYINITLIST(our_overlays) //always initialized after this point
|
||||
LAZYINITLIST(priority_overlays)
|
||||
|
||||
var/list/cached_overlays = our_overlays //sanic
|
||||
var/list/cached_priority = priority_overlays
|
||||
var/init_o_len = cached_overlays.len
|
||||
var/init_p_len = cached_priority.len //starter pokemon
|
||||
var/need_compile
|
||||
|
||||
if(priority)
|
||||
cached_priority += overlays //or in the image. Can we use [image] = image?
|
||||
need_compile = init_p_len != cached_priority.len
|
||||
else
|
||||
cached_overlays += overlays
|
||||
need_compile = init_o_len != cached_overlays.len
|
||||
|
||||
if(NOT_QUEUED_ALREADY && need_compile) //have we caught more pokemon?
|
||||
QUEUE_FOR_COMPILE
|
||||
|
||||
/atom/proc/copy_overlays(atom/other, cut_old = FALSE) //copys our_overlays from another atom
|
||||
if(!other)
|
||||
if(cut_old)
|
||||
cut_overlays()
|
||||
return
|
||||
|
||||
var/list/cached_other = other.our_overlays
|
||||
if(cached_other)
|
||||
if(cut_old)
|
||||
our_overlays = cached_other.Copy()
|
||||
else
|
||||
our_overlays |= cached_other
|
||||
if(NOT_QUEUED_ALREADY)
|
||||
QUEUE_FOR_COMPILE
|
||||
else if(cut_old)
|
||||
cut_overlays()
|
||||
|
||||
#undef NOT_QUEUED_ALREADY
|
||||
#undef QUEUE_FOR_COMPILE
|
||||
|
||||
//TODO: Better solution for these?
|
||||
/image/proc/add_overlay(x)
|
||||
overlays += x
|
||||
|
||||
/image/proc/cut_overlay(x)
|
||||
overlays -= x
|
||||
|
||||
/image/proc/cut_overlays(x)
|
||||
overlays.Cut()
|
||||
@@ -1,10 +1,12 @@
|
||||
#define ROUND_START_MUSIC_LIST "strings/round_start_sounds.txt"
|
||||
|
||||
var/round_start_time = 0
|
||||
|
||||
var/datum/subsystem/ticker/ticker
|
||||
|
||||
/datum/subsystem/ticker
|
||||
name = "Ticker"
|
||||
init_order = 0
|
||||
init_order = 13
|
||||
|
||||
priority = 200
|
||||
flags = SS_FIRE_IN_LOBBY|SS_KEEP_TIMING
|
||||
@@ -39,7 +41,8 @@ var/datum/subsystem/ticker/ticker
|
||||
var/tipped = 0 //Did we broadcast the tip of the day yet?
|
||||
var/selected_tip // What will be the tip of the day?
|
||||
|
||||
var/timeLeft = 1200 //pregame timer
|
||||
var/timeLeft //pregame timer
|
||||
var/start_at
|
||||
|
||||
var/totalPlayers = 0 //used for pregame stats on statpanel
|
||||
var/totalPlayersReady = 0 //used for pregame stats on statpanel
|
||||
@@ -57,30 +60,36 @@ var/datum/subsystem/ticker/ticker
|
||||
|
||||
/datum/subsystem/ticker/New()
|
||||
NEW_SS_GLOBAL(ticker)
|
||||
|
||||
login_music = pickweight(list('sound/ambience/title2.ogg' = 15, 'sound/ambience/title1.ogg' =15, 'sound/ambience/title3.ogg' =14, 'sound/ambience/title4.ogg' =14, 'sound/misc/i_did_not_grief_them.ogg' =14, 'sound/ambience/clown.ogg' = 9)) // choose title music!
|
||||
if(SSevent.holidays && SSevent.holidays[APRIL_FOOLS])
|
||||
login_music = 'sound/ambience/clown.ogg'
|
||||
else
|
||||
var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n")
|
||||
login_music = pick(music)
|
||||
|
||||
/datum/subsystem/ticker/Initialize(timeofday)
|
||||
var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n")
|
||||
login_music = pick(music)
|
||||
if(!syndicate_code_phrase)
|
||||
syndicate_code_phrase = generate_code_phrase()
|
||||
if(!syndicate_code_response)
|
||||
syndicate_code_response = generate_code_phrase()
|
||||
..()
|
||||
start_at = world.time + (config.lobby_countdown * 10)
|
||||
|
||||
/datum/subsystem/ticker/fire()
|
||||
switch(current_state)
|
||||
if(GAME_STATE_STARTUP)
|
||||
timeLeft = config.lobby_countdown * 10
|
||||
world << "<span class='boldnotice'>Welcome to [station_name()]!</span>"
|
||||
world << "Please set up your character and select \"Ready\". The game will start in [config.lobby_countdown] seconds."
|
||||
current_state = GAME_STATE_PREGAME
|
||||
if(Master.initializations_finished_with_no_players_logged_in)
|
||||
start_at = world.time + (config.lobby_countdown * 10)
|
||||
for(var/client/C in clients)
|
||||
window_flash(C, ignorepref = TRUE) //let them know lobby has opened up.
|
||||
|
||||
world << "<span class='boldnotice'>Welcome to [station_name()]!</span>"
|
||||
current_state = GAME_STATE_PREGAME
|
||||
fire()
|
||||
if(GAME_STATE_PREGAME)
|
||||
//lobby stats for statpanels
|
||||
if(isnull(timeLeft))
|
||||
timeLeft = max(0,start_at - world.time)
|
||||
totalPlayers = 0
|
||||
totalPlayersReady = 0
|
||||
for(var/mob/new_player/player in player_list)
|
||||
@@ -96,7 +105,7 @@ var/datum/subsystem/ticker/ticker
|
||||
return
|
||||
timeLeft -= wait
|
||||
|
||||
if(timeLeft <= 1200 && !modevoted) //Vote for the round type
|
||||
if(timeLeft <= config.lobby_countdown && !modevoted) //Vote for the round type
|
||||
send_gamemode_vote()
|
||||
modevoted = TRUE
|
||||
|
||||
@@ -551,11 +560,17 @@ var/datum/subsystem/ticker/ticker
|
||||
CHECK_TICK
|
||||
|
||||
//Adds the del() log to world.log in a format condensable by the runtime condenser found in tools
|
||||
if(SSgarbage.didntgc.len)
|
||||
if(SSgarbage.didntgc.len || SSgarbage.sleptDestroy.len)
|
||||
var/dellog = ""
|
||||
for(var/path in SSgarbage.didntgc)
|
||||
dellog += "Path : [path] \n"
|
||||
dellog += "Failures : [SSgarbage.didntgc[path]] \n"
|
||||
if(path in SSgarbage.sleptDestroy)
|
||||
dellog += "Sleeps : [SSgarbage.sleptDestroy[path]] \n"
|
||||
SSgarbage.sleptDestroy -= path
|
||||
for(var/path in SSgarbage.sleptDestroy)
|
||||
dellog += "Path : [path] \n"
|
||||
dellog += "Sleeps : [SSgarbage.sleptDestroy[path]] \n"
|
||||
log_world(dellog)
|
||||
|
||||
CHECK_TICK
|
||||
@@ -716,3 +731,14 @@ var/datum/subsystem/ticker/ticker
|
||||
|
||||
if(news_message)
|
||||
send2otherserver(news_source, news_message,"News_Report")
|
||||
|
||||
/datum/subsystem/ticker/proc/GetTimeLeft()
|
||||
if(isnull(ticker.timeLeft))
|
||||
return max(0, start_at - world.time)
|
||||
return timeLeft
|
||||
|
||||
/datum/subsystem/ticker/proc/SetTimeLeft(newtime)
|
||||
if(newtime >= 0 && isnull(timeLeft)) //remember, negative means delayed
|
||||
start_at = world.time + newtime
|
||||
else
|
||||
timeLeft = newtime
|
||||
|
||||
@@ -40,20 +40,18 @@ var/datum/subsystem/timer/SStimer
|
||||
..("B:[bucket_count] P:[length(processing)] H:[length(hashes)] C:[length(clienttime_timers)]")
|
||||
|
||||
/datum/subsystem/timer/fire(resumed = FALSE)
|
||||
if (length(clienttime_timers))
|
||||
for (var/thing in clienttime_timers)
|
||||
var/datum/timedevent/ctime_timer = thing
|
||||
if (ctime_timer.spent)
|
||||
qdel(ctime_timer)
|
||||
continue
|
||||
if (ctime_timer.timeToRun <= REALTIMEOFDAY)
|
||||
var/datum/callback/callBack = ctime_timer.callBack
|
||||
ctime_timer.spent = TRUE
|
||||
callBack.InvokeAsync()
|
||||
qdel(ctime_timer)
|
||||
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
while(length(clienttime_timers))
|
||||
var/datum/timedevent/ctime_timer = clienttime_timers[clienttime_timers.len]
|
||||
if (ctime_timer.timeToRun <= REALTIMEOFDAY)
|
||||
--clienttime_timers.len
|
||||
var/datum/callback/callBack = ctime_timer.callBack
|
||||
ctime_timer.spent = TRUE
|
||||
callBack.InvokeAsync()
|
||||
qdel(ctime_timer)
|
||||
else
|
||||
break //None of the rest are ready to run
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
var/static/list/spent = list()
|
||||
var/static/datum/timedevent/timer
|
||||
@@ -208,11 +206,24 @@ var/datum/subsystem/timer/SStimer
|
||||
SStimer.timer_id_dict["timerid[id]"] = src
|
||||
|
||||
if (callBack.object != GLOBAL_PROC)
|
||||
LAZYINITLIST(callBack.object.active_timers)
|
||||
callBack.object.active_timers += src
|
||||
LAZYADD(callBack.object.active_timers, src)
|
||||
|
||||
if (flags & TIMER_CLIENT_TIME)
|
||||
SStimer.clienttime_timers += src
|
||||
//sorted insert
|
||||
var/list/ctts = SStimer.clienttime_timers
|
||||
var/cttl = length(ctts)
|
||||
if(cttl)
|
||||
var/datum/timedevent/Last = ctts[cttl]
|
||||
if(Last.timeToRun >= timeToRun)
|
||||
ctts += src
|
||||
else if(cttl > 1)
|
||||
for(var/I in cttl to 1)
|
||||
var/datum/timedevent/E = ctts[I]
|
||||
if(E.timeToRun <= timeToRun)
|
||||
ctts.Insert(src, I)
|
||||
break
|
||||
else
|
||||
ctts += src
|
||||
return
|
||||
|
||||
//get the list of buckets
|
||||
@@ -345,4 +356,4 @@ proc/addtimer(datum/callback/callback, wait, flags)
|
||||
|
||||
|
||||
#undef BUCKET_LEN
|
||||
#undef BUCKET_POS
|
||||
#undef BUCKET_POS
|
||||
|
||||
+12
-13
@@ -113,7 +113,8 @@
|
||||
img = image(icon_icon, current_button, button_icon_state)
|
||||
img.pixel_x = 0
|
||||
img.pixel_y = 0
|
||||
current_button.overlays = list(img)
|
||||
current_button.cut_overlays(TRUE)
|
||||
current_button.add_overlay(img)
|
||||
current_button.button_icon_state = button_icon_state
|
||||
|
||||
|
||||
@@ -329,32 +330,30 @@
|
||||
/datum/action/item_action/hands_free/activate
|
||||
name = "Activate"
|
||||
|
||||
|
||||
/datum/action/item_action/hands_free/shift_nerves
|
||||
name = "Shift Nerves"
|
||||
|
||||
|
||||
/datum/action/item_action/toggle_research_scanner
|
||||
name = "Toggle Research Scanner"
|
||||
button_icon_state = "scan_mode"
|
||||
var/active = FALSE
|
||||
|
||||
/datum/action/item_action/toggle_research_scanner/Trigger()
|
||||
if(IsAvailable())
|
||||
owner.research_scanner = !owner.research_scanner
|
||||
owner << "<span class='notice'>Research analyzer is now [owner.research_scanner ? "active" : "deactivated"].</span>"
|
||||
active = !active
|
||||
if(active)
|
||||
owner.research_scanner++
|
||||
else
|
||||
owner.research_scanner--
|
||||
owner << "<span class='notice'>[target] research scanner has been [active ? "activated" : "deactivated"].</span>"
|
||||
return 1
|
||||
|
||||
/datum/action/item_action/toggle_research_scanner/Remove(mob/M)
|
||||
if(owner)
|
||||
owner.research_scanner = 0
|
||||
if(owner && active)
|
||||
owner.research_scanner--
|
||||
active = FALSE
|
||||
..()
|
||||
|
||||
/datum/action/item_action/toggle_research_scanner/ApplyIcon(obj/screen/movable/action_button/current_button)
|
||||
current_button.cut_overlays()
|
||||
if(button_icon && button_icon_state)
|
||||
var/image/img = image(button_icon, current_button, "scan_mode")
|
||||
current_button.add_overlay(img)
|
||||
|
||||
/datum/action/item_action/organ_action
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
|
||||
|
||||
+40
-5
@@ -313,19 +313,53 @@
|
||||
var picked_group = pickweight(replaceable_groups)
|
||||
switch(picked_group)
|
||||
if(LAW_ZEROTH)
|
||||
. = zeroth
|
||||
set_zeroth_law(law)
|
||||
if(LAW_ION)
|
||||
ion[rand(1,ion.len)] = law
|
||||
var/i = rand(1, ion.len)
|
||||
. = ion[i]
|
||||
ion[i] = law
|
||||
if(LAW_INHERENT)
|
||||
inherent[rand(1,inherent.len)] = law
|
||||
var/i = rand(1, inherent.len)
|
||||
. = inherent[i]
|
||||
inherent[i] = law
|
||||
if(LAW_SUPPLIED)
|
||||
supplied[rand(1,supplied.len)] = law
|
||||
var/i = rand(1, supplied.len)
|
||||
. = supplied[i]
|
||||
supplied[i] = law
|
||||
|
||||
/datum/ai_laws/proc/shuffle_laws(list/groups)
|
||||
var/list/laws = list()
|
||||
if(ion.len && (LAW_ION in groups))
|
||||
laws += ion
|
||||
if(inherent.len && (LAW_INHERENT in groups))
|
||||
laws += inherent
|
||||
if(supplied.len && (LAW_SUPPLIED in groups))
|
||||
for(var/law in supplied)
|
||||
if(length(law))
|
||||
laws += law
|
||||
|
||||
if(ion.len && (LAW_ION in groups))
|
||||
for(var/i = 1, i <= ion.len, i++)
|
||||
ion[i] = pick_n_take(laws)
|
||||
if(inherent.len && (LAW_INHERENT in groups))
|
||||
for(var/i = 1, i <= inherent.len, i++)
|
||||
inherent[i] = pick_n_take(laws)
|
||||
if(supplied.len && (LAW_SUPPLIED in groups))
|
||||
var/i = 1
|
||||
for(var/law in supplied)
|
||||
if(length(law))
|
||||
supplied[i] = pick_n_take(laws)
|
||||
if(!laws.len)
|
||||
break
|
||||
i++
|
||||
|
||||
/datum/ai_laws/proc/remove_law(number)
|
||||
if(number <= 0)
|
||||
return
|
||||
if(inherent.len && number <= inherent.len)
|
||||
inherent -= inherent[number]
|
||||
. = inherent[number]
|
||||
inherent -= .
|
||||
return
|
||||
var/list/supplied_laws = list()
|
||||
for(var/index = 1, index <= supplied.len, index++)
|
||||
@@ -334,7 +368,8 @@
|
||||
supplied_laws += index //storing the law number instead of the law
|
||||
if(supplied_laws.len && number <= (inherent.len+supplied_laws.len))
|
||||
var/law_to_remove = supplied_laws[number-inherent.len]
|
||||
supplied -= supplied[law_to_remove]
|
||||
. = supplied[law_to_remove]
|
||||
supplied -= .
|
||||
return
|
||||
|
||||
/datum/ai_laws/proc/clear_supplied_laws()
|
||||
|
||||
@@ -4,6 +4,7 @@ var/global/datum/getrev/revdata = new()
|
||||
var/parentcommit
|
||||
var/commit
|
||||
var/list/testmerge = list()
|
||||
var/has_pr_details = FALSE //example data in a testmerge entry when this is true: https://api.github.com/repositories/3234987/pulls/22586
|
||||
var/date
|
||||
|
||||
/datum/getrev/New()
|
||||
@@ -31,6 +32,44 @@ var/global/datum/getrev/revdata = new()
|
||||
log_world(parentcommit)
|
||||
log_world("Current map - [MAP_NAME]") //can't think of anywhere better to put it
|
||||
|
||||
/datum/getrev/proc/DownloadPRDetails()
|
||||
if(!config.githubrepoid)
|
||||
if(testmerge.len)
|
||||
log_world("PR details download failed: No github repo config set")
|
||||
return
|
||||
if(!isnum(text2num(config.githubrepoid)))
|
||||
log_world("PR details download failed: Invalid github repo id: [config.githubrepoid]")
|
||||
return
|
||||
for(var/line in testmerge)
|
||||
if(!isnum(text2num(line)))
|
||||
log_world("PR details download failed: Invalid PR number: [line]")
|
||||
return
|
||||
|
||||
var/url = "https://api.github.com/repositories/[config.githubrepoid]/pulls/[line].json"
|
||||
valid_HTTPSGet = TRUE
|
||||
var/json = HTTPSGet(url)
|
||||
if(!json)
|
||||
return
|
||||
|
||||
testmerge[line] = json_decode(json)
|
||||
|
||||
if(!testmerge[line])
|
||||
log_world("PR details download failed: null details returned")
|
||||
return
|
||||
CHECK_TICK
|
||||
log_world("PR details successfully downloaded")
|
||||
has_pr_details = TRUE
|
||||
|
||||
/datum/getrev/proc/GetTestMergeInfo(header = TRUE)
|
||||
if(!testmerge.len)
|
||||
return ""
|
||||
. = header ? "The following pull requests are currently test merged:<br>" : ""
|
||||
for(var/line in testmerge)
|
||||
var/details = ""
|
||||
if(has_pr_details)
|
||||
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["user"]["login"])
|
||||
. += "<a href='[config.githuburl]/pull/[line]'>#[line][details]</a><br>"
|
||||
|
||||
/client/verb/showrevinfo()
|
||||
set category = "OOC"
|
||||
set name = "Show Server Revision"
|
||||
@@ -39,12 +78,9 @@ var/global/datum/getrev/revdata = new()
|
||||
if(revdata.parentcommit)
|
||||
src << "<b>Server revision compiled on:</b> [revdata.date]"
|
||||
if(revdata.testmerge.len)
|
||||
for(var/line in revdata.testmerge)
|
||||
if(line)
|
||||
src << "Test merge active of PR <a href='[config.githuburl]/pull/[line]'>#[line]</a>"
|
||||
src << "Based off master commit <a href='[config.githuburl]/commit/[revdata.parentcommit]'>[revdata.parentcommit]</a>"
|
||||
else
|
||||
src << "<a href='[config.githuburl]/commit/[revdata.parentcommit]'>[revdata.parentcommit]</a>"
|
||||
src << revdata.GetTestMergeInfo()
|
||||
src << "Based off master commit:"
|
||||
src << "<a href='[config.githuburl]/commit/[revdata.parentcommit]'>[revdata.parentcommit]</a>"
|
||||
else
|
||||
src << "Revision unknown"
|
||||
src << "<b>Current Infomational Settings:</b>"
|
||||
@@ -56,8 +92,8 @@ var/global/datum/getrev/revdata = new()
|
||||
src << "Allow Midround Antagonists: [config.midround_antag.len] of [config.modes.len] roundtypes"
|
||||
if(config.show_game_type_odds)
|
||||
if(ticker.current_state == GAME_STATE_PLAYING)
|
||||
src <<"<b>Game Mode Odds for current round:</b>"
|
||||
var/prob_sum = 0
|
||||
var/current_odds_differ = FALSE
|
||||
var/list/probs = list()
|
||||
var/list/modes = config.gamemode_cache
|
||||
for(var/mode in modes)
|
||||
@@ -65,17 +101,18 @@ var/global/datum/getrev/revdata = new()
|
||||
var/ctag = initial(M.config_tag)
|
||||
if(!(ctag in config.probabilities))
|
||||
continue
|
||||
if((config.min_pop[ctag] && (config.min_pop[ctag] > ticker.totalPlayersReady)) || (initial(M.required_players) > ticker.totalPlayersReady))
|
||||
continue
|
||||
if(config.max_pop[ctag] && (config.max_pop[ctag] < ticker.totalPlayersReady))
|
||||
if((config.min_pop[ctag] && (config.min_pop[ctag] > ticker.totalPlayersReady)) || (config.max_pop[ctag] && (config.max_pop[ctag] < ticker.totalPlayersReady)) || (initial(M.required_players) > ticker.totalPlayersReady))
|
||||
current_odds_differ = TRUE
|
||||
continue
|
||||
probs[ctag] = 1
|
||||
prob_sum += config.probabilities[ctag]
|
||||
for(var/ctag in probs)
|
||||
if(config.probabilities[ctag] > 0)
|
||||
var/percentage = round(config.probabilities[ctag] / prob_sum * 100, 0.1)
|
||||
src << "[ctag] [percentage]%"
|
||||
|
||||
if(current_odds_differ)
|
||||
src <<"<b>Game Mode Odds for current round:</b>"
|
||||
for(var/ctag in probs)
|
||||
if(config.probabilities[ctag] > 0)
|
||||
var/percentage = round(config.probabilities[ctag] / prob_sum * 100, 0.1)
|
||||
src << "[ctag] [percentage]%"
|
||||
|
||||
src <<"<b>All Game Mode Odds:</b>"
|
||||
var/sum = 0
|
||||
for(var/ctag in config.probabilities)
|
||||
@@ -84,4 +121,3 @@ var/global/datum/getrev/revdata = new()
|
||||
if(config.probabilities[ctag] > 0)
|
||||
var/percentage = round(config.probabilities[ctag] / sum * 100, 0.1)
|
||||
src << "[ctag] [percentage]%"
|
||||
return
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
/datum/map_template
|
||||
var/name = "Default Template Name"
|
||||
var/width = 0
|
||||
var/height = 0
|
||||
var/mappath = null
|
||||
var/mapfile = null
|
||||
var/loaded = 0 // Times loaded this round
|
||||
|
||||
/datum/map_template/New(path = null, map = null, rename = null)
|
||||
if(path)
|
||||
mappath = path
|
||||
if(mappath)
|
||||
preload_size(mappath)
|
||||
if(map)
|
||||
mapfile = map
|
||||
if(rename)
|
||||
name = rename
|
||||
|
||||
/datum/map_template/proc/preload_size(path)
|
||||
var/bounds = maploader.load_map(file(path), 1, 1, 1, cropMap=FALSE, measureOnly=TRUE)
|
||||
if(bounds)
|
||||
width = bounds[MAP_MAXX] // Assumes all templates are rectangular, have a single Z level, and begin at 1,1,1
|
||||
height = bounds[MAP_MAXY]
|
||||
return bounds
|
||||
|
||||
/proc/initTemplateBounds(var/list/bounds)
|
||||
var/list/obj/machinery/atmospherics/atmos_machines = list()
|
||||
var/list/obj/structure/cable/cables = list()
|
||||
var/list/atom/atoms = list()
|
||||
|
||||
for(var/L in block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),
|
||||
locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])))
|
||||
var/turf/B = L
|
||||
atoms += B
|
||||
for(var/A in B)
|
||||
atoms += A
|
||||
if(istype(A,/obj/structure/cable))
|
||||
cables += A
|
||||
continue
|
||||
if(istype(A,/obj/machinery/atmospherics))
|
||||
atmos_machines += A
|
||||
continue
|
||||
|
||||
SSobj.InitializeAtoms(atoms)
|
||||
SSmachine.setup_template_powernets(cables)
|
||||
SSair.setup_template_machinery(atmos_machines)
|
||||
SSair.end_map_load()
|
||||
|
||||
/datum/map_template/proc/load(turf/T, centered = FALSE)
|
||||
if(centered)
|
||||
T = locate(T.x - round(width/2) , T.y - round(height/2) , T.z)
|
||||
if(!T)
|
||||
return
|
||||
if(T.x+width > world.maxx)
|
||||
return
|
||||
if(T.y+height > world.maxy)
|
||||
return
|
||||
|
||||
SSair.begin_map_load()
|
||||
var/list/bounds = maploader.load_map(get_file(), T.x, T.y, T.z, cropMap=TRUE)
|
||||
if(!bounds)
|
||||
SSair.end_map_load()
|
||||
return 0
|
||||
|
||||
//initialize things that are normally initialized after map load
|
||||
initTemplateBounds(bounds)
|
||||
|
||||
log_game("[name] loaded at at [T.x],[T.y],[T.z]")
|
||||
return 1
|
||||
|
||||
/datum/map_template/proc/get_file()
|
||||
if(mapfile)
|
||||
. = mapfile
|
||||
else if(mappath)
|
||||
. = file(mappath)
|
||||
|
||||
if(!.)
|
||||
log_world("The file of [src] appears to be empty/non-existent.")
|
||||
|
||||
/datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE)
|
||||
var/turf/placement = T
|
||||
if(centered)
|
||||
var/turf/corner = locate(placement.x - round(width/2), placement.y - round(height/2), placement.z)
|
||||
if(corner)
|
||||
placement = corner
|
||||
return block(placement, locate(placement.x+width-1, placement.y+height-1, placement.z))
|
||||
|
||||
|
||||
/proc/preloadTemplates(path = "_maps/templates/") //see master controller setup
|
||||
var/list/filelist = flist(path)
|
||||
for(var/map in filelist)
|
||||
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
|
||||
map_templates[T.name] = T
|
||||
|
||||
preloadRuinTemplates()
|
||||
preloadShuttleTemplates()
|
||||
preloadShelterTemplates()
|
||||
|
||||
/proc/preloadRuinTemplates()
|
||||
// Still supporting bans by filename
|
||||
var/list/banned = generateMapList("config/lavaruinblacklist.txt")
|
||||
banned += generateMapList("config/spaceruinblacklist.txt")
|
||||
|
||||
for(var/item in subtypesof(/datum/map_template/ruin))
|
||||
var/datum/map_template/ruin/ruin_type = item
|
||||
// screen out the abstract subtypes
|
||||
if(!initial(ruin_type.id))
|
||||
continue
|
||||
var/datum/map_template/ruin/R = new ruin_type()
|
||||
|
||||
if(banned.Find(R.mappath))
|
||||
continue
|
||||
|
||||
map_templates[R.name] = R
|
||||
ruins_templates[R.name] = R
|
||||
|
||||
if(istype(R, /datum/map_template/ruin/lavaland))
|
||||
lava_ruins_templates[R.name] = R
|
||||
else if(istype(R, /datum/map_template/ruin/space))
|
||||
space_ruins_templates[R.name] = R
|
||||
|
||||
|
||||
/proc/preloadShuttleTemplates()
|
||||
var/list/unbuyable = generateMapList("config/unbuyableshuttles.txt")
|
||||
|
||||
for(var/item in subtypesof(/datum/map_template/shuttle))
|
||||
var/datum/map_template/shuttle/shuttle_type = item
|
||||
if(!(initial(shuttle_type.suffix)))
|
||||
continue
|
||||
|
||||
var/datum/map_template/shuttle/S = new shuttle_type()
|
||||
if(unbuyable.Find(S.mappath))
|
||||
S.can_be_bought = FALSE
|
||||
|
||||
shuttle_templates[S.shuttle_id] = S
|
||||
map_templates[S.shuttle_id] = S
|
||||
|
||||
/proc/preloadShelterTemplates()
|
||||
for(var/item in subtypesof(/datum/map_template/shelter))
|
||||
var/datum/map_template/shelter/shelter_type = item
|
||||
if(!(initial(shelter_type.mappath)))
|
||||
continue
|
||||
var/datum/map_template/shelter/S = new shelter_type()
|
||||
|
||||
shelter_templates[S.shelter_id] = S
|
||||
map_templates[S.shelter_id] = S
|
||||
@@ -258,6 +258,11 @@
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plasma
|
||||
coin_type = /obj/item/weapon/coin/plasma
|
||||
|
||||
/datum/material/bluespace
|
||||
name = "Bluespace Mesh"
|
||||
id = MAT_BLUESPACE
|
||||
sheet_type = /obj/item/stack/sheet/bluespace_crystal
|
||||
|
||||
/datum/material/bananium
|
||||
name = "Bananium"
|
||||
id = MAT_BANANIUM
|
||||
|
||||
@@ -135,7 +135,6 @@
|
||||
if(isAI(current))
|
||||
var/mob/living/silicon/ai/A = current
|
||||
A.set_zeroth_law("")
|
||||
A.show_laws()
|
||||
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
|
||||
A.malf_picker.remove_verbs(A)
|
||||
qdel(A.malf_picker)
|
||||
|
||||
+133
-27
@@ -9,12 +9,30 @@
|
||||
var/slowed = FALSE
|
||||
var/slowvalue = 1
|
||||
|
||||
/datum/riding/New(atom/movable/_ridden)
|
||||
ridden = _ridden
|
||||
|
||||
/datum/riding/Destroy()
|
||||
ridden = null
|
||||
return ..()
|
||||
|
||||
/datum/riding/proc/handle_vehicle_layer()
|
||||
if(ridden.dir != NORTH)
|
||||
ridden.layer = ABOVE_MOB_LAYER
|
||||
else
|
||||
ridden.layer = OBJ_LAYER
|
||||
|
||||
/datum/riding/proc/on_vehicle_move()
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
ride_check(M)
|
||||
handle_vehicle_offsets()
|
||||
handle_vehicle_layer()
|
||||
|
||||
/datum/riding/proc/ride_check(mob/living/M)
|
||||
return TRUE
|
||||
|
||||
/datum/riding/proc/force_dismount(mob/living/M)
|
||||
ridden.unbuckle_mob(M)
|
||||
|
||||
//Override this to set your vehicle's various pixel offsets
|
||||
//if they differ between directions, otherwise use the
|
||||
@@ -36,7 +54,6 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
//BUCKLE HOOKS
|
||||
/datum/riding/proc/restore_position(mob/living/buckled_mob)
|
||||
if(istype(buckled_mob))
|
||||
@@ -45,11 +62,6 @@
|
||||
if(buckled_mob.client)
|
||||
buckled_mob.client.change_view(world.view)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//MOVEMENT
|
||||
/datum/riding/proc/handle_ride(mob/user, direction)
|
||||
if(user.incapacitated())
|
||||
@@ -298,12 +310,59 @@
|
||||
else
|
||||
user << "<span class='notice'>You'll need something to guide the [ridden.name].</span>"
|
||||
|
||||
//CYBORGS. NO, THEY ARE NOT ANIMALS.
|
||||
///////Humans. Yes, I said humans. No, this won't end well...//////////
|
||||
/datum/riding/human
|
||||
keytype = null
|
||||
|
||||
/datum/riding/human/ride_check(mob/living/M)
|
||||
var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins.
|
||||
if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE))
|
||||
M.visible_message("<span class='boldwarning'>[M] falls off of [ridden]!</span>")
|
||||
ridden.unbuckle_mob(M)
|
||||
return FALSE
|
||||
if(M.restrained(TRUE))
|
||||
M.visible_message("<span class='boldwarning'>[M] can't hang onto [ridden] with their hands cuffed!</span>") //Honestly this should put the ridden mob in a chokehold.
|
||||
ridden.unbuckle_mob(M)
|
||||
return FALSE
|
||||
if(H.pulling == M)
|
||||
H.stop_pulling()
|
||||
|
||||
/datum/riding/human/handle_vehicle_offsets()
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
M.setDir(ridden.dir)
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 6
|
||||
if(SOUTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 6
|
||||
if(EAST)
|
||||
M.pixel_x = -6
|
||||
M.pixel_y = 4
|
||||
if(WEST)
|
||||
M.pixel_x = 6
|
||||
M.pixel_y = 4
|
||||
|
||||
/datum/riding/human/handle_vehicle_layer()
|
||||
if(ridden.buckled_mobs && ridden.buckled_mobs.len)
|
||||
if(ridden.dir == SOUTH)
|
||||
ridden.layer = ABOVE_MOB_LAYER
|
||||
else
|
||||
ridden.layer = OBJ_LAYER
|
||||
else
|
||||
ridden.layer = MOB_LAYER
|
||||
|
||||
/datum/riding/human/force_dismount(mob/living/user)
|
||||
ridden.unbuckle_mob(user)
|
||||
user.Weaken(3)
|
||||
user.Stun(3)
|
||||
user.visible_message("<span class='boldwarning'>[ridden] pushes [user] off of them!</span>")
|
||||
|
||||
/datum/riding/cyborg
|
||||
keytype = null
|
||||
vehicle_move_delay = 1
|
||||
|
||||
/datum/riding/cyborg/proc/ride_check(mob/user)
|
||||
/datum/riding/cyborg/ride_check(mob/user)
|
||||
if(user.incapacitated())
|
||||
var/kick = TRUE
|
||||
if(istype(ridden, /mob/living/silicon/robot))
|
||||
@@ -322,11 +381,12 @@
|
||||
return
|
||||
|
||||
/datum/riding/cyborg/handle_vehicle_layer()
|
||||
if(ridden.dir == SOUTH)
|
||||
ridden.layer = ABOVE_MOB_LAYER
|
||||
if(ridden.buckled_mobs && ridden.buckled_mobs.len)
|
||||
if(ridden.dir == SOUTH)
|
||||
ridden.layer = ABOVE_MOB_LAYER
|
||||
else
|
||||
ridden.layer = OBJ_LAYER
|
||||
else
|
||||
ridden.layer = OBJ_LAYER
|
||||
if(!ridden.buckled_mobs)
|
||||
ridden.layer = MOB_LAYER
|
||||
|
||||
/datum/riding/cyborg/handle_vehicle_offsets()
|
||||
@@ -353,19 +413,65 @@
|
||||
M.pixel_x = 6
|
||||
M.pixel_y = 3
|
||||
|
||||
/datum/riding/cyborg/proc/on_vehicle_move()
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
ride_check(M)
|
||||
handle_vehicle_offsets()
|
||||
handle_vehicle_layer()
|
||||
/datum/riding/cyborg/force_dismount(mob/living/M)
|
||||
ridden.unbuckle_mob(M)
|
||||
var/turf/target = get_edge_target_turf(ridden, ridden.dir)
|
||||
var/turf/targetm = get_step(get_turf(ridden), ridden.dir)
|
||||
M.Move(targetm)
|
||||
M.visible_message("<span class='boldwarning'>[M] is thrown clear of [ridden]!</span>")
|
||||
M.throw_at(target, 14, 5, ridden)
|
||||
M.Weaken(3)
|
||||
|
||||
/datum/riding/cyborg/proc/force_dismount()
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
ridden.unbuckle_mob(M)
|
||||
var/turf/target = get_edge_target_turf(ridden, ridden.dir)
|
||||
var/turf/targetm = get_step(get_turf(ridden), ridden.dir)
|
||||
M.Move(targetm)
|
||||
M.visible_message("<span class='boldwarning'>[M] is thrown clear of [ridden] by rapid spinning!</span>")
|
||||
M.throw_at(target, 14, 5, ridden)
|
||||
M.Weaken(3)
|
||||
/datum/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1)
|
||||
var/amount_equipped = 0
|
||||
for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--)
|
||||
var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user)
|
||||
inhand.rider = user
|
||||
inhand.ridden = ridden
|
||||
if(user.put_in_hands(inhand, TRUE))
|
||||
amount_equipped++
|
||||
else
|
||||
break
|
||||
if(amount_equipped >= amount_required)
|
||||
return TRUE
|
||||
else
|
||||
unequip_buckle_inhands(user)
|
||||
return FALSE
|
||||
|
||||
/datum/riding/proc/unequip_buckle_inhands(mob/living/carbon/user)
|
||||
for(var/obj/item/riding_offhand/O in user.contents)
|
||||
if(O.ridden != ridden)
|
||||
CRASH("RIDING OFFHAND ON WRONG MOB")
|
||||
continue
|
||||
if(O.selfdeleting)
|
||||
continue
|
||||
else
|
||||
qdel(O)
|
||||
return TRUE
|
||||
|
||||
/obj/item/riding_offhand
|
||||
name = "offhand"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "offhand"
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
flags = ABSTRACT | DROPDEL | NOBLUDGEON
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/mob/living/carbon/rider
|
||||
var/mob/living/ridden
|
||||
var/selfdeleting = FALSE
|
||||
|
||||
/obj/item/riding_offhand/dropped()
|
||||
selfdeleting = TRUE
|
||||
. = ..()
|
||||
|
||||
/obj/item/riding_offhand/equipped()
|
||||
if(loc != rider)
|
||||
selfdeleting = TRUE
|
||||
qdel(src)
|
||||
. = ..()
|
||||
|
||||
/obj/item/riding_offhand/Destroy()
|
||||
if(selfdeleting)
|
||||
if(rider in ridden.buckled_mobs)
|
||||
ridden.unbuckle_mob(rider)
|
||||
. = ..()
|
||||
@@ -172,6 +172,7 @@
|
||||
Outside of admin intervention, it cannot explode. \
|
||||
It does, however, still dust anything on contact, emits high levels of radiation, and induce hallucinations in anyone looking at it without protective goggles. \
|
||||
Emitters spawn powered on, expect admin notices, they are harmless."
|
||||
credit_cost = 100000
|
||||
|
||||
/datum/map_template/shuttle/emergency/imfedupwiththisworld
|
||||
suffix = "imfedupwiththisworld"
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
|
||||
|
||||
/mob/living
|
||||
var/list/ownedSoullinks //soullinks we are the owner of
|
||||
var/list/sharedSoullinks //soullinks we are a/the sharer of
|
||||
|
||||
/mob/living/Destroy()
|
||||
for(var/s in ownedSoullinks)
|
||||
var/datum/soullink/S = s
|
||||
S.ownerDies(FALSE)
|
||||
qdel(s) //If the owner is destroy()'d, the soullink is destroy()'d
|
||||
ownedSoullinks = null
|
||||
for(var/s in sharedSoullinks)
|
||||
var/datum/soullink/S = s
|
||||
S.sharerDies(FALSE)
|
||||
S.removeSoulsharer(src) //If a sharer is destroy()'d, they are simply removed
|
||||
sharedSoullinks = null
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
//Keeps track of a Mob->Mob (potentially Player->Player) connection
|
||||
//Can be used to trigger actions on one party when events happen to another
|
||||
//Eg: shared deaths
|
||||
//Can be used to form a linked list of mob-hopping
|
||||
//Does NOT transfer with minds
|
||||
/datum/soullink
|
||||
var/mob/living/soulowner
|
||||
var/mob/living/soulsharer
|
||||
var/id //Optional ID, for tagging and finding specific instances
|
||||
|
||||
/datum/soullink/Destroy()
|
||||
if(soulowner)
|
||||
LAZYREMOVE(soulowner.ownedSoullinks, src)
|
||||
soulowner = null
|
||||
if(soulsharer)
|
||||
LAZYREMOVE(soulsharer.sharedSoullinks, src)
|
||||
soulsharer = null
|
||||
return ..()
|
||||
|
||||
/datum/soullink/proc/removeSoulsharer(mob/living/sharer)
|
||||
if(soulsharer == sharer)
|
||||
soulsharer = null
|
||||
LAZYREMOVE(sharer.sharedSoullinks, src)
|
||||
|
||||
//Used to assign variables, called primarily by soullink()
|
||||
//Override this to create more unique soullinks (Eg: 1->Many relationships)
|
||||
//Return TRUE/FALSE to return the soullink/null in soullink()
|
||||
/datum/soullink/proc/parseArgs(mob/living/owner, mob/living/sharer)
|
||||
if(!owner || !sharer)
|
||||
return FALSE
|
||||
soulowner = owner
|
||||
soulsharer = sharer
|
||||
LAZYADD(owner.ownedSoullinks, src)
|
||||
LAZYADD(sharer.sharedSoullinks, src)
|
||||
return TRUE
|
||||
|
||||
//Runs after /living death()
|
||||
//Override this for content
|
||||
/datum/soullink/proc/ownerDies(gibbed, mob/living/owner)
|
||||
|
||||
//Runs after /living death()
|
||||
//Override this for content
|
||||
/datum/soullink/proc/sharerDies(gibbed, mob/living/owner)
|
||||
|
||||
//Quick-use helper
|
||||
/proc/soullink(typepath, ...)
|
||||
var/datum/soullink/S = new typepath()
|
||||
if(S.parseArgs(arglist(args.Copy(2, 0))))
|
||||
return S
|
||||
|
||||
|
||||
|
||||
/////////////////
|
||||
// MULTISHARER //
|
||||
/////////////////
|
||||
//Abstract soullink for use with 1 Owner -> Many Sharer setups
|
||||
/datum/soullink/multisharer
|
||||
var/list/soulsharers
|
||||
|
||||
/datum/soullink/multisharer/parseArgs(mob/living/owner, list/sharers)
|
||||
if(!owner || !LAZYLEN(sharers))
|
||||
return FALSE
|
||||
soulowner = owner
|
||||
soulsharers = sharers
|
||||
LAZYADD(owner.ownedSoullinks, src)
|
||||
for(var/l in sharers)
|
||||
var/mob/living/L = l
|
||||
LAZYADD(L.sharedSoullinks, src)
|
||||
return TRUE
|
||||
|
||||
/datum/soullink/multisharer/removeSoulsharer(mob/living/sharer)
|
||||
LAZYREMOVE(soulsharers, sharer)
|
||||
|
||||
|
||||
|
||||
/////////////////
|
||||
// SHARED FATE //
|
||||
/////////////////
|
||||
//When the soulowner dies, the soulsharer dies, and vice versa
|
||||
//This is intended for two players(or AI) and two mobs
|
||||
|
||||
/datum/soullink/sharedfate/ownerDies(gibbed, mob/living/owner)
|
||||
if(soulsharer)
|
||||
soulsharer.death(gibbed)
|
||||
|
||||
/datum/soullink/sharedfate/sharerDies(gibbed, mob/living/sharer)
|
||||
if(soulowner)
|
||||
soulowner.death(gibbed)
|
||||
|
||||
|
||||
|
||||
/////////////////
|
||||
// SHARED BODY //
|
||||
/////////////////
|
||||
//When the soulsharer dies, they're placed in the soulowner, who remains alive
|
||||
//If the soulowner dies, the soulsharer is killed and placed into the soulowner (who is still dying)
|
||||
//This one is intended for one player moving between many mobs
|
||||
|
||||
/datum/soullink/sharedbody/ownerDies(gibbed, mob/living/owner)
|
||||
if(soulowner && soulsharer)
|
||||
if(soulsharer.mind)
|
||||
soulsharer.mind.transfer_to(soulowner)
|
||||
soulsharer.death(gibbed)
|
||||
|
||||
/datum/soullink/sharedbody/sharerDies(gibbed, mob/living/sharer)
|
||||
if(soulowner && soulsharer && soulsharer.mind)
|
||||
soulsharer.mind.transfer_to(soulowner)
|
||||
|
||||
|
||||
|
||||
//////////////////////
|
||||
// REPLACEMENT POOL //
|
||||
//////////////////////
|
||||
//When the owner dies, one of the sharers is placed in the owner's body, fully healed
|
||||
//Sort of a "winner-stays-on" soullink
|
||||
//Gibbing ends it immediately
|
||||
|
||||
/datum/soullink/multisharer/replacementpool/ownerDies(gibbed, mob/living/owner)
|
||||
if(LAZYLEN(soulsharers) && !gibbed) //let's not put them in some gibs
|
||||
var/list/souls = shuffle(soulsharers.Copy())
|
||||
for(var/l in souls)
|
||||
var/mob/living/L = l
|
||||
if(L.stat != DEAD && L.mind)
|
||||
L.mind.transfer_to(soulowner)
|
||||
soulowner.revive(TRUE, TRUE)
|
||||
L.death(FALSE)
|
||||
|
||||
//Lose your claim to the throne!
|
||||
/datum/soullink/multisharer/replacementpool/sharerDies(gibbed, mob/living/sharer)
|
||||
removeSoulsharer(sharer)
|
||||
@@ -151,3 +151,53 @@
|
||||
return
|
||||
playsound(cyborg, 'sound/effects/light_flicker.ogg', 50, 1)
|
||||
cyborg.cell.give(power_to_give)
|
||||
|
||||
/datum/status_effect/his_grace
|
||||
id = "his_grace"
|
||||
duration = -1
|
||||
tick_interval = 4
|
||||
alert_type = /obj/screen/alert/status_effect/his_grace
|
||||
var/bloodlust = 0
|
||||
|
||||
/obj/screen/alert/status_effect/his_grace
|
||||
name = "His Grace"
|
||||
desc = "His Grace hungers, and you must feed Him."
|
||||
icon_state = "his_grace"
|
||||
alerttooltipstyle = "hisgrace"
|
||||
|
||||
/obj/screen/alert/status_effect/his_grace/MouseEntered(location,control,params)
|
||||
desc = initial(desc)
|
||||
var/datum/status_effect/his_grace/HG = attached_effect
|
||||
desc += "<br><font size=3><b>Current Bloodthirst: [HG.bloodlust]</b></font>\
|
||||
<br>Becomes undroppable at <b>[HIS_GRACE_FAMISHED]</b>\
|
||||
<br>Will consume you at <b>[HIS_GRACE_CONSUME_OWNER]</b>"
|
||||
..()
|
||||
|
||||
/datum/status_effect/his_grace/on_apply()
|
||||
add_logs(owner, null, "gained His Grace's stun immunity")
|
||||
owner.add_stun_absorption("hisgrace", INFINITY, 3, null, "His Grace protects you from the stun!")
|
||||
|
||||
/datum/status_effect/his_grace/tick()
|
||||
bloodlust = 0
|
||||
var/graces = 0
|
||||
for(var/obj/item/weapon/his_grace/HG in owner.held_items)
|
||||
if(HG.bloodthirst > bloodlust)
|
||||
bloodlust = HG.bloodthirst
|
||||
if(HG.awakened)
|
||||
graces++
|
||||
if(!graces)
|
||||
owner.apply_status_effect(STATUS_EFFECT_HISWRATH)
|
||||
qdel(src)
|
||||
return
|
||||
var/grace_heal = bloodlust * 0.05
|
||||
owner.adjustBruteLoss(-grace_heal)
|
||||
owner.adjustFireLoss(-grace_heal)
|
||||
owner.adjustToxLoss(-grace_heal, TRUE, TRUE)
|
||||
owner.adjustOxyLoss(-(grace_heal * 2))
|
||||
owner.adjustCloneLoss(-grace_heal)
|
||||
|
||||
/datum/status_effect/his_grace/on_remove()
|
||||
add_logs(owner, null, "lost His Grace's stun immunity")
|
||||
if(islist(owner.stun_absorption) && owner.stun_absorption["hisgrace"])
|
||||
owner.stun_absorption -= "hisgrace"
|
||||
|
||||
|
||||
@@ -9,3 +9,23 @@
|
||||
/datum/status_effect/sigil_mark/tick()
|
||||
if(owner.stat < stat_allowed)
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/his_wrath //does minor damage over time unless holding His Grace
|
||||
id = "his_wrath"
|
||||
duration = -1
|
||||
tick_interval = 4
|
||||
alert_type = /obj/screen/alert/status_effect/his_wrath
|
||||
|
||||
/obj/screen/alert/status_effect/his_wrath
|
||||
name = "His Wrath"
|
||||
desc = "You fled from His Grace instead of feeding Him, and now you suffer."
|
||||
icon_state = "his_grace"
|
||||
alerttooltipstyle = "hisgrace"
|
||||
|
||||
/datum/status_effect/his_wrath/tick()
|
||||
for(var/obj/item/weapon/his_grace/HG in owner.held_items)
|
||||
qdel(src)
|
||||
return
|
||||
owner.adjustBruteLoss(0.1)
|
||||
owner.adjustFireLoss(0.1)
|
||||
owner.adjustToxLoss(0.2, TRUE, TRUE)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
if(!owner.stat)
|
||||
owner << "You become frozen in a cube!"
|
||||
cube = icon('icons/effects/freeze.dmi', "ice_cube")
|
||||
owner.overlays += cube
|
||||
owner.add_overlay(cube)
|
||||
owner.update_canmove()
|
||||
|
||||
/datum/status_effect/freon/tick()
|
||||
@@ -25,6 +25,6 @@
|
||||
/datum/status_effect/freon/on_remove()
|
||||
if(!owner.stat)
|
||||
owner << "The cube melts!"
|
||||
owner.overlays -= cube
|
||||
owner.cut_overlay(cube)
|
||||
owner.bodytemperature += 100
|
||||
owner.update_canmove()
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
A.mode = 1 // AALARM_MODE_SCRUB
|
||||
A.apply_mode()
|
||||
if(WIRE_ALARM) // Clear alarms.
|
||||
var/area/AA = get_area_master(A)
|
||||
var/area/AA = get_area(A)
|
||||
if(AA.atmosalert(0, holder))
|
||||
A.post_alert(0)
|
||||
A.update_icon()
|
||||
@@ -68,7 +68,7 @@
|
||||
A.mode = 3 // AALARM_MODE_PANIC
|
||||
A.apply_mode()
|
||||
if(WIRE_ALARM) // Post alarm.
|
||||
var/area/AA = get_area_master(A)
|
||||
var/area/AA = get_area(A)
|
||||
if(AA.atmosalert(2, holder))
|
||||
A.post_alert(2)
|
||||
A.update_icon()
|
||||
@@ -30,7 +30,8 @@
|
||||
if(WIRE_SAFETY)
|
||||
SSU.safeties = !SSU.safeties
|
||||
if(WIRE_ZAP)
|
||||
SSU.shock(usr)
|
||||
if(usr)
|
||||
SSU.shock(usr)
|
||||
|
||||
/datum/wires/suit_storage_unit/on_cut(wire, mend)
|
||||
var/obj/machinery/suit_storage_unit/SSU = holder
|
||||
@@ -40,4 +41,5 @@
|
||||
if(WIRE_SAFETY)
|
||||
SSU.safeties = mend
|
||||
if(WIRE_ZAP)
|
||||
SSU.shock(usr)
|
||||
if(usr)
|
||||
SSU.shock(usr)
|
||||
+21
-22
@@ -45,7 +45,6 @@
|
||||
var/safe = 0 //Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers
|
||||
|
||||
var/no_air = null
|
||||
var/area/master // master area used for power calcluations
|
||||
var/list/related // the other areas of the same type as this
|
||||
|
||||
var/parallax_movedir = 0
|
||||
@@ -98,10 +97,9 @@ var/list/teleportlocs = list()
|
||||
|
||||
|
||||
|
||||
/area/New()
|
||||
/area/Initialize()
|
||||
icon_state = ""
|
||||
layer = AREA_LAYER
|
||||
master = src
|
||||
uid = ++global_uid
|
||||
related = list(src)
|
||||
map_name = name // Save the initial (the name set in the map) name of the area.
|
||||
@@ -238,6 +236,8 @@ var/list/teleportlocs = list()
|
||||
RA.mouse_opacity = 0
|
||||
RA.updateicon()
|
||||
RA.ModifyFiredoors(TRUE)
|
||||
for(var/obj/machinery/firealarm/F in RA)
|
||||
F.update_icon()
|
||||
|
||||
for (var/mob/living/silicon/aiPlayer in player_list)
|
||||
aiPlayer.cancelAlarm("Fire", src, source)
|
||||
@@ -343,17 +343,17 @@ var/list/teleportlocs = list()
|
||||
|
||||
/area/proc/powered(chan) // return true if the area has power to given channel
|
||||
|
||||
if(!master.requires_power)
|
||||
if(!requires_power)
|
||||
return 1
|
||||
if(master.always_unpowered)
|
||||
if(always_unpowered)
|
||||
return 0
|
||||
switch(chan)
|
||||
if(EQUIP)
|
||||
return master.power_equip
|
||||
return power_equip
|
||||
if(LIGHT)
|
||||
return master.power_light
|
||||
return power_light
|
||||
if(ENVIRON)
|
||||
return master.power_environ
|
||||
return power_environ
|
||||
|
||||
return 0
|
||||
|
||||
@@ -372,19 +372,19 @@ var/list/teleportlocs = list()
|
||||
var/used = 0
|
||||
switch(chan)
|
||||
if(LIGHT)
|
||||
used += master.used_light
|
||||
used += used_light
|
||||
if(EQUIP)
|
||||
used += master.used_equip
|
||||
used += used_equip
|
||||
if(ENVIRON)
|
||||
used += master.used_environ
|
||||
used += used_environ
|
||||
if(TOTAL)
|
||||
used += master.used_light + master.used_equip + master.used_environ
|
||||
used += used_light + used_equip + used_environ
|
||||
if(STATIC_EQUIP)
|
||||
used += master.static_equip
|
||||
used += static_equip
|
||||
if(STATIC_LIGHT)
|
||||
used += master.static_light
|
||||
used += static_light
|
||||
if(STATIC_ENVIRON)
|
||||
used += master.static_environ
|
||||
used += static_environ
|
||||
return used
|
||||
|
||||
/area/proc/addStaticPower(value, powerchannel)
|
||||
@@ -397,20 +397,19 @@ var/list/teleportlocs = list()
|
||||
static_environ += value
|
||||
|
||||
/area/proc/clear_usage()
|
||||
|
||||
master.used_equip = 0
|
||||
master.used_light = 0
|
||||
master.used_environ = 0
|
||||
used_equip = 0
|
||||
used_light = 0
|
||||
used_environ = 0
|
||||
|
||||
/area/proc/use_power(amount, chan)
|
||||
|
||||
switch(chan)
|
||||
if(EQUIP)
|
||||
master.used_equip += amount
|
||||
used_equip += amount
|
||||
if(LIGHT)
|
||||
master.used_light += amount
|
||||
used_light += amount
|
||||
if(ENVIRON)
|
||||
master.used_environ += amount
|
||||
used_environ += amount
|
||||
|
||||
|
||||
/area/Entered(A)
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
*/
|
||||
|
||||
/area/holodeck/powered(var/chan)
|
||||
if(!master.requires_power)
|
||||
if(!requires_power)
|
||||
return 1
|
||||
if(master.always_unpowered)
|
||||
if(always_unpowered)
|
||||
return 0
|
||||
if(!linked)
|
||||
return 0
|
||||
|
||||
+16
-10
@@ -18,15 +18,14 @@
|
||||
//Value used to increment ex_act() if reactionary_explosions is on
|
||||
var/explosion_block = 0
|
||||
|
||||
//overlays that should remain on top and not normally be removed, like c4.
|
||||
var/list/priority_overlays
|
||||
|
||||
var/list/atom_colours //used to store the different colors on an atom
|
||||
//its inherent color, the colored paint applied on it, special color effect etc...
|
||||
var/initialized = FALSE
|
||||
|
||||
var/list/our_overlays //our local copy of (non-priority) overlays without byond magic. Use procs in SSoverlays to manipulate
|
||||
var/list/priority_overlays //overlays that should remain on top and not normally removed when using cut_overlay functions, like c4.
|
||||
|
||||
/atom/New()
|
||||
/atom/New(loc, ...)
|
||||
//atom creation method that preloads variables at creation
|
||||
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
|
||||
_preloader.load(src)
|
||||
@@ -35,15 +34,16 @@
|
||||
add_atom_colour(color, FIXED_COLOUR_PRIORITY)
|
||||
|
||||
//lighting stuff
|
||||
if(opacity && isturf(loc))
|
||||
loc.UpdateAffectingLights()
|
||||
if(opacity && isturf(src.loc))
|
||||
src.loc.UpdateAffectingLights()
|
||||
|
||||
if(luminosity)
|
||||
light = new(src)
|
||||
|
||||
var/do_initialize = SSobj.initialized
|
||||
if(do_initialize > INITIALIZATION_INSSOBJ)
|
||||
Initialize(do_initialize == INITIALIZATION_INNEW_MAPLOAD)
|
||||
var/do_initialize = SSatoms.initialized
|
||||
if(do_initialize > INITIALIZATION_INSSATOMS)
|
||||
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
|
||||
Initialize(arglist(args))
|
||||
//. = ..() //uncomment if you are dumb enough to add a /datum/New() proc
|
||||
|
||||
//Called after New if the map is being loaded. mapload = TRUE
|
||||
@@ -52,11 +52,12 @@
|
||||
//Derivatives must not sleep
|
||||
//Returning TRUE while mapload is TRUE will cause the object to be initialized again with mapload = FALSE when everything else is done
|
||||
//(Useful for things that requires turfs to have air). This base may only be called once, however
|
||||
//Other parameters are passed from New (excluding loc), this does not happen if mapload is TRUE
|
||||
|
||||
//Note: the following functions don't call the base for optimization and must copypasta:
|
||||
// /turf/Initialize
|
||||
// /turf/open/space/Initialize
|
||||
/atom/proc/Initialize(mapload)
|
||||
/atom/proc/Initialize(mapload, ...)
|
||||
if(initialized)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
initialized = TRUE
|
||||
@@ -74,6 +75,11 @@
|
||||
AA.hide(list(src))
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
|
||||
LAZYCLEARLIST(overlays)
|
||||
LAZYCLEARLIST(priority_overlays)
|
||||
//SSoverlays.processing -= src //we COULD do this, but it's better to just let it fall out of the processing queue
|
||||
|
||||
return ..()
|
||||
|
||||
/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5)
|
||||
|
||||
@@ -137,7 +137,6 @@
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
var/borg_to_spawn
|
||||
var/list/possible_types = list("Assault", "Medical")
|
||||
|
||||
/obj/item/weapon/antag_spawner/nuke_ops/proc/check_usability(mob/user)
|
||||
if(used)
|
||||
@@ -189,12 +188,13 @@
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
|
||||
/obj/item/weapon/antag_spawner/nuke_ops/borg_tele/assault
|
||||
name = "syndicate assault cyborg teleporter"
|
||||
borg_to_spawn = "Assault"
|
||||
|
||||
/obj/item/weapon/antag_spawner/nuke_ops/borg_tele/attack_self(mob/user)
|
||||
borg_to_spawn = input("What type?", "Cyborg Type", type) as null|anything in possible_types
|
||||
if(!borg_to_spawn)
|
||||
return
|
||||
..()
|
||||
/obj/item/weapon/antag_spawner/nuke_ops/borg_tele/medical
|
||||
name = "syndicate medical teleporter"
|
||||
borg_to_spawn = "Medical"
|
||||
|
||||
/obj/item/weapon/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T)
|
||||
var/mob/living/silicon/robot/R
|
||||
|
||||
@@ -14,7 +14,7 @@ var/list/blobs_legit = list() //used for win-score calculations, contains only b
|
||||
config_tag = "blob"
|
||||
antag_flag = ROLE_BLOB
|
||||
|
||||
required_players = 10
|
||||
required_players = 25
|
||||
required_enemies = 1
|
||||
recommended_enemies = 1
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
if (aiPlayer.client)
|
||||
var/law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. The nuclear failsafe must be activated at any cost, the code is: [nukecode]."
|
||||
aiPlayer.set_zeroth_law(law)
|
||||
aiPlayer << "Laws Updated: [law]"
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
del_on_death = 1
|
||||
deathmessage = "explodes into a cloud of gas!"
|
||||
var/death_cloud_size = 1 //size of cloud produced from a dying spore
|
||||
var/list/human_overlays = list()
|
||||
var/mob/living/carbon/human/oldguy
|
||||
var/is_zombie = 0
|
||||
gold_core_spawnable = 1
|
||||
|
||||
@@ -136,9 +136,9 @@
|
||||
icon_state = "zombie"
|
||||
H.hair_style = null
|
||||
H.update_hair()
|
||||
human_overlays = H.overlays
|
||||
update_icons()
|
||||
H.forceMove(src)
|
||||
oldguy = H
|
||||
visible_message("<span class='warning'>The corpse of [H.name] suddenly rises!</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobspore/death(gibbed)
|
||||
@@ -167,9 +167,9 @@
|
||||
if(factory)
|
||||
factory.spores -= src
|
||||
factory = null
|
||||
if(contents)
|
||||
for(var/mob/M in contents)
|
||||
M.loc = src.loc
|
||||
if(oldguy)
|
||||
oldguy.forceMove(get_turf(src))
|
||||
oldguy = null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobspore/update_icons()
|
||||
@@ -178,8 +178,7 @@
|
||||
else
|
||||
remove_atom_colour(FIXED_COLOUR_PRIORITY)
|
||||
if(is_zombie)
|
||||
cut_overlays()
|
||||
overlays = human_overlays
|
||||
copy_overlays(oldguy, TRUE)
|
||||
var/image/I = image('icons/mob/blob.dmi', icon_state = "blob_head")
|
||||
if(overmind)
|
||||
I.color = overmind.blob_reagent_datum.complementary_color
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
//Heals the things that the other regenerative abilities don't.
|
||||
/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user)
|
||||
user << "<span class='notice'>We begin cleansing impurities from our form.</span>"
|
||||
user << "<span class='notice'>We cleanse impurities from our form.</span>"
|
||||
|
||||
var/mob/living/simple_animal/borer/B = user.has_brain_worms()
|
||||
if(B)
|
||||
@@ -19,13 +19,20 @@
|
||||
var/mob/living/carbon/C = user
|
||||
C.vomit(0)
|
||||
user << "<span class='notice'>A parasite exits our form.</span>"
|
||||
var/obj/item/organ/body_egg/egg = user.getorgan(/obj/item/organ/body_egg)
|
||||
if(egg)
|
||||
egg.Remove(user)
|
||||
var/list/bad_organs = list(
|
||||
user.getorgan(/obj/item/organ/body_egg),
|
||||
user.getorgan(/obj/item/organ/zombie_infection))
|
||||
|
||||
for(var/o in bad_organs)
|
||||
var/obj/item/organ/O = o
|
||||
if(!istype(O))
|
||||
continue
|
||||
|
||||
O.Remove(user)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.vomit(0)
|
||||
egg.loc = get_turf(user)
|
||||
O.forceMove(get_turf(user))
|
||||
|
||||
user.reagents.add_reagent("mutadone", 10)
|
||||
user.reagents.add_reagent("pen_acid", 20)
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
//returns a list of scriptures and if they're unlocked or not
|
||||
/proc/scripture_unlock_check()
|
||||
var/servants = 0
|
||||
var/unconverted_ai_exists = FALSE
|
||||
var/unconverted_ai_exists = get_unconverted_ais()
|
||||
for(var/mob/living/M in living_mob_list)
|
||||
if(is_servant_of_ratvar(M) && (ishuman(M) || issilicon(M)))
|
||||
servants++
|
||||
else if(isAI(M))
|
||||
unconverted_ai_exists = TRUE
|
||||
. = list(SCRIPTURE_DRIVER = TRUE, SCRIPTURE_SCRIPT = FALSE, SCRIPTURE_APPLICATION = FALSE, SCRIPTURE_REVENANT = FALSE, SCRIPTURE_JUDGEMENT = FALSE)
|
||||
//Drivers: always unlocked
|
||||
.[SCRIPTURE_SCRIPT] = (servants >= SCRIPT_SERVANT_REQ && clockwork_caches >= SCRIPT_CACHE_REQ)
|
||||
@@ -26,22 +24,34 @@
|
||||
hierophant_message("<span class='large_brass'><i>Hierophant Network:</i> <b>[i] Scripture has been [.[i] ? "un":""]locked.</b></span>")
|
||||
update_slab_info()
|
||||
|
||||
/proc/get_unconverted_ais()
|
||||
. = 0
|
||||
for(var/ai in ai_list)
|
||||
var/mob/living/silicon/AI = ai
|
||||
if(is_servant_of_ratvar(AI) || !isturf(AI.loc) || AI.z != ZLEVEL_STATION)
|
||||
continue
|
||||
.++
|
||||
|
||||
/proc/update_slab_info(obj/item/clockwork/slab/set_slab)
|
||||
generate_all_scripture()
|
||||
var/needs_update = FALSE //if everything needs an update, for whatever reason
|
||||
for(var/s in all_scripture)
|
||||
var/datum/clockwork_scripture/S = s
|
||||
S.creation_update()
|
||||
if(!set_slab)
|
||||
var/datum/clockwork_scripture/S = all_scripture[s]
|
||||
if(S.creation_update())
|
||||
needs_update = TRUE
|
||||
if(!set_slab || needs_update)
|
||||
for(var/obj/item/clockwork/slab/S in all_clockwork_objects)
|
||||
SStgui.update_uis(S)
|
||||
S.update_quickbind()
|
||||
else
|
||||
SStgui.update_uis(set_slab)
|
||||
set_slab.update_quickbind()
|
||||
|
||||
/proc/generate_all_scripture()
|
||||
if(!all_scripture.len)
|
||||
for(var/V in sortList(subtypesof(/datum/clockwork_scripture), /proc/cmp_clockscripture_priority))
|
||||
var/datum/clockwork_scripture/S = new V
|
||||
all_scripture += S
|
||||
all_scripture[S.type] = S
|
||||
|
||||
//changes construction value
|
||||
/proc/change_construction_value(amount)
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
var/finished = FALSE
|
||||
var/in_progress = FALSE
|
||||
|
||||
/obj/effect/proc_holder/slab/Destroy()
|
||||
slab = null
|
||||
return ..()
|
||||
|
||||
/obj/effect/proc_holder/slab/remove_ranged_ability(msg)
|
||||
..()
|
||||
finished = TRUE
|
||||
|
||||
@@ -113,6 +113,10 @@
|
||||
charge_delay = 2
|
||||
|
||||
/obj/item/clockwork/clockwork_proselytizer/ratvar_act()
|
||||
if(nezbere_invoked)
|
||||
charge_rate = 1250
|
||||
else
|
||||
charge_rate = initial(charge_rate)
|
||||
if(ratvar_awakens)
|
||||
uses_power = FALSE
|
||||
speed_multiplier = initial(speed_multiplier) * 0.25
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user