Merge branch 'master' into upstream-merge-30176

This commit is contained in:
LetterJay
2017-09-06 17:43:07 -05:00
committed by GitHub
675 changed files with 20253 additions and 158942 deletions
+4
View File
@@ -233,6 +233,8 @@ This prevents nesting levels from getting deeper then they need to be.
* All changes to the database's layout(schema) must be specified in the database changelog in SQL, as well as reflected in the schema files
* Any time the schema is changed the `schema_revision` table and `DB_MAJOR_VERSION` or `DB_MINOR_VERSION` defines must be incremented.
* Queries must never specify the database, be it in code, or in text files in the repo.
@@ -246,6 +248,8 @@ This prevents nesting levels from getting deeper then they need to be.
* Do not divide when you can easily convert it to multiplication. (ie `4/2` should be done as `4*0.5`)
* If you used regex to replace code during development of your code, post the regex in your PR for the benefit of future developers and downstream users.
#### Enforced not enforced
The following coding styles are not only not enforced at all, but are generally frowned upon to change for little to no reason:
+130 -24
View File
@@ -1,17 +1,124 @@
Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255.
The latest database version is 3.1; The query to update the schema revision table is:
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 1);
or
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (3, 1);
----------------------------------------------------
20th July 2017, by Shadowlight213
Added role_time table to track time spent playing departments.
Also, added flags column to the player table.
CREATE TABLE `role_time` ( `ckey` VARCHAR(32) NOT NULL , `job` VARCHAR(128) NOT NULL , `minutes` INT UNSIGNED NOT NULL, PRIMARY KEY (`ckey`, `job`) ) ENGINE = InnoDB;
ALTER TABLE `player` ADD `flags` INT NOT NULL default '0' AFTER `accountjoindate`;
UPDATE `schema_revision` SET minor = 1;
Remember to add a prefix to the table name if you use them.
----------------------------------------------------
Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255.
The latest database version is 3.0; The query to update the schema revision table is:
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 0);
or
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (3, 0);
----------------------------------------------------
28 June 2017, by oranges
Added schema_revision to store the current db revision, why start at 3.0?
because:
15:09 <+MrStonedOne> 1.0 was erro, 2.0 was when i removed erro_, 3.0 was when jordie made all the strings that hold numbers numbers
CREATE TABLE `schema_revision` (
`major` TINYINT(3) UNSIGNED NOT NULL ,
`minor` TINYINT(3) UNSIGNED NOT NULL ,
`date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY ( `major`,`minor` )
) ENGINE = INNODB;
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (3, 0);
Remember to add a prefix to the table name if you use them.
----------------------------------------------------
26 June 2017, by Jordie0608
Modified table 'poll_option', adding the column 'default_percentage_calc'.
ALTER TABLE `poll_option` ADD COLUMN `default_percentage_calc` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' AFTER `descmax`
Remember to add a prefix to the table name if you use them.
----------------------------------------------------
22 June 2017, by Jordie0608
Modified table 'poll_option', removing the column 'percentagecalc'.
ALTER TABLE `poll_option` DROP COLUMN `percentagecalc`
Remember to add a prefix to the table name if you use them.
----------------------------------------------------
8 June 2017, by Jordie0608
Modified table 'death', adding column 'round_id', removing column 'gender' and replacing column 'coord' with the columns 'x_coord', 'y_coord' and 'z_coord'.
START TRANSACTION;
ALTER TABLE `death` DROP COLUMN `gender`, ADD COLUMN `x_coord` SMALLINT(5) UNSIGNED NOT NULL AFTER `coord`, ADD COLUMN `y_coord` SMALLINT(5) UNSIGNED NOT NULL AFTER `x_coord`, ADD COLUMN `z_coord` SMALLINT(5) UNSIGNED NOT NULL AFTER `y_coord`, ADD COLUMN `round_id` INT(11) NOT NULL AFTER `server_port`;
SET SQL_SAFE_UPDATES = 0;
UPDATE `death` SET `x_coord` = SUBSTRING_INDEX(`coord`, ',', 1), `y_coord` = SUBSTRING_INDEX(SUBSTRING_INDEX(`coord`, ',', 2), ',', -1), `z_coord` = SUBSTRING_INDEX(`coord`, ',', -1);
SET SQL_SAFE_UPDATES = 1;
ALTER TABLE `death` DROP COLUMN `coord`;
COMMIT;
Remember to add a prefix to the table name if you use them.
---------------------------------------------------
30 May 2017, by MrStonedOne
Z levels changed, this query allows you to convert old ss13 death records:
UPDATE death SET coord = CONCAT(SUBSTRING_INDEX(coord, ',', 2), ', ', CASE TRIM(SUBSTRING_INDEX(coord, ',', -1)) WHEN 1 THEN 2 WHEN 2 THEN 1 ELSE TRIMSUBSTRING_INDEX(coord, ',', -1) END)
---------------------------------------------------
26 May 2017, by Jordie0608
Modified table 'ban', adding the column 'round_id'.
ALTER TABLE `ban` ADD COLUMN `round_id` INT(11) NOT NULL AFTER `server_port`
Remember to add a prefix to the table name if you use them.
----------------------------------------------------
20 May 2017, by Jordie0608
Created table `round` to replace tracking of the datapoints 'round_start', 'round_end', 'server_ip', 'game_mode', 'round_end_results', 'end_error', 'end_proper', 'emergency_shuttle', 'map_name' and 'station_renames' in the `feedback` table.
Once created this table is populated with rows from the `feedback` table.
START TRANSACTION;
CREATE TABLE `feedback`.`round` (`id` INT(11) NOT NULL AUTO_INCREMENT, `start_datetime` DATETIME NOT NULL, `end_datetime` DATETIME NULL, `server_ip` INT(10) UNSIGNED NOT NULL, `server_port` SMALLINT(5) UNSIGNED NOT NULL, `commit_hash` CHAR(40) NULL, `game_mode` VARCHAR(32) NULL, `game_mode_result` VARCHAR(64) NULL, `end_state` VARCHAR(64) NULL, `shuttle_name` VARCHAR(64) NULL, `map_name` VARCHAR(32) NULL, `station_name` VARCHAR(80) NULL, PRIMARY KEY (`id`));
ALTER TABLE `feedback`.`feedback` ADD INDEX `tmp` (`round_id` ASC, `var_name` ASC);
INSERT INTO `feedback`.`round`
CREATE TABLE `round` (`id` INT(11) NOT NULL AUTO_INCREMENT, `start_datetime` DATETIME NOT NULL, `end_datetime` DATETIME NULL, `server_ip` INT(10) UNSIGNED NOT NULL, `server_port` SMALLINT(5) UNSIGNED NOT NULL, `commit_hash` CHAR(40) NULL, `game_mode` VARCHAR(32) NULL, `game_mode_result` VARCHAR(64) NULL, `end_state` VARCHAR(64) NULL, `shuttle_name` VARCHAR(64) NULL, `map_name` VARCHAR(32) NULL, `station_name` VARCHAR(80) NULL, PRIMARY KEY (`id`));
ALTER TABLE `feedback` ADD INDEX `tmp` (`round_id` ASC, `var_name` ASC);
INSERT INTO `round`
(`id`, `start_datetime`, `end_datetime`, `server_ip`, `server_port`, `commit_hash`, `game_mode`, `game_mode_result`, `end_state`, `shuttle_name`, `map_name`, `station_name`)
SELECT DISTINCT ri.round_id, IFNULL(STR_TO_DATE(st.details,'%a %b %e %H:%i:%s %Y'), TIMESTAMP(0)), STR_TO_DATE(et.details,'%a %b %e %H:%i:%s %Y'), IFNULL(INET_ATON(SUBSTRING_INDEX(IF(si.details = '', '0', IF(SUBSTRING_INDEX(si.details, ':', 1) LIKE '%_._%', si.details, '0')), ':', 1)), INET_ATON(0)), IFNULL(IF(si.details LIKE '%:_%', CAST(SUBSTRING_INDEX(si.details, ':', -1) AS UNSIGNED), '0'), '0'), ch.details, gm.details, mr.details, IFNULL(es.details, ep.details), ss.details, mn.details, sn.details
FROM `feedback`.`feedback`AS ri
LEFT JOIN `feedback`.`feedback` AS st ON ri.round_id = st.round_id AND st.var_name = "round_start" LEFT JOIN `feedback`.`feedback` AS et ON ri.round_id = et.round_id AND et.var_name = "round_end" LEFT JOIN `feedback`.`feedback` AS si ON ri.round_id = si.round_id AND si.var_name = "server_ip" LEFT JOIN `feedback`.`feedback` AS ch ON ri.round_id = ch.round_id AND ch.var_name = "revision" LEFT JOIN `feedback`.`feedback` AS gm ON ri.round_id = gm.round_id AND gm.var_name = "game_mode" LEFT JOIN `feedback`.`feedback` AS mr ON ri.round_id = mr.round_id AND mr.var_name = "round_end_result" LEFT JOIN `feedback`.`feedback` AS es ON ri.round_id = es.round_id AND es.var_name = "end_state" LEFT JOIN `feedback`.`feedback` AS ep ON ri.round_id = ep.round_id AND ep.var_name = "end_proper" LEFT JOIN `feedback`.`feedback` AS ss ON ri.round_id = ss.round_id AND ss.var_name = "emergency_shuttle" LEFT JOIN `feedback`.`feedback` AS mn ON ri.round_id = mn.round_id AND mn.var_name = "map_name" LEFT JOIN `feedback`.`feedback` AS sn ON ri.round_id = sn.round_id AND sn.var_name = "station_renames";
ALTER TABLE `feedback`.`feedback` DROP INDEX `tmp`;
FROM `feedback`AS ri
LEFT JOIN `feedback` AS st ON ri.round_id = st.round_id AND st.var_name = "round_start" LEFT JOIN `feedback` AS et ON ri.round_id = et.round_id AND et.var_name = "round_end" LEFT JOIN `feedback` AS si ON ri.round_id = si.round_id AND si.var_name = "server_ip" LEFT JOIN `feedback` AS ch ON ri.round_id = ch.round_id AND ch.var_name = "revision" LEFT JOIN `feedback` AS gm ON ri.round_id = gm.round_id AND gm.var_name = "game_mode" LEFT JOIN `feedback` AS mr ON ri.round_id = mr.round_id AND mr.var_name = "round_end_result" LEFT JOIN `feedback` AS es ON ri.round_id = es.round_id AND es.var_name = "end_state" LEFT JOIN `feedback` AS ep ON ri.round_id = ep.round_id AND ep.var_name = "end_proper" LEFT JOIN `feedback` AS ss ON ri.round_id = ss.round_id AND ss.var_name = "emergency_shuttle" LEFT JOIN `feedback` AS mn ON ri.round_id = mn.round_id AND mn.var_name = "map_name" LEFT JOIN `feedback` AS sn ON ri.round_id = sn.round_id AND sn.var_name = "station_renames";
ALTER TABLE `feedback` DROP INDEX `tmp`;
COMMIT;
It's not necessary to delete the rows from the `feedback` table but henceforth these datapoints will be in the `round` table.
@@ -24,19 +131,18 @@ Remember to add a prefix to the table names if you use them
Modified table 'player', adding the column 'accountjoindate', removing the column 'id' and making the column 'ckey' the primary key.
ALTER TABLE `feedback`.`player` DROP COLUMN `id`, ADD COLUMN `accountjoindate` DATE NULL AFTER `lastadminrank`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`), DROP INDEX `ckey`;
ALTER TABLE `player` DROP COLUMN `id`, ADD COLUMN `accountjoindate` DATE NULL AFTER `lastadminrank`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`), DROP INDEX `ckey`;
Remember to add a prefix to the table name if you use them.
----------------------------------------------------
10 March 2017, by Jordie0608
Modified table 'death', adding the columns 'toxloss', 'cloneloss', and 'staminaloss' and table 'legacy_population', adding the columns 'server_ip' and 'server_port'.
ALTER TABLE `feedback`.`death` ADD COLUMN `toxloss` SMALLINT(5) UNSIGNED NOT NULL AFTER `oxyloss`, ADD COLUMN `cloneloss` SMALLINT(5) UNSIGNED NOT NULL AFTER `toxloss`, ADD COLUMN `staminaloss` SMALLINT(5) UNSIGNED NOT NULL AFTER `cloneloss`;
ALTER TABLE `death` ADD COLUMN `toxloss` SMALLINT(5) UNSIGNED NOT NULL AFTER `oxyloss`, ADD COLUMN `cloneloss` SMALLINT(5) UNSIGNED NOT NULL AFTER `toxloss`, ADD COLUMN `staminaloss` SMALLINT(5) UNSIGNED NOT NULL AFTER `cloneloss`;
ALTER TABLE `feedback`.`legacy_population` ADD COLUMN `server_ip` INT(10) UNSIGNED NOT NULL AFTER `time`, ADD COLUMN `server_port` SMALLINT(5) UNSIGNED NOT NULL AFTER `server_ip`;
ALTER TABLE `legacy_population` ADD COLUMN `server_ip` INT(10) UNSIGNED NOT NULL AFTER `time`, ADD COLUMN `server_port` SMALLINT(5) UNSIGNED NOT NULL AFTER `server_ip`;
Remember to add a prefix to the table name if you use them.
@@ -68,18 +174,18 @@ Created table 'messages' to supersede the 'notes', 'memos', and 'watchlist' tabl
To create this new table run the following command:
CREATE TABLE `feedback`.`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`) )
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`) )
To copy the contents of the 'notes', 'memos', and 'watchlist' tables to this new table run the following commands:
INSERT INTO `feedback`.`messages`
(`id`,`type`,`targetckey`,`adminckey`,`text`,`timestamp`,`server`,`secret`,`lasteditor`,`edits`) SELECT `id`, "note", `ckey`, `adminckey`, `notetext`, `timestamp`, `server`, `secret`, `last_editor`, `edits` FROM `feedback`.`notes`
INSERT INTO `messages`
(`id`,`type`,`targetckey`,`adminckey`,`text`,`timestamp`,`server`,`secret`,`lasteditor`,`edits`) SELECT `id`, "note", `ckey`, `adminckey`, `notetext`, `timestamp`, `server`, `secret`, `last_editor`, `edits` FROM `notes`
INSERT INTO `feedback`.`messages`
(`type`,`targetckey`,`adminckey`,`text`,`timestamp`,`lasteditor`,`edits`) SELECT "memo", `ckey`, `ckey`, `memotext`, `timestamp`, `last_editor`, `edits` FROM `feedback`.`memo`
INSERT INTO `messages`
(`type`,`targetckey`,`adminckey`,`text`,`timestamp`,`lasteditor`,`edits`) SELECT "memo", `ckey`, `ckey`, `memotext`, `timestamp`, `last_editor`, `edits` FROM `memo`
INSERT INTO `feedback`.`messages`
(`type`,`targetckey`,`adminckey`,`text`,`timestamp`,`lasteditor`,`edits`) SELECT "watchlist entry", `ckey`, `adminckey`, `reason`, `timestamp`, `last_editor`, `edits` FROM `feedback`.`watch`
INSERT INTO `messages`
(`type`,`targetckey`,`adminckey`,`text`,`timestamp`,`lasteditor`,`edits`) SELECT "watchlist entry", `ckey`, `adminckey`, `reason`, `timestamp`, `last_editor`, `edits` FROM `watch`
It's not necessary to delete the 'notes', 'memos', and 'watchlist' tables but they will no longer be used.
@@ -91,7 +197,7 @@ Remember to add a prefix to the table names if you use them
Modified table 'notes', adding column 'secret'.
ALTER TABLE `feedback`.`notes` ADD COLUMN `secret` TINYINT(1) NOT NULL DEFAULT '1' AFTER `server`
ALTER TABLE `notes` ADD COLUMN `secret` TINYINT(1) NOT NULL DEFAULT '1' AFTER `server`
Remember to add a prefix to the table name if you use them
@@ -101,7 +207,7 @@ Remember to add a prefix to the table name if you use them
Changed appearance bans to be jobbans.
UPDATE 'feedback'.`ban` SET `job` = "appearance", `bantype` = "JOB_PERMABAN" WHERE `bantype` = "APPEARANCE_PERMABAN"
UPDATE `ban` SET `job` = "appearance", `bantype` = "JOB_PERMABAN" WHERE `bantype` = "APPEARANCE_PERMABAN"
Remember to add a prefix to the table name if you use them
@@ -111,7 +217,7 @@ Remember to add a prefix to the table name if you use them
Modified table 'poll_question', adding column 'dontshow' which was recently added to the server schema.
ALTER TABLE `feedback`.`poll_question` ADD COLUMN `dontshow` TINYINT(1) NOT NULL DEFAULT '0' AFTER `for_trialmin`
ALTER TABLE `poll_question` ADD COLUMN `dontshow` TINYINT(1) NOT NULL DEFAULT '0' AFTER `for_trialmin`
Remember to add a prefix to the table name if you use them
@@ -121,7 +227,7 @@ Remember to add a prefix to the table name if you use them
Added ipintel table, only required if ip intel is enabled in the config
CREATE TABLE `ipintel` (
CREATE TABLE `ipintel` (
`ip` INT UNSIGNED NOT NULL ,
`date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL ,
`intel` REAL NOT NULL DEFAULT '0',
@@ -134,7 +240,7 @@ PRIMARY KEY ( `ip` )
Modified table 'poll_question', adding columns 'createdby_ckey', 'createdby_ip' and 'for_trialmin' to bring it inline with the schema used by the tg servers.
ALTER TABLE `feedback`.`poll_question` ADD COLUMN `createdby_ckey` VARCHAR(45) NULL DEFAULT NULL AFTER `multiplechoiceoptions`, ADD COLUMN `createdby_ip` VARCHAR(45) NULL DEFAULT NULL AFTER `createdby_ckey`, ADD COLUMN `for_trialmin` VARCHAR(45) NULL DEFAULT NULL AFTER `createdby_ip`
ALTER TABLE `poll_question` ADD COLUMN `createdby_ckey` VARCHAR(45) NULL DEFAULT NULL AFTER `multiplechoiceoptions`, ADD COLUMN `createdby_ip` VARCHAR(45) NULL DEFAULT NULL AFTER `createdby_ckey`, ADD COLUMN `for_trialmin` VARCHAR(45) NULL DEFAULT NULL AFTER `createdby_ip`
Remember to add a prefix to the table name if you use them
@@ -144,7 +250,7 @@ Remember to add a prefix to the table name if you use them
Modified table 'watch', removing 'id' column, making 'ckey' primary and adding the columns 'timestamp', 'adminckey', 'last_editor' and 'edits'.
ALTER TABLE `feedback`.`watch` DROP COLUMN `id`, ADD COLUMN `timestamp` datetime NOT NULL AFTER `reason`, ADD COLUMN `adminckey` varchar(32) NOT NULL AFTER `timestamp`, ADD COLUMN `last_editor` varchar(32) NULL AFTER `adminckey`, ADD COLUMN `edits` text NULL AFTER `last_editor`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`)
ALTER TABLE `watch` DROP COLUMN `id`, ADD COLUMN `timestamp` datetime NOT NULL AFTER `reason`, ADD COLUMN `adminckey` varchar(32) NOT NULL AFTER `timestamp`, ADD COLUMN `last_editor` varchar(32) NULL AFTER `adminckey`, ADD COLUMN `edits` text NULL AFTER `last_editor`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`)
Remember to add a prefix to the table name if you use them.
@@ -166,7 +272,7 @@ Remember to add prefix to the table name if you use them.
Modified table 'memo', removing 'id' column and making 'ckey' primary.
ALTER TABLE `feedback`.`memo` DROP COLUMN `id`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`)
ALTER TABLE `memo` DROP COLUMN `id`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`)
Remember to add prefix to the table name if you use them.
+32 -7
View File
@@ -1,6 +1,3 @@
CREATE DATABASE IF NOT EXISTS `feedback` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `feedback`;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
@@ -74,6 +71,7 @@ CREATE TABLE `ban` (
`bantime` datetime NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) 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,
@@ -120,7 +118,6 @@ CREATE TABLE `connection_log` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `death`
--
@@ -137,7 +134,7 @@ CREATE TABLE `death` (
`mapname` varchar(32) NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) NOT NULL
`round_id` int(11) NOT NULL,
`tod` datetime NOT NULL COMMENT 'Time of death',
`job` varchar(32) NOT NULL,
`special` varchar(32) DEFAULT NULL,
@@ -152,11 +149,12 @@ CREATE TABLE `death` (
`toxloss` smallint(5) unsigned NOT NULL,
`cloneloss` smallint(5) unsigned NOT NULL,
`staminaloss` smallint(5) unsigned NOT NULL,
`last_words` varchar(255) DEFAULT NULL,
`suicide` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `feedback`
--
@@ -263,6 +261,21 @@ CREATE TABLE `messages` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `role_time`
--
DROP TABLE IF EXISTS `role_time`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `role_time`
( `ckey` VARCHAR(32) NOT NULL ,
`job` VARCHAR(32) NOT NULL ,
`minutes` INT UNSIGNED NOT NULL,
PRIMARY KEY (`ckey`, `job`)
) ENGINE = InnoDB;
--
-- Table structure for table `player`
--
@@ -280,6 +293,7 @@ CREATE TABLE `player` (
`computerid` varchar(32) NOT NULL,
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
`accountjoindate` DATE DEFAULT NULL,
`flags` smallint(5) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
@@ -297,12 +311,12 @@ CREATE TABLE `poll_option` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pollid` int(11) NOT NULL,
`text` varchar(255) NOT NULL,
`percentagecalc` tinyint(1) NOT NULL DEFAULT '1',
`minval` int(3) DEFAULT NULL,
`maxval` int(3) DEFAULT NULL,
`descmin` varchar(32) DEFAULT NULL,
`descmid` varchar(32) DEFAULT NULL,
`descmax` varchar(32) DEFAULT NULL,
`default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `idx_pop_pollid` (`pollid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
@@ -399,6 +413,17 @@ CREATE TABLE `round` (
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--
-- Table structure for table `schema_revision`
--
DROP TABLE IF EXISTS `schema_revision`;
CREATE TABLE `schema_revision` (
`major` TINYINT(3) unsigned NOT NULL,
`minor` TINYINT(3) unsigned NOT NULL,
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`major`, `minor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+9
View File
@@ -0,0 +1,9 @@
diff a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql (rejected hunks)
@@ -268,7 +283,6 @@ CREATE TABLE `player` (
`ip` int(10) unsigned NOT NULL,
`computerid` varchar(32) NOT NULL,
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
- `exp` mediumtext,
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
+35 -6
View File
@@ -1,6 +1,3 @@
CREATE DATABASE IF NOT EXISTS `feedback` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `feedback`;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
@@ -74,6 +71,7 @@ CREATE TABLE `SS13_ban` (
`bantime` datetime NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) 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,
@@ -130,10 +128,13 @@ DROP TABLE IF EXISTS `SS13_death`;
CREATE TABLE `SS13_death` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pod` varchar(50) NOT NULL,
`coord` varchar(32) NOT NULL,
`x_coord` smallint(5) unsigned NOT NULL,
`y_coord` smallint(5) unsigned NOT NULL,
`z_coord` smallint(5) unsigned NOT NULL,
`mapname` varchar(32) NOT NULL,
`server_ip` int(10) unsigned NOT NULL,
`server_port` smallint(5) unsigned NOT NULL,
`round_id` int(11) NOT NULL,
`tod` datetime NOT NULL COMMENT 'Time of death',
`job` varchar(32) NOT NULL,
`special` varchar(32) DEFAULT NULL,
@@ -141,7 +142,6 @@ CREATE TABLE `SS13_death` (
`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,
@@ -149,6 +149,8 @@ CREATE TABLE `SS13_death` (
`toxloss` smallint(5) unsigned NOT NULL,
`cloneloss` smallint(5) unsigned NOT NULL,
`staminaloss` smallint(5) unsigned NOT NULL,
`last_words` varchar(255) DEFAULT NULL,
`suicide` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -259,6 +261,21 @@ CREATE TABLE `SS13_messages` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `SS13_role_time`
--
DROP TABLE IF EXISTS `SS13_role_time`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `SS13_role_time`
( `ckey` VARCHAR(32) NOT NULL ,
`job` VARCHAR(32) NOT NULL ,
`minutes` INT UNSIGNED NOT NULL,
PRIMARY KEY (`ckey`, `job`)
) ENGINE = InnoDB;
--
-- Table structure for table `SS13_player`
--
@@ -276,6 +293,7 @@ CREATE TABLE `SS13_player` (
`computerid` varchar(32) NOT NULL,
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
`accountjoindate` DATE DEFAULT NULL,
`flags` smallint(5) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
KEY `idx_player_ip_ckey` (`ip`,`ckey`)
@@ -293,12 +311,12 @@ CREATE TABLE `SS13_poll_option` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pollid` int(11) NOT NULL,
`text` varchar(255) NOT NULL,
`percentagecalc` tinyint(1) NOT NULL DEFAULT '1',
`minval` int(3) DEFAULT NULL,
`maxval` int(3) DEFAULT NULL,
`descmin` varchar(32) DEFAULT NULL,
`descmid` varchar(32) DEFAULT NULL,
`descmax` varchar(32) DEFAULT NULL,
`default_percentage_calc` tinyint(1) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `idx_pop_pollid` (`pollid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
@@ -395,6 +413,17 @@ CREATE TABLE `SS13_round` (
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
--
-- Table structure for table `SS13_schema_revision`
--
DROP TABLE IF EXISTS `SS13_schema_revision`;
CREATE TABLE `SS13_schema_revision` (
`major` TINYINT(3) unsigned NOT NULL,
`minor` TINYINT(3) unsigned NOT NULL,
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`major`,`minor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+9
View File
@@ -0,0 +1,9 @@
diff a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql (rejected hunks)
@@ -268,7 +297,6 @@ CREATE TABLE `SS13_player` (
`ip` int(10) unsigned NOT NULL,
`computerid` varchar(32) NOT NULL,
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
- `exp` mediumtext,
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`),
KEY `idx_player_cid_ckey` (`computerid`,`ckey`),
@@ -1,10 +0,0 @@
diff a/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm (rejected hunks)
@@ -269,7 +269,7 @@
"W" = (
/obj/structure/alien/weeds,
/obj/structure/alien/resin/wall,
-/obj/effect/baseturf_helper,
+/obj/effect/baseturf_helper/lava_land/surface,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
+6 -24
View File
@@ -10,10 +10,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/powered/mechtransport)
"d" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"e" = (
/turf/closed/wall/mineral/titanium,
@@ -63,10 +60,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/ruin/space/has_grav/powered/mechtransport)
"o" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"p" = (
/obj/machinery/door/airlock/hatch{
@@ -76,10 +70,7 @@
/turf/open/floor/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"q" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"r" = (
/obj/effect/decal/cleanable/dirt,
@@ -200,26 +191,17 @@
/turf/open/floor/plating/airless,
/area/ruin/space/has_grav/powered/mechtransport)
"T" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"U" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"V" = (
/obj/item/stack/rods,
/turf/template_noop,
/area/template_noop)
"W" = (
/turf/closed/wall/shuttle{
icon_state = "swall15";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/ruin/space/has_grav/powered/mechtransport)
"X" = (
/obj/structure/shuttle/engine/propulsion,
+4 -14
View File
@@ -495,15 +495,10 @@
/turf/closed/wall/mineral/titanium,
/area/awaymission/academy/classrooms)
"bG" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/academy/classrooms)
"bH" = (
/turf/closed/wall/shuttle{
icon_state = "swallc1"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/academy/classrooms)
"bI" = (
/obj/machinery/light{
@@ -603,10 +598,7 @@
/turf/open/floor/plasteel/floorgrime,
/area/awaymission/academy/classrooms)
"bW" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/academy/classrooms)
"bX" = (
/obj/effect/decal/cleanable/ash,
@@ -727,9 +719,7 @@
/turf/open/floor/plasteel,
/area/awaymission/academy/classrooms)
"cs" = (
/turf/closed/wall/shuttle{
icon_state = "swall1"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/academy/classrooms)
"ct" = (
/obj/structure/chair,
+5 -1
View File
@@ -975,6 +975,10 @@
},
/turf/open/floor/plating,
/area/awaymission/cabin)
"dw" = (
/obj/effect/mapping_helpers/planet_z,
/turf/closed/indestructible/rock/snow,
/area/space)
(1,1,1) = {"
aa
@@ -1231,7 +1235,7 @@ aa
aa
aa
aa
aa
dw
"}
(2,1,1) = {"
aa
+5 -1
View File
@@ -2973,6 +2973,10 @@
initial_gas_mix = "n2=23;o2=14"
},
/area/awaymission/BMPship)
"gW" = (
/obj/effect/mapping_helpers/planet_z,
/turf/closed/indestructible/rock,
/area/space)
(1,1,1) = {"
aa
@@ -3229,7 +3233,7 @@ aa
aa
aa
aa
aa
gW
"}
(2,1,1) = {"
aa
+19 -88
View File
@@ -365,10 +365,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
/turf/closed/wall/shuttle{
icon_state = "swall_f10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"bs" = (
/obj/structure/closet/crate,
@@ -429,16 +426,10 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"bD" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"bE" = (
/turf/closed/wall/shuttle{
icon_state = "swall8";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"bF" = (
/obj/machinery/door/airlock/external{
@@ -447,22 +438,13 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"bG" = (
/turf/closed/wall/shuttle{
icon_state = "swall4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"bH" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"bI" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"bJ" = (
/obj/structure/chair/comfy/brown,
@@ -557,19 +539,10 @@
/turf/open/floor/mineral/titanium/blue,
/area/awaymission/centcomAway/hangar)
"bZ" = (
/turf/open/floor/plasteel/shuttle,
/turf/closed/wall/shuttle{
icon_state = "swall_f5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"ca" = (
/turf/open/floor/plating,
/turf/closed/wall/shuttle{
dir = 2;
icon_state = "swall_f10";
layer = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"cb" = (
/obj/item/paper_bin,
@@ -667,13 +640,7 @@
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/maint)
"cw" = (
/turf/open/floor/plasteel/vault{
dir = 5
},
/turf/closed/wall/shuttle{
icon_state = "swall_f5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"cx" = (
/obj/machinery/door/airlock/maintenance_hatch{
@@ -682,13 +649,7 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"cy" = (
/turf/open/floor/plasteel/vault{
dir = 5
},
/turf/closed/wall/shuttle{
icon_state = "swall_f9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"cz" = (
/turf/closed/wall,
@@ -726,10 +687,7 @@
/turf/open/floor/plasteel/hydrofloor,
/area/awaymission/centcomAway/cafe)
"cI" = (
/turf/closed/wall/shuttle{
icon_state = "swallc1";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"cJ" = (
/obj/structure/table/reinforced,
@@ -770,10 +728,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/awaymission/centcomAway/hangar)
"cQ" = (
/turf/closed/wall/shuttle{
icon_state = "swallc2";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"cR" = (
/turf/open/floor/plating,
@@ -930,10 +885,7 @@
},
/area/awaymission/centcomAway/cafe)
"du" = (
/turf/closed/wall/shuttle{
icon_state = "swall0";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"dv" = (
/obj/structure/closet/crate,
@@ -1061,10 +1013,7 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"dR" = (
/turf/closed/wall/shuttle{
icon_state = "swall2";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"dS" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
@@ -1199,23 +1148,13 @@
/turf/open/floor/plasteel/red,
/area/awaymission/centcomAway/cafe)
"eq" = (
/turf/open/floor/plating,
/turf/closed/wall/shuttle{
icon_state = "swall_f5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"er" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"es" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"et" = (
/obj/machinery/door/airlock/hatch{
@@ -2054,21 +1993,13 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"hv" = (
/turf/open/floor/plating,
/obj/structure/shuttle/engine/propulsion/burst{
dir = 4
},
/turf/closed/wall/shuttle{
icon_state = "swall_f5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"hw" = (
/turf/open/floor/plasteel/black,
/turf/closed/wall/shuttle{
icon_state = "swall_f9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"hx" = (
/obj/structure/table,
File diff suppressed because it is too large Load Diff
+1 -4
View File
@@ -4403,10 +4403,7 @@
/obj/structure/shuttle/engine/propulsion/burst{
dir = 8
},
/turf/closed/wall/shuttle{
icon_state = "swall_f9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/research/exterior)
"mA" = (
/obj/structure/chair{
+5 -1
View File
@@ -5278,6 +5278,10 @@
},
/turf/open/floor/plating/asteroid/snow,
/area/awaymission/snowdin)
"nR" = (
/obj/effect/mapping_helpers/planet_z,
/turf/closed/indestructible/rock/snow,
/area/awaymission/snowdin)
(1,1,1) = {"
aa
@@ -5534,7 +5538,7 @@ aa
aa
aa
aa
aa
nR
"}
(2,1,1) = {"
aa
+40 -84
View File
@@ -540,20 +540,13 @@
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"bU" = (
/turf/closed/wall/shuttle{
icon_state = "swall14"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"bV" = (
/turf/closed/wall/shuttle{
icon_state = "swall12"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"bW" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"bX" = (
/obj/structure/shuttle/engine/propulsion/burst/left{
@@ -594,9 +587,7 @@
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
"ce" = (
/turf/closed/wall/shuttle{
icon_state = "swall3"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"cf" = (
/obj/structure/shuttle/engine/propulsion{
@@ -681,17 +672,13 @@
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
"cs" = (
/turf/closed/wall/shuttle{
icon_state = "swall7"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"ct" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/awaymission/spacebattle/cruiser)
"cu" = (
/turf/closed/wall/shuttle{
icon_state = "swallc2"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"cv" = (
/obj/machinery/power/smes/magical{
@@ -814,9 +801,7 @@
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
"cR" = (
/turf/closed/wall/shuttle{
icon_state = "swallc3"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"cS" = (
/obj/effect/mob_spawn/human/engineer{
@@ -937,16 +922,10 @@
/turf/open/floor/plasteel/bar,
/area/awaymission/spacebattle/cruiser)
"do" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"dp" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"dq" = (
/turf/open/floor/plasteel{
@@ -973,24 +952,17 @@
},
/area/awaymission/spacebattle/cruiser)
"dt" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"du" = (
/obj/effect/decal/cleanable/blood,
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"dv" = (
/turf/closed/wall/shuttle{
icon_state = "swall15"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"dw" = (
/turf/closed/wall/shuttle{
icon_state = "swall11"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"dx" = (
/obj/structure/chair,
@@ -1305,10 +1277,7 @@
/turf/open/floor/mineral/plastitanium,
/area/awaymission/spacebattle/syndicate1)
"eB" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"eC" = (
/obj/structure/table/reinforced,
@@ -1344,15 +1313,10 @@
/turf/open/floor/plating/airless,
/area/awaymission/spacebattle/cruiser)
"eI" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"eJ" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"eK" = (
/turf/open/floor/mineral/plastitanium,
@@ -1494,10 +1458,7 @@
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"fk" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"fl" = (
/obj/machinery/door/airlock/external,
@@ -1939,9 +1900,7 @@
/area/awaymission/spacebattle/cruiser)
"gE" = (
/obj/effect/decal/cleanable/blood,
/turf/closed/wall/shuttle{
icon_state = "swall3"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"gF" = (
/obj/effect/mob_spawn/human/doctor{
@@ -2228,10 +2187,7 @@
},
/area/awaymission/spacebattle/syndicate7)
"hH" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"hI" = (
/obj/structure/table/reinforced,
@@ -2333,18 +2289,14 @@
/turf/open/floor/plasteel/white,
/area/awaymission/spacebattle/cruiser)
"ia" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"ib" = (
/obj/machinery/door/unpowered/shuttle,
/turf/open/floor/plasteel/freezer,
/area/awaymission/spacebattle/cruiser)
"ic" = (
/turf/closed/wall/shuttle{
icon_state = "swall1"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/spacebattle/cruiser)
"id" = (
/obj/item/storage/firstaid/regular,
@@ -3113,6 +3065,10 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"kM" = (
/obj/effect/mapping_helpers/planet_z,
/turf/closed/mineral/random,
/area/space)
(1,1,1) = {"
aa
@@ -3369,7 +3325,7 @@ aa
aa
aa
aa
aa
kM
"}
(2,1,1) = {"
aa
@@ -38189,17 +38145,17 @@ bT
cd
bT
bT
eF
eQ
eQ
eQ
eQ
eQ
eQ
eQ
eQ
eQ
eQ
cY
eb
eb
eb
eb
eb
eb
eb
eb
eb
eb
ha
bT
bT
@@ -48225,7 +48181,7 @@ jS
jS
bT
kd
ko
ki
ix
ab
ab
@@ -48739,7 +48695,7 @@ jS
jS
bT
kd
ko
ki
kr
kx
ab
@@ -49253,7 +49209,7 @@ jS
jS
bT
kd
ko
ki
kr
kx
ab
@@ -49767,7 +49723,7 @@ jS
jS
bT
kd
ko
ki
kr
kz
ab
+36 -49
View File
@@ -55,19 +55,13 @@
name = "UO45 Central Hall"
})
"ah" = (
/turf/closed/wall/shuttle{
icon_state = "swallc1";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaycontent/a1{
has_gravity = 1;
name = "UO45 Central Hall"
})
"ai" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaycontent/a1{
has_gravity = 1;
name = "UO45 Central Hall"
@@ -231,19 +225,13 @@
name = "UO45 Central Hall"
})
"av" = (
/turf/closed/wall/shuttle{
icon_state = "swallc3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaycontent/a1{
has_gravity = 1;
name = "UO45 Central Hall"
})
"aw" = (
/turf/closed/wall/shuttle{
icon_state = "swall8";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaycontent/a1{
has_gravity = 1;
name = "UO45 Central Hall"
@@ -286,10 +274,7 @@
name = "UO45 Central Hall"
})
"aA" = (
/turf/closed/wall/shuttle{
icon_state = "swall4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/awaycontent/a1{
has_gravity = 1;
name = "UO45 Central Hall"
@@ -318,9 +303,7 @@
name = "UO45 Central Hall"
})
"aE" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4"
},
/turf/closed/wall/mineral/titanium,
/area/awaycontent/a1{
has_gravity = 1;
name = "UO45 Central Hall"
@@ -17851,6 +17834,10 @@
power_light = 0;
poweralm = 0
})
"zi" = (
/obj/effect/mapping_helpers/planet_z,
/turf/open/space,
/area/space)
(1,1,1) = {"
aa
@@ -18107,7 +18094,7 @@ aa
aa
aa
aa
aa
zi
"}
(2,1,1) = {"
aa
@@ -36538,9 +36525,9 @@ ad
ad
ad
ad
ys
yk
yw
yx
yn
ad
ad
ad
@@ -37053,7 +37040,7 @@ ad
ad
ad
ad
yx
yn
eJ
yB
ad
@@ -37315,8 +37302,8 @@ eJ
eJ
yr
ad
yF
yG
yA
yj
ad
ad
ad
@@ -37571,8 +37558,8 @@ ad
ad
yC
eJ
yE
yv
yw
ym
yH
ad
ad
@@ -37828,7 +37815,7 @@ ad
ad
ad
eJ
yx
yn
eJ
yz
ad
@@ -38337,7 +38324,7 @@ ad
yl
eJ
yq
yv
ym
ad
ad
yz
@@ -38595,7 +38582,7 @@ ad
eJ
eJ
eJ
yy
yn
ad
yD
eJ
@@ -38605,8 +38592,8 @@ ad
ad
ad
ad
yG
yy
yj
yn
ad
ad
ad
@@ -38852,17 +38839,17 @@ ad
ad
yr
yn
yy
yn
yx
yn
yn
eJ
eJ
ad
ad
ad
ad
yI
yv
yp
ym
yA
ad
ad
@@ -39109,7 +39096,7 @@ ad
ad
ad
ad
yx
yn
eJ
eJ
eJ
@@ -39370,7 +39357,7 @@ yz
eJ
eJ
eJ
yy
yn
eJ
eJ
eJ
@@ -39626,12 +39613,12 @@ ad
yp
yq
eJ
yy
yn
yv
yn
ym
eJ
yy
yy
yn
yn
ad
ad
ad
@@ -39881,14 +39868,14 @@ ad
ad
ad
yA
yx
yn
eJ
yn
ad
ad
yw
yG
ys
yj
yk
ad
ad
ad
+7 -21
View File
@@ -2094,28 +2094,20 @@
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gK" = (
/turf/closed/wall/shuttle{
icon_state = "swall8"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gL" = (
/obj/machinery/door/unpowered/shuttle,
/turf/open/floor/mineral/titanium/yellow,
/area/awaymission/wwrefine)
"gM" = (
/turf/closed/wall/shuttle{
icon_state = "swall4"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gN" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gO" = (
/turf/closed/wall/shuttle{
icon_state = "swall3"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gP" = (
/obj/structure/chair,
@@ -2125,22 +2117,16 @@
/turf/open/floor/mineral/titanium/yellow,
/area/awaymission/wwrefine)
"gR" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s5"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gS" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/awaymission/wwrefine)
"gT" = (
/turf/closed/wall/shuttle{
icon_state = "swallc2"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gU" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9"
},
/turf/closed/wall/mineral/titanium,
/area/awaymission/wwrefine)
"gV" = (
/obj/effect/landmark/awaystart,
+2 -3
View File
@@ -9,11 +9,10 @@
#include "map_files\Deltastation\DeltaStation2.dmm"
#include "map_files\MetaStation\MetaStation.dmm"
#include "map_files\OmegaStation\OmegaStation.dmm"
#include "map_files\PubbyStation\PubbyStation.dmm"
// #include "map_files\PubbyStation\PubbyStation.dmm"
#include "map_files\BoxStation\BoxStation.dmm"
#include "map_files\Cerestation\cerestation.dmm"
#ifdef TRAVISBUILDING
#include "templates.dm"
#endif
#endif
#endif
+8 -7
View File
@@ -1,7 +1,8 @@
{
"map_name": "Box Station",
"map_path": "map_files/BoxStation",
"map_file": "BoxStation.dmm",
"minetype": "lavaland",
"transition_config": "default"
}
{
"map_name": "Box Station",
"map_path": "map_files/BoxStation",
"map_file": "BoxStation.dmm",
"minetype": "lavaland",
"transition_config": "default",
"allow_custom_shuttles": "yes"
}
-1
View File
@@ -1 +0,0 @@
#define FORCE_MAP "_maps/cerestation.json"
-7
View File
@@ -1,7 +0,0 @@
{
"map_name": "CereStation",
"map_path": "map_files/Cerestation",
"map_file": "cerestation.dmm",
"minetype": "lavaland",
"transition_config": "default"
}
+2 -1
View File
@@ -3,5 +3,6 @@
"map_path": "map_files/Deltastation",
"map_file": "DeltaStation2.dmm",
"minetype": "lavaland",
"transition_config": "default"
"transition_config": "default",
"allow_custom_shuttles": "yes"
}
+1 -3
View File
@@ -19,9 +19,7 @@
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"aad" = (
/turf/closed/wall/shuttle{
icon_state = "wall3"
},
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/syndicate)
"aae" = (
/obj/effect/landmark/carpspawn,
File diff suppressed because it is too large Load Diff
+1 -3
View File
@@ -79656,9 +79656,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"cVW" = (
/turf/closed/wall/shuttle{
icon_state = "swall1"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"cVX" = (
/obj/structure/tank_dispenser/oxygen{
+5 -1
View File
@@ -3420,6 +3420,10 @@
/obj/effect/baseturf_helper/lava_land/surface,
/turf/open/floor/plasteel,
/area/mine/production)
"Wz" = (
/obj/effect/mapping_helpers/planet_z,
/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
(1,1,1) = {"
aa
@@ -3676,7 +3680,7 @@ aj
aj
aj
aj
aj
Wz
"}
(2,1,1) = {"
aa
+31 -27
View File
@@ -18893,7 +18893,6 @@
},
/obj/structure/cable{
icon_state = "0-2";
pixel_y = 1;
d2 = 2
},
/obj/effect/decal/cleanable/dirt,
@@ -21313,14 +21312,14 @@
/obj/machinery/power/smes{
charge = 5e+006
},
/obj/structure/cable{
icon_state = "0-2";
d2 = 2
},
/obj/structure/sign/electricshock{
pixel_y = 32
},
/obj/effect/turf_decal/bot,
/obj/structure/cable{
icon_state = "0-2";
d2 = 2
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aJo" = (
@@ -21935,35 +21934,25 @@
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aKu" = (
/obj/structure/cable{
d1 = 1;
d2 = 4;
icon_state = "1-4"
},
/obj/machinery/holopad,
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/obj/structure/cable{
d1 = 4;
d1 = 2;
d2 = 8;
icon_state = "4-8"
icon_state = "2-8"
},
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
/area/engine/gravity_generator)
"aKv" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/structure/cable/white{
d1 = 1;
@@ -21977,17 +21966,17 @@
/area/engine/gravity_generator)
"aKw" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
/obj/structure/cable/white{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/effect/turf_decal/delivery,
/obj/structure/cable{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aKx" = (
@@ -22671,6 +22660,11 @@
icon_state = "1-2"
},
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aLJ" = (
@@ -22678,6 +22672,11 @@
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aLK" = (
@@ -22693,6 +22692,11 @@
dir = 4
},
/obj/effect/turf_decal/bot,
/obj/structure/cable{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aLL" = (
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -3,5 +3,6 @@
"map_path": "map_files/MetaStation",
"map_file": "MetaStation.dmm",
"minetype": "lavaland",
"transition_config": "default"
"transition_config": "default",
"allow_custom_shuttles": "yes"
}
+2 -1
View File
@@ -3,5 +3,6 @@
"map_path": "map_files/OmegaStation",
"map_file": "OmegaStation.dmm",
"minetype": "lavaland",
"transition_config": "default"
"transition_config": "default",
"allow_custom_shuttles": "yes"
}
+2 -1
View File
@@ -3,5 +3,6 @@
"map_path": "map_files/PubbyStation",
"map_file": "PubbyStation.dmm",
"minetype": "lavaland",
"transition_config": "default"
"transition_config": "default",
"allow_custom_shuttles": "yes"
}
+8 -7
View File
@@ -1,7 +1,8 @@
{
"map_name": "Runtime Station",
"map_path": "map_files/debug",
"map_file": "runtimestation.dmm",
"minetype": "lavaland",
"transition_config": "default"
}
{
"map_name": "Runtime Station",
"map_path": "map_files/debug",
"map_file": "runtimestation.dmm",
"minetype": "lavaland",
"transition_config": "default",
"allow_custom_shuttles": "no"
}
+4 -16
View File
@@ -6,16 +6,10 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"c" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"d" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"e" = (
/obj/machinery/conveyor{
@@ -148,10 +142,7 @@
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/supply)
"t" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"u" = (
/obj/structure/window/reinforced{
@@ -161,10 +152,7 @@
/turf/open/floor/plating/airless,
/area/shuttle/supply)
"v" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"w" = (
/turf/open/space,
+7 -28
View File
@@ -6,16 +6,10 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"c" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"d" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"e" = (
/turf/open/floor/mineral/titanium/blue,
@@ -81,10 +75,7 @@
/turf/open/floor/plating,
/area/shuttle/supply)
"k" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"l" = (
/turf/open/floor/mineral/titanium/blue,
@@ -97,22 +88,13 @@
},
/area/shuttle/supply)
"n" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"o" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"p" = (
/turf/closed/wall/shuttle{
icon_state = "swall15";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"q" = (
/obj/structure/window/reinforced{
@@ -122,10 +104,7 @@
/turf/open/floor/plating/airless,
/area/shuttle/supply)
"r" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/supply)
"s" = (
/turf/open/space,
+12 -47
View File
@@ -20,10 +20,7 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"af" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ag" = (
/turf/open/space,
@@ -53,10 +50,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"ak" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"al" = (
/obj/machinery/door/airlock/titanium{
@@ -78,10 +72,7 @@
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"ao" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ap" = (
/obj/structure/ore_box,
@@ -95,19 +86,13 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"as" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"at" = (
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"au" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"av" = (
/obj/structure/chair{
@@ -125,28 +110,20 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"ay" = (
/turf/closed/wall/shuttle{
icon_state = "swall15";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"az" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/escape)
"aA" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aB" = (
/turf/open/floor/mineral/titanium,
/turf/closed/wall/mineral/titanium/interior,
/area/shuttle/escape)
"aC" = (
/turf/closed/wall/shuttle{
icon_state = "swall_f11"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aD" = (
/obj/structure/window/shuttle,
@@ -218,10 +195,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aO" = (
/turf/closed/wall/shuttle{
icon_state = "swallc1";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aP" = (
/obj/machinery/door/airlock/glass_security{
@@ -367,10 +341,7 @@
/area/shuttle/escape)
"bo" = (
/obj/machinery/status_display,
/turf/closed/wall/shuttle{
icon_state = "swall2";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bp" = (
/obj/machinery/computer/crew,
@@ -450,16 +421,10 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bA" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bB" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bC" = (
/obj/item/device/radio/intercom{
+11 -41
View File
@@ -3,17 +3,14 @@
/turf/open/space,
/area/space)
"ab" = (
/turf/closed/wall/mineral/titanium/overspace,
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ac" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/escape)
"ad" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ae" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
@@ -43,10 +40,7 @@
/turf/open/floor/carpet,
/area/shuttle/escape)
"aj" = (
/turf/closed/wall/shuttle{
icon_state = "swallc3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ak" = (
/obj/structure/extinguisher_cabinet{
@@ -117,28 +111,16 @@
/turf/open/floor/carpet,
/area/shuttle/escape)
"av" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aw" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ax" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ay" = (
/turf/closed/wall/shuttle{
icon_state = "swall8";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"az" = (
/obj/machinery/door/airlock/glass{
@@ -152,10 +134,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aB" = (
/turf/closed/wall/shuttle{
icon_state = "swall4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aC" = (
/obj/structure/chair,
@@ -258,10 +237,7 @@
/turf/open/floor/plasteel/bar,
/area/shuttle/escape)
"aQ" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aR" = (
/obj/structure/table/wood/bar{
@@ -350,10 +326,7 @@
/turf/open/floor/plasteel/bar,
/area/shuttle/escape)
"bf" = (
/turf/closed/wall/shuttle{
icon_state = "swall1";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bg" = (
/obj/machinery/door/airlock/titanium{
@@ -384,10 +357,7 @@
/turf/open/floor/plasteel/bar,
/area/shuttle/escape)
"bl" = (
/turf/closed/wall/shuttle{
icon_state = "swallc2";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bm" = (
/obj/machinery/door/airlock{
+9 -36
View File
@@ -10,10 +10,7 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"ad" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ae" = (
/turf/open/floor/mineral/titanium,
@@ -110,22 +107,13 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"av" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aw" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ax" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ay" = (
/obj/machinery/door/airlock/glass{
@@ -225,16 +213,10 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aN" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aO" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aP" = (
/obj/machinery/door/airlock/titanium{
@@ -306,10 +288,7 @@
/area/shuttle/escape)
"aY" = (
/obj/machinery/status_display,
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aZ" = (
/obj/machinery/door/airlock/glass{
@@ -318,10 +297,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"ba" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bb" = (
/turf/open/floor/mineral/titanium/yellow,
@@ -363,10 +339,7 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"bh" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bi" = (
/obj/structure/window/reinforced{
+9 -30
View File
@@ -45,20 +45,13 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"i" = (
/turf/closed/wall/shuttle{
icon_state = "wall_space";
dir = 8
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"j" = (
/turf/closed/wall/shuttle{
icon_state = "swall4"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"k" = (
/turf/closed/wall/shuttle{
icon_state = "swall12"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"l" = (
/obj/machinery/vending/wallmed,
@@ -70,9 +63,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"n" = (
/turf/closed/wall/shuttle{
icon_state = "swall1"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"o" = (
/turf/open/floor/mineral/titanium/blue,
@@ -161,14 +152,10 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"C" = (
/turf/closed/wall/shuttle{
icon_state = "swall8"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"D" = (
/turf/closed/wall/shuttle{
icon_state = "swall3"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"E" = (
/obj/machinery/door/airlock/glass{
@@ -227,22 +214,14 @@
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"N" = (
/turf/closed/wall/shuttle{
icon_state = "wall_space";
dir = 4
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"O" = (
/turf/closed/wall/shuttle{
icon_state = "wall_floor";
dir = 8
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"P" = (
/obj/machinery/status_display,
/turf/closed/wall/shuttle{
icon_state = "swall0"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"Q" = (
/obj/machinery/light,
+10 -38
View File
@@ -13,10 +13,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ae" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"af" = (
/obj/machinery/door/airlock/titanium{
@@ -42,10 +39,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"ai" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aj" = (
/turf/open/space,
@@ -55,10 +49,7 @@
},
/area/shuttle/escape)
"ak" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"al" = (
/obj/structure/table,
@@ -246,9 +237,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aD" = (
/turf/closed/wall/shuttle{
icon_state = "swall1"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aE" = (
/obj/structure/chair{
@@ -293,9 +282,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aM" = (
/turf/closed/wall/shuttle{
icon_state = "swall2"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aN" = (
/obj/machinery/status_display{
@@ -367,16 +354,10 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aU" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aV" = (
/turf/closed/wall/shuttle{
icon_state = "swall8";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aW" = (
/obj/machinery/door/airlock/command{
@@ -387,10 +368,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aX" = (
/turf/closed/wall/shuttle{
icon_state = "swall15";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aY" = (
/obj/machinery/door/airlock/glass_security{
@@ -419,10 +397,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bc" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bd" = (
/obj/structure/chair{
@@ -502,10 +477,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"br" = (
/turf/closed/wall/shuttle{
icon_state = "swall4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bs" = (
/obj/structure/chair{
+1 -4
View File
@@ -195,10 +195,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"F" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/obj/structure/table,
/obj/item/storage/firstaid/fire,
/obj/item/storage/firstaid/regular{
+8 -28
View File
@@ -14,10 +14,7 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"ae" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"af" = (
/turf/closed/wall/mineral/titanium,
@@ -44,9 +41,7 @@
/area/shuttle/escape)
"ak" = (
/obj/structure/sign/radiation,
/turf/closed/wall/shuttle{
icon_state = "swall3"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"al" = (
/obj/machinery/shower{
@@ -121,15 +116,10 @@
/turf/closed/wall/mineral/titanium/interior,
/area/shuttle/escape)
"ay" = (
/turf/closed/wall/shuttle{
icon_state = "swall_f5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"az" = (
/turf/closed/wall/shuttle{
icon_state = "swallc1"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aA" = (
/obj/machinery/door/airlock/titanium{
@@ -177,15 +167,11 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"aG" = (
/turf/closed/wall/shuttle{
icon_state = "swallc3"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aH" = (
/obj/machinery/status_display,
/turf/closed/wall/shuttle{
icon_state = "swall12"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aI" = (
/obj/structure/sign/radiation,
@@ -193,16 +179,10 @@
/area/shuttle/escape)
"aJ" = (
/obj/structure/sign/radiation,
/turf/closed/wall/shuttle{
icon_state = "swallc2";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aK" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aL" = (
/obj/machinery/door/airlock/external{
+3 -11
View File
@@ -67,16 +67,11 @@
/obj/structure/shuttle/engine/propulsion{
dir = 4
},
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"o" = (
/turf/open/floor/plasteel/shuttle,
/turf/closed/wall/mineral/titanium/interior{
icon_state = "swall_f10"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"p" = (
/obj/structure/closet/crate,
@@ -89,10 +84,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/transport)
"r" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
(1,1,1) = {"
+2 -8
View File
@@ -99,10 +99,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"ax" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"ay" = (
/obj/structure/window/shuttle,
@@ -114,10 +111,7 @@
/turf/open/floor/plating,
/area/shuttle/transport)
"aA" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"aB" = (
/obj/structure/grille{
+5 -13
View File
@@ -6,13 +6,13 @@
/obj/structure/shuttle/engine/propulsion{
dir = 4
},
/turf/closed/wall/mineral/titanium/overspace,
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"c" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"d" = (
/turf/closed/wall/mineral/titanium/overspace,
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"e" = (
/turf/open/floor/plasteel/freezer,
@@ -123,16 +123,11 @@
/obj/structure/shuttle/engine/propulsion{
dir = 4
},
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"s" = (
/turf/open/floor/plasteel/freezer,
/turf/closed/wall/mineral/titanium/interior{
icon_state = "swall_f10"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"t" = (
/obj/structure/closet/chefcloset,
@@ -156,10 +151,7 @@
/turf/open/floor/plasteel/freezer,
/area/shuttle/transport)
"x" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
(1,1,1) = {"
+12 -44
View File
@@ -6,10 +6,7 @@
/turf/closed/wall/mineral/titanium/overspace,
/area/shuttle/abandoned)
"ac" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ad" = (
/obj/machinery/door/airlock/titanium,
@@ -30,10 +27,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"ae" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"af" = (
/obj/machinery/door/airlock/titanium,
@@ -46,16 +40,10 @@
/turf/open/floor/plating/airless,
/area/shuttle/abandoned)
"ah" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ai" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aj" = (
/turf/open/floor/mineral/titanium,
@@ -74,10 +62,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"am" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"an" = (
/obj/structure/shuttle/engine/propulsion{
@@ -99,10 +84,7 @@
/turf/closed/wall/mineral/titanium/interior,
/area/shuttle/abandoned)
"aq" = (
/turf/closed/wall/shuttle{
icon_state = "swall15";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ar" = (
/obj/machinery/computer/pod{
@@ -111,18 +93,13 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"as" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"at" = (
/turf/open/floor/plating,
/area/shuttle/abandoned)
"au" = (
/turf/closed/wall/shuttle{
icon_state = "swall_f13"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"av" = (
/obj/structure/rack,
@@ -150,15 +127,10 @@
/turf/open/floor/plating,
/area/shuttle/abandoned)
"az" = (
/turf/closed/wall/shuttle{
icon_state = "swall_f12"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aA" = (
/turf/closed/wall/shuttle{
icon_state = "swall14";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aB" = (
/obj/structure/shuttle/engine/propulsion/right{
@@ -181,9 +153,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aF" = (
/turf/closed/wall/shuttle{
icon_state = "swall_f14"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aG" = (
/obj/structure/rack,
@@ -202,9 +172,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aI" = (
/turf/closed/wall/shuttle{
icon_state = "swall_f11"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aJ" = (
/obj/structure/chair{
+17 -66
View File
@@ -9,20 +9,14 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ad" = (
/turf/closed/wall/shuttle{
icon_state = "swall12";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ae" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/abandoned)
"af" = (
/turf/closed/wall/shuttle{
icon_state = "swallc1";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ag" = (
/obj/docking_port/mobile{
@@ -58,16 +52,10 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/abandoned)
"ai" = (
/turf/closed/wall/shuttle{
icon_state = "swallc2";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aj" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s10";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ak" = (
/obj/structure/shuttle/engine/propulsion/left{
@@ -76,16 +64,10 @@
/turf/open/floor/plating/airless,
/area/shuttle/abandoned)
"al" = (
/turf/closed/wall/shuttle{
icon_state = "swall13";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"am" = (
/turf/closed/wall/shuttle{
icon_state = "swall11";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"an" = (
/obj/structure/toilet{
@@ -122,10 +104,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"ap" = (
/turf/closed/wall/shuttle{
icon_state = "swall3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aq" = (
/obj/structure/closet/wardrobe/mixed,
@@ -195,9 +174,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"av" = (
/turf/closed/wall/shuttle{
icon_state = "swall1"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aw" = (
/obj/structure/sign/vacuum{
@@ -329,16 +306,10 @@
/turf/open/floor/plating/airless,
/area/shuttle/abandoned)
"aE" = (
/turf/closed/wall/shuttle{
icon_state = "swall7";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aF" = (
/turf/closed/wall/shuttle{
icon_state = "swall8";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"aG" = (
/obj/machinery/door/airlock/titanium{
@@ -601,9 +572,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aZ" = (
/turf/closed/wall/shuttle{
icon_state = "swall2"
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"ba" = (
/obj/effect/decal/cleanable/oil,
@@ -645,10 +614,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/abandoned)
"be" = (
/turf/closed/wall/shuttle{
icon_state = "swall1";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"bf" = (
/obj/machinery/door/airlock/titanium{
@@ -671,16 +637,10 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"bh" = (
/turf/closed/wall/shuttle{
icon_state = "swall4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"bi" = (
/turf/closed/wall/shuttle{
icon_state = "swallc4";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"bj" = (
/obj/machinery/door/airlock/titanium{
@@ -697,10 +657,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/abandoned)
"bk" = (
/turf/closed/wall/shuttle{
icon_state = "swallc3";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"bl" = (
/obj/machinery/door/airlock/titanium{
@@ -1180,10 +1137,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"cc" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s5";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"cd" = (
/obj/machinery/vending/snack/random,
@@ -1287,10 +1241,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/abandoned)
"cp" = (
/turf/closed/wall/shuttle{
icon_state = "swall_s9";
dir = 2
},
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"cq" = (
/obj/item/storage/bag/plants/portaseeder,
+6 -19
View File
@@ -11,9 +11,7 @@
/area/space)
"d" = (
/turf/open/space,
/turf/closed/wall/shuttle{
icon_state = "swall_f10"
},
/turf/closed/wall/mineral/titanium,
/area/space)
"e" = (
/turf/closed/wall/mineral/titanium,
@@ -28,23 +26,17 @@
/turf/open/floor/mineral/titanium/blue,
/area/space)
"h" = (
/turf/closed/wall/shuttle{
icon_state = "swall13"
},
/turf/closed/wall/mineral/titanium,
/area/space)
"i" = (
/turf/closed/wall/shuttle{
icon_state = "swall8"
},
/turf/closed/wall/mineral/titanium,
/area/space)
"j" = (
/obj/machinery/door/unpowered/shuttle,
/turf/open/floor/mineral/titanium/blue,
/area/space)
"k" = (
/turf/closed/wall/shuttle{
icon_state = "swall4"
},
/turf/closed/wall/mineral/titanium,
/area/space)
"l" = (
/obj/structure/chair{
@@ -64,9 +56,7 @@
/area/space)
"o" = (
/turf/open/space,
/turf/closed/wall/shuttle{
icon_state = "swall_f5"
},
/turf/closed/wall/mineral/titanium,
/area/space)
"p" = (
/obj/structure/shuttle/engine/propulsion/left,
@@ -81,10 +71,7 @@
/turf/open/floor/plating/airless,
/area/space)
"s" = (
/turf/open/space,
/turf/closed/wall/shuttle{
icon_state = "swall_f9"
},
/turf/closed/wall/mineral/titanium,
/area/space)
(1,1,1) = {"
+110
View File
@@ -0,0 +1,110 @@
#!/usr/bin/env bash
source ~/.discordauth
# ~/.discordauth contains:
# CHANNELID=x
# TOKEN=x
# CHANNELID being the Discord Channel ID
# TOKEN being the bot token
set -u # don't expand unbound variable
set -f # disable pathname expansion
set -C # noclobber
readonly BASE_BRANCH_NAME="upstream-merge-"
readonly BASE_PULL_URL="https://api.github.com/repos/tgstation/tgstation/pulls"
# Ensure the current directory is a git directory
if [ ! -d .git ]; then
echo "Error: must run this script from the root of a git repository"
exit 1
fi
# Ensure all given parameters exist
if [ $# -eq 0 ]; then
echo "Error: No arguments have been given, the first argument needs to be a pull ID, the second argument needs to be the commit message"
exit 1
fi
# Ensure curl exists and is available in the current context
type curl >/dev/null 2>&1 || { echo >&2 "Error: This script requires curl, please ensure curl is installed and exists in the current PATH"; exit 1; }
# Ensure jq exists and is available in the current context
type jq >/dev/null 2>&1 || { echo >&2 "Error: This script requires jq, please ensure jq is installed and exists in the current PATH"; exit 1; }
containsElement () {
local e match="$1"
shift
for e; do [[ "$e" == "$match" ]] && return 0; done
return 1
}
# Make sure we have our upstream remote
if ! git remote | grep tgstation > /dev/null; then
git remote add tgstation https://github.com/tgstation/tgstation.git
fi
curl -v \
-H "Authorization: Bot $TOKEN" \
-H "User-Agent: myBotThing (http://some.url, v0.1)" \
-H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"Mirroring [$1] from /tg/ to Hippie\"}" \
https://discordapp.com/api/channels/$CHANNELID/messages
# We need to make sure we are always on a clean master when creating the new branch.
# So we forcefully reset, clean and then checkout the master branch
git fetch --all
git checkout master
git reset --hard origin/master
git clean -f
# Remove the other branches
git branch | grep -v "master" | xargs git branch -D
# Create a new branch
git checkout -b "$BASE_BRANCH_NAME$1"
# Grab the SHA of the merge commit
readonly MERGE_SHA=$(curl --silent "$BASE_PULL_URL/$1" | jq '.merge_commit_sha' -r)
# Get the commits
readonly COMMITS=$(curl --silent "$BASE_PULL_URL/$1/commits" | jq '.[].sha' -r)
# Cherry pick onto the new branch
echo "Cherry picking onto branch"
CHERRY_PICK_OUTPUT=$(git cherry-pick -m 1 "$MERGE_SHA" 2>&1)
echo "$CHERRY_PICK_OUTPUT"
# If it's a squash commit, you can't use -m 1, you need to remove it
# You also can't use -m 1 if it's a rebase and merge...
if echo "$CHERRY_PICK_OUTPUT" | grep -i 'error: mainline was specified but commit'; then
echo "Commit was a squash, retrying"
if containsElement "$MERGE_SHA" "${COMMITS[@]}"; then
for commit in $COMMITS; do
echo "Cherry-picking: $commit"
git cherry-pick "$commit"
# Add all files onto this branch
git add -A .
git cherry-pick --continue
done
else
echo "Cherry-picking: $MERGE_SHA"
git cherry-pick "$MERGE_SHA"
# Add all files onto this branch
git add -A .
git cherry-pick --continue
fi
else
# Add all files onto this branch
echo "Adding files to branch:"
git add -A .
fi
# Commit these changes
echo "Commiting changes"
git commit --allow-empty -m "$2"
# Push them onto the branch
echo "Pushing changes"
git push -u origin "$BASE_BRANCH_NAME$1"
+3 -3
View File
@@ -1,9 +1,9 @@
#define MC_TICK_CHECK ( ( world.tick_usage > Master.current_ticklimit || src.state != SS_RUNNING ) ? pause() : 0 )
#define MC_TICK_CHECK ( ( TICK_USAGE > Master.current_ticklimit || src.state != SS_RUNNING ) ? pause() : 0 )
#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = Master.current_ticklimit; var/split_tick_phases = ##phase_count
#define MC_SPLIT_TICK \
if(split_tick_phases > 1){\
Master.current_ticklimit = ((original_tick_limit - world.tick_usage) / split_tick_phases) + world.tick_usage;\
Master.current_ticklimit = ((original_tick_limit - TICK_USAGE) / split_tick_phases) + TICK_USAGE;\
--split_tick_phases;\
} else {\
Master.current_ticklimit = original_tick_limit;\
@@ -22,7 +22,7 @@
#define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = TRUE;Processor.processing += Datum}
#define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = FALSE;Processor.processing -= Datum
//SubSystem flags_1 (Please design any new flags_1 so that the default is off, to make adding flags_1 to subsystems easier)
//SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier)
//subsystem does not initialize.
#define SS_NO_INIT 1
+10
View File
@@ -0,0 +1,10 @@
#define TICK_LIMIT_RUNNING 80
#define TICK_LIMIT_TO_RUN 78
#define TICK_LIMIT_MC 70
#define TICK_LIMIT_MC_INIT_DEFAULT 98
#define TICK_USAGE world.tick_usage //for general usage
#define TICK_USAGE_REAL world.tick_usage //to be used where the result isn't checked
#define TICK_CHECK ( TICK_USAGE > Master.current_ticklimit )
#define CHECK_TICK if TICK_CHECK stoplag()
-9
View File
@@ -1,9 +0,0 @@
diff a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm (rejected hunks)
@@ -9,6 +9,7 @@
#define INVESTIGATE_SUPERMATTER "supermatter"
#define INVESTIGATE_TELESCI "telesci"
#define INVESTIGATE_WIRES "wires"
+#define INVESTIGATE_HALLUCINATIONS "hallucinations"
//Individual logging defines
#define INDIVIDUAL_ATTACK_LOG "Attack log"
+25 -25
View File
@@ -1,25 +1,25 @@
#define PI 3.1415
#define SPEED_OF_LIGHT 3e8 //not exact but hey!
#define SPEED_OF_LIGHT_SQ 9e+16
#define INFINITY 1e31 //closer then enough
//atmos
#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol)
#define ONE_ATMOSPHERE 101.325 //kPa
#define T0C 273.15 // 0degC
#define T20C 293.15 // 20degC
#define TCMB 2.7 // -270.3degC
//"fancy" math for calculating time in ms from tick_usage percentage and the length of ticks
//percent_of_tick_used * (ticklag * 100(to convert to ms)) / 100(percent ratio)
//collapsed to percent_of_tick_used * tick_lag
#define TICK_DELTA_TO_MS(percent_of_tick_used) ((percent_of_tick_used) * world.tick_lag)
#define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(world.tick_usage-starting_tickusage))
#define PERCENT(val) (round(val*100, 0.1))
#define CLAMP01(x) (Clamp(x, 0, 1))
//time of day but automatically adjusts to the server going into the next day within the same round.
//for when you need a reliable time number that doesn't depend on byond time.
#define REALTIMEOFDAY (world.timeofday + (MIDNIGHT_ROLLOVER * MIDNIGHT_ROLLOVER_CHECK))
#define MIDNIGHT_ROLLOVER_CHECK ( GLOB.rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : GLOB.midnight_rollovers )
#define PI 3.1415
#define SPEED_OF_LIGHT 3e8 //not exact but hey!
#define SPEED_OF_LIGHT_SQ 9e+16
#define INFINITY 1e31 //closer then enough
//atmos
#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol)
#define ONE_ATMOSPHERE 101.325 //kPa
#define T0C 273.15 // 0degC
#define T20C 293.15 // 20degC
#define TCMB 2.7 // -270.3degC
//"fancy" math for calculating time in ms from tick_usage percentage and the length of ticks
//percent_of_tick_used * (ticklag * 100(to convert to ms)) / 100(percent ratio)
//collapsed to percent_of_tick_used * tick_lag
#define TICK_DELTA_TO_MS(percent_of_tick_used) ((percent_of_tick_used) * world.tick_lag)
#define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(TICK_USAGE_REAL - starting_tickusage))
#define PERCENT(val) (round(val*100, 0.1))
#define CLAMP01(x) (Clamp(x, 0, 1))
//time of day but automatically adjusts to the server going into the next day within the same round.
//for when you need a reliable time number that doesn't depend on byond time.
#define REALTIMEOFDAY (world.timeofday + (MIDNIGHT_ROLLOVER * MIDNIGHT_ROLLOVER_CHECK))
#define MIDNIGHT_ROLLOVER_CHECK ( GLOB.rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : GLOB.midnight_rollovers )
+10 -3
View File
@@ -315,9 +315,16 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
#define APPEARANCE_CONSIDER_ALPHA ~RESET_ALPHA
#define APPEARANCE_LONG_GLIDE LONG_GLIDE
// Consider these images/atoms as part of the UI/HUD
#define APPEARANCE_UI_IGNORE_ALPHA RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA
#define APPEARANCE_UI RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR
#ifndef PIXEL_SCALE
#define PIXEL_SCALE 0
#if DM_VERSION >= 512
#error HEY, PIXEL_SCALE probably exists now, remove this gross ass shim.
#endif
#endif
// Consider these images/atoms as part of the UI/HUD
#define APPEARANCE_UI_IGNORE_ALPHA RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE
#define APPEARANCE_UI RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR
//Just space
#define SPACE_ICON_STATE "[((x + y) ^ ~(x * y) + z) % 25]"
+19 -1
View File
@@ -47,4 +47,22 @@
#define SEC_DEPT_ENGINEERING "Engineering"
#define SEC_DEPT_MEDICAL "Medical"
#define SEC_DEPT_SCIENCE "Science"
#define SEC_DEPT_SUPPLY "Supply"
#define SEC_DEPT_SUPPLY "Supply"
// Playtime tracking system, see jobs_exp.dm
#define EXP_TYPE_LIVING "Living"
#define EXP_TYPE_CREW "Crew"
#define EXP_TYPE_COMMAND "Command"
#define EXP_TYPE_ENGINEERING "Engineering"
#define EXP_TYPE_MEDICAL "Medical"
#define EXP_TYPE_SCIENCE "Science"
#define EXP_TYPE_SUPPLY "Supply"
#define EXP_TYPE_SECURITY "Security"
#define EXP_TYPE_SILICON "Silicon"
#define EXP_TYPE_SERVICE "Service"
#define EXP_TYPE_ANTAG "Antag"
#define EXP_TYPE_SPECIAL "Special"
#define EXP_TYPE_GHOST "Ghost"
//Flags in the players table in the db
#define DB_FLAG_EXEMPT 1
+10 -5
View File
@@ -53,9 +53,14 @@
#define ENGINE_COEFF_MAX 2
#define ENGINE_DEFAULT_MAXSPEED_ENGINES 5
//Docking error flags_1
//Docking error flags
#define DOCKING_SUCCESS 0
#define DOCKING_COMPLETE 1
#define DOCKING_BLOCKED 2
#define DOCKING_IMMOBILIZED 4
#define DOCKING_AREA_EMPTY 8
#define DOCKING_BLOCKED 1
#define DOCKING_IMMOBILIZED 2
#define DOCKING_AREA_EMPTY 4
//Docking turf movements
#define MOVE_TURF 1
#define MOVE_AREA 2
#define MOVE_CONTENTS 4
+3 -2
View File
@@ -10,12 +10,13 @@
#define CHANNEL_BICYCLE 1016
//Citadel code
#define CHANNEL_PRED 1018
#define CHANNEL_PRED 1015
#define CHANNEL_PREYLOOP 1014
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
#define CHANNEL_HIGHEST_AVAILABLE 1015
#define CHANNEL_HIGHEST_AVAILABLE 1013
#define CHANNEL_HIGHEST_AVAILABLE 1017
#define SOUND_MINIMUM_PRESSURE 10
-7
View File
@@ -1,7 +0,0 @@
#define TICK_LIMIT_RUNNING 80
#define TICK_LIMIT_TO_RUN 78
#define TICK_LIMIT_MC 70
#define TICK_LIMIT_MC_INIT_DEFAULT 98
#define TICK_CHECK ( world.tick_usage > Master.current_ticklimit )
#define CHECK_TICK if TICK_CHECK stoplag()
+1
View File
@@ -2,6 +2,7 @@
#define DM_HOLD "Hold"
#define DM_DIGEST "Digest"
#define DM_HEAL "Heal"
#define DM_NOISY "Noisy"
#define VORE_STRUGGLE_EMOTE_CHANCE 40
+1 -2
View File
@@ -97,8 +97,7 @@
WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]CHAT: [text]")
/proc/log_sql(text)
if(config.sql_enabled)
WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]SQL: [text]")
WRITE_FILE(GLOB.sql_error_log, "\[[time_stamp()]]SQL: [text]")
//This replaces world.log so it displays both in DD and the file
/proc/log_world(text)
+1 -1
View File
@@ -20,7 +20,7 @@
A non null 'fixed_underlay' list var will skip copying the previous turf appearance and always use the list. If the list is
not set properly, the underlay will default to regular floor plating.
To see an example of a diagonal wall, see '/turf/closed/wall/shuttle' and its subtypes.
To see an example of a diagonal wall, see '/turf/closed/wall/mineral/titanium' and its subtypes.
*/
//Redefinitions of the diagonal directions so they can be stored in one var without conflicts
+4 -2
View File
@@ -72,7 +72,9 @@
return .
//Splits the text of a file at seperator and returns them in a list.
/world/proc/file2list(filename, seperator="\n")
/world/proc/file2list(filename, seperator="\n", trim = TRUE)
if (trim)
return splittext(trim(file2text(filename)),seperator)
return splittext(file2text(filename),seperator)
//Turns a direction into text
@@ -551,4 +553,4 @@
return /atom
else
return /datum
return text2path(copytext(string_type, 1, last_slash))
return text2path(copytext(string_type, 1, last_slash))
+1 -1
View File
@@ -1,5 +1,5 @@
/*
// Contains VOREStation type2type functions
// Contains VOREStation based vore description type2type functions
// list2text - takes delimiter and returns text
// text2list - takes delimiter, and creates list
//
+18 -2
View File
@@ -357,6 +357,17 @@ Turf and target are separate in case you want to teleport some distance from a t
var/M = E/(SPEED_OF_LIGHT_SQ)
return M
//Takes the value of energy used/produced/ect.
//Returns a text value of that number in W, kW, MW, or GW.
/proc/DisplayPower(var/powerused)
if(powerused < 1000) //Less than a kW
return "[powerused] W"
else if(powerused < 1000000) //Less than a MW
return "[round((powerused * 0.001),0.01)] kW"
else if(powerused < 1000000000) //Less than a GW
return "[round((powerused * 0.000001),0.001)] MW"
return "[round((powerused * 0.000000001),0.0001)] GW"
/proc/key_name(whom, include_link = null, include_name = 1)
var/mob/M
var/client/C
@@ -1230,7 +1241,7 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
//Increases delay as the server gets more overloaded,
//as sleeps aren't cheap and sleeping only to wake up and sleep again is wasteful
#define DELTA_CALC max(((max(world.tick_usage, world.cpu) / 100) * max(Master.sleep_delta,1)), 1)
#define DELTA_CALC max(((max(TICK_USAGE, world.cpu) / 100) * max(Master.sleep_delta,1)), 1)
/proc/stoplag()
if (!Master || !(Master.current_runlevel & RUNLEVELS_DEFAULT))
@@ -1242,7 +1253,7 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
. += round(i*DELTA_CALC)
sleep(i*world.tick_lag*DELTA_CALC)
i *= 2
while (world.tick_usage > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit))
while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit))
#undef DELTA_CALC
@@ -1266,6 +1277,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_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
#define QDEL_NULL(item) qdel(item); item = null
#define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); }
#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE)
@@ -1453,3 +1465,7 @@ GLOBAL_PROTECT(valid_HTTPSGet)
var/temp = bitfield - ((bitfield>>1)&46811) - ((bitfield>>2)&37449) //0133333 and 0111111 respectively
temp = ((temp + (temp>>3))&29127) % 63 //070707
return temp
//checks if a turf is in the planet z list.
/proc/turf_z_is_planet(turf/T)
return GLOB.z_is_planet["[T.z]"]
+6 -42
View File
@@ -105,53 +105,17 @@ GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
GLOBAL_LIST_INIT(guitar_notes, flist("sound/guitar/"))
GLOBAL_LIST_INIT(station_prefixes, list("", "Imperium", "Heretical", "Cuban",
"Psychic", "Elegant", "Common", "Uncommon", "Rare", "Unique",
"Houseruled", "Religious", "Atheist", "Traditional", "Houseruled",
"Mad", "Super", "Ultra", "Secret", "Top Secret", "Deep", "Death",
"Zybourne", "Central", "Main", "Government", "Uoi", "Fat",
"Automated", "Experimental", "Augmented"))
GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt") + "")
GLOBAL_LIST_INIT(station_names, list("", "Stanford", "Dorf", "Alium",
"Prefix", "Clowning", "Aegis", "Ishimura", "Scaredy", "Death-World",
"Mime", "Honk", "Rogue", "MacRagge", "Ultrameens", "Safety", "Paranoia",
"Explosive", "Neckbear", "Donk", "Muppet", "North", "West", "East",
"South", "Slant-ways", "Widdershins", "Rimward", "Expensive",
"Procreatory", "Imperial", "Unidentified", "Immoral", "Carp", "Ork",
"Pete", "Control", "Nettle", "Aspie", "Class", "Crab", "Fist",
"Corrogated","Skeleton","Race", "Fatguy", "Gentleman", "Capitalist",
"Communist", "Bear", "Beard", "Derp", "Space", "Spess", "Star", "Moon",
"System", "Mining", "Neckbeard", "Research", "Supply", "Military",
"Orbital", "Battle", "Science", "Asteroid", "Home", "Production",
"Transport", "Delivery", "Extraplanetary", "Orbital", "Correctional",
"Robot", "Hats", "Pizza"))
GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt" + ""))
GLOBAL_LIST_INIT(station_suffixes, list("Station", "Frontier",
"Suffix", "Death-trap", "Space-hulk", "Lab", "Hazard","Spess Junk",
"Fishery", "No-Moon", "Tomb", "Crypt", "Hut", "Monkey", "Bomb",
"Trade Post", "Fortress", "Village", "Town", "City", "Edition", "Hive",
"Complex", "Base", "Facility", "Depot", "Outpost", "Installation",
"Drydock", "Observatory", "Array", "Relay", "Monitor", "Platform",
"Construct", "Hangar", "Prison", "Center", "Port", "Waystation",
"Factory", "Waypoint", "Stopover", "Hub", "HQ", "Office", "Object",
"Fortification", "Colony", "Planet-Cracker", "Roost", "Fat Camp",
"Airstrip"))
GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt"))
GLOBAL_LIST_INIT(greek_letters, list("Alpha", "Beta", "Gamma", "Delta",
"Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu",
"Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi",
"Chi", "Psi", "Omega"))
GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt"))
GLOBAL_LIST_INIT(phonetic_alphabet, list("Alpha", "Bravo", "Charlie",
"Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet",
"Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec",
"Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray",
"Yankee", "Zulu"))
GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt"))
GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four",
"Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve",
"Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen",
"Eighteen", "Nineteen"))
GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt"))
/proc/generate_number_strings()
var/list/L[198]
+2
View File
@@ -35,3 +35,5 @@ GLOBAL_LIST_EMPTY(wire_color_directory)
GLOBAL_LIST_EMPTY(wire_name_directory)
GLOBAL_LIST_EMPTY(ai_status_displays)
GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects
+1
View File
@@ -6,5 +6,6 @@
#define POLL_IGNORE_ALIEN_LARVA "alien_larva"
#define POLL_IGNORE_CLOCKWORK_MARAUDER "clockwork_marauder"
#define POLL_IGNORE_SYNDICATE "syndicate"
#define POLL_IGNORE_HOLOPARASITE "holoparasite"
GLOBAL_LIST_EMPTY(poll_ignore)
+2
View File
@@ -12,6 +12,8 @@ GLOBAL_VAR(round_id)
GLOBAL_PROTECT(round_id)
GLOBAL_VAR(config_error_log)
GLOBAL_PROTECT(config_error_log)
GLOBAL_VAR(sql_error_log)
GLOBAL_PROTECT(sql_error_log)
GLOBAL_LIST_EMPTY(bombers)
GLOBAL_PROTECT(bombers)
+14 -15
View File
@@ -25,7 +25,7 @@
* If you are diagonally adjacent, ensure you can pass through at least one of the mutually adjacent square.
* Passing through in this case ignores anything with the LETPASSTHROW pass flag, such as tables, racks, and morgue trays.
*/
/turf/Adjacent(atom/neighbor, atom/target = null, atom/movable/mover = null)
/turf/Adjacent(atom/neighbor, atom/target = null, atom/movable/mover = null)
var/turf/T0 = get_turf(neighbor)
if(T0 == src) //same turf
@@ -37,7 +37,7 @@
// Non diagonal case
if(T0.x == x || T0.y == y)
// Check for border blockages
return T0.ClickCross(get_dir(T0,src), border_only = 1, target_atom = target, mover = mover) && src.ClickCross(get_dir(src,T0), border_only = 1, target_atom = target, mover = mover)
return T0.ClickCross(get_dir(T0,src), border_only = 1, target_atom = target, mover = mover) && src.ClickCross(get_dir(src,T0), border_only = 1, target_atom = target, mover = mover)
// Diagonal case
var/in_dir = get_dir(T0,src) // eg. northwest (1+8) = 9 (00001001)
@@ -45,16 +45,16 @@
var/d2 = in_dir&12 // eg. west (1+8)&12 (0000 1100) = 8 (0000 1000)
for(var/d in list(d1,d2))
if(!T0.ClickCross(d, border_only = 1, target_atom = target, mover = mover))
if(!T0.ClickCross(d, border_only = 1, target_atom = target, mover = mover))
continue // could not leave T0 in that direction
var/turf/T1 = get_step(T0,d)
if(!T1 || T1.density)
continue
if(!T1.ClickCross(get_dir(T1,src), border_only = 0, target_atom = target, mover = mover) || !T1.ClickCross(get_dir(T1,T0), border_only = 0, target_atom = target, mover = mover))
if(!T1 || T1.density)
continue
if(!T1.ClickCross(get_dir(T1,src), border_only = 0, target_atom = target, mover = mover) || !T1.ClickCross(get_dir(T1,T0), border_only = 0, target_atom = target, mover = mover))
continue // couldn't enter or couldn't leave T1
if(!src.ClickCross(get_dir(src,T1), border_only = 1, target_atom = target, mover = mover))
if(!src.ClickCross(get_dir(src,T1), border_only = 1, target_atom = target, mover = mover))
continue // could not enter src
return 1 // we don't care about our own density
@@ -70,7 +70,7 @@
return TRUE
if(!isturf(loc))
return FALSE
if(loc.Adjacent(neighbor,target = neighbor, mover = src))
if(loc.Adjacent(neighbor,target = neighbor, mover = src))
return TRUE
return FALSE
@@ -85,20 +85,19 @@
/*
This checks if you there is uninterrupted airspace between that turf and this one.
This is defined as any dense ON_BORDER_1 object, or any dense object without LETPASSTHROW.
This is defined as any dense ON_BORDER_1 object, or any dense object without LETPASSTHROW.
The border_only flag allows you to not objects (for source and destination squares)
*/
/turf/proc/ClickCross(target_dir, border_only, target_atom = null, atom/movable/mover = null)
/turf/proc/ClickCross(target_dir, border_only, target_atom = null, atom/movable/mover = null)
for(var/obj/O in src)
if((mover && O.CanPass(mover,get_step(src,target_dir))) || (!mover && !O.density))
continue
if(O == target_atom || (O.pass_flags & LETPASSTHROW)) //check if there's a dense object present on the turf
if((mover && O.CanPass(mover,get_step(src,target_dir))) || (!mover && !O.density))
continue
if(O == target_atom || O == mover || (O.pass_flags & LETPASSTHROW)) //check if there's a dense object present on the turf
continue // LETPASSTHROW is used for anything you can click through (or the firedoor special case, see above)
if( O.flags_1&ON_BORDER_1) // windows are on border, check them first
if( O.flags_1&ON_BORDER_1) // windows are on border, check them first
if( O.dir & target_dir || O.dir & (O.dir-1) ) // full tile windows are just diagonals mechanically
return 0 //O.dir&(O.dir-1) is false for any cardinal direction, but true for diagonal ones
else if( !border_only ) // dense, not on border, cannot pass over
return 0
return 1
+1 -1
View File
@@ -355,7 +355,7 @@
else
user.listed_turf = T
user.client.statpanel = T.name
return
user.Stat() //responsive ui pls
/mob/proc/TurfAdjacent(turf/T)
return T.Adjacent(src)
+20 -19
View File
@@ -1,19 +1,20 @@
/*
MouseDrop:
Called on the atom you're dragging. In a lot of circumstances we want to use the
recieving object instead, so that's the default action. This allows you to drag
almost anything into a trash can.
*/
/atom/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
if(!usr || !over) return
if(over == src)
return usr.client.Click(src, src_location, src_control, params)
if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows
over.MouseDrop_T(src,usr)
return
// recieve a mousedrop
/atom/proc/MouseDrop_T(atom/dropping, mob/user)
return
/*
MouseDrop:
Called on the atom you're dragging. In a lot of circumstances we want to use the
recieving object instead, so that's the default action. This allows you to drag
almost anything into a trash can.
*/
/atom/MouseDrop(atom/over, src_location, over_location, src_control, over_control, params)
if(!usr || !over)
return
if(over == src)
return usr.client.Click(src, src_location, src_control, params)
if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows
over.MouseDrop_T(src,usr)
return
// recieve a mousedrop
/atom/proc/MouseDrop_T(atom/dropping, mob/user)
return
@@ -0,0 +1,20 @@
//For custom items.
/obj/item/custom/ceb_soap
name = "Cebutris' Soap"
desc = "A generic bar of soap that doesn't really seem to work right."
gender = PLURAL
icon = 'icons/obj/custom.dmi'
icon_state = "cebu"
w_class = WEIGHT_CLASS_TINY
flags_1 = NOBLUDGEON_1
/obj/item/clothing/neck/cloak/inferno
name = "Kiara's Cloak"
desc = "The design on this seems a little too familiar."
icon = 'icons/obj/clothing/cloaks.dmi'
icon_state = "infcloak"
item_state = "infcloak"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -0,0 +1,61 @@
//Proc that does the actual loading of items to mob
/*Itemlists are formatted as
"[typepath]" = number_of_it_to_spawn
*/
#define DROP_TO_FLOOR 0
#define LOADING_TO_HUMAN 1
/proc/handle_roundstart_items(mob/living/M, ckey_override, job_override, special_override)
if(!istype(M) || (!M.ckey && !ckey_override) || (!M.mind && (!job_override || !special_override)))
return FALSE
return load_itemlist_to_mob(M, parse_custom_roundstart_items(ckey_override? ckey_override : M.ckey, M.name, job_override? job_override : M.mind.assigned_role, special_override? special_override : M.mind.special_role), TRUE, TRUE, FALSE)
//Just incase there's extra mob selections in the future.....
/proc/load_itemlist_to_mob(mob/living/L, list/itemlist, drop_on_floor_if_full = TRUE, load_to_all_slots = TRUE, replace_slots = FALSE)
if(!istype(L) || !islist(itemlist))
return FALSE
var/loading_mode = DROP_TO_FLOOR
var/turf/current_turf = get_turf(L)
if(ishuman(L))
loading_mode = LOADING_TO_HUMAN
switch(loading_mode)
if(DROP_TO_FLOOR)
for(var/I in itemlist)
var/typepath = text2path(I)
if(!typepath)
continue
for(var/i = 0, i < itemlist[I], i++)
new typepath(current_turf)
return TRUE
if(LOADING_TO_HUMAN)
return load_itemlist_to_human(L, itemlist, drop_on_floor_if_full, load_to_all_slots, replace_slots)
/proc/load_itemlist_to_human(mob/living/carbon/human/H, list/itemlist, drop_on_floor_if_full = TRUE, load_to_all_slots = TRUE, replace_slots = FALSE)
if(!istype(H) || !islist(itemlist))
return FALSE
var/turf/T = get_turf(H)
for(var/item in itemlist)
var/path = item
if(!ispath(path))
path = text2path(path)
if(!path)
continue
var/amount = itemlist[item]
for(var/i in 1 to amount)
var/atom/movable/loaded_atom = new path
if(!istype(loaded_atom))
QDEL_NULL(loaded_atom)
continue
if(!istype(loaded_atom, /obj/item))
loaded_atom.forceMove(T)
continue
var/obj/item/loaded = loaded_atom
var/obj/item/storage/S = H.get_item_by_slot(slot_back)
if(istype(S))
S.handle_item_insertion(loaded, TRUE, H) //Force it into their backpack
continue
if(!H.put_in_hands(loaded)) //They don't have one/somehow that failed, put it in their hands
loaded.forceMove(T) //Guess we're just dumping it on the floor!
return TRUE
@@ -0,0 +1,71 @@
GLOBAL_LIST(custom_item_list)
//Layered list in form of custom_item_list[ckey][job][items][amounts]
//ckey is key, job is specific jobs, or "ALL" for all jobs, items for items, amounts for amount of item.
//File should be in the format of ckey|exact job name/exact job name/or put ALL instead of any job names|/path/to/item=amount;/path/to/item=amount
//Each ckey should be in a different line
//if there's multiple entries of a single ckey the later ones will add to the earlier definitions.
/proc/reload_custom_roundstart_items_list(custom_filelist)
if(!custom_filelist)
custom_filelist = "config/custom_roundstart_items.txt"
GLOB.custom_item_list = list()
var/list/file_lines = world.file2list(custom_filelist)
for(var/line in file_lines)
if(length(line) == 0) //Emptyline, no one cares.
continue
if(copytext(line,1,3) == "//") //Commented line, ignore.
continue
var/ckey_str_sep = findtext(line, "|") //Process our stuff..
var/char_str_sep = findtext(line, "|", ckey_str_sep+1)
var/job_str_sep = findtext(line, "|", char_str_sep+1)
var/item_str_sep = findtext(line, "|", job_str_sep+1)
var/ckey_str = ckey(copytext(line, 1, ckey_str_sep))
var/char_str = copytext(line, ckey_str_sep+1, char_str_sep)
var/job_str = copytext(line, char_str_sep+1, job_str_sep)
var/item_str = copytext(line, job_str_sep+1, item_str_sep)
if(!ckey_str || !char_str || !job_str || !item_str || !length(ckey_str) || !length(char_str) || !length(job_str) || !length(item_str))
log_admin("Errored custom_items_whitelist line: [line] - Component/separator missing!")
if(!islist(GLOB.custom_item_list[ckey_str]))
GLOB.custom_item_list[ckey_str] = list() //Initialize list for this ckey if it isn't initialized..
var/list/characters = splittext(char_str, "/")
for(var/character in characters)
if(!islist(GLOB.custom_item_list[ckey_str][character]))
GLOB.custom_item_list[ckey_str][character] = list()
var/list/jobs = splittext(job_str, "/")
for(var/job in jobs)
for(var/character in characters)
if(!islist(GLOB.custom_item_list[ckey_str][character][job]))
GLOB.custom_item_list[ckey_str][character][job] = list() //Initialize item list for this job of this ckey if not already initialized.
var/list/item_strings = splittext(item_str, ";") //Get item strings in format of /path/to/item=amount
for(var/item_string in item_strings)
var/path_str_sep = findtext(item_string, "=")
var/path = copytext(item_string, 1, path_str_sep) //Path to spawn
var/amount = copytext(item_string, path_str_sep+1) //Amount to spawn
//world << "DEBUG: Item string [item_string] processed"
amount = text2num(amount)
path = text2path(path)
if(!ispath(path) || !isnum(amount))
log_admin("Errored custom_items_whitelist line: [line] - Path/number for item missing or invalid.")
for(var/character in characters)
for(var/job in jobs)
if(!GLOB.custom_item_list[ckey_str][character][job][path]) //Doesn't exist, make it exist!
GLOB.custom_item_list[ckey_str][character][job][path] = amount
else
GLOB.custom_item_list[ckey_str][character][job][path] += amount //Exists, we want more~
return GLOB.custom_item_list
/proc/parse_custom_roundstart_items(ckey, char_name = "ALL", job_name = "ALL", special_role)
var/list/ret = list()
if(GLOB.custom_item_list[ckey])
for(var/char in GLOB.custom_item_list[ckey])
if((char_name == char) || (char_name == "ALL") || (char == "ALL"))
for(var/job in GLOB.custom_item_list[ckey][char])
if((job_name == job) || (job == "ALL") || (job_name == "ALL") || (special_role && (job == special_role)))
for(var/item_path in GLOB.custom_item_list[ckey][char][job])
if(ret[item_path])
ret[item_path] += GLOB.custom_item_list[ckey][char][job][item_path]
else
ret[item_path] = GLOB.custom_item_list[ckey][char][job][item_path]
return ret
-2
View File
@@ -23,7 +23,6 @@
attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed")
w_class = 3
sharpness = IS_SHARP
var/emagged = 0
/obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user)
..()
@@ -173,7 +172,6 @@
icon_state = "synthtongue"
hitsound = 'sound/effects/attackblob.ogg'
cleanspeed = 80
var/emagged = 0
/obj/item/soap/tongue/New()
..()
+60 -22
View File
@@ -5,6 +5,10 @@
#define SECURITY_HAS_MAINT_ACCESS 2
#define EVERYONE_HAS_MAINT_ACCESS 4
GLOBAL_VAR_INIT(config_dir, "config/")
GLOBAL_PROTECT(config_dir)
/datum/configuration/can_vv_get(var_name)
var/static/list/banned_gets = list("autoadmin", "autoadmin_rank")
if (var_name in banned_gets)
@@ -103,6 +107,13 @@
var/use_account_age_for_jobs = 0 //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected.
var/see_own_notes = 0 //Can players see their own admin notes (read-only)? Config option in config.txt
var/use_exp_tracking = FALSE
var/use_exp_restrictions_heads = FALSE
var/use_exp_restrictions_heads_hours = 0
var/use_exp_restrictions_heads_department = FALSE
var/use_exp_restrictions_other = FALSE
var/use_exp_restrictions_admin_bypass = FALSE
//Population cap vars
var/soft_popcap = 0
var/hard_popcap = 0
@@ -168,6 +179,7 @@
var/rename_cyborg = 0
var/ooc_during_round = 0
var/emojis = 0
var/no_credits_round_end = FALSE
//Used for modifying movement speed for mobs.
//Unversal modifiers
@@ -287,17 +299,20 @@
Reload()
/datum/configuration/proc/Reload()
load("config/config.txt")
load("config/game_options.txt","game_options")
load("config/policies.txt", "policies")
loadsql("config/dbconfig.txt")
load("config.txt")
load("comms.txt", "comms")
load("game_options.txt","game_options")
load("policies.txt", "policies")
loadsql("dbconfig.txt")
reload_custom_roundstart_items_list()
if (maprotation)
loadmaplist("config/maps.txt")
loadmaplist("maps.txt")
// apply some settings from config..
GLOB.abandon_allowed = respawn
/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist
filename = "[GLOB.config_dir][filename]"
var/list/Lines = world.file2list(filename)
for(var/t in Lines)
@@ -335,6 +350,18 @@
use_age_restriction_for_jobs = 1
if("use_account_age_for_jobs")
use_account_age_for_jobs = 1
if("use_exp_tracking")
use_exp_tracking = TRUE
if("use_exp_restrictions_heads")
use_exp_restrictions_heads = TRUE
if("use_exp_restrictions_heads_hours")
use_exp_restrictions_heads_hours = text2num(value)
if("use_exp_restrictions_heads_department")
use_exp_restrictions_heads_department = TRUE
if("use_exp_restrictions_other")
use_exp_restrictions_other = TRUE
if("use_exp_restrictions_admin_bypass")
use_exp_restrictions_admin_bypass = TRUE
if("lobby_countdown")
lobby_countdown = text2num(value)
if("round_end_countdown")
@@ -443,27 +470,12 @@
fps = text2num(value)
if("automute_on")
automute_on = 1
if("comms_key")
global.comms_key = value
if(value != "default_pwd" && length(value) > 6) //It's the default value or less than 6 characters long, warn badmins
global.comms_allowed = 1
if("cross_server_address")
cross_address = value
if(value != "byond:\\address:port")
cross_allowed = 1
if("cross_comms_name")
cross_name = value
if("panic_server_name")
if (value != "\[Put the name here\]")
panic_server_name = value
if("panic_server_address")
if(value != "byond://address:port")
panic_address = value
if("medal_hub_address")
global.medal_hub = value
if("medal_hub_password")
global.medal_pass = value
if("show_irc_name")
showircname = 1
if("see_own_notes")
@@ -548,8 +560,12 @@
if("irc_announce_new_game")
irc_announce_new_game = TRUE
else
WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'")
#if DM_VERSION > 511
#error Replace the line below with WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'")
#endif
HandleCommsConfig(name, value) //TODO: Deprecate this eventually
else if(type == "comms")
HandleCommsConfig(name, value)
else if(type == "game_options")
switch(name)
if("damage_multiplier")
@@ -566,6 +582,8 @@
ooc_during_round = 1
if("emojis")
emojis = 1
if("no_credits_round_end")
no_credits_round_end = TRUE
if("run_delay")
run_speed = text2num(value)
if("walk_delay")
@@ -789,8 +807,27 @@
if(fps <= 0)
fps = initial(fps)
/datum/configuration/proc/HandleCommsConfig(name, value)
switch(name)
if("comms_key")
global.comms_key = value
if(value != "default_pwd" && length(value) > 6) //It's the default value or less than 6 characters long, warn badmins
global.comms_allowed = TRUE
if("cross_server_address")
cross_address = value
if(value != "byond:\\address:port")
cross_allowed = TRUE
if("cross_comms_name")
cross_name = value
if("medal_hub_address")
global.medal_hub = value
if("medal_hub_password")
global.medal_pass = value
else
WRITE_FILE(GLOB.config_error_log, "Unknown setting in configuration: '[name]'")
/datum/configuration/proc/loadmaplist(filename)
filename = "[GLOB.config_dir][filename]"
var/list/Lines = world.file2list(filename)
var/datum/map_config/currentmap = null
@@ -843,6 +880,7 @@
/datum/configuration/proc/loadsql(filename)
filename = "[GLOB.config_dir][filename]"
var/list/Lines = world.file2list(filename)
for(var/t in Lines)
if(!t)
+24
View File
@@ -0,0 +1,24 @@
diff a/code/controllers/configuration.dm b/code/controllers/configuration.dm (rejected hunks)
@@ -337,17 +337,17 @@
if("use_account_age_for_jobs")
use_account_age_for_jobs = 1
if("use_exp_tracking")
- use_exp_tracking = 1
+ use_exp_tracking = TRUE
if("use_exp_restrictions_heads")
- use_exp_restrictions_heads = 1
+ use_exp_restrictions_heads = TRUE
if("use_exp_restrictions_heads_hours")
use_exp_restrictions_heads_hours = text2num(value)
if("use_exp_restrictions_heads_department")
- use_exp_restrictions_heads_department = 1
+ use_exp_restrictions_heads_department = TRUE
if("use_exp_restrictions_other")
- use_exp_restrictions_other = 1
+ use_exp_restrictions_other = TRUE
if("use_exp_restrictions_admin_bypass")
- use_exp_restrictions_admin_bypass = 1
+ use_exp_restrictions_admin_bypass = TRUE
if("lobby_countdown")
lobby_countdown = text2num(value)
if("round_end_countdown")
+22 -18
View File
@@ -53,20 +53,24 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
var/static/restart_clear = 0
var/static/restart_timeout = 0
var/static/restart_count = 0
//current tick limit, assigned before running a subsystem.
//used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
var/static/current_ticklimit = TICK_LIMIT_RUNNING
/datum/controller/master/New()
// Highlander-style: there can only be one! Kill off the old and replace it with the new.
subsystems = list()
var/list/_subsystems = list()
subsystems = _subsystems
if (Master != src)
if (istype(Master))
Recover()
qdel(Master)
else
init_subtypes(/datum/controller/subsystem, subsystems)
var/list/subsytem_types = subtypesof(/datum/controller/subsystem)
sortTim(subsytem_types, /proc/cmp_subsystem_init)
for(var/I in subsytem_types)
_subsystems += new I
Master = src
if(!GLOB)
@@ -131,7 +135,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
FireHim = TRUE
if(3)
msg = "The [BadBoy.name] subsystem seems to be destabilizing the MC and will be offlined."
BadBoy.flags_1 |= SS_NO_FIRE
BadBoy.flags |= SS_NO_FIRE
if(msg)
to_chat(GLOB.admins, "<span class='boldannounce'>[msg]</span>")
log_world(msg)
@@ -167,7 +171,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
// Initialize subsystems.
current_ticklimit = config.tick_limit_mc_init
for (var/datum/controller/subsystem/SS in subsystems)
if (SS.flags_1 & SS_NO_INIT)
if (SS.flags & SS_NO_INIT)
continue
SS.Initialize(REALTIMEOFDAY)
CHECK_TICK
@@ -232,13 +236,13 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
var/timer = world.time
for (var/thing in subsystems)
var/datum/controller/subsystem/SS = thing
if (SS.flags_1 & SS_NO_FIRE)
if (SS.flags & SS_NO_FIRE)
continue
SS.queued_time = 0
SS.queue_next = null
SS.queue_prev = null
SS.state = SS_IDLE
if (SS.flags_1 & SS_TICKER)
if (SS.flags & SS_TICKER)
tickersubsystems += SS
timer += world.tick_lag * rand(1, 5)
SS.next_fire = timer
@@ -284,7 +288,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
//if there are mutiple sleeping procs running before us hogging the cpu, we have to run later
// because sleeps are processed in the order received, so longer sleeps are more likely to run first
if (world.tick_usage > TICK_LIMIT_MC)
if (TICK_USAGE > TICK_LIMIT_MC)
sleep_delta += 2
current_ticklimit = TICK_LIMIT_RUNNING * 0.5
sleep(world.tick_lag * (processing + sleep_delta))
@@ -293,7 +297,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
sleep_delta = MC_AVERAGE_FAST(sleep_delta, 0)
if (last_run + (world.tick_lag * processing) > world.time)
sleep_delta += 1
if (world.tick_usage > (TICK_LIMIT_MC*0.5))
if (TICK_USAGE > (TICK_LIMIT_MC*0.5))
sleep_delta += 1
if (make_runtime)
@@ -371,7 +375,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
continue
if (SS.next_fire > world.time)
continue
SS_flags = SS.flags_1
SS_flags = SS.flags
if (SS_flags & SS_NO_FIRE)
subsystemstocheck -= SS
continue
@@ -399,16 +403,16 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
//keep running while we have stuff to run and we haven't gone over a tick
// this is so subsystems paused eariler can use tick time that later subsystems never used
while (ran && queue_head && world.tick_usage < TICK_LIMIT_MC)
while (ran && queue_head && TICK_USAGE < TICK_LIMIT_MC)
ran = FALSE
bg_calc = FALSE
current_tick_budget = queue_priority_count
queue_node = queue_head
while (queue_node)
if (ran && world.tick_usage > TICK_LIMIT_RUNNING)
if (ran && TICK_USAGE > TICK_LIMIT_RUNNING)
break
queue_node_flags = queue_node.flags_1
queue_node_flags = queue_node.flags
queue_node_priority = queue_node.queued_priority
//super special case, subsystems where we can't make them pause mid way through
@@ -417,7 +421,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
//(unless we haven't even ran anything this tick, since its unlikely they will ever be able run
// in those cases, so we just let them run)
if (queue_node_flags & SS_NO_TICK_CHECK)
if (queue_node.tick_usage > TICK_LIMIT_RUNNING - world.tick_usage && ran_non_ticker)
if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker)
queue_node.queued_priority += queue_priority_count * 0.10
queue_priority_count -= queue_node_priority
queue_priority_count += queue_node.queued_priority
@@ -429,7 +433,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
current_tick_budget = queue_priority_count_bg
bg_calc = TRUE
tick_remaining = TICK_LIMIT_RUNNING - world.tick_usage
tick_remaining = TICK_LIMIT_RUNNING - TICK_USAGE
if (current_tick_budget > 0 && queue_node_priority > 0)
tick_precentage = tick_remaining / (current_tick_budget / queue_node_priority)
@@ -438,7 +442,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
tick_precentage = max(tick_precentage*0.5, tick_precentage-queue_node.tick_overrun)
current_ticklimit = round(world.tick_usage + tick_precentage)
current_ticklimit = round(TICK_USAGE + tick_precentage)
if (!(queue_node_flags & SS_TICKER))
ran_non_ticker = TRUE
@@ -449,9 +453,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
queue_node.state = SS_RUNNING
tick_usage = world.tick_usage
tick_usage = TICK_USAGE
var/state = queue_node.ignite(queue_node_paused)
tick_usage = world.tick_usage - tick_usage
tick_usage = TICK_USAGE - tick_usage
if (state == SS_RUNNING)
state = SS_IDLE
+6 -6
View File
@@ -6,7 +6,7 @@
var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer.
var/priority = 50 //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep
var/flags_1 = 0 //see MC.dm in __DEFINES Most flags_1 must be set on world start to take full effect. (You can also restart the mc to force them to process again)
var/flags = 0 //see MC.dm in __DEFINES Most flags must be set on world start to take full effect. (You can also restart the mc to force them to process again)
//set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later
// use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to the list
@@ -61,13 +61,13 @@
//fire() seems more suitable. This is the procedure that gets called every 'wait' deciseconds.
//Sleeping in here prevents future fires until returned.
/datum/controller/subsystem/proc/fire(resumed = 0)
flags_1 |= SS_NO_FIRE
flags |= SS_NO_FIRE
throw EXCEPTION("Subsystem [src]([type]) does not fire() but did not set the SS_NO_FIRE flag. Please add the SS_NO_FIRE flag to any subsystem that doesn't fire so it doesn't get added to the processing list and waste cpu.")
/datum/controller/subsystem/Destroy()
dequeue()
can_fire = 0
flags_1 |= SS_NO_FIRE
flags |= SS_NO_FIRE
Master.subsystems -= src
@@ -76,14 +76,14 @@
// (this lets us sort our run order correctly without having to re-sort the entire already sorted list)
/datum/controller/subsystem/proc/enqueue()
var/SS_priority = priority
var/SS_flags = flags_1
var/SS_flags = flags
var/datum/controller/subsystem/queue_node
var/queue_node_priority
var/queue_node_flags
for (queue_node = Master.queue_head; queue_node; queue_node = queue_node.queue_next)
queue_node_priority = queue_node.queued_priority
queue_node_flags = queue_node.flags_1
queue_node_flags = queue_node.flags
if (queue_node_flags & SS_TICKER)
if (!(SS_flags & SS_TICKER))
@@ -170,7 +170,7 @@
if(can_fire && !(SS_NO_FIRE in flags_1))
if(can_fire && !(SS_NO_FIRE in flags))
msg = "[round(cost,1)]ms|[round(tick_usage,1)]%([round(tick_overrun,1)]%)|[round(ticks,0.1)]\t[msg]"
else
msg = "OFFLINE\t[msg]"
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(acid)
name = "Acid"
priority = 40
flags_1 = SS_NO_INIT|SS_BACKGROUND
flags = SS_NO_INIT|SS_BACKGROUND
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/currentrun = list()
+15 -15
View File
@@ -11,7 +11,7 @@ SUBSYSTEM_DEF(air)
init_order = INIT_ORDER_AIR
priority = 20
wait = 5
flags_1 = SS_BACKGROUND
flags = SS_BACKGROUND
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/cost_turfs = 0
@@ -71,65 +71,65 @@ SUBSYSTEM_DEF(air)
/datum/controller/subsystem/air/fire(resumed = 0)
var/timer = world.tick_usage
var/timer = TICK_USAGE_REAL
if(currentpart == SSAIR_PIPENETS || !resumed)
process_pipenets(resumed)
cost_pipenets = MC_AVERAGE(cost_pipenets, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_pipenets = MC_AVERAGE(cost_pipenets, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_ATMOSMACHINERY
if(currentpart == SSAIR_ATMOSMACHINERY)
timer = world.tick_usage
timer = TICK_USAGE_REAL
process_atmos_machinery(resumed)
cost_atmos_machinery = MC_AVERAGE(cost_atmos_machinery, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_atmos_machinery = MC_AVERAGE(cost_atmos_machinery, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_ACTIVETURFS
if(currentpart == SSAIR_ACTIVETURFS)
timer = world.tick_usage
timer = TICK_USAGE_REAL
process_active_turfs(resumed)
cost_turfs = MC_AVERAGE(cost_turfs, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_turfs = MC_AVERAGE(cost_turfs, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_EXCITEDGROUPS
if(currentpart == SSAIR_EXCITEDGROUPS)
timer = world.tick_usage
timer = TICK_USAGE_REAL
process_excited_groups(resumed)
cost_groups = MC_AVERAGE(cost_groups, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_groups = MC_AVERAGE(cost_groups, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_HIGHPRESSURE
if(currentpart == SSAIR_HIGHPRESSURE)
timer = world.tick_usage
timer = TICK_USAGE_REAL
process_high_pressure_delta(resumed)
cost_highpressure = MC_AVERAGE(cost_highpressure, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_highpressure = MC_AVERAGE(cost_highpressure, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_HOTSPOTS
if(currentpart == SSAIR_HOTSPOTS)
timer = world.tick_usage
timer = TICK_USAGE_REAL
process_hotspots(resumed)
cost_hotspots = MC_AVERAGE(cost_hotspots, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_hotspots = MC_AVERAGE(cost_hotspots, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_SUPERCONDUCTIVITY
if(currentpart == SSAIR_SUPERCONDUCTIVITY)
timer = world.tick_usage
timer = TICK_USAGE_REAL
process_super_conductivity(resumed)
cost_superconductivity = MC_AVERAGE(cost_superconductivity, TICK_DELTA_TO_MS(world.tick_usage - timer))
cost_superconductivity = MC_AVERAGE(cost_superconductivity, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(assets)
name = "Assets"
init_order = INIT_ORDER_ASSETS
flags_1 = SS_NO_FIRE
flags = SS_NO_FIRE
var/list/cache = list()
var/list/preload = list()
+1 -1
View File
@@ -6,7 +6,7 @@
SUBSYSTEM_DEF(atoms)
name = "Atoms"
init_order = INIT_ORDER_ATOMS
flags_1 = SS_NO_FIRE
flags = SS_NO_FIRE
var/initialized = INITIALIZATION_INSSATOMS
var/old_initialized
+1 -1
View File
@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(augury)
name = "Augury"
flags_1 = SS_NO_INIT
flags = SS_NO_INIT
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/watchers = list()
+275 -263
View File
@@ -1,269 +1,281 @@
SUBSYSTEM_DEF(blackbox)
name = "Blackbox"
wait = 6000
flags_1 = SS_NO_TICK_CHECK | SS_NO_INIT
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
init_order = INIT_ORDER_BLACKBOX
var/list/msg_common = list()
var/list/msg_science = list()
var/list/msg_command = list()
var/list/msg_medical = list()
var/list/msg_engineering = list()
var/list/msg_security = list()
var/list/msg_deathsquad = list()
var/list/msg_syndicate = list()
var/list/msg_service = list()
var/list/msg_cargo = list()
var/list/msg_other = list()
var/list/feedback = list() //list of datum/feedback_variable
var/sealed = FALSE //time to stop tracking stats?
//poll population
/datum/controller/subsystem/blackbox/fire()
if(!SSdbcore.Connect())
return
var/playercount = 0
for(var/mob/M in GLOB.player_list)
if(M.client)
playercount += 1
var/admincount = GLOB.admins.len
var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')")
query_record_playercount.Execute()
/datum/controller/subsystem/blackbox/Recover()
msg_common = SSblackbox.msg_common
msg_science = SSblackbox.msg_science
msg_command = SSblackbox.msg_command
msg_medical = SSblackbox.msg_medical
msg_engineering = SSblackbox.msg_engineering
msg_security = SSblackbox.msg_security
msg_deathsquad = SSblackbox.msg_deathsquad
msg_syndicate = SSblackbox.msg_syndicate
msg_service = SSblackbox.msg_service
msg_cargo = SSblackbox.msg_cargo
msg_other = SSblackbox.msg_other
feedback = SSblackbox.feedback
sealed = SSblackbox.sealed
//no touchie
/datum/controller/subsystem/blackbox/can_vv_get(var_name)
if(var_name == "feedback")
return FALSE
return ..()
/datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value)
return FALSE
/datum/controller/subsystem/blackbox/Shutdown()
sealed = FALSE
set_val("ahelp_unresolved", GLOB.ahelp_tickets.active_tickets.len)
var/pda_msg_amt = 0
var/rc_msg_amt = 0
for (var/obj/machinery/message_server/MS in GLOB.message_servers)
if (MS.pda_msgs.len > pda_msg_amt)
pda_msg_amt = MS.pda_msgs.len
if (MS.rc_msgs.len > rc_msg_amt)
rc_msg_amt = MS.rc_msgs.len
set_details("radio_usage","")
add_details("radio_usage","COM-[msg_common.len]")
add_details("radio_usage","SCI-[msg_science.len]")
add_details("radio_usage","HEA-[msg_command.len]")
add_details("radio_usage","MED-[msg_medical.len]")
add_details("radio_usage","ENG-[msg_engineering.len]")
add_details("radio_usage","SEC-[msg_security.len]")
add_details("radio_usage","DTH-[msg_deathsquad.len]")
add_details("radio_usage","SYN-[msg_syndicate.len]")
add_details("radio_usage","SRV-[msg_service.len]")
add_details("radio_usage","CAR-[msg_cargo.len]")
add_details("radio_usage","OTH-[msg_other.len]")
add_details("radio_usage","PDA-[pda_msg_amt]")
add_details("radio_usage","RC-[rc_msg_amt]")
if (!SSdbcore.Connect())
return
var/list/sqlrowlist = list()
for (var/datum/feedback_variable/FV in feedback)
sqlrowlist += list(list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'"))
if (!length(sqlrowlist))
return
SSdbcore.MassInsert(format_table_name("feedback"), sqlrowlist, ignore_errors = TRUE, delayed = TRUE)
/datum/controller/subsystem/blackbox/proc/LogBroadcast(blackbox_msg, freq)
if(sealed)
return
switch(freq)
if(1459)
msg_common += blackbox_msg
if(1351)
msg_science += blackbox_msg
if(1353)
msg_command += blackbox_msg
if(1355)
msg_medical += blackbox_msg
if(1357)
msg_engineering += blackbox_msg
if(1359)
msg_security += blackbox_msg
if(1441)
msg_deathsquad += blackbox_msg
if(1213)
msg_syndicate += blackbox_msg
if(1349)
msg_service += blackbox_msg
if(1347)
msg_cargo += blackbox_msg
else
msg_other += blackbox_msg
/datum/controller/subsystem/blackbox/proc/find_feedback_datum(variable)
for(var/datum/feedback_variable/FV in feedback)
if(FV.get_variable() == variable)
return FV
var/datum/feedback_variable/FV = new(variable)
feedback += FV
return FV
/datum/controller/subsystem/blackbox/proc/set_val(variable, value)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.set_value(value)
/datum/controller/subsystem/blackbox/proc/inc(variable, value)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.inc(value)
/datum/controller/subsystem/blackbox/proc/dec(variable,value)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.dec(value)
/datum/controller/subsystem/blackbox/proc/set_details(variable,details)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.set_details(details)
/datum/controller/subsystem/blackbox/proc/add_details(variable,details)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.add_details(details)
/datum/controller/subsystem/blackbox/proc/ReportDeath(mob/living/L)
if(sealed)
return
if(!SSdbcore.Connect())
return
if(!L || !L.key || !L.mind)
return
var/turf/T = get_turf(L)
var/area/placeofdeath = get_area(T.loc)
var/sqlname = sanitizeSQL(L.real_name)
var/sqlkey = sanitizeSQL(L.ckey)
var/sqljob = sanitizeSQL(L.mind.assigned_role)
var/sqlspecial = sanitizeSQL(L.mind.special_role)
var/sqlpod = sanitizeSQL(placeofdeath.name)
var/laname
var/lakey
if(L.lastattacker && ismob(L.lastattacker))
var/mob/LA = L.lastattacker
laname = sanitizeSQL(LA.real_name)
lakey = sanitizeSQL(LA.key)
var/sqlbrute = sanitizeSQL(L.getBruteLoss())
var/sqlfire = sanitizeSQL(L.getFireLoss())
var/sqlbrain = sanitizeSQL(L.getBrainLoss())
var/sqloxy = sanitizeSQL(L.getOxyLoss())
var/sqltox = sanitizeSQL(L.getToxLoss())
var/sqlclone = sanitizeSQL(L.getCloneLoss())
var/sqlstamina = sanitizeSQL(L.getStaminaLoss())
var/x_coord = sanitizeSQL(L.x)
var/y_coord = sanitizeSQL(L.y)
var/z_coord = sanitizeSQL(L.z)
var/map = sanitizeSQL(SSmapping.config.map_name)
var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina])")
query_report_death.Execute()
/datum/controller/subsystem/blackbox/proc/Seal()
if(sealed)
return
if(IsAdminAdvancedProcCall())
var/msg = "[key_name_admin(usr)] sealed the blackbox!"
message_admins(msg)
log_game("Blackbox sealed[IsAdminAdvancedProcCall() ? " by [key_name(usr)]" : ""].")
sealed = TRUE
//feedback variable datum, for storing all kinds of data
/datum/feedback_variable
var/variable
var/value
var/details
/datum/feedback_variable/New(param_variable, param_value = 0)
variable = param_variable
value = param_value
/datum/feedback_variable/proc/inc(num = 1)
if (isnum(value))
value += num
else
value = text2num(value)
if (isnum(value))
value += num
else
value = num
/datum/feedback_variable/proc/dec(num = 1)
if (isnum(value))
value -= num
else
value = text2num(value)
if (isnum(value))
value -= num
else
value = -num
/datum/feedback_variable/proc/set_value(num)
if (isnum(num))
value = num
/datum/feedback_variable/proc/get_value()
if (!isnum(value))
return 0
return value
/datum/feedback_variable/proc/get_variable()
return variable
SUBSYSTEM_DEF(blackbox)
name = "Blackbox"
wait = 6000
flags = SS_NO_TICK_CHECK
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
init_order = INIT_ORDER_BLACKBOX
var/list/msg_common = list()
var/list/msg_science = list()
var/list/msg_command = list()
var/list/msg_medical = list()
var/list/msg_engineering = list()
var/list/msg_security = list()
var/list/msg_deathsquad = list()
var/list/msg_syndicate = list()
var/list/msg_service = list()
var/list/msg_cargo = list()
var/list/msg_other = list()
var/list/feedback = list() //list of datum/feedback_variable
var/triggertime = 0
var/sealed = FALSE //time to stop tracking stats?
/datum/controller/subsystem/blackbox/Initialize()
triggertime = world.time
. = ..()
//poll population
/datum/controller/subsystem/blackbox/fire()
if(!SSdbcore.Connect())
return
var/playercount = 0
for(var/mob/M in GLOB.player_list)
if(M.client)
playercount += 1
var/admincount = GLOB.admins.len
var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port, round_id) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]')")
query_record_playercount.Execute()
if(config.use_exp_tracking)
if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check
update_exp(10,FALSE)
/datum/controller/subsystem/blackbox/Recover()
msg_common = SSblackbox.msg_common
msg_science = SSblackbox.msg_science
msg_command = SSblackbox.msg_command
msg_medical = SSblackbox.msg_medical
msg_engineering = SSblackbox.msg_engineering
msg_security = SSblackbox.msg_security
msg_deathsquad = SSblackbox.msg_deathsquad
msg_syndicate = SSblackbox.msg_syndicate
msg_service = SSblackbox.msg_service
msg_cargo = SSblackbox.msg_cargo
msg_other = SSblackbox.msg_other
feedback = SSblackbox.feedback
sealed = SSblackbox.sealed
//no touchie
/datum/controller/subsystem/blackbox/can_vv_get(var_name)
if(var_name == "feedback")
return FALSE
return ..()
/datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value)
return FALSE
/datum/controller/subsystem/blackbox/Shutdown()
sealed = FALSE
set_val("ahelp_unresolved", GLOB.ahelp_tickets.active_tickets.len)
var/pda_msg_amt = 0
var/rc_msg_amt = 0
for (var/obj/machinery/message_server/MS in GLOB.message_servers)
if (MS.pda_msgs.len > pda_msg_amt)
pda_msg_amt = MS.pda_msgs.len
if (MS.rc_msgs.len > rc_msg_amt)
rc_msg_amt = MS.rc_msgs.len
set_details("radio_usage","")
add_details("radio_usage","COM-[msg_common.len]")
add_details("radio_usage","SCI-[msg_science.len]")
add_details("radio_usage","HEA-[msg_command.len]")
add_details("radio_usage","MED-[msg_medical.len]")
add_details("radio_usage","ENG-[msg_engineering.len]")
add_details("radio_usage","SEC-[msg_security.len]")
add_details("radio_usage","DTH-[msg_deathsquad.len]")
add_details("radio_usage","SYN-[msg_syndicate.len]")
add_details("radio_usage","SRV-[msg_service.len]")
add_details("radio_usage","CAR-[msg_cargo.len]")
add_details("radio_usage","OTH-[msg_other.len]")
add_details("radio_usage","PDA-[pda_msg_amt]")
add_details("radio_usage","RC-[rc_msg_amt]")
if (!SSdbcore.Connect())
return
var/list/sqlrowlist = list()
for (var/datum/feedback_variable/FV in feedback)
sqlrowlist += list(list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'"))
if (!length(sqlrowlist))
return
SSdbcore.MassInsert(format_table_name("feedback"), sqlrowlist, ignore_errors = TRUE, delayed = TRUE)
/datum/controller/subsystem/blackbox/proc/LogBroadcast(blackbox_msg, freq)
if(sealed)
return
switch(freq)
if(1459)
msg_common += blackbox_msg
if(1351)
msg_science += blackbox_msg
if(1353)
msg_command += blackbox_msg
if(1355)
msg_medical += blackbox_msg
if(1357)
msg_engineering += blackbox_msg
if(1359)
msg_security += blackbox_msg
if(1441)
msg_deathsquad += blackbox_msg
if(1213)
msg_syndicate += blackbox_msg
if(1349)
msg_service += blackbox_msg
if(1347)
msg_cargo += blackbox_msg
else
msg_other += blackbox_msg
/datum/controller/subsystem/blackbox/proc/find_feedback_datum(variable)
for(var/datum/feedback_variable/FV in feedback)
if(FV.get_variable() == variable)
return FV
var/datum/feedback_variable/FV = new(variable)
feedback += FV
return FV
/datum/controller/subsystem/blackbox/proc/set_val(variable, value)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.set_value(value)
/datum/controller/subsystem/blackbox/proc/inc(variable, value)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.inc(value)
/datum/controller/subsystem/blackbox/proc/dec(variable,value)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.dec(value)
/datum/controller/subsystem/blackbox/proc/set_details(variable,details)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.set_details(details)
/datum/controller/subsystem/blackbox/proc/add_details(variable,details)
if(sealed)
return
var/datum/feedback_variable/FV = find_feedback_datum(variable)
FV.add_details(details)
/datum/controller/subsystem/blackbox/proc/ReportDeath(mob/living/L)
if(sealed)
return
if(!SSdbcore.Connect())
return
if(!L || !L.key || !L.mind)
return
var/turf/T = get_turf(L)
var/area/placeofdeath = get_area(T.loc)
var/sqlname = sanitizeSQL(L.real_name)
var/sqlkey = sanitizeSQL(L.ckey)
var/sqljob = sanitizeSQL(L.mind.assigned_role)
var/sqlspecial = sanitizeSQL(L.mind.special_role)
var/sqlpod = sanitizeSQL(placeofdeath.name)
var/laname
var/lakey
if(L.lastattacker && ismob(L.lastattacker))
var/mob/LA = L.lastattacker
laname = sanitizeSQL(LA.real_name)
lakey = sanitizeSQL(LA.key)
var/sqlbrute = sanitizeSQL(L.getBruteLoss())
var/sqlfire = sanitizeSQL(L.getFireLoss())
var/sqlbrain = sanitizeSQL(L.getBrainLoss())
var/sqloxy = sanitizeSQL(L.getOxyLoss())
var/sqltox = sanitizeSQL(L.getToxLoss())
var/sqlclone = sanitizeSQL(L.getCloneLoss())
var/sqlstamina = sanitizeSQL(L.getStaminaLoss())
var/x_coord = sanitizeSQL(L.x)
var/y_coord = sanitizeSQL(L.y)
var/z_coord = sanitizeSQL(L.z)
var/last_words = sanitizeSQL(L.last_words)
var/suicide = sanitizeSQL(L.suiciding)
var/map = sanitizeSQL(SSmapping.config.map_name)
var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, last_words, suicide) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[last_words]', [suicide])")
query_report_death.Execute()
/datum/controller/subsystem/blackbox/proc/Seal()
if(sealed)
return
if(IsAdminAdvancedProcCall())
var/msg = "[key_name_admin(usr)] sealed the blackbox!"
message_admins(msg)
log_game("Blackbox sealed[IsAdminAdvancedProcCall() ? " by [key_name(usr)]" : ""].")
sealed = TRUE
//feedback variable datum, for storing all kinds of data
/datum/feedback_variable
var/variable
var/value
var/list/details
/datum/feedback_variable/New(param_variable, param_value = 0)
variable = param_variable
value = param_value
/datum/feedback_variable/proc/inc(num = 1)
if (isnum(value))
value += num
else
value = text2num(value)
if (isnum(value))
value += num
else
value = num
/datum/feedback_variable/proc/dec(num = 1)
if (isnum(value))
value -= num
else
value = text2num(value)
if (isnum(value))
value -= num
else
value = -num
/datum/feedback_variable/proc/set_value(num)
if (isnum(num))
value = num
/datum/feedback_variable/proc/get_value()
if (!isnum(value))
return 0
return value
/datum/feedback_variable/proc/get_variable()
return variable
/datum/feedback_variable/proc/set_details(deets)
details = "\"[deets]\""
details = list("\"[deets]\"")
/datum/feedback_variable/proc/add_details(deets)
if (!details)
set_details(deets)
else
details += " | \"[deets]\""
/datum/feedback_variable/proc/get_details()
return details
/datum/feedback_variable/proc/get_parsed()
return list(variable,value,details)
details += "\"[deets]\""
/datum/feedback_variable/proc/get_details()
return details.Join(" | ")
/datum/feedback_variable/proc/get_parsed()
return list(variable,value,details.Join(" | "))
@@ -0,0 +1,10 @@
diff a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm (rejected hunks)
@@ -40,7 +40,7 @@ SUBSYSTEM_DEF(blackbox)
if(config.use_exp_tracking)
if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check
- SSblackbox.update_exp(10,FALSE)
+ update_exp(10,FALSE)
/datum/controller/subsystem/blackbox/Recover()
+1 -1
View File
@@ -3,7 +3,7 @@
SUBSYSTEM_DEF(communications)
name = "Communications"
flags_1 = SS_NO_INIT | SS_NO_FIRE
flags = SS_NO_INIT | SS_NO_FIRE
var/silicon_message_cooldown
var/nonsilicon_message_cooldown
+3 -3
View File
@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(dbcore)
name = "Database"
flags_1 = SS_NO_INIT|SS_NO_FIRE
flags = SS_NO_INIT|SS_NO_FIRE
init_order = INIT_ORDER_DBCORE
var/const/FAILED_DB_CONNECTION_CUTOFF = 5
@@ -251,7 +251,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table
var/table
var/position //1-based index into item data
var/sql_type
var/flags_1
var/flags
var/length
var/max_length
//types
@@ -275,7 +275,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table
table = table_handler
position = position_handler
sql_type = type_handler
flags_1 = flag_handler
flags = flag_handler
length = length_handler
max_length = max_length_handler
+8 -1
View File
@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(disease)
name = "Disease"
flags_1 = SS_NO_FIRE | SS_NO_INIT
flags = SS_NO_FIRE | SS_NO_INIT
var/list/active_diseases = list() //List of Active disease in all mobs; purely for quick referencing.
var/list/diseases
@@ -14,3 +14,10 @@ SUBSYSTEM_DEF(disease)
/datum/controller/subsystem/disease/stat_entry(msg)
..("P:[active_diseases.len]")
/datum/controller/subsystem/disease/proc/get_disease_name(id)
var/datum/disease/advance/A = archive_diseases[id]
if(A.name)
return A.name
else
return "Unknown"
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(explosion)
priority = 99
wait = 1
flags_1 = SS_TICKER|SS_NO_INIT
flags = SS_TICKER|SS_NO_INIT
var/list/explosions
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(fire_burning)
name = "Fire Burning"
priority = 40
flags_1 = SS_NO_INIT|SS_BACKGROUND
flags = SS_NO_INIT|SS_BACKGROUND
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/currentrun = list()
+10 -10
View File
@@ -2,7 +2,7 @@ SUBSYSTEM_DEF(garbage)
name = "Garbage"
priority = 15
wait = 20
flags_1 = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT
flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
var/collection_timeout = 3000// deciseconds to wait to let running procs finish before we just say fuck it and force del() the object
@@ -67,9 +67,9 @@ SUBSYSTEM_DEF(garbage)
HandleToBeQueued()
if(state == SS_RUNNING)
HandleQueue()
if (state == SS_PAUSED) //make us wait again before the next run.
state = SS_RUNNING
state = SS_RUNNING
//If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond.
//Don't attempt to optimize, not worth the effort.
@@ -114,7 +114,7 @@ SUBSYSTEM_DEF(garbage)
var/type = A.type
testing("GC: -- \ref[A] | [type] was unable to be GC'd and was deleted --")
didntgc["[type]"]++
HardDelete(A)
++delslasttick
@@ -147,15 +147,15 @@ SUBSYSTEM_DEF(garbage)
//this is purely to separate things profile wise.
/datum/controller/subsystem/garbage/proc/HardDelete(datum/A)
var/time = world.timeofday
var/tick = world.tick_usage
var/tick = TICK_USAGE
var/ticktime = world.time
var/type = A.type
var/refID = "\ref[A]"
del(A)
tick = (world.tick_usage-tick+((world.time-ticktime)/world.tick_lag*100))
tick = (TICK_USAGE-tick+((world.time-ticktime)/world.tick_lag*100))
if (tick > highest_del_tickusage)
highest_del_tickusage = tick
time = world.timeofday - time
@@ -167,7 +167,7 @@ SUBSYSTEM_DEF(garbage)
log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)")
message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).")
postpone(time/5)
/datum/controller/subsystem/garbage/proc/HardQueue(datum/A)
if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
tobequeued += A
+1 -1
View File
@@ -3,7 +3,7 @@ SUBSYSTEM_DEF(icon_smooth)
init_order = INIT_ORDER_ICON_SMOOTHING
wait = 1
priority = 35
flags_1 = SS_TICKER
flags = SS_TICKER
var/list/smooth_queue = list()
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(inbounds)
name = "Inbounds"
priority = 40
flags_1 = SS_NO_INIT
flags = SS_NO_INIT
runlevels = RUNLEVEL_GAME
var/list/processing = list()
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(ipintel)
name = "XKeyScore"
init_order = INIT_ORDER_XKEYSCORE
flags_1 = SS_NO_FIRE
flags = SS_NO_FIRE
var/enabled = 0 //disable at round start to avoid checking reconnects
var/throttle = 0
var/errors = 0
+18 -2
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(job)
name = "Jobs"
init_order = INIT_ORDER_JOBS
flags_1 = SS_NO_FIRE
flags = SS_NO_FIRE
var/list/occupations = list() //List of all jobs
var/list/name_occupations = list() //Dict of all jobs, keys are titles
@@ -73,6 +73,8 @@ SUBSYSTEM_DEF(job)
return 0
if(!job.player_old_enough(player.client))
return 0
if(job.required_playtime_remaining(player.client))
return 0
var/position_limit = job.total_positions
if(!latejoin)
position_limit = job.spawn_positions
@@ -95,6 +97,9 @@ SUBSYSTEM_DEF(job)
if(!job.player_old_enough(player.client))
Debug("FOC player not old enough, Player: [player]")
continue
if(job.required_playtime_remaining(player.client))
Debug("FOC player not enough xp, Player: [player]")
continue
if(flag && (!(flag in player.client.prefs.be_special)))
Debug("FOC flag failed, Player: [player], Flag: [flag], ")
continue
@@ -130,6 +135,10 @@ SUBSYSTEM_DEF(job)
Debug("GRJ player not old enough, Player: [player]")
continue
if(job.required_playtime_remaining(player.client))
Debug("GRJ player not enough xp, Player: [player]")
continue
if(player.mind && job.title in player.mind.restricted_roles)
Debug("GRJ incompatible with antagonist role, Player: [player], Job: [job.title]")
continue
@@ -300,6 +309,10 @@ SUBSYSTEM_DEF(job)
Debug("DO player not old enough, Player: [player], Job:[job.title]")
continue
if(job.required_playtime_remaining(player.client))
Debug("DO player not enough xp, Player: [player], Job:[job.title]")
continue
if(player.mind && job.title in player.mind.restricted_roles)
Debug("DO incompatible with antagonist role, Player: [player], Job:[job.title]")
continue
@@ -407,7 +420,7 @@ SUBSYSTEM_DEF(job)
if(job && H)
job.after_spawn(H, M)
handle_roundstart_items(H, M.ckey, H.mind.assigned_role, H.mind.special_role)
return H
@@ -463,6 +476,9 @@ SUBSYSTEM_DEF(job)
if(!job.player_old_enough(player.client))
level6++
continue
if(job.required_playtime_remaining(player.client))
level6++
continue
if(player.client.prefs.GetJobDepartment(job, 1) & job.flag)
level1++
else if(player.client.prefs.GetJobDepartment(job, 2) & job.flag)
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(language)
name = "Language"
init_order = INIT_ORDER_LANGUAGE
flags_1 = SS_NO_FIRE
flags = SS_NO_FIRE
/datum/controller/subsystem/language/Initialize(timeofday)
for(var/L in subtypesof(/datum/language))
+1 -1
View File
@@ -6,7 +6,7 @@ SUBSYSTEM_DEF(lighting)
name = "Lighting"
wait = 2
init_order = INIT_ORDER_LIGHTING
flags_1 = SS_TICKER
flags = SS_TICKER
var/initialized = FALSE
+1 -1
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(machines)
name = "Machines"
init_order = INIT_ORDER_MACHINES
flags_1 = SS_KEEP_TIMING
flags = SS_KEEP_TIMING
var/list/processing = list()
var/list/currentrun = list()
var/list/powernets = list()
+2 -2
View File
@@ -1,7 +1,7 @@
SUBSYSTEM_DEF(mapping)
name = "Mapping"
init_order = INIT_ORDER_MAPPING
flags_1 = SS_NO_FIRE
flags = SS_NO_FIRE
var/list/nuke_tiles = list()
var/list/nuke_threats = list()
@@ -84,7 +84,7 @@ SUBSYSTEM_DEF(mapping)
C.update_icon()
/datum/controller/subsystem/mapping/Recover()
flags_1 |= SS_NO_INIT
flags |= SS_NO_INIT
map_templates = SSmapping.map_templates
ruins_templates = SSmapping.ruins_templates
space_ruins_templates = SSmapping.space_ruins_templates

Some files were not shown because too many files have changed in this diff Show More