+3
-3
@@ -6,15 +6,15 @@
|
||||
|
||||
#deathride58
|
||||
/modular_citadel/ @deathride58
|
||||
/code/citadel/ @deathride58
|
||||
|
||||
#LetterJay
|
||||
/modular_citadel/code/modules/client/loadout/__donator.dm @LetterJay
|
||||
|
||||
#Poojawa
|
||||
|
||||
/code/modules/vore @Poojawa
|
||||
/code/citadel/dogborgstuff.dmm @Poojawa
|
||||
/modular_citadel/code/modules/vore @Poojawa
|
||||
/code/game/objects/items/devices/dogborg_sleeper.dm @Poojawa
|
||||
/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @Poojawa
|
||||
/tgui/ @Poojawa
|
||||
/modular_citadel/code/modules/clothing/spacesuits/flightsuit.dm @Poojawa
|
||||
/modular_citadel/code/game/objects/ids.dm @Poojawa
|
||||
|
||||
+3
-1
@@ -13,7 +13,6 @@
|
||||
*.lk
|
||||
*.int
|
||||
*.backup
|
||||
*.int
|
||||
### https://raw.github.com/github/gitignore/cc542de017c606138a87ee4880e5f06b3a306def/Global/Linux.gitignore
|
||||
|
||||
*~
|
||||
@@ -127,6 +126,9 @@ celerybeat-schedule
|
||||
venv/
|
||||
ENV/
|
||||
|
||||
# IntelliJ IDEA / PyCharm (with plugin)
|
||||
.idea
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
|
||||
|
||||
+44
-10
@@ -1,16 +1,50 @@
|
||||
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 4.0; The query to update the schema revision table is:
|
||||
The latest database version is 4.1; The query to update the schema revision table is:
|
||||
|
||||
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 0);
|
||||
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 1);
|
||||
or
|
||||
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 0);
|
||||
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 1);
|
||||
|
||||
In any query remember to add a prefix to the table names if you use one.
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
12 November 2017, by Jordie0608
|
||||
Version 4.1, 3 February 2018, by Jordie0608
|
||||
Modified tables 'admin', 'admin_log' and 'admin_rank', removing unnecessary columns and adding support for excluding rights flags from admin ranks.
|
||||
This change was made to enable use of sql-based admin loading.
|
||||
To import your existing admins and ranks run the included script 'admin_import_2018-02-03.py', see the file for use instructions.
|
||||
Legacy file-based admin loading is still supported, if you want to continue using it the script doesn't need to be run.
|
||||
|
||||
ALTER TABLE `admin`
|
||||
CHANGE COLUMN `rank` `rank` VARCHAR(32) NOT NULL AFTER `ckey`,
|
||||
DROP COLUMN `id`,
|
||||
DROP COLUMN `level`,
|
||||
DROP COLUMN `flags`,
|
||||
DROP COLUMN `email`,
|
||||
DROP PRIMARY KEY,
|
||||
ADD PRIMARY KEY (`ckey`);
|
||||
|
||||
ALTER TABLE `admin_log`
|
||||
CHANGE COLUMN `datetime` `datetime` DATETIME NOT NULL AFTER `id`,
|
||||
CHANGE COLUMN `adminckey` `adminckey` VARCHAR(32) NOT NULL AFTER `datetime`,
|
||||
CHANGE COLUMN `adminip` `adminip` INT(10) UNSIGNED NOT NULL AFTER `adminckey`,
|
||||
ADD COLUMN `operation` ENUM('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL AFTER `adminip`,
|
||||
CHANGE COLUMN `log` `log` VARCHAR(1000) NOT NULL AFTER `operation`;
|
||||
|
||||
ALTER TABLE `admin_ranks`
|
||||
CHANGE COLUMN `rank` `rank` VARCHAR(32) NOT NULL FIRST,
|
||||
CHANGE COLUMN `flags` `flags` SMALLINT UNSIGNED NOT NULL AFTER `rank`,
|
||||
ADD COLUMN `exclude_flags` SMALLINT UNSIGNED NOT NULL AFTER `flags`,
|
||||
ADD COLUMN `can_edit_flags` SMALLINT(5) UNSIGNED NOT NULL AFTER `exclude_flags`,
|
||||
DROP COLUMN `id`,
|
||||
DROP PRIMARY KEY,
|
||||
ADD PRIMARY KEY (`rank`);
|
||||
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
Version 4.0, 12 November 2017, by Jordie0608
|
||||
Modified feedback table to use json, a python script is used to migrate data to this new format.
|
||||
|
||||
See the file 'feedback_conversion_2017-11-12.py' for instructions on how to use the script.
|
||||
@@ -29,7 +63,7 @@ CREATE TABLE `feedback` (
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
28 August 2017, by MrStonedOne
|
||||
Version 3.4, 28 August 2017, by MrStonedOne
|
||||
Modified table 'messages', adding a deleted column and editing all indexes to include it
|
||||
|
||||
ALTER TABLE `messages`
|
||||
@@ -43,7 +77,7 @@ ADD INDEX `idx_msg_type_ckey_time_odr` (`type`,`targetckey`,`timestamp`, `delete
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
25 August 2017, by Jordie0608
|
||||
Version 3.3, 25 August 2017, by Jordie0608
|
||||
|
||||
Modified tables 'connection_log', 'legacy_population', 'library', 'messages' and 'player' to add additional 'round_id' tracking in various forms and 'server_ip' and 'server_port' to the table 'messages'.
|
||||
|
||||
@@ -55,7 +89,7 @@ ALTER TABLE `player` ADD COLUMN `firstseen_round_id` INT(11) UNSIGNED NOT NULL A
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
18 August 2017, by Cyberboss and nfreader
|
||||
Version 3.2, 18 August 2017, by Cyberboss and nfreader
|
||||
|
||||
Modified table 'death', adding the columns `last_words` and 'suicide'.
|
||||
|
||||
@@ -67,7 +101,7 @@ Remember to add a prefix to the table name if you use them.
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
20th July 2017, by Shadowlight213
|
||||
Version 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.
|
||||
|
||||
@@ -79,7 +113,7 @@ Remember to add a prefix to the table name if you use them.
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
28 June 2017, by oranges
|
||||
Version 3.0, 28 June 2017, by oranges
|
||||
Added schema_revision to store the current db revision, why start at 3.0?
|
||||
|
||||
because:
|
||||
@@ -319,7 +353,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 `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.
|
||||
|
||||
|
||||
+13
-15
@@ -17,13 +17,9 @@ DROP TABLE IF EXISTS `admin`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `admin` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`rank` varchar(32) NOT NULL DEFAULT 'Administrator',
|
||||
`level` int(2) NOT NULL DEFAULT '0',
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
`email` varchar(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`rank` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -38,8 +34,9 @@ CREATE TABLE `admin_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime NOT NULL,
|
||||
`adminckey` varchar(32) NOT NULL,
|
||||
`adminip` varchar(18) NOT NULL,
|
||||
`log` text NOT NULL,
|
||||
`adminip` int(10) unsigned NOT NULL,
|
||||
`operation` enum('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL,
|
||||
`log` varchar(1000) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@@ -52,11 +49,12 @@ DROP TABLE IF EXISTS `admin_ranks`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `admin_ranks` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`rank` varchar(40) NOT NULL,
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
|
||||
`rank` varchar(32) NOT NULL,
|
||||
`flags` smallint(5) unsigned NOT NULL,
|
||||
`exclude_flags` smallint(5) unsigned NOT NULL,
|
||||
`can_edit_flags` smallint(5) unsigned NOT NULL,
|
||||
PRIMARY KEY (`rank`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@@ -271,11 +269,11 @@ DROP TABLE IF EXISTS `role_time`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
|
||||
CREATE TABLE `role_time`
|
||||
CREATE TABLE `role_time`
|
||||
( `ckey` VARCHAR(32) NOT NULL ,
|
||||
`job` VARCHAR(32) NOT NULL ,
|
||||
`minutes` INT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`ckey`, `job`)
|
||||
PRIMARY KEY (`ckey`, `job`)
|
||||
) ENGINE = InnoDB;
|
||||
|
||||
--
|
||||
|
||||
@@ -17,13 +17,9 @@ DROP TABLE IF EXISTS `SS13_admin`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_admin` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`rank` varchar(32) NOT NULL DEFAULT 'Administrator',
|
||||
`level` int(2) NOT NULL DEFAULT '0',
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
`email` varchar(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`rank` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -38,8 +34,9 @@ CREATE TABLE `SS13_admin_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime NOT NULL,
|
||||
`adminckey` varchar(32) NOT NULL,
|
||||
`adminip` varchar(18) NOT NULL,
|
||||
`log` text NOT NULL,
|
||||
`adminip` int(10) unsigned NOT NULL,
|
||||
`operation` enum('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL,
|
||||
`log` varchar(1000) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@@ -52,11 +49,12 @@ DROP TABLE IF EXISTS `SS13_admin_ranks`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_admin_ranks` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`rank` varchar(40) NOT NULL,
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
|
||||
`rank` varchar(32) NOT NULL,
|
||||
`flags` smallint(5) unsigned NOT NULL,
|
||||
`exclude_flags` smallint(5) unsigned NOT NULL,
|
||||
`can_edit_flags` smallint(5) unsigned NOT NULL,
|
||||
PRIMARY KEY (`rank`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
@@ -271,11 +269,11 @@ 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`
|
||||
CREATE TABLE `SS13_role_time`
|
||||
( `ckey` VARCHAR(32) NOT NULL ,
|
||||
`job` VARCHAR(32) NOT NULL ,
|
||||
`minutes` INT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`ckey`, `job`)
|
||||
PRIMARY KEY (`ckey`, `job`)
|
||||
) ENGINE = InnoDB;
|
||||
|
||||
--
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/area/ruin/unpowered)
|
||||
"f" = (
|
||||
/obj/structure/mirror{
|
||||
desc = "Oh no, seven years of bad luck!";
|
||||
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
|
||||
icon_state = "mirror_broke";
|
||||
pixel_x = 28;
|
||||
broken = 1
|
||||
@@ -56,6 +56,7 @@
|
||||
/area/ruin/unpowered)
|
||||
"k" = (
|
||||
/obj/structure/mirror{
|
||||
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
|
||||
icon_state = "mirror_broke";
|
||||
pixel_y = 28;
|
||||
broken = 1
|
||||
@@ -65,7 +66,7 @@
|
||||
/area/ruin/unpowered)
|
||||
"l" = (
|
||||
/obj/structure/mirror{
|
||||
desc = "Oh no, seven years of bad luck!";
|
||||
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
|
||||
icon_state = "mirror_broke";
|
||||
pixel_x = 28;
|
||||
broken = 1
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
/area/ruin/space/abandoned_tele)
|
||||
"r" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/device/beacon,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space/abandoned_tele)
|
||||
"s" = (
|
||||
|
||||
@@ -0,0 +1,503 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"c" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"d" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"e" = (
|
||||
/obj/machinery/defibrillator_mount/loaded,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"f" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced/fulltile,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"g" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/device/flashlight/lamp,
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"h" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/pen,
|
||||
/obj/item/paper/fluff/ruins/exp_cloning/log,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"i" = (
|
||||
/obj/machinery/dna_scannernew,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"j" = (
|
||||
/obj/machinery/computer/prototype_cloning,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/paper/fluff/ruins/exp_cloning/manual,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"k" = (
|
||||
/obj/machinery/clonepod/experimental,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"l" = (
|
||||
/obj/effect/decal/cleanable/vomit/old,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"m" = (
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"n" = (
|
||||
/obj/structure/sign/nanotrasen,
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"o" = (
|
||||
/obj/machinery/vending/snack/teal,
|
||||
/turf/open/floor/plasteel/airless/floorgrime,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"p" = (
|
||||
/turf/open/floor/plasteel/airless/floorgrime,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"q" = (
|
||||
/obj/structure/sign/directions/science{
|
||||
dir = 8
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"r" = (
|
||||
/obj/effect/decal/remains/human,
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"s" = (
|
||||
/obj/machinery/iv_drip,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"t" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/bed,
|
||||
/obj/item/bedsheet/medical,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"u" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"v" = (
|
||||
/turf/open/floor/plasteel/whiteblue/corner{
|
||||
dir = 4
|
||||
},
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"w" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/side{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"x" = (
|
||||
/turf/open/floor/plasteel/whiteblue/side{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"y" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"z" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/corner{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"A" = (
|
||||
/obj/structure/sign/departments/science,
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"B" = (
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"C" = (
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/space/nearstation)
|
||||
"D" = (
|
||||
/obj/structure/chair/comfy{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"E" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"F" = (
|
||||
/obj/machinery/door/airlock/research/glass,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"G" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"H" = (
|
||||
/obj/machinery/door/airlock/research/glass,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"I" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"J" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"K" = (
|
||||
/obj/machinery/door/airlock/research/glass,
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"L" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/space/nearstation)
|
||||
"M" = (
|
||||
/obj/structure/fluff/broken_flooring{
|
||||
name = "broken plating";
|
||||
icon_state = "plating";
|
||||
dir = 8
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/space/nearstation)
|
||||
"N" = (
|
||||
/obj/item/book/random/triple,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"O" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/bookcase/random/fiction,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"P" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/machinery/light,
|
||||
/obj/structure/bedsheetbin,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"Q" = (
|
||||
/obj/structure/table/glass,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"R" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/obj/item/device/healthanalyzer{
|
||||
desc = "A prototype hand-held body scanner able to distinguish vital signs of the subject.";
|
||||
name = "prototype health analyzer"
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"S" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/storage/box/syringes,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"T" = (
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/powered/ancient_shuttle)
|
||||
"U" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/space/nearstation)
|
||||
"V" = (
|
||||
/turf/closed/wall/r_wall/rust,
|
||||
/area/space/nearstation)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
a
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
a
|
||||
a
|
||||
c
|
||||
r
|
||||
D
|
||||
N
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
a
|
||||
a
|
||||
c
|
||||
s
|
||||
E
|
||||
E
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
a
|
||||
a
|
||||
d
|
||||
t
|
||||
E
|
||||
O
|
||||
d
|
||||
a
|
||||
a
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
a
|
||||
a
|
||||
d
|
||||
b
|
||||
F
|
||||
d
|
||||
d
|
||||
a
|
||||
a
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
G
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
a
|
||||
d
|
||||
d
|
||||
H
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
u
|
||||
I
|
||||
I
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
c
|
||||
g
|
||||
v
|
||||
J
|
||||
J
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
c
|
||||
h
|
||||
w
|
||||
J
|
||||
J
|
||||
d
|
||||
a
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
d
|
||||
i
|
||||
x
|
||||
J
|
||||
P
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
j
|
||||
y
|
||||
J
|
||||
Q
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
k
|
||||
x
|
||||
J
|
||||
R
|
||||
c
|
||||
a
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
e
|
||||
l
|
||||
x
|
||||
J
|
||||
S
|
||||
d
|
||||
a
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
a
|
||||
d
|
||||
m
|
||||
z
|
||||
J
|
||||
J
|
||||
d
|
||||
a
|
||||
a
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
a
|
||||
d
|
||||
n
|
||||
A
|
||||
K
|
||||
T
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
a
|
||||
f
|
||||
o
|
||||
B
|
||||
p
|
||||
C
|
||||
V
|
||||
a
|
||||
a
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
a
|
||||
f
|
||||
p
|
||||
p
|
||||
C
|
||||
U
|
||||
M
|
||||
a
|
||||
a
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
a
|
||||
d
|
||||
q
|
||||
C
|
||||
L
|
||||
M
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
f
|
||||
M
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -1840,12 +1840,12 @@
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/ruin/space/has_grav/ancientstation/deltacorridor)
|
||||
"fu" = (
|
||||
/obj/machinery/rnd/protolathe,
|
||||
/obj/machinery/rnd/production/protolathe,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/ancientstation/rnd)
|
||||
"fv" = (
|
||||
/obj/machinery/rnd/circuit_imprinter,
|
||||
/obj/machinery/rnd/production/circuit_imprinter,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/turf/open/floor/plasteel/white,
|
||||
|
||||
@@ -2375,7 +2375,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/hotel/workroom)
|
||||
"hr" = (
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/device/beacon,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/hotel/dock)
|
||||
"hs" = (
|
||||
|
||||
@@ -4078,10 +4078,8 @@
|
||||
pixel_x = 11
|
||||
},
|
||||
/obj/structure/mirror{
|
||||
desc = "Oh no, seven years of bad luck!";
|
||||
icon_state = "mirror_broke";
|
||||
pixel_x = 28;
|
||||
broken = 1
|
||||
pixel_x = 28
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
heat_capacity = 1e+006
|
||||
@@ -6091,7 +6089,7 @@
|
||||
"mJ" = (
|
||||
/obj/structure/sign/warning/vacuum{
|
||||
desc = "A beacon used by a teleporter.";
|
||||
icon = 'icons/obj/radio.dmi';
|
||||
icon = 'icons/obj/device.dmi';
|
||||
icon_state = "beacon";
|
||||
name = "tracking beacon"
|
||||
},
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
"az" = (
|
||||
/obj/structure/sign/warning/vacuum{
|
||||
desc = "A beacon used by a teleporter.";
|
||||
icon = 'icons/obj/radio.dmi';
|
||||
icon = 'icons/obj/device.dmi';
|
||||
icon_state = "beacon";
|
||||
name = "tracking beacon"
|
||||
},
|
||||
@@ -3397,7 +3397,7 @@
|
||||
},
|
||||
/area/awaymission/undergroundoutpost45/research)
|
||||
"hD" = (
|
||||
/obj/machinery/rnd/protolathe,
|
||||
/obj/machinery/rnd/production/protolathe,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
@@ -3670,7 +3670,7 @@
|
||||
},
|
||||
/area/awaymission/undergroundoutpost45/research)
|
||||
"ii" = (
|
||||
/obj/machinery/rnd/circuit_imprinter,
|
||||
/obj/machinery/rnd/production/circuit_imprinter,
|
||||
/turf/open/floor/plasteel{
|
||||
heat_capacity = 1e+006
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2574,7 +2574,7 @@
|
||||
c_tag = "AI Vault - Port";
|
||||
dir = 4;
|
||||
name = "ai camera";
|
||||
network = list("Sat");
|
||||
network = list("minisat");
|
||||
start_active = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -3515,7 +3515,7 @@
|
||||
c_tag = "AI Vault - Starboard";
|
||||
dir = 8;
|
||||
name = "ai camera";
|
||||
network = list("Sat");
|
||||
network = list("minisat");
|
||||
start_active = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -4081,8 +4081,7 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Armoury - Internal";
|
||||
network = list("Labor")
|
||||
c_tag = "Armoury - Internal"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -4542,8 +4541,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Security - Cell 1";
|
||||
network = list("MINE")
|
||||
c_tag = "Security - Cell 1"
|
||||
},
|
||||
/turf/open/floor/plasteel/red/side{
|
||||
dir = 5
|
||||
@@ -4569,8 +4567,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Fore Primary Hallway";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/red/corner{
|
||||
dir = 1
|
||||
@@ -5967,8 +5964,7 @@
|
||||
/obj/item/stamp,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Cargo Bay Entrance";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/brown{
|
||||
dir = 8
|
||||
@@ -6147,8 +6143,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Security - Cell 2";
|
||||
network = list("MINE")
|
||||
c_tag = "Security - Cell 2"
|
||||
},
|
||||
/turf/open/floor/plasteel/red/side{
|
||||
dir = 5
|
||||
@@ -6521,8 +6516,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Security - Office";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/red/corner{
|
||||
dir = 1
|
||||
@@ -6547,8 +6541,7 @@
|
||||
"amK" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Security - Central";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/side{
|
||||
dir = 8
|
||||
@@ -6629,8 +6622,7 @@
|
||||
"amS" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Locker Room Toilets";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/hallway/primary/central)
|
||||
@@ -8505,8 +8497,7 @@
|
||||
/obj/item/shovel,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Mining Dock";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -9015,7 +9006,6 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics Tank 4";
|
||||
network = list("thunder");
|
||||
pixel_x = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/green/side{
|
||||
@@ -9418,8 +9408,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Central Diner 3";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 4
|
||||
@@ -10058,8 +10047,7 @@
|
||||
"atz" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics Tank 1";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
@@ -10454,8 +10442,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Bar";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
@@ -10473,8 +10460,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Bar Backroom";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/crew_quarters/bar/atrium)
|
||||
@@ -11736,8 +11722,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics East";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/caution{
|
||||
dir = 4
|
||||
@@ -11956,8 +11941,7 @@
|
||||
"axj" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics Tank 2";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
@@ -12059,8 +12043,7 @@
|
||||
/obj/machinery/portable_atmospherics/canister/nitrogen,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics Monitoring";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -12634,8 +12617,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Central Diner 2";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 4
|
||||
@@ -13466,8 +13448,7 @@
|
||||
/obj/structure/bedsheetbin,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Locker Room East";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/arrival{
|
||||
@@ -14488,8 +14469,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Central Hallway East";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
dir = 1
|
||||
@@ -15091,8 +15071,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Secure Storage";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
@@ -15337,8 +15316,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Locker Room South";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -15695,8 +15673,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "SMES Access";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 2
|
||||
@@ -15739,8 +15716,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Access";
|
||||
dir = 8;
|
||||
network = list("Labor")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
@@ -15877,8 +15853,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Central Diner 1";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/redyellow,
|
||||
/area/crew_quarters/bar/atrium)
|
||||
@@ -16458,8 +16433,7 @@
|
||||
"aHg" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Gravity Generator Room";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/bot_white/left,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -16559,7 +16533,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Fore";
|
||||
dir = 2;
|
||||
network = list("SS13","Engine");
|
||||
network = list("ss13","engine");
|
||||
pixel_x = 23
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
@@ -17184,8 +17158,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Monitoring";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -18010,7 +17983,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Kitchen Coldroom";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
network = list("mine")
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/crew_quarters/kitchen)
|
||||
@@ -19145,7 +19118,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Port";
|
||||
dir = 4;
|
||||
network = list("SS13","Engine")
|
||||
network = list("ss13","engine")
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -19171,7 +19144,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Supermatter Chamber";
|
||||
dir = 2;
|
||||
network = list("Engine");
|
||||
network = list("engine");
|
||||
pixel_x = 23
|
||||
},
|
||||
/obj/structure/cable{
|
||||
@@ -19285,7 +19258,7 @@
|
||||
desc = "Used for watching the Engine.";
|
||||
dir = 1;
|
||||
name = "Engine Monitor";
|
||||
network = list("Engine");
|
||||
network = list("engine");
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/machinery/rnd/protolathe/department/engineering,
|
||||
@@ -19335,8 +19308,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics South West";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
dir = 8;
|
||||
@@ -19468,8 +19440,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Hydroponics South";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
@@ -20153,8 +20124,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Aft Primary Hallway 4";
|
||||
network = list("SS13","Prison")
|
||||
c_tag = "Aft Primary Hallway 4"
|
||||
},
|
||||
/turf/open/floor/plasteel/green/corner{
|
||||
dir = 1
|
||||
@@ -20262,8 +20232,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Aft Primary Hallway 3";
|
||||
network = list("SS13","Prison")
|
||||
c_tag = "Aft Primary Hallway 3"
|
||||
},
|
||||
/turf/open/floor/plasteel/green/corner{
|
||||
dir = 1
|
||||
@@ -21100,7 +21069,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Aft";
|
||||
dir = 2;
|
||||
network = list("SS13","Engine");
|
||||
network = list("ss13","engine");
|
||||
pixel_x = 23
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/visible{
|
||||
@@ -21257,8 +21226,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Aft Primary Hallway 2";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/yellow/corner{
|
||||
dir = 8
|
||||
@@ -21535,8 +21503,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Library 2";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/library)
|
||||
@@ -21685,8 +21652,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Chemistry";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteyellow/corner{
|
||||
dir = 1
|
||||
@@ -22567,8 +22533,7 @@
|
||||
"aUo" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Genetics Cloning";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/corner{
|
||||
dir = 1
|
||||
@@ -23136,7 +23101,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Server Room";
|
||||
dir = 2;
|
||||
network = list("SS13","RD");
|
||||
network = list("ss13","rd");
|
||||
pixel_x = 22
|
||||
},
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
@@ -23645,8 +23610,7 @@
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay Morgue";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 8
|
||||
@@ -23914,8 +23878,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay West";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
@@ -24230,8 +24193,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay Storage";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/structure/window/reinforced{
|
||||
@@ -24495,8 +24457,7 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Research Division South";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/whitepurple/corner,
|
||||
/area/science/research)
|
||||
@@ -25331,7 +25292,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Robotics Lab";
|
||||
dir = 2;
|
||||
network = list("SS13","RD")
|
||||
network = list("ss13","rd")
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault/side,
|
||||
@@ -25637,8 +25598,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay Foyer";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/hallway/primary/central)
|
||||
@@ -26708,8 +26668,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay South";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/corner{
|
||||
dir = 8
|
||||
@@ -27226,8 +27185,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay Recovery Room";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 8
|
||||
@@ -28451,7 +28409,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Xenobiology Test Chamber";
|
||||
dir = 2;
|
||||
network = list("Xeno","RD")
|
||||
network = list("xeno","rd")
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 4
|
||||
@@ -28546,7 +28504,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Crematorium";
|
||||
dir = 4;
|
||||
network = list("MINE")
|
||||
network = list("mine")
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 4
|
||||
@@ -29231,8 +29189,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Chaplain's Quarters";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
@@ -29278,8 +29235,7 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Chapel Office";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/chapel/main)
|
||||
@@ -29714,8 +29670,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Chapel South";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
@@ -29737,8 +29692,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Arrivals Hallway 3";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 2
|
||||
@@ -29825,7 +29779,7 @@
|
||||
c_tag = "Science - Server Room";
|
||||
dir = 8;
|
||||
name = "science camera";
|
||||
network = list("SS13","RD")
|
||||
network = list("ss13","rd")
|
||||
},
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/science/xenobiology)
|
||||
@@ -30413,8 +30367,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Port Primary Hallway";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 2
|
||||
@@ -30431,8 +30384,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Starboard Primary Hallway 2";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/corner,
|
||||
/area/hallway/primary/central)
|
||||
@@ -30440,8 +30392,7 @@
|
||||
/obj/structure/closet/firecloset,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Starboard Primary Hallway 2";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
@@ -30464,8 +30415,7 @@
|
||||
"blk" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics Tank 3";
|
||||
dir = 4;
|
||||
network = list("SS13")
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
@@ -30478,12 +30428,11 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Shuttle Docking Foyer";
|
||||
dir = 8;
|
||||
network = list("MINE")
|
||||
network = list("mine")
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Escape Arm Airlocks";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -30492,8 +30441,7 @@
|
||||
/obj/structure/closet/emcloset,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Starboard Primary Hallway";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
@@ -30507,7 +30455,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engineering Starboard";
|
||||
dir = 8;
|
||||
network = list("SS13","Engine")
|
||||
network = list("ss13","engine")
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
@@ -30523,8 +30471,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Research Division Access";
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
dir = 2
|
||||
},
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "2-8"
|
||||
@@ -30538,7 +30485,6 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Aft Primary Hallway 1";
|
||||
dir = 8;
|
||||
network = list("SS13");
|
||||
pixel_y = -22
|
||||
},
|
||||
/turf/open/floor/plasteel/purple/corner,
|
||||
@@ -30583,7 +30529,6 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Surgery Operating";
|
||||
dir = 1;
|
||||
network = list("SS13");
|
||||
pixel_x = 22
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
@@ -30592,7 +30537,7 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Xenobiology Test Chamber";
|
||||
dir = 2;
|
||||
network = list("Xeno","RD")
|
||||
network = list("xeno","rd")
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
@@ -30615,8 +30560,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Arrivals Hallway";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
@@ -30627,8 +30571,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Arrivals Hallway 2";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
@@ -30685,8 +30628,7 @@
|
||||
},
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Chapel Mass Driver";
|
||||
dir = 8;
|
||||
network = list("SS13")
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small,
|
||||
/obj/machinery/button/massdriver{
|
||||
@@ -31264,8 +31206,7 @@
|
||||
"buU" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Communications Relay";
|
||||
dir = 8;
|
||||
network = list("MINE")
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -33064,7 +33005,7 @@
|
||||
c_tag = "AI Chamber - Core";
|
||||
dir = 2;
|
||||
name = "core camera";
|
||||
network = list("RD")
|
||||
network = list("rd")
|
||||
},
|
||||
/obj/machinery/cell_charger,
|
||||
/turf/open/floor/plasteel/vault/side,
|
||||
@@ -33247,7 +33188,7 @@
|
||||
c_tag = "AI Chamber - Core";
|
||||
dir = 2;
|
||||
name = "core camera";
|
||||
network = list("RD")
|
||||
network = list("rd")
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -33384,7 +33325,7 @@
|
||||
c_tag = "AI Chamber - Core";
|
||||
dir = 2;
|
||||
name = "core camera";
|
||||
network = list("RD")
|
||||
network = list("rd")
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
@@ -33617,7 +33558,7 @@
|
||||
c_tag = "AI Satellite - Access";
|
||||
dir = 4;
|
||||
name = "ai camera";
|
||||
network = list("Sat");
|
||||
network = list("minisat");
|
||||
start_active = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
@@ -33905,7 +33846,7 @@
|
||||
c_tag = "AI Satellite - Maintenance";
|
||||
dir = 8;
|
||||
name = "ai camera";
|
||||
network = list("Sat");
|
||||
network = list("minisat");
|
||||
start_active = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
@@ -33977,7 +33918,7 @@
|
||||
c_tag = "AI Satellite - Antechamber";
|
||||
dir = 4;
|
||||
name = "ai camera";
|
||||
network = list("Sat");
|
||||
network = list("minisat");
|
||||
start_active = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+1700
-2795
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1674
-2319
File diff suppressed because it is too large
Load Diff
@@ -587,7 +587,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/mine/production)
|
||||
"bO" = (
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/device/beacon,
|
||||
/turf/open/floor/plasteel/purple/corner{
|
||||
dir = 8
|
||||
},
|
||||
|
||||
@@ -4464,7 +4464,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/brig)
|
||||
"aiV" = (
|
||||
/obj/machinery/rnd/protolathe/department/security,
|
||||
/obj/machinery/rnd/production/techfab/department/security,
|
||||
/turf/open/floor/plasteel/red/side{
|
||||
dir = 8
|
||||
},
|
||||
@@ -6004,7 +6004,7 @@
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/rnd/protolathe/department/cargo,
|
||||
/obj/machinery/rnd/production/techfab/department/cargo,
|
||||
/turf/open/floor/plasteel/brown{
|
||||
dir = 4
|
||||
},
|
||||
@@ -8288,8 +8288,8 @@
|
||||
"apX" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/rnd/protolathe/department/service,
|
||||
/obj/effect/turf_decal/stripes/box,
|
||||
/obj/machinery/rnd/production/techfab/department/service,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/bar/atrium)
|
||||
"apY" = (
|
||||
@@ -18864,7 +18864,7 @@
|
||||
/obj/structure/cable/white{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/rnd/circuit_imprinter,
|
||||
/obj/machinery/rnd/production/circuit_imprinter,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/yellow/side{
|
||||
dir = 4
|
||||
@@ -19261,7 +19261,7 @@
|
||||
network = list("engine");
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/machinery/rnd/protolathe/department/engineering,
|
||||
/obj/machinery/rnd/production/protolathe/department/engineering,
|
||||
/obj/effect/turf_decal/stripes/box,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
@@ -22628,7 +22628,7 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/rnd/protolathe/department/science,
|
||||
/obj/machinery/rnd/production/protolathe/department/science,
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 4
|
||||
},
|
||||
@@ -23035,7 +23035,7 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/rnd/circuit_imprinter/department/science,
|
||||
/obj/machinery/rnd/production/circuit_imprinter/department/science,
|
||||
/turf/open/floor/plasteel/vault/side{
|
||||
dir = 4
|
||||
},
|
||||
@@ -25492,8 +25492,8 @@
|
||||
dir = 5
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/machinery/rnd/protolathe/department/medical,
|
||||
/obj/effect/turf_decal/stripes/box,
|
||||
/obj/machinery/rnd/production/techfab/department/medical,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/medical/medbay/zone3)
|
||||
"bav" = (
|
||||
@@ -30295,7 +30295,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"bkC" = (
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/device/beacon,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8538,7 +8538,8 @@
|
||||
dwidth = 3;
|
||||
name = "steel rain";
|
||||
port_direction = 4;
|
||||
preferred_direction = 4
|
||||
preferred_direction = 4;
|
||||
timid = 0
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/assault_pod)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
|
||||
+15
-45
@@ -44,20 +44,6 @@
|
||||
//Mutations that cant be taken from genetics and are not in SE
|
||||
#define NON_SCANNABLE -1
|
||||
|
||||
// Extra powers:
|
||||
#define LASER 9 // harm intent - click anywhere to shoot lasers from eyes
|
||||
#define HEAL 10 // healing people with hands
|
||||
#define SHADOW 11 // shadow teleportation (create in/out portals anywhere) (25%)
|
||||
#define SCREAM 12 // supersonic screaming (25%)
|
||||
#define EXPLOSIVE 13 // exploding on-demand (15%)
|
||||
#define REGENERATION 14 // superhuman regeneration (30%)
|
||||
#define REPROCESSOR 15 // eat anything (50%)
|
||||
#define SHAPESHIFTING 16 // take on the appearance of anything (40%)
|
||||
#define PHASING 17 // ability to phase through walls (40%)
|
||||
#define SHIELD 18 // shielding from all projectile attacks (30%)
|
||||
#define SHOCKWAVE 19 // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%)
|
||||
#define ELECTRICITY 20 // ability to shoot electric attacks (15%)
|
||||
|
||||
//DNA - Because fuck you and your magic numbers being all over the codebase.
|
||||
#define DNA_BLOCK_SIZE 3
|
||||
|
||||
@@ -81,7 +67,6 @@
|
||||
#define TR_KEEPIMPLANTS 16
|
||||
#define TR_KEEPSE 32 // changelings shouldn't edit the DNA's SE when turning into a monkey
|
||||
#define TR_DEFAULTMSG 64
|
||||
#define TR_KEEPSRC 128
|
||||
#define TR_KEEPORGANS 256
|
||||
|
||||
|
||||
@@ -94,36 +79,21 @@
|
||||
#define FACEHAIR 3
|
||||
#define EYECOLOR 4
|
||||
#define LIPS 5
|
||||
#define RESISTHOT 6
|
||||
#define RESISTCOLD 7
|
||||
#define RESISTPRESSURE 8
|
||||
#define RADIMMUNE 9
|
||||
#define NOBREATH 10
|
||||
#define NOGUNS 11
|
||||
#define NOBLOOD 12
|
||||
#define NOFIRE 13
|
||||
#define VIRUSIMMUNE 14
|
||||
#define PIERCEIMMUNE 15
|
||||
#define NOTRANSSTING 16
|
||||
#define MUTCOLORS_PARTSONLY 17 //Used if we want the mutant colour to be only used by mutant bodyparts. Don't combine this with MUTCOLORS, or it will be useless.
|
||||
#define NODISMEMBER 18
|
||||
#define NOHUNGER 19
|
||||
#define NOCRITDAMAGE 20
|
||||
#define NOZOMBIE 21
|
||||
#define EASYDISMEMBER 22
|
||||
#define EASYLIMBATTACHMENT 23
|
||||
#define TOXINLOVER 24
|
||||
#define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
|
||||
#define NO_UNDERWEAR 26
|
||||
#define NOLIVER 27
|
||||
#define NOSTOMACH 28
|
||||
#define NO_DNA_COPY 29
|
||||
#define DRINKSBLOOD 30
|
||||
#define SPECIES_ORGANIC 31
|
||||
#define SPECIES_INORGANIC 32
|
||||
#define SPECIES_UNDEAD 33
|
||||
#define SPECIES_ROBOTIC 34
|
||||
#define NOEYES 35
|
||||
#define NOBLOOD 6
|
||||
#define NOTRANSSTING 7
|
||||
#define MUTCOLORS_PARTSONLY 8 //Used if we want the mutant colour to be only used by mutant bodyparts. Don't combine this with MUTCOLORS, or it will be useless.
|
||||
#define NOZOMBIE 9
|
||||
#define DIGITIGRADE 10 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
|
||||
#define NO_UNDERWEAR 11
|
||||
#define NOLIVER 12
|
||||
#define NOSTOMACH 13
|
||||
#define NO_DNA_COPY 14
|
||||
#define DRINKSBLOOD 15
|
||||
#define SPECIES_ORGANIC 16
|
||||
#define SPECIES_INORGANIC 17
|
||||
#define SPECIES_UNDEAD 18
|
||||
#define SPECIES_ROBOTIC 19
|
||||
#define NOEYES 20
|
||||
|
||||
#define ORGAN_SLOT_BRAIN "brain"
|
||||
#define ORGAN_SLOT_APPENDIX "appendix"
|
||||
|
||||
@@ -34,15 +34,10 @@
|
||||
#define R_SOUNDS 0x800
|
||||
#define R_SPAWN 0x1000
|
||||
#define R_AUTOLOGIN 0x2000
|
||||
#define R_DBRANKS 0x4000
|
||||
|
||||
#define R_DEFAULT R_AUTOLOGIN
|
||||
|
||||
#if DM_VERSION > 512
|
||||
#error Remove the flag below , its been long enough
|
||||
#endif
|
||||
//legacy , remove post 512, it was replaced by R_POLL
|
||||
#define R_REJUVINATE 2
|
||||
|
||||
#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
|
||||
|
||||
#define ADMIN_QUE(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminmoreinfo=[REF(user)]'>?</a>)"
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#define CELL_VOLUME 2500 //liters in a cell
|
||||
#define BREATH_VOLUME 0.5 //liters in a normal breath
|
||||
#define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) //Amount of air to take a from a tile
|
||||
#define HUMAN_NEEDED_OXYGEN (MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16) //Amount of air needed before pass out/suffocation commences
|
||||
|
||||
//EXCITED GROUPS
|
||||
#define EXCITED_GROUP_BREAKDOWN_CYCLES 4 //number of FULL air controller ticks before an excited group breaks down (averages gas contents across turfs)
|
||||
@@ -46,10 +45,7 @@
|
||||
//HEAT TRANSFER COEFFICIENTS
|
||||
//Must be between 0 and 1. Values closer to 1 equalize temperature faster
|
||||
//Should not exceed 0.4 else strange heat flow occur
|
||||
#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4
|
||||
#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0
|
||||
#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0
|
||||
#define SPACE_HEAT_TRANSFER_COEFFICIENT 0.2 //a hack to partly simulate radiative heat
|
||||
#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4
|
||||
#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now
|
||||
#define HEAT_CAPACITY_VACUUM 7000 //a hack to help make vacuums "cold", sacrificing realism for gameplay
|
||||
@@ -59,8 +55,6 @@
|
||||
#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C
|
||||
#define FIRE_SPREAD_RADIOSITY_SCALE 0.85
|
||||
#define FIRE_GROWTH_RATE 40000 //For small fires
|
||||
#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C //Resistance to fire damage
|
||||
#define CARBON_LIFEFORM_FIRE_DAMAGE 4 //Fire damage
|
||||
#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C
|
||||
|
||||
//GASES
|
||||
@@ -74,11 +68,6 @@
|
||||
#define REACTING 1
|
||||
#define STOP_REACTIONS 2
|
||||
|
||||
//HUMANS
|
||||
//Hurty numbers
|
||||
#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin
|
||||
#define AIR_DAMAGE_MODIFIER 1.025 //More means less damage from hot air scalding lungs, less = more damage //CITADEL EDIT 1.025
|
||||
|
||||
// Pressure limits.
|
||||
#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant)
|
||||
#define WARNING_HIGH_PRESSURE 325 //This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE)
|
||||
@@ -123,7 +112,7 @@
|
||||
#define SHOES_MAX_TEMP_PROTECT 1500 //For gloves
|
||||
|
||||
#define PRESSURE_DAMAGE_COEFFICIENT 4 //The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, with the maximum of MAX_PRESSURE_DAMAGE
|
||||
#define MAX_HIGH_PRESSURE_DAMAGE 16 // CITADEL CHANGES Max to 16, low to 8.
|
||||
#define MAX_HIGH_PRESSURE_DAMAGE 16 // CITADEL CHANGES Max to 16, low to 8.
|
||||
#define LOW_PRESSURE_DAMAGE 8 //The amount of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value).
|
||||
|
||||
#define COLD_SLOWDOWN_FACTOR 20 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this
|
||||
@@ -196,4 +185,3 @@ GLOBAL_LIST_INIT(pipe_paint_colors, list(
|
||||
"Violet" = rgb(64,0,128),
|
||||
"Yellow" = rgb(255,198,0)
|
||||
))
|
||||
|
||||
|
||||
+20
-15
@@ -19,8 +19,9 @@
|
||||
#define DIAG_AIRLOCK_HUD "15"//Airlock shock overlay
|
||||
#define DIAG_PATH_HUD "16"//Bot path indicators
|
||||
#define GLAND_HUD "17"//Gland indicators for abductors
|
||||
#define SENTIENT_DISEASE_HUD "18"
|
||||
//for antag huds. these are used at the /mob level
|
||||
#define ANTAG_HUD "18"
|
||||
#define ANTAG_HUD "19"
|
||||
|
||||
//by default everything in the hud_list of an atom is an image
|
||||
//a value in hud_list with one of these will change that behavior
|
||||
@@ -35,23 +36,27 @@
|
||||
#define DATA_HUD_DIAGNOSTIC_BASIC 5
|
||||
#define DATA_HUD_DIAGNOSTIC_ADVANCED 6
|
||||
#define DATA_HUD_ABDUCTOR 7
|
||||
#define DATA_HUD_SENTIENT_DISEASE 8
|
||||
|
||||
//antag HUD defines
|
||||
#define ANTAG_HUD_CULT 8
|
||||
#define ANTAG_HUD_REV 9
|
||||
#define ANTAG_HUD_OPS 10
|
||||
#define ANTAG_HUD_WIZ 11
|
||||
#define ANTAG_HUD_SHADOW 12
|
||||
#define ANTAG_HUD_TRAITOR 13
|
||||
#define ANTAG_HUD_NINJA 14
|
||||
#define ANTAG_HUD_CHANGELING 15
|
||||
#define ANTAG_HUD_ABDUCTOR 16
|
||||
#define ANTAG_HUD_DEVIL 17
|
||||
#define ANTAG_HUD_SINTOUCHED 18
|
||||
#define ANTAG_HUD_SOULLESS 19
|
||||
#define ANTAG_HUD_CLOCKWORK 20
|
||||
#define ANTAG_HUD_BROTHER 21
|
||||
#define ANTAG_HUD_CULT 9
|
||||
#define ANTAG_HUD_REV 10
|
||||
#define ANTAG_HUD_OPS 11
|
||||
#define ANTAG_HUD_WIZ 12
|
||||
#define ANTAG_HUD_SHADOW 13
|
||||
#define ANTAG_HUD_TRAITOR 14
|
||||
#define ANTAG_HUD_NINJA 15
|
||||
#define ANTAG_HUD_CHANGELING 16
|
||||
#define ANTAG_HUD_ABDUCTOR 17
|
||||
#define ANTAG_HUD_DEVIL 18
|
||||
#define ANTAG_HUD_SINTOUCHED 19
|
||||
#define ANTAG_HUD_SOULLESS 20
|
||||
#define ANTAG_HUD_CLOCKWORK 21
|
||||
#define ANTAG_HUD_BROTHER 22
|
||||
|
||||
// Notification action types
|
||||
#define NOTIFY_JUMP "jump"
|
||||
#define NOTIFY_ATTACK "attack"
|
||||
#define NOTIFY_ORBIT "orbit"
|
||||
|
||||
#define ADD_HUD_TO_COOLDOWN 20 //cooldown for being shown the images for any particular data hud
|
||||
|
||||
@@ -2,8 +2,16 @@
|
||||
//Be sure to update the min/max of these if you do change them.
|
||||
//Measurements are in imperial units. Inches, feet, yards, miles. Tsp, tbsp, cups, quarts, gallons, etc
|
||||
|
||||
//arousal HUD location
|
||||
#define ui_arousal "EAST-1:28,CENTER-3:11"//Below the health doll
|
||||
//HUD stuff
|
||||
#define ui_arousal "EAST-1:28,CENTER-4:8"//Below the health doll
|
||||
#define ui_stamina "EAST-1:28,CENTER:17" // replacing internals button
|
||||
#define ui_overridden_resist "EAST-3:24,SOUTH+1:7"
|
||||
#define ui_combat_toggle "EAST-4:22,SOUTH:5"
|
||||
|
||||
//1:1 HUD layout stuff
|
||||
#define ui_boxcraft "EAST-4:22,SOUTH+1:6"
|
||||
#define ui_boxarea "EAST-4:6,SOUTH+1:6"
|
||||
#define ui_boxlang "EAST-5:22,SOUTH+1:6"
|
||||
|
||||
|
||||
//organ defines
|
||||
@@ -100,4 +108,10 @@
|
||||
//Brainslugs
|
||||
#define isborer(A) (istype(A, /mob/living/simple_animal/borer))
|
||||
|
||||
#define CITADEL_MENTOR_OOC_COLOUR "#ad396e"
|
||||
#define CITADEL_MENTOR_OOC_COLOUR "#ad396e"
|
||||
|
||||
//stamina stuff
|
||||
#define STAMINA_SOFTCRIT 100 //softcrit for stamina damage. prevents standing up, prevents performing actions that cost stamina, etc, but doesn't force a rest or stop movement
|
||||
#define STAMINA_CRIT 140 //crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit
|
||||
#define STAMINA_SOFTCRIT_TRADITIONAL 0 //same as STAMINA_SOFTCRIT except for the more traditional health calculations
|
||||
#define STAMINA_CRIT_TRADITIONAL -40 //ditto, but for STAMINA_CRIT
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Cleaning tool strength
|
||||
#define CLEAN_VERY_WEAK 1 // What are you scrubbing the ground with a toothpick?
|
||||
// 1 is also a valid cleaning strength but completely unused so left undefined
|
||||
#define CLEAN_WEAK 2
|
||||
#define CLEAN_MEDIUM 3 // Acceptable tools
|
||||
#define CLEAN_STRONG 4 // Industrial strength
|
||||
|
||||
@@ -64,8 +64,6 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us
|
||||
|
||||
#define GATEWAY_RATVAR_ARRIVAL 600 //when progress is at or above this, game over ratvar's here everybody go home
|
||||
|
||||
#define ARK_SUMMON_COST 5 //how many of each component an Ark costs to summon
|
||||
|
||||
//Objective text define
|
||||
#define CLOCKCULT_OBJECTIVE "Construct the Ark of the Clockwork Justicar and free Ratvar."
|
||||
|
||||
|
||||
+12
-12
@@ -3,26 +3,26 @@
|
||||
#define COLOR_INPUT_DISABLED "#F0F0F0"
|
||||
#define COLOR_INPUT_ENABLED "#D3B5B5"
|
||||
|
||||
#define COLOR_WHITE "#EEEEEE"
|
||||
#define COLOR_SILVER "#C0C0C0"
|
||||
#define COLOR_GRAY "#808080"
|
||||
//#define COLOR_WHITE "#EEEEEE"
|
||||
//#define COLOR_SILVER "#C0C0C0"
|
||||
//#define COLOR_GRAY "#808080"
|
||||
#define COLOR_FLOORTILE_GRAY "#8D8B8B"
|
||||
#define COLOR_ALMOST_BLACK "#333333"
|
||||
#define COLOR_BLACK "#000000"
|
||||
//#define COLOR_BLACK "#000000"
|
||||
#define COLOR_RED "#FF0000"
|
||||
#define COLOR_RED_LIGHT "#FF3333"
|
||||
#define COLOR_MAROON "#800000"
|
||||
//#define COLOR_RED_LIGHT "#FF3333"
|
||||
//#define COLOR_MAROON "#800000"
|
||||
#define COLOR_YELLOW "#FFFF00"
|
||||
#define COLOR_OLIVE "#808000"
|
||||
#define COLOR_LIME "#32CD32"
|
||||
//#define COLOR_OLIVE "#808000"
|
||||
//#define COLOR_LIME "#32CD32"
|
||||
#define COLOR_GREEN "#008000"
|
||||
#define COLOR_CYAN "#00FFFF"
|
||||
#define COLOR_TEAL "#008080"
|
||||
//#define COLOR_TEAL "#008080"
|
||||
#define COLOR_BLUE "#0000FF"
|
||||
#define COLOR_BLUE_LIGHT "#33CCFF"
|
||||
#define COLOR_NAVY "#000080"
|
||||
//#define COLOR_BLUE_LIGHT "#33CCFF"
|
||||
//#define COLOR_NAVY "#000080"
|
||||
#define COLOR_PINK "#FFC0CB"
|
||||
#define COLOR_MAGENTA "#FF00FF"
|
||||
//#define COLOR_MAGENTA "#FF00FF"
|
||||
#define COLOR_PURPLE "#800080"
|
||||
#define COLOR_ORANGE "#FF9900"
|
||||
#define COLOR_BEIGE "#CEB689"
|
||||
|
||||
@@ -110,11 +110,7 @@
|
||||
#define EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER 8 //Coefficient of multiplication for the damage the item does when removed without a surgery (this*item.w_class)
|
||||
#define EMBEDDED_UNSAFE_REMOVAL_TIME 30 //A Time in ticks, total removal time = (this*item.w_class)
|
||||
|
||||
//Gun Stuff
|
||||
#define SAWN_INTACT 0
|
||||
#define SAWN_OFF 1
|
||||
//Gun weapon weight
|
||||
#define WEAPON_DUAL_WIELD 0
|
||||
#define WEAPON_LIGHT 1
|
||||
#define WEAPON_MEDIUM 2
|
||||
#define WEAPON_HEAVY 3
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
//Positions for overrides list
|
||||
#define EXAMINE_POSITION_ARTICLE 1
|
||||
#define EXAMINE_POSITION_BEFORE 2
|
||||
#define EXAMINE_POSITION_NAME 3
|
||||
//End positions
|
||||
#define COMPONENT_EXNAME_CHANGED 1
|
||||
#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (/atom/movable, /atom)
|
||||
|
||||
@@ -37,12 +37,6 @@
|
||||
#define FAILED_UNFASTEN 1
|
||||
#define SUCCESSFUL_UNFASTEN 2
|
||||
|
||||
//disposal unit mode defines, which do double time as the construction defines
|
||||
#define PRESSURE_OFF 0
|
||||
#define PRESSURE_ON 1
|
||||
#define PRESSURE_MAXED 2
|
||||
#define SCREWS_OUT -1
|
||||
|
||||
//ai core defines
|
||||
#define EMPTY_CORE 0
|
||||
#define CIRCUIT_CORE 1
|
||||
@@ -51,11 +45,6 @@
|
||||
#define GLASS_CORE 4
|
||||
#define AI_READY_CORE 5
|
||||
|
||||
//field generator construction defines
|
||||
#define FG_UNSECURED 0
|
||||
#define FG_SECURED 1
|
||||
#define FG_WELDED 2
|
||||
|
||||
//emitter construction defines
|
||||
#define EM_UNSECURED 0
|
||||
#define EM_SECURED 1
|
||||
|
||||
+17
-14
@@ -1,3 +1,7 @@
|
||||
|
||||
#define DISEASE_LIMIT 1
|
||||
#define VIRUS_SYMPTOM_LIMIT 6
|
||||
|
||||
//Visibility Flags
|
||||
#define HIDDEN_SCANNER 1
|
||||
#define HIDDEN_PANDEMIC 2
|
||||
@@ -8,19 +12,18 @@
|
||||
#define CAN_RESIST 4
|
||||
|
||||
//Spread Flags
|
||||
#define VIRUS_SPREAD_SPECIAL 1
|
||||
#define VIRUS_SPREAD_NON_CONTAGIOUS 2
|
||||
#define VIRUS_SPREAD_BLOOD 4
|
||||
#define VIRUS_SPREAD_CONTACT_FLUIDS 8
|
||||
#define VIRUS_SPREAD_CONTACT_SKIN 16
|
||||
#define VIRUS_SPREAD_AIRBORNE 32
|
||||
|
||||
#define DISEASE_SPREAD_SPECIAL 1
|
||||
#define DISEASE_SPREAD_NON_CONTAGIOUS 2
|
||||
#define DISEASE_SPREAD_BLOOD 4
|
||||
#define DISEASE_SPREAD_CONTACT_FLUIDS 8
|
||||
#define DISEASE_SPREAD_CONTACT_SKIN 16
|
||||
#define DISEASE_SPREAD_AIRBORNE 32
|
||||
|
||||
//Severity Defines
|
||||
#define VIRUS_SEVERITY_POSITIVE "Positive" //Diseases that buff, heal, or at least do nothing at all
|
||||
#define VIRUS_SEVERITY_NONTHREAT "Harmless" //Diseases that may have annoying effects, but nothing disruptive (sneezing)
|
||||
#define VIRUS_SEVERITY_MINOR "Minor" //Diseases that can annoy in concrete ways (dizziness)
|
||||
#define VIRUS_SEVERITY_MEDIUM "Medium" //Diseases that can do minor harm, or severe annoyance (vomit)
|
||||
#define VIRUS_SEVERITY_HARMFUL "Harmful" //Diseases that can do significant harm, or severe disruption (brainrot)
|
||||
#define VIRUS_SEVERITY_DANGEROUS "Dangerous" //Diseases that can kill or maim if left untreated (flesh eating, blindness)
|
||||
#define VIRUS_SEVERITY_BIOHAZARD "BIOHAZARD" //Diseases that can quickly kill an unprepared victim (fungal tb, gbs)
|
||||
#define DISEASE_SEVERITY_POSITIVE "Positive" //Diseases that buff, heal, or at least do nothing at all
|
||||
#define DISEASE_SEVERITY_NONTHREAT "Harmless" //Diseases that may have annoying effects, but nothing disruptive (sneezing)
|
||||
#define DISEASE_SEVERITY_MINOR "Minor" //Diseases that can annoy in concrete ways (dizziness)
|
||||
#define DISEASE_SEVERITY_MEDIUM "Medium" //Diseases that can do minor harm, or severe annoyance (vomit)
|
||||
#define DISEASE_SEVERITY_HARMFUL "Harmful" //Diseases that can do significant harm, or severe disruption (brainrot)
|
||||
#define DISEASE_SEVERITY_DANGEROUS "Dangerous" //Diseases that can kill or maim if left untreated (flesh eating, blindness)
|
||||
#define DISEASE_SEVERITY_BIOHAZARD "BIOHAZARD" //Diseases that can quickly kill an unprepared victim (fungal tb, gbs)
|
||||
|
||||
@@ -26,7 +26,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define ON_BORDER_1 512 // item has priority to check when entering or leaving
|
||||
|
||||
#define NOSLIP_1 1024 //prevents from slipping on wet floors, in space etc
|
||||
#define _UNUSED_1 2048
|
||||
|
||||
// BLOCK_GAS_SMOKE_EFFECT_1 only used in masks at the moment.
|
||||
#define BLOCK_GAS_SMOKE_EFFECT_1 4096 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY!
|
||||
@@ -84,7 +83,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
|
||||
|
||||
//Movement Types
|
||||
#define IMMOBILE 0
|
||||
#define GROUND 1
|
||||
#define FLYING 2
|
||||
|
||||
|
||||
@@ -118,22 +118,6 @@
|
||||
#define NECK 2048
|
||||
#define FULL_BODY 4095
|
||||
|
||||
// bitflags for the percentual amount of protection a piece of clothing which covers the body part offers.
|
||||
// Used with human/proc/get_heat_protection() and human/proc/get_cold_protection()
|
||||
// The values here should add up to 1.
|
||||
// Hands and feet have 2.5%, arms and legs 7.5%, each of the torso parts has 15% and the head has 30%
|
||||
#define THERMAL_PROTECTION_HEAD 0.3
|
||||
#define THERMAL_PROTECTION_CHEST 0.15
|
||||
#define THERMAL_PROTECTION_GROIN 0.15
|
||||
#define THERMAL_PROTECTION_LEG_LEFT 0.075
|
||||
#define THERMAL_PROTECTION_LEG_RIGHT 0.075
|
||||
#define THERMAL_PROTECTION_FOOT_LEFT 0.025
|
||||
#define THERMAL_PROTECTION_FOOT_RIGHT 0.025
|
||||
#define THERMAL_PROTECTION_ARM_LEFT 0.075
|
||||
#define THERMAL_PROTECTION_ARM_RIGHT 0.075
|
||||
#define THERMAL_PROTECTION_HAND_LEFT 0.025
|
||||
#define THERMAL_PROTECTION_HAND_RIGHT 0.025
|
||||
|
||||
//flags for female outfits: How much the game can safely "take off" the uniform without it looking weird
|
||||
#define NO_FEMALE_UNIFORM 0
|
||||
#define FEMALE_UNIFORM_FULL 1
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
// simple is_type and similar inline helpers
|
||||
|
||||
#define isdatum(D) (istype(D, /datum))
|
||||
|
||||
#define islist(L) (istype(L, /list))
|
||||
|
||||
#if DM_VERSION >= 512
|
||||
@@ -64,7 +62,6 @@
|
||||
#define isjellyperson(A) (is_species(A, /datum/species/jelly))
|
||||
#define isslimeperson(A) (is_species(A, /datum/species/jelly/slime))
|
||||
#define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent))
|
||||
#define isshadowperson(A) (is_species(A, /datum/species/shadow))
|
||||
#define iszombie(A) (is_species(A, /datum/species/zombie))
|
||||
#define ishumanbasic(A) (is_species(A, /datum/species/human))
|
||||
|
||||
@@ -106,8 +103,6 @@
|
||||
|
||||
#define isbot(A) (istype(A, /mob/living/simple_animal/bot))
|
||||
|
||||
#define iscrab(A) (istype(A, /mob/living/simple_animal/crab))
|
||||
|
||||
#define isshade(A) (istype(A, /mob/living/simple_animal/shade))
|
||||
|
||||
#define ismouse(A) (istype(A, /mob/living/simple_animal/mouse))
|
||||
@@ -118,16 +113,10 @@
|
||||
|
||||
#define iscat(A) (istype(A, /mob/living/simple_animal/pet/cat))
|
||||
|
||||
#define isdog(A) (istype(A, /mob/living/simple_animal/pet/dog))
|
||||
|
||||
#define iscorgi(A) (istype(A, /mob/living/simple_animal/pet/dog/corgi))
|
||||
|
||||
#define ishostile(A) (istype(A, /mob/living/simple_animal/hostile))
|
||||
|
||||
#define isbear(A) (istype(A, /mob/living/simple_animal/hostile/bear))
|
||||
|
||||
#define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp))
|
||||
|
||||
#define isswarmer(A) (istype(A, /mob/living/simple_animal/hostile/swarmer))
|
||||
|
||||
#define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian))
|
||||
@@ -183,14 +172,10 @@ GLOBAL_LIST_INIT(pointed_types, typecacheof(list(
|
||||
|
||||
#define isigniter(O) (istype(O, /obj/item/device/assembly/igniter))
|
||||
|
||||
#define isinfared(O) (istype(O, /obj/item/device/assembly/infra))
|
||||
|
||||
#define isprox(O) (istype(O, /obj/item/device/assembly/prox_sensor))
|
||||
|
||||
#define issignaler(O) (istype(O, /obj/item/device/assembly/signaler))
|
||||
|
||||
#define istimer(O) (istype(O, /obj/item/device/assembly/timer))
|
||||
|
||||
GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
|
||||
/obj/item/stack/sheet/glass,
|
||||
/obj/item/stack/sheet/rglass,
|
||||
@@ -201,4 +186,4 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
|
||||
|
||||
#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types))
|
||||
|
||||
#define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob))
|
||||
#define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob))
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#define GAME_PLANE -1
|
||||
#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
|
||||
#define SPACE_LAYER 1.8
|
||||
#define ABOVE_SPACE_LAYER 1.9
|
||||
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
|
||||
#define MID_TURF_LAYER 2.02
|
||||
#define HIGH_TURF_LAYER 2.03
|
||||
@@ -82,6 +81,9 @@
|
||||
#define ABOVE_LIGHTING_PLANE 16
|
||||
#define ABOVE_LIGHTING_LAYER 16
|
||||
|
||||
#define BYOND_LIGHTING_PLANE 17
|
||||
#define BYOND_LIGHTING_LAYER 17
|
||||
|
||||
//HUD layer defines
|
||||
|
||||
#define FULLSCREEN_PLANE 18
|
||||
|
||||
@@ -23,27 +23,6 @@
|
||||
0, 0, 0, 1 \
|
||||
) \
|
||||
|
||||
// Helpers so we can (more easily) control the colour matrices.
|
||||
#define CL_MATRIX_RR 1
|
||||
#define CL_MATRIX_RG 2
|
||||
#define CL_MATRIX_RB 3
|
||||
#define CL_MATRIX_RA 4
|
||||
#define CL_MATRIX_GR 5
|
||||
#define CL_MATRIX_GG 6
|
||||
#define CL_MATRIX_GB 7
|
||||
#define CL_MATRIX_GA 8
|
||||
#define CL_MATRIX_BR 9
|
||||
#define CL_MATRIX_BG 10
|
||||
#define CL_MATRIX_BB 11
|
||||
#define CL_MATRIX_BA 12
|
||||
#define CL_MATRIX_AR 13
|
||||
#define CL_MATRIX_AG 14
|
||||
#define CL_MATRIX_AB 15
|
||||
#define CL_MATRIX_AA 16
|
||||
#define CL_MATRIX_CR 17
|
||||
#define CL_MATRIX_CG 18
|
||||
#define CL_MATRIX_CB 19
|
||||
#define CL_MATRIX_CA 20
|
||||
|
||||
//Some defines to generalise colours used in lighting.
|
||||
//Important note on colors. Colors can end up significantly different from the basic html picture, especially when saturated
|
||||
@@ -73,6 +52,7 @@
|
||||
#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow.
|
||||
|
||||
#define LIGHTING_PLANE_ALPHA_VISIBLE 255
|
||||
#define LIGHTING_PLANE_ALPHA_NV_TRAIT 245
|
||||
#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192
|
||||
#define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell.
|
||||
#define LIGHTING_PLANE_ALPHA_INVISIBLE 0
|
||||
@@ -89,4 +69,4 @@
|
||||
#define LIGHTING_NO_UPDATE 0
|
||||
#define LIGHTING_VIS_UPDATE 1
|
||||
#define LIGHTING_CHECK_UPDATE 2
|
||||
#define LIGHTING_FORCE_UPDATE 3
|
||||
#define LIGHTING_FORCE_UPDATE 3
|
||||
|
||||
@@ -85,6 +85,3 @@
|
||||
#define SUPERMATTER_DANGER 4 // Integrity < 50%
|
||||
#define SUPERMATTER_EMERGENCY 5 // Integrity < 25%
|
||||
#define SUPERMATTER_DELAMINATING 6 // Pretty obvious.
|
||||
|
||||
//R&D Snowflakes
|
||||
#define RD_CONSOLE_LOCKED_SCREEN 0.2
|
||||
|
||||
@@ -26,7 +26,6 @@ require only minor tweaks.
|
||||
#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() }
|
||||
|
||||
#define SPACERUIN_MAP_EDGE_PAD 15
|
||||
#define ZLEVEL_SPACE_RUIN_COUNT 7
|
||||
|
||||
// traits
|
||||
// boolean - marks a level as having that property if present
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#define BOSS_MEDAL_DRAKE "Drake"
|
||||
#define BOSS_MEDAL_HIEROPHANT "Hierophant"
|
||||
#define BOSS_MEDAL_LEGION "Legion"
|
||||
#define BOSS_MEDAL_SWARMER "Swarmer Beacon"
|
||||
#define BOSS_MEDAL_TENDRIL "Tendril"
|
||||
|
||||
// Score names
|
||||
|
||||
+6
-72
@@ -20,8 +20,8 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
#define THIS_PROC_TYPE_STR "[THIS_PROC_TYPE]" //Because you can only obtain a string of THIS_PROC_TYPE using "[]", and it's nice to just +/+= strings
|
||||
#define THIS_PROC_TYPE_STR_WITH_ARGS "[THIS_PROC_TYPE]([args.Join(",")])"
|
||||
#define THIS_PROC_TYPE_WEIRD ...... //This one is WEIRD, in some cases (When used in certain defines? (eg: ASSERT)) THIS_PROC_TYPE will fail to work, but THIS_PROC_TYPE_WEIRD will work instead
|
||||
#define THIS_PROC_TYPE_WEIRD_STR "[THIS_PROC_TYPE_WEIRD]" //Included for completeness
|
||||
#define THIS_PROC_TYPE_WEIRD_STR_WITH_ARGS "[THIS_PROC_TYPE_WEIRD]([args.Join(",")])" //Ditto
|
||||
//define THIS_PROC_TYPE_WEIRD_STR "[THIS_PROC_TYPE_WEIRD]" //Included for completeness
|
||||
//define THIS_PROC_TYPE_WEIRD_STR_WITH_ARGS "[THIS_PROC_TYPE_WEIRD]([args.Join(",")])" //Ditto
|
||||
|
||||
#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
|
||||
|
||||
@@ -46,7 +46,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
#define HALLOWEEN "Halloween"
|
||||
#define CHRISTMAS "Christmas"
|
||||
#define FESTIVE_SEASON "Festive Season"
|
||||
#define FRIDAY_13TH "Friday the 13th"
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
//LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS
|
||||
@@ -86,58 +85,11 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
|
||||
//Because I *KNOW* somebody will think layer+1 means "above"
|
||||
//IT DOESN'T OK, IT MEANS "UNDER"
|
||||
#define UNDER_BODY_BEHIND_LAYER BODY_BEHIND_LAYER+1
|
||||
#define UNDER_BODY_LAYER BODY_LAYER+1
|
||||
#define UNDER_BODY_ADJ_LAYER BODY_ADJ_LAYER+1
|
||||
#define UNDER_MUTATIONS_LAYER MUTATIONS_LAYER+1
|
||||
#define UNDER_BODYPARTS_LAYER BODYPARTS_LAYER+1
|
||||
#define UNDER_DAMAGE_LAYER DAMAGE_LAYER+1
|
||||
#define UNDER_UNIFORM_LAYER UNIFORM_LAYER+1
|
||||
#define UNDER_ID_LAYER ID_LAYER+1
|
||||
#define UNDER_HANDS_PART_LAYER HANDS_PART_LAYER+1
|
||||
#define UNDER_GLOVES_LAYER GLOVES_LAYER+1
|
||||
#define UNDER_SHOES_LAYER SHOES_LAYER+1
|
||||
#define UNDER_EARS_LAYER EARS_LAYER+1
|
||||
#define UNDER_SUIT_LAYER SUIT_LAYER+1
|
||||
#define UNDER_GLASSES_LAYER GLASSES_LAYER+1
|
||||
#define UNDER_BELT_LAYER BELT_LAYER+1
|
||||
#define UNDER_SUIT_STORE_LAYER SUIT_STORE_LAYER+1
|
||||
#define UNDER_BACK_LAYER BACK_LAYER+1
|
||||
#define UNDER_HAIR_LAYER HAIR_LAYER+1
|
||||
#define UNDER_FACEMASK_LAYER FACEMASK_LAYER+1
|
||||
#define UNDER_HEAD_LAYER HEAD_LAYER+1
|
||||
#define UNDER_HANDCUFF_LAYER HANDCUFF_LAYER+1
|
||||
#define UNDER_LEGCUFF_LAYER LEGCUFF_LAYER+1
|
||||
#define UNDER_HANDS_LAYER HANDS_LAYER+1
|
||||
#define UNDER_BODY_FRONT_LAYER BODY_FRONT_LAYER+1
|
||||
#define UNDER_FIRE_LAYER FIRE_LAYER+1
|
||||
|
||||
//AND -1 MEANS "ABOVE", OK?, OK!?!
|
||||
#define ABOVE_BODY_BEHIND_LAYER BODY_BEHIND_LAYER-1
|
||||
#define ABOVE_BODY_LAYER BODY_LAYER-1
|
||||
#define ABOVE_BODY_ADJ_LAYER BODY_ADJ_LAYER-1
|
||||
#define ABOVE_MUTATIONS_LAYER MUTATIONS_LAYER-1
|
||||
#define ABOVE_BODYPARTS_LAYER BODYPARTS_LAYER-1
|
||||
#define ABOVE_DAMAGE_LAYER DAMAGE_LAYER-1
|
||||
#define ABOVE_UNIFORM_LAYER UNIFORM_LAYER-1
|
||||
#define ABOVE_ID_LAYER ID_LAYER-1
|
||||
#define ABOVE_HANDS_PART_LAYER HANDS_PART_LAYER-1
|
||||
#define ABOVE_GLOVES_LAYER GLOVES_LAYER-1
|
||||
#define ABOVE_SHOES_LAYER SHOES_LAYER-1
|
||||
#define ABOVE_EARS_LAYER EARS_LAYER-1
|
||||
#define ABOVE_SUIT_LAYER SUIT_LAYER-1
|
||||
#define ABOVE_GLASSES_LAYER GLASSES_LAYER-1
|
||||
#define ABOVE_BELT_LAYER BELT_LAYER-1
|
||||
#define ABOVE_SUIT_STORE_LAYER SUIT_STORE_LAYER-1
|
||||
#define ABOVE_BACK_LAYER BACK_LAYER-1
|
||||
#define ABOVE_HAIR_LAYER HAIR_LAYER-1
|
||||
#define ABOVE_FACEMASK_LAYER FACEMASK_LAYER-1
|
||||
#define ABOVE_HEAD_LAYER HEAD_LAYER-1
|
||||
#define ABOVE_HANDCUFF_LAYER HANDCUFF_LAYER-1
|
||||
#define ABOVE_LEGCUFF_LAYER LEGCUFF_LAYER-1
|
||||
#define ABOVE_HANDS_LAYER HANDS_LAYER-1
|
||||
#define ABOVE_BODY_FRONT_LAYER BODY_FRONT_LAYER-1
|
||||
#define ABOVE_FIRE_LAYER FIRE_LAYER-1
|
||||
|
||||
|
||||
//Security levels
|
||||
@@ -195,7 +147,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
#define AI_MECH_HACK 3 //Malfunctioning AI hijacking mecha
|
||||
|
||||
//check_target_facings() return defines
|
||||
#define FACING_FAILED 0
|
||||
#define FACING_SAME_DIR 1
|
||||
#define FACING_EACHOTHER 2
|
||||
#define FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR 3 //Do I win the most informative but also most stupid define award?
|
||||
@@ -213,7 +164,6 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
|
||||
#define BLOOD_GAIN_PER_STEP 100
|
||||
#define BLOOD_LOSS_PER_STEP 5
|
||||
#define BLOOD_LOSS_IN_SPREAD 20
|
||||
#define BLOOD_FADEOUT_TIME 2
|
||||
|
||||
//Bloody shoe blood states
|
||||
#define BLOOD_STATE_HUMAN "blood"
|
||||
@@ -241,7 +191,6 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
|
||||
#define TURF_WET_LUBE 2
|
||||
#define TURF_WET_ICE 3
|
||||
#define TURF_WET_PERMAFROST 4
|
||||
#define TURF_WET_SLIDE 5
|
||||
|
||||
//Maximum amount of time, (in approx. seconds.) a tile can be wet for.
|
||||
#define MAXIMUM_WET_TIME 300
|
||||
@@ -309,10 +258,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
/////////////////////////////////////
|
||||
// atom.appearence_flags shortcuts //
|
||||
/////////////////////////////////////
|
||||
//this was added midway thru 510, so it might not exist in some versions, but we can't check by minor verison
|
||||
#ifndef TILE_BOUND
|
||||
#error this version of 510 is too old, You must use byond 510.1332 or later. (TILE_BOUND is not defined)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
// Disabling certain features
|
||||
#define APPEARANCE_IGNORE_TRANSFORM RESET_TRANSFORM
|
||||
@@ -330,12 +277,7 @@ 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
|
||||
|
||||
#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
|
||||
@@ -417,14 +359,6 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
#define CLOCK_PROSELYTIZATION 23
|
||||
#define SHUTTLE_HIJACK 24
|
||||
|
||||
#define TURF_DECAL_PAINT "paint"
|
||||
#define TURF_DECAL_DAMAGE "damage"
|
||||
#define TURF_DECAL_DIRT "dirt"
|
||||
|
||||
//Error handler defines
|
||||
#define ERROR_USEFUL_LEN 2
|
||||
|
||||
#define NO_FIELD 0
|
||||
#define FIELD_TURF 1
|
||||
#define FIELD_EDGE 2
|
||||
|
||||
@@ -459,7 +393,7 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
|
||||
|
||||
//Dummy mob reserve slots
|
||||
#define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview"
|
||||
|
||||
#define DUMMY_HUMAN_SLOT_ADMIN "admintools"
|
||||
#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation"
|
||||
|
||||
#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round
|
||||
|
||||
+24
-24
@@ -86,6 +86,25 @@
|
||||
#define SCREWYHUD_DEAD 2
|
||||
#define SCREWYHUD_HEALTHY 3
|
||||
|
||||
//Moods levels for humans
|
||||
#define MOOD_LEVEL_HAPPY4 15
|
||||
#define MOOD_LEVEL_HAPPY3 10
|
||||
#define MOOD_LEVEL_HAPPY2 6
|
||||
#define MOOD_LEVEL_HAPPY1 2
|
||||
#define MOOD_LEVEL_NEUTRAL 0
|
||||
#define MOOD_LEVEL_SAD1 -3
|
||||
#define MOOD_LEVEL_SAD2 -12
|
||||
#define MOOD_LEVEL_SAD3 -18
|
||||
#define MOOD_LEVEL_SAD4 -26
|
||||
|
||||
//Beauty levels of areas for carbons
|
||||
#define BEAUTY_LEVEL_HORRID -50
|
||||
#define BEAUTY_LEVEL_BAD -25
|
||||
#define BEAUTY_LEVEL_GOOD 25
|
||||
#define BEAUTY_LEVEL_GREAT 50
|
||||
|
||||
|
||||
|
||||
//Nutrition levels for humans
|
||||
#define NUTRITION_LEVEL_FAT 600
|
||||
#define NUTRITION_LEVEL_FULL 550
|
||||
@@ -118,7 +137,7 @@
|
||||
//Sentience types, to prevent things like sentience potions from giving bosses sentience
|
||||
#define SENTIENCE_ORGANIC 1
|
||||
#define SENTIENCE_ARTIFICIAL 2
|
||||
#define SENTIENCE_OTHER 3
|
||||
// #define SENTIENCE_OTHER 3 unused
|
||||
#define SENTIENCE_MINEBOT 4
|
||||
#define SENTIENCE_BOSS 5
|
||||
|
||||
@@ -137,29 +156,6 @@
|
||||
#define ENVIRONMENT_SMASH_WALLS 2 //walls
|
||||
#define ENVIRONMENT_SMASH_RWALLS 4 //rwalls
|
||||
|
||||
|
||||
//SNPCs
|
||||
//AI defines
|
||||
#define INTERACTING 2
|
||||
#define TRAVEL 4
|
||||
#define FIGHTING 8
|
||||
//Trait defines
|
||||
#define TRAIT_ROBUST 2
|
||||
#define TRAIT_UNROBUST 4
|
||||
#define TRAIT_SMART 8
|
||||
#define TRAIT_DUMB 16
|
||||
#define TRAIT_MEAN 32
|
||||
#define TRAIT_FRIENDLY 64
|
||||
#define TRAIT_THIEVING 128
|
||||
//Range/chance defines
|
||||
#define MAX_RANGE_FIND 32
|
||||
#define MIN_RANGE_FIND 16
|
||||
#define FUZZY_CHANCE_HIGH 85
|
||||
#define FUZZY_CHANCE_LOW 50
|
||||
#define CHANCE_TALK 1
|
||||
|
||||
#define TK_MAXRANGE 15
|
||||
|
||||
#define NO_SLIP_WHEN_WALKING 1
|
||||
#define SLIDE 2
|
||||
#define GALOSHES_DONT_HELP 4
|
||||
@@ -216,6 +212,10 @@
|
||||
#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default.
|
||||
#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism
|
||||
|
||||
// Roundstart trait system
|
||||
|
||||
#define MAX_TRAITS 6 //The maximum amount of traits one character can have at roundstart
|
||||
|
||||
// AI Toggles
|
||||
#define AI_CAMERA_LUMINOSITY 5
|
||||
#define AI_VOX // Comment out if you don't want VOX to be enabled and have players download the voice sounds.
|
||||
|
||||
@@ -14,8 +14,10 @@
|
||||
#define SOUND_ANNOUNCEMENTS 2048
|
||||
#define DISABLE_DEATHRATTLE 4096
|
||||
#define DISABLE_ARRIVALRATTLE 8192
|
||||
|
||||
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
|
||||
#define MEDIHOUND_SLEEPER 16384 //CITADEL EDITS, vore prefs.
|
||||
#define EATING_NOISES 32768
|
||||
#define DIGESTION_NOISES 65536
|
||||
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|MEDIHOUND_SLEEPER|EATING_NOISES|DIGESTION_NOISES)
|
||||
|
||||
//Chat toggles
|
||||
#define CHAT_OOC 1
|
||||
@@ -65,4 +67,4 @@
|
||||
#define EXP_TYPE_GHOST "Ghost"
|
||||
|
||||
//Flags in the players table in the db
|
||||
#define DB_FLAG_EXEMPT 1
|
||||
#define DB_FLAG_EXEMPT 1
|
||||
|
||||
@@ -22,3 +22,4 @@
|
||||
#define QDELING(X) (X.gc_destroyed)
|
||||
#define QDELETED(X) (!X || QDELING(X))
|
||||
#define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@
|
||||
#define RADIO_FROM_AIRALARM "from_airalarm"
|
||||
#define RADIO_SIGNALER "signaler"
|
||||
#define RADIO_ATMOSIA "atmosia"
|
||||
#define RADIO_NAVBEACONS "navbeacons"
|
||||
#define RADIO_AIRLOCK "airlock"
|
||||
#define RADIO_MAGNETS "magnets"
|
||||
|
||||
|
||||
@@ -43,15 +43,11 @@
|
||||
#define RDSCREEN_UI_SNODE_CHECK if(!selected_node) { return RDSCREEN_TEXT_NO_SNODE }
|
||||
#define RDSCREEN_UI_SDESIGN_CHECK if(!selected_design) { return RDSCREEN_TEXT_NO_SDESIGN }
|
||||
|
||||
#define DEPLATHE_SCREEN_PRIMARY 1
|
||||
#define DEPLATHE_SCREEN_SEARCH 2
|
||||
#define DEPLATHE_SCREEN_MATERIALS 3
|
||||
#define DEPLATHE_SCREEN_CHEMICALS 4
|
||||
|
||||
#define DEPPRINTER_SCREEN_PRIMARY 1
|
||||
#define DEPPRINTER_SCREEN_SEARCH 2
|
||||
#define DEPPRINTER_SCREEN_MATERIALS 3
|
||||
#define DEPPRINTER_SCREEN_CHEMICALS 4
|
||||
#define RESEARCH_FABRICATOR_SCREEN_MAIN 1
|
||||
#define RESEARCH_FABRICATOR_SCREEN_CHEMICALS 2
|
||||
#define RESEARCH_FABRICATOR_SCREEN_MATERIALS 3
|
||||
#define RESEARCH_FABRICATOR_SCREEN_SEARCH 4
|
||||
#define RESEARCH_FABRICATOR_SCREEN_CATEGORYVIEW 5
|
||||
|
||||
#define DEPARTMENTAL_FLAG_SECURITY 1
|
||||
#define DEPARTMENTAL_FLAG_MEDICAL 2
|
||||
|
||||
@@ -31,11 +31,9 @@
|
||||
|
||||
// Ripples, effects that signal a shuttle's arrival
|
||||
#define SHUTTLE_RIPPLE_TIME 100
|
||||
#define SHUTTLE_RIPPLE_FADEIN 50
|
||||
|
||||
#define TRANSIT_REQUEST 1
|
||||
#define TRANSIT_READY 2
|
||||
#define TRANSIT_FULL 3
|
||||
|
||||
#define SHUTTLE_TRANSIT_BORDER 8
|
||||
|
||||
@@ -79,4 +77,4 @@
|
||||
#define SHUTTLE_DEFAULT_TURF_TYPE /turf/open/space
|
||||
#define SHUTTLE_DEFAULT_BASETURF_TYPE /turf/open/space
|
||||
#define SHUTTLE_DEFAULT_SHUTTLE_AREA_TYPE /area/shuttle
|
||||
#define SHUTTLE_DEFAULT_UNDERLYING_AREA /area/space
|
||||
#define SHUTTLE_DEFAULT_UNDERLYING_AREA /area/space
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
#define SEE_INVISIBLE_LIVING 25
|
||||
|
||||
#define SEE_INVISIBLE_LEVEL_ONE 35 //currently unused
|
||||
#define INVISIBILITY_LEVEL_ONE 35 //currently unused
|
||||
//#define SEE_INVISIBLE_LEVEL_ONE 35 //currently unused
|
||||
//#define INVISIBILITY_LEVEL_ONE 35 //currently unused
|
||||
|
||||
#define SEE_INVISIBLE_LEVEL_TWO 45 //currently unused
|
||||
#define INVISIBILITY_LEVEL_TWO 45 //currently unused
|
||||
//#define SEE_INVISIBLE_LEVEL_TWO 45 //currently unused
|
||||
//#define INVISIBILITY_LEVEL_TWO 45 //currently unused
|
||||
|
||||
#define INVISIBILITY_OBSERVER 60
|
||||
#define SEE_INVISIBLE_OBSERVER 60
|
||||
|
||||
@@ -11,12 +11,13 @@
|
||||
|
||||
//CIT CHANNELS - TRY NOT TO REGRESS
|
||||
#define CHANNEL_PRED 1015
|
||||
#define CHANNEL_PREYLOOP 1014
|
||||
#define CHANNEL_DIGEST 1014
|
||||
#define CHANNEL_PREYLOOP 1013
|
||||
|
||||
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
|
||||
//KEEP IT UPDATED
|
||||
|
||||
#define CHANNEL_HIGHEST_AVAILABLE 1013 //CIT CHANGE - COMPENSATES FOR VORESOUND CHANNELS
|
||||
#define CHANNEL_HIGHEST_AVAILABLE 1012 //CIT CHANGE - COMPENSATES FOR VORESOUND CHANNELS
|
||||
|
||||
|
||||
#define SOUND_MINIMUM_PRESSURE 10
|
||||
|
||||
@@ -15,6 +15,5 @@
|
||||
#define EMPED 8 // temporary broken by EMP pulse
|
||||
|
||||
//ai power requirement defines
|
||||
#define POWER_REQ_NONE 0
|
||||
#define POWER_REQ_ALL 1
|
||||
#define POWER_REQ_CLOCKCULT 2
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
|
||||
#define STATUS_EFFECT_REPLACE 2 //if it allows only one, but new instances replace
|
||||
|
||||
#define BASIC_STATUS_EFFECT /datum/status_effect //Has no effect.
|
||||
|
||||
///////////
|
||||
// BUFFS //
|
||||
///////////
|
||||
@@ -32,6 +30,8 @@
|
||||
|
||||
#define STATUS_EFFECT_EXERCISED /datum/status_effect/exercised //Prevents heart disease
|
||||
|
||||
#define STATUS_EFFECT_HIPPOCRATIC_OATH /datum/status_effect/hippocraticOath //Gives you an aura of healing as well as regrowing the Rod of Asclepius if lost
|
||||
|
||||
/////////////
|
||||
// DEBUFFS //
|
||||
/////////////
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//Update this whenever the db schema changes
|
||||
//make sure you add an update to the schema_version stable in the db changelog
|
||||
#define DB_MAJOR_VERSION 4
|
||||
#define DB_MINOR_VERSION 0
|
||||
#define DB_MINOR_VERSION 1
|
||||
|
||||
//Timing subsystem
|
||||
//Don't run if there is an identical unique timer active
|
||||
@@ -56,13 +56,14 @@
|
||||
#define INIT_ORDER_RESEARCH 14
|
||||
#define INIT_ORDER_EVENTS 13
|
||||
#define INIT_ORDER_JOBS 12
|
||||
#define INIT_ORDER_TICKER 11
|
||||
#define INIT_ORDER_MAPPING 10
|
||||
#define INIT_ORDER_ATOMS 9
|
||||
#define INIT_ORDER_TRAITS 11
|
||||
#define INIT_ORDER_TICKER 10
|
||||
#define INIT_ORDER_MAPPING 9
|
||||
#define INIT_ORDER_NETWORKS 8
|
||||
#define INIT_ORDER_LANGUAGE 7
|
||||
#define INIT_ORDER_MACHINES 6
|
||||
#define INIT_ORDER_CIRCUIT 5
|
||||
#define INIT_ORDER_ATOMS 7
|
||||
#define INIT_ORDER_LANGUAGE 6
|
||||
#define INIT_ORDER_MACHINES 5
|
||||
#define INIT_ORDER_CIRCUIT 4
|
||||
#define INIT_ORDER_TIMER 1
|
||||
#define INIT_ORDER_DEFAULT 0
|
||||
#define INIT_ORDER_AIR -1
|
||||
@@ -83,24 +84,24 @@
|
||||
|
||||
#define FIRE_PRIORITY_IDLE_NPC 10
|
||||
#define FIRE_PRIORITY_SERVER_MAINT 10
|
||||
#define FIRE_PRIORITY_RESEARCH 10
|
||||
#define FIRE_PRIORITY_GARBAGE 15
|
||||
#define FIRE_PRIORITY_RESEARCH 15
|
||||
#define FIRE_PRIORITY_AIR 20
|
||||
#define FIRE_PRIORITY_NPC 20
|
||||
#define FIRE_PRIORITY_PROCESS 25
|
||||
#define FIRE_PRIORITY_THROWING 25
|
||||
#define FIRE_PRIORITY_FLIGHTPACKS 30
|
||||
#define FIRE_PRIORITY_SPACEDRIFT 30
|
||||
#define FIRE_PRIORITY_FIELDS 30
|
||||
#define FIRE_PRIOTITY_SMOOTHING 35
|
||||
#define FIRE_PRIORITY_ORBIT 35
|
||||
#define FIRE_PRIORITY_NETWORKS 40
|
||||
#define FIRE_PRIORITY_OBJ 40
|
||||
#define FIRE_PRIORUTY_FIELDS 40
|
||||
#define FIRE_PRIORITY_ACID 40
|
||||
#define FIRE_PRIOTITY_BURNING 40
|
||||
#define FIRE_PRIORITY_INBOUNDS 40
|
||||
#define FIRE_PRIORITY_DEFAULT 50
|
||||
#define FIRE_PRIORITY_PARALLAX 65
|
||||
#define FIRE_PRIORITY_NETWORKS 80
|
||||
#define FIRE_PRIORITY_FLIGHTPACKS 80
|
||||
#define FIRE_PRIORITY_MOBS 100
|
||||
#define FIRE_PRIORITY_TGUI 110
|
||||
#define FIRE_PRIORITY_TICKER 200
|
||||
|
||||
@@ -21,10 +21,43 @@
|
||||
#define TRAIT_SLEEPIMMUNE "sleep_immunity"
|
||||
#define TRAIT_PUSHIMMUNE "push_immunity"
|
||||
#define TRAIT_SHOCKIMMUNE "shock_immunity"
|
||||
#define TRAIT_STABLEHEART "stable_heart"
|
||||
#define TRAIT_RESISTHEAT "resist_heat"
|
||||
#define TRAIT_RESISTCOLD "resist_cold"
|
||||
#define TRAIT_RESISTHIGHPRESSURE "resist_high_pressure"
|
||||
#define TRAIT_RESISTLOWPRESSURE "resist_low_pressure"
|
||||
#define TRAIT_RADIMMUNE "rad_immunity"
|
||||
#define TRAIT_VIRUSIMMUNE "virus_immunity"
|
||||
#define TRAIT_PIERCEIMMUNE "pierce_immunity"
|
||||
#define TRAIT_NODISMEMBER "dismember_immunity"
|
||||
#define TRAIT_NOFIRE "nonflammable"
|
||||
#define TRAIT_NOGUNS "no_guns"
|
||||
#define TRAIT_NOHUNGER "no_hunger"
|
||||
#define TRAIT_EASYDISMEMBER "easy_dismember"
|
||||
#define TRAIT_LIMBATTACHMENT "limb_attach"
|
||||
#define TRAIT_TOXINLOVER "toxinlover"
|
||||
#define TRAIT_NOBREATH "no_breath"
|
||||
#define TRAIT_ANTIMAGIC "anti_magic"
|
||||
#define TRAIT_HOLY "holy"
|
||||
#define TRAIT_DEPRESSION "depression"
|
||||
#define TRAIT_JOLLY "jolly"
|
||||
#define TRAIT_NOCRITDAMAGE "no_crit"
|
||||
|
||||
|
||||
|
||||
#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
|
||||
#define TRAIT_AGEUSIA "ageusia"
|
||||
#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
|
||||
#define TRAIT_NIGHT_VISION "night_vision"
|
||||
#define TRAIT_LIGHT_STEP "light_step"
|
||||
#define TRAIT_SPIRITUAL "spiritual"
|
||||
#define TRAIT_VORACIOUS "voracious"
|
||||
#define TRAIT_SELF_AWARE "self_aware"
|
||||
#define TRAIT_FREERUNNING "freerunning"
|
||||
#define TRAIT_SKITTISH "skittish"
|
||||
#define TRAIT_POOR_AIM "poor_aim"
|
||||
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
|
||||
|
||||
// common trait sources
|
||||
#define TRAIT_GENERIC "generic"
|
||||
#define EYE_DAMAGE "eye_damage"
|
||||
@@ -33,6 +66,7 @@
|
||||
#define MAGIC_TRAIT "magic"
|
||||
#define TRAUMA_TRAIT "trauma"
|
||||
#define SPECIES_TRAIT "species"
|
||||
#define ROUNDSTART_TRAIT "roundstart" //cannot be removed without admin intervention
|
||||
|
||||
// unique trait sources, still defines
|
||||
#define STATUE_MUTE "statue"
|
||||
@@ -43,3 +77,4 @@
|
||||
#define TRAIT_HULK "hulk"
|
||||
#define STASIS_MUTE "stasis"
|
||||
#define GENETICS_SPELL "genetics_spell"
|
||||
#define EYES_COVERED "eyes_covered"
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
#define DM_NOISY "Noisy"
|
||||
#define DM_DRAGON "Dragon"
|
||||
|
||||
#define isbelly(A) istype(A, /obj/belly)
|
||||
|
||||
#define QDEL_NULL_LIST(x) if(x) { for(var/y in x) { qdel(y) } ; x = null }
|
||||
#define VORE_STRUGGLE_EMOTE_CHANCE 40
|
||||
|
||||
// Stance for hostile mobs to be in while devouring someone.
|
||||
@@ -60,6 +63,10 @@ GLOBAL_LIST_INIT(pred_vore_sounds, list(
|
||||
"Squish3" = 'sound/vore/pred/squish_03.ogg',
|
||||
"Squish4" = 'sound/vore/pred/squish_04.ogg',
|
||||
"Rustle (cloth)" = 'sound/effects/rustle5.ogg',
|
||||
"rustle2(cloth)" = 'sound/effects/rustle2.ogg',
|
||||
"rustle3(cloth)" = 'sound/effects/rustle3.ogg',
|
||||
"rustle4(cloth)" = 'sound/effects/rustle4.ogg',
|
||||
"rustle5(cloth)" = 'sound/effects/rustle5.ogg',
|
||||
"None" = null))
|
||||
/*
|
||||
GLOBAL_LIST_INIT(pred_struggle_sounds, list(
|
||||
@@ -121,3 +128,14 @@ GLOBAL_LIST_INIT(death_prey, list(
|
||||
"death9" = 'sound/vore/prey/death_09.ogg',
|
||||
"death10" = 'sound/vore/prey/death_10.ogg'))
|
||||
*/
|
||||
|
||||
GLOBAL_LIST_INIT(release_sound, list(
|
||||
"rustle (cloth)" = 'sound/effects/rustle1.ogg',
|
||||
"rustle2 (cloth)" = 'sound/effects/rustle2.ogg',
|
||||
"rustle3 (cloth)" = 'sound/effects/rustle3.ogg',
|
||||
"rustle4 (cloth)" = 'sound/effects/rustle4.ogg',
|
||||
"rustle5 (cloth)" = 'sound/effects/rustle5.ogg',
|
||||
"Stomach Move" = 'sound/vore/pred/stomachmove.ogg',
|
||||
"Pred Escape" = 'sound/vore/pred/escape.ogg',
|
||||
"Splatter" = 'sound/effects/splat.ogg',
|
||||
"None" = null))
|
||||
@@ -77,4 +77,7 @@ GLOBAL_VAR_INIT(cmp_field, "name")
|
||||
if(A.plane != B.plane)
|
||||
return A.plane - B.plane
|
||||
else
|
||||
return A.layer - B.layer
|
||||
return A.layer - B.layer
|
||||
|
||||
/proc/cmp_advdisease_resistance_asc(datum/disease/advance/A, datum/disease/advance/B)
|
||||
return A.totalResistance() - B.totalResistance()
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
return path
|
||||
|
||||
#define FTPDELAY 200 //200 tick delay to discourage spam
|
||||
#define ADMIN_FTPDELAY_MODIFIER 0.5 //Admins get to spam files faster since we ~trust~ them!
|
||||
/* This proc is a failsafe to prevent spamming of file requests.
|
||||
It is just a timer that only permits a download every [FTPDELAY] ticks.
|
||||
This can be changed by modifying FTPDELAY's value above.
|
||||
@@ -45,9 +46,13 @@
|
||||
if(time_to_wait > 0)
|
||||
to_chat(src, "<font color='red'>Error: file_spam_check(): Spam. Please wait [DisplayTimeText(time_to_wait)].</font>")
|
||||
return 1
|
||||
GLOB.fileaccess_timer = world.time + FTPDELAY
|
||||
var/delay = FTPDELAY
|
||||
if(holder)
|
||||
delay *= ADMIN_FTPDELAY_MODIFIER
|
||||
GLOB.fileaccess_timer = world.time + delay
|
||||
return 0
|
||||
#undef FTPDELAY
|
||||
#undef ADMIN_FTPDELAY_MODIFIER
|
||||
|
||||
/proc/pathwalk(path)
|
||||
var/list/jobs = list(path)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f)
|
||||
//socks
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list)
|
||||
//lizard bodyparts (blizzard intensifies)
|
||||
//bodypart accessories (blizzard intensifies)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/lizard, GLOB.animated_tails_list_lizard)
|
||||
@@ -29,7 +29,7 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE)
|
||||
//moffs
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list)
|
||||
|
||||
//CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE
|
||||
|
||||
+13
-1
@@ -111,6 +111,7 @@
|
||||
"spines" = pick(GLOB.spines_list),
|
||||
"body_markings" = pick(GLOB.body_markings_list),
|
||||
"legs" = "Normal Legs",
|
||||
"caps" = pick(GLOB.caps_list),
|
||||
"moth_wings" = pick(GLOB.moth_wings_list),
|
||||
"taur" = "None",
|
||||
"mam_body_markings" = "None",
|
||||
@@ -166,6 +167,7 @@
|
||||
"womb_efficiency" = CUM_EFFICIENCY,
|
||||
"womb_fluid" = "femcum",
|
||||
"flavor_text" = ""))
|
||||
|
||||
/proc/random_hair_style(gender)
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
@@ -369,7 +371,7 @@ Proc for attack log creation, because really why not
|
||||
checked_health["health"] = health
|
||||
return ..()
|
||||
|
||||
/proc/do_after(mob/user, delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null)
|
||||
/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null)
|
||||
if(!user)
|
||||
return 0
|
||||
var/atom/Tloc = null
|
||||
@@ -392,6 +394,16 @@ Proc for attack log creation, because really why not
|
||||
if (progress)
|
||||
progbar = new(user, delay, target)
|
||||
|
||||
GET_COMPONENT_FROM(mood, /datum/component/mood, user)
|
||||
if(mood)
|
||||
switch(mood.mood) //Alerts do_after delay based on how happy you are
|
||||
if(-INFINITY to MOOD_LEVEL_SAD2)
|
||||
delay *= 1.25
|
||||
if(MOOD_LEVEL_HAPPY3 to MOOD_LEVEL_HAPPY4)
|
||||
delay *= 0.95
|
||||
if(MOOD_LEVEL_HAPPY4 to INFINITY)
|
||||
delay *= 0.9
|
||||
|
||||
var/endtime = world.time + delay
|
||||
var/starttime = world.time
|
||||
. = 1
|
||||
|
||||
@@ -500,3 +500,28 @@
|
||||
objective_parts += "<b>Objective #[count]</b>: [objective.explanation_text] <span class='redtext'>Fail.</span>"
|
||||
count++
|
||||
return objective_parts.Join("<br>")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/save_admin_data()
|
||||
if(CONFIG_GET(flag/admin_legacy_system)) //we're already using legacy system so there's nothing to save
|
||||
return
|
||||
else if(load_admins()) //returns true if there was a database failure and the backup was loaded from
|
||||
return
|
||||
var/datum/DBQuery/query_admin_rank_update = SSdbcore.NewQuery("UPDATE [format_table_name("player")] p INNER JOIN [format_table_name("admin")] a ON p.ckey = a.ckey SET p.lastadminrank = a.rank")
|
||||
query_admin_rank_update.Execute()
|
||||
//json format backup file generation stored per server
|
||||
var/json_file = file("data/admins_backup.json")
|
||||
var/list/file_data = list("ranks" = list(), "admins" = list())
|
||||
for(var/datum/admin_rank/R in GLOB.admin_ranks)
|
||||
file_data["ranks"]["[R.name]"] = list()
|
||||
file_data["ranks"]["[R.name]"]["include rights"] = R.include_rights
|
||||
file_data["ranks"]["[R.name]"]["exclude rights"] = R.exclude_rights
|
||||
file_data["ranks"]["[R.name]"]["can edit rights"] = R.can_edit_rights
|
||||
for(var/i in GLOB.admin_datums+GLOB.deadmins)
|
||||
var/datum/admins/A = GLOB.admin_datums[i]
|
||||
if(!A)
|
||||
A = GLOB.deadmins[i]
|
||||
if (!A)
|
||||
continue
|
||||
file_data["admins"]["[i]"] = A.rank.name
|
||||
fdel(json_file)
|
||||
WRITE_FILE(json_file, json_encode(file_data))
|
||||
|
||||
+6
-10
@@ -598,33 +598,29 @@ GLOBAL_LIST_INIT(binary, list("0","1"))
|
||||
return
|
||||
|
||||
//Regular expressions are, as usual, absolute magic
|
||||
var/regex/is_website = new("http|www.|\[a-z0-9_-]+.(com|org|net|mil|edu)+", "i")
|
||||
var/regex/is_email = new("\[a-z0-9_-]+@\[a-z0-9_-]+.\[a-z0-9_-]+", "i")
|
||||
var/regex/alphanumeric = new("\[a-z0-9]+", "i")
|
||||
var/regex/punctuation = new("\[.!?]+", "i")
|
||||
var/regex/all_invalid_symbols = new("\[^ -~]+")
|
||||
|
||||
var/list/accepted = list()
|
||||
for(var/string in proposed)
|
||||
if(findtext(string,is_website) || findtext(string,is_email) || findtext(string,all_invalid_symbols) || !findtext(string,alphanumeric))
|
||||
if(findtext(string,GLOB.is_website) || findtext(string,GLOB.is_email) || findtext(string,all_invalid_symbols) || !findtext(string,GLOB.is_alphanumeric))
|
||||
continue
|
||||
var/buffer = ""
|
||||
var/early_culling = TRUE
|
||||
for(var/pos = 1, pos <= lentext(string), pos++)
|
||||
var/let = copytext(string, pos, (pos + 1) % lentext(string))
|
||||
if(early_culling && !findtext(let,alphanumeric))
|
||||
if(early_culling && !findtext(let,GLOB.is_alphanumeric))
|
||||
continue
|
||||
early_culling = FALSE
|
||||
buffer += let
|
||||
if(!findtext(buffer,alphanumeric))
|
||||
if(!findtext(buffer,GLOB.is_alphanumeric))
|
||||
continue
|
||||
var/punctbuffer = ""
|
||||
var/cutoff = lentext(buffer)
|
||||
for(var/pos = lentext(buffer), pos >= 0, pos--)
|
||||
var/let = copytext(buffer, pos, (pos + 1) % lentext(buffer))
|
||||
if(findtext(let,alphanumeric))
|
||||
if(findtext(let,GLOB.is_alphanumeric))
|
||||
break
|
||||
if(findtext(let,punctuation))
|
||||
if(findtext(let,GLOB.is_punctuation))
|
||||
punctbuffer = let + punctbuffer //Note this isn't the same thing as using +=
|
||||
cutoff = pos
|
||||
if(punctbuffer) //We clip down excessive punctuation to get the letter count lower and reduce repeats. It's not perfect but it helps.
|
||||
@@ -652,7 +648,7 @@ GLOBAL_LIST_INIT(binary, list("0","1"))
|
||||
else
|
||||
punctbuffer = "" //Grammer nazis be damned
|
||||
buffer = copytext(buffer, 1, cutoff) + punctbuffer
|
||||
if(!findtext(buffer,alphanumeric))
|
||||
if(!findtext(buffer,GLOB.is_alphanumeric))
|
||||
continue
|
||||
if(!buffer || lentext(buffer) > 280 || lentext(buffer) <= cullshort || buffer in accepted)
|
||||
continue
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
wtime = world.time
|
||||
return time2text(wtime - GLOB.timezoneOffset, format)
|
||||
|
||||
/proc/station_time()
|
||||
return ((((world.time - SSticker.round_start_time) * SSticker.station_time_rate_multiplier) + SSticker.gametime_offset) % 864000) - GLOB.timezoneOffset
|
||||
/proc/station_time(display_only = FALSE)
|
||||
return ((((world.time - SSticker.round_start_time) * SSticker.station_time_rate_multiplier) + SSticker.gametime_offset) % 864000) - (display_only? GLOB.timezoneOffset : 0)
|
||||
|
||||
/proc/station_time_timestamp(format = "hh:mm:ss")
|
||||
return time2text(station_time(), format)
|
||||
return time2text(station_time(TRUE), format)
|
||||
|
||||
/proc/station_time_debug(force_set)
|
||||
if(isnum(force_set))
|
||||
|
||||
+21
-19
@@ -182,38 +182,40 @@
|
||||
return ICON_OVERLAY
|
||||
|
||||
//Converts a rights bitfield into a string
|
||||
/proc/rights2text(rights, seperator="", list/adds, list/subs)
|
||||
/proc/rights2text(rights, seperator="", prefix = "+")
|
||||
seperator += prefix
|
||||
if(rights & R_BUILDMODE)
|
||||
. += "[seperator]+BUILDMODE"
|
||||
. += "[seperator]BUILDMODE"
|
||||
if(rights & R_ADMIN)
|
||||
. += "[seperator]+ADMIN"
|
||||
. += "[seperator]ADMIN"
|
||||
if(rights & R_BAN)
|
||||
. += "[seperator]+BAN"
|
||||
. += "[seperator]BAN"
|
||||
if(rights & R_FUN)
|
||||
. += "[seperator]+FUN"
|
||||
. += "[seperator]FUN"
|
||||
if(rights & R_SERVER)
|
||||
. += "[seperator]+SERVER"
|
||||
. += "[seperator]SERVER"
|
||||
if(rights & R_DEBUG)
|
||||
. += "[seperator]+DEBUG"
|
||||
. += "[seperator]DEBUG"
|
||||
if(rights & R_POSSESS)
|
||||
. += "[seperator]+POSSESS"
|
||||
. += "[seperator]POSSESS"
|
||||
if(rights & R_PERMISSIONS)
|
||||
. += "[seperator]+PERMISSIONS"
|
||||
. += "[seperator]PERMISSIONS"
|
||||
if(rights & R_STEALTH)
|
||||
. += "[seperator]+STEALTH"
|
||||
. += "[seperator]STEALTH"
|
||||
if(rights & R_POLL)
|
||||
. += "[seperator]+POLL"
|
||||
. += "[seperator]POLL"
|
||||
if(rights & R_VAREDIT)
|
||||
. += "[seperator]+VAREDIT"
|
||||
. += "[seperator]VAREDIT"
|
||||
if(rights & R_SOUNDS)
|
||||
. += "[seperator]+SOUND"
|
||||
. += "[seperator]SOUND"
|
||||
if(rights & R_SPAWN)
|
||||
. += "[seperator]+SPAWN"
|
||||
|
||||
for(var/verbpath in adds)
|
||||
. += "[seperator]+[verbpath]"
|
||||
for(var/verbpath in subs)
|
||||
. += "[seperator]-[verbpath]"
|
||||
. += "[seperator]SPAWN"
|
||||
if(rights & R_AUTOLOGIN)
|
||||
. += "[seperator]AUTOLOGIN"
|
||||
if(rights & R_DBRANKS)
|
||||
. += "[seperator]DBRANKS"
|
||||
if(!.)
|
||||
. = "NONE"
|
||||
return .
|
||||
|
||||
/proc/ui_style2icon(ui_style)
|
||||
|
||||
@@ -105,3 +105,7 @@
|
||||
. += copytext(text, last_found, found)
|
||||
last_found = found + delim_len
|
||||
while (found)
|
||||
|
||||
// Returns true if val is from min to max, inclusive.
|
||||
/proc/IsInRange(val, min, max)
|
||||
return (val >= min) && (val <= max)
|
||||
+19
-11
@@ -518,16 +518,24 @@ Turf and target are separate in case you want to teleport some distance from a t
|
||||
Gets all contents of contents and returns them all in a list.
|
||||
*/
|
||||
|
||||
/atom/proc/GetAllContents()
|
||||
/atom/proc/GetAllContents(var/T)
|
||||
var/list/processing_list = list(src)
|
||||
var/list/assembled = list()
|
||||
while(processing_list.len)
|
||||
var/atom/A = processing_list[1]
|
||||
processing_list.Cut(1, 2)
|
||||
//Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed
|
||||
//This is also why we don't need to check against assembled as we go along
|
||||
processing_list += A.contents
|
||||
assembled += A
|
||||
if(T)
|
||||
while(processing_list.len)
|
||||
var/atom/A = processing_list[1]
|
||||
processing_list.Cut(1, 2)
|
||||
//Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed
|
||||
//This is also why we don't need to check against assembled as we go along
|
||||
processing_list += A.contents
|
||||
if(istype(A,T))
|
||||
assembled += A
|
||||
else
|
||||
while(processing_list.len)
|
||||
var/atom/A = processing_list[1]
|
||||
processing_list.Cut(1, 2)
|
||||
processing_list += A.contents
|
||||
assembled += A
|
||||
return assembled
|
||||
|
||||
/atom/proc/GetAllContentsIgnoring(list/ignore_typecache)
|
||||
@@ -912,7 +920,7 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list(
|
||||
That said, this proc should not be used if the change facing proc of the click code is overriden at the same time*/
|
||||
if(!ismob(target) || target.lying)
|
||||
//Make sure we are not doing this for things that can't have a logical direction to the players given that the target would be on their side
|
||||
return FACING_FAILED
|
||||
return FALSE
|
||||
if(initator.dir == target.dir) //mobs are facing the same direction
|
||||
return FACING_SAME_DIR
|
||||
if(is_A_facing_B(initator,target) && is_A_facing_B(target,initator)) //mobs are facing each other
|
||||
@@ -987,9 +995,9 @@ GLOBAL_LIST_INIT(WALLITEMS_INVERSE, typecacheof(list(
|
||||
var/mob/living/LA = A
|
||||
if(LA.lying)
|
||||
return 0
|
||||
var/goal_dir = angle2dir(dir2angle(get_dir(B,A)+180))
|
||||
var/goal_dir = get_dir(A,B)
|
||||
var/clockwise_A_dir = turn(A.dir, -45)
|
||||
var/anticlockwise_A_dir = turn(B.dir, 45)
|
||||
var/anticlockwise_A_dir = turn(A.dir, 45)
|
||||
|
||||
if(A.dir == goal_dir || clockwise_A_dir == goal_dir || anticlockwise_A_dir == goal_dir)
|
||||
return 1
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#define DEBUG //Enables byond profiling and full runtime logs - note, this may also be defined in your .dme file
|
||||
//Enables in-depth debug messages to runtime log (used for debugging)
|
||||
//#define TESTING //By using the testing("message") proc you can create debug-feedback for people with this
|
||||
//uncommented, but not visible in the release version)
|
||||
|
||||
|
||||
@@ -1,130 +1,131 @@
|
||||
//Preferences stuff
|
||||
//Hairstyles
|
||||
GLOBAL_LIST_EMPTY(hair_styles_list) //stores /datum/sprite_accessory/hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(hair_styles_female_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_list) //stores /datum/sprite_accessory/facial_hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_female_list) //stores only hair names
|
||||
//Underwear
|
||||
GLOBAL_LIST_EMPTY(underwear_list) //stores /datum/sprite_accessory/underwear indexed by name
|
||||
GLOBAL_LIST_EMPTY(underwear_m) //stores only underwear name
|
||||
GLOBAL_LIST_EMPTY(underwear_f) //stores only underwear name
|
||||
//Undershirts
|
||||
GLOBAL_LIST_EMPTY(undershirt_list) //stores /datum/sprite_accessory/undershirt indexed by name
|
||||
GLOBAL_LIST_EMPTY(undershirt_m) //stores only undershirt name
|
||||
GLOBAL_LIST_EMPTY(undershirt_f) //stores only undershirt name
|
||||
//Socks
|
||||
GLOBAL_LIST_EMPTY(socks_list) //stores /datum/sprite_accessory/socks indexed by name
|
||||
//Lizard Bits (all datum lists indexed by name)
|
||||
GLOBAL_LIST_EMPTY(body_markings_list)
|
||||
GLOBAL_LIST_EMPTY(tails_list_lizard)
|
||||
GLOBAL_LIST_EMPTY(animated_tails_list_lizard)
|
||||
GLOBAL_LIST_EMPTY(snouts_list)
|
||||
GLOBAL_LIST_EMPTY(horns_list)
|
||||
GLOBAL_LIST_EMPTY(frills_list)
|
||||
GLOBAL_LIST_EMPTY(spines_list)
|
||||
GLOBAL_LIST_EMPTY(legs_list)
|
||||
GLOBAL_LIST_EMPTY(animated_spines_list)
|
||||
|
||||
//Mutant Human bits
|
||||
GLOBAL_LIST_EMPTY(tails_list_human)
|
||||
GLOBAL_LIST_EMPTY(animated_tails_list_human)
|
||||
GLOBAL_LIST_EMPTY(ears_list)
|
||||
GLOBAL_LIST_EMPTY(wings_list)
|
||||
GLOBAL_LIST_EMPTY(wings_open_list)
|
||||
GLOBAL_LIST_EMPTY(r_wings_list)
|
||||
GLOBAL_LIST_EMPTY(moth_wings_list)
|
||||
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things
|
||||
|
||||
GLOBAL_LIST_INIT(security_depts_prefs, list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY))
|
||||
|
||||
//Backpacks
|
||||
#define GBACKPACK "Grey Backpack"
|
||||
#define GSATCHEL "Grey Satchel"
|
||||
#define GDUFFELBAG "Grey Duffel Bag"
|
||||
#define LSATCHEL "Leather Satchel"
|
||||
#define DBACKPACK "Department Backpack"
|
||||
#define DSATCHEL "Department Satchel"
|
||||
#define DDUFFELBAG "Department Duffel Bag"
|
||||
GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFELBAG, GBACKPACK, GSATCHEL, GDUFFELBAG, LSATCHEL))
|
||||
|
||||
//Uplink spawn loc
|
||||
#define UPLINK_PDA "PDA"
|
||||
#define UPLINK_RADIO "Radio"
|
||||
#define UPLINK_PEN "Pen" //like a real spy!
|
||||
GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN))
|
||||
|
||||
//Female Uniforms
|
||||
GLOBAL_LIST_EMPTY(female_clothing_icons)
|
||||
|
||||
//radical shit
|
||||
GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF"))
|
||||
|
||||
GLOBAL_LIST_INIT(scarySounds, list('sound/weapons/thudswoosh.ogg','sound/weapons/taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg','sound/items/welder.ogg','sound/items/welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg'))
|
||||
|
||||
|
||||
// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to
|
||||
// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages
|
||||
// tagged for the Cargo Bay.
|
||||
|
||||
/* List of sortType codes for mapping reference
|
||||
0 Waste
|
||||
1 Disposals
|
||||
2 Cargo Bay
|
||||
3 QM Office
|
||||
4 Engineering
|
||||
5 CE Office
|
||||
6 Atmospherics
|
||||
7 Security
|
||||
8 HoS Office
|
||||
9 Medbay
|
||||
10 CMO Office
|
||||
11 Chemistry
|
||||
12 Research
|
||||
13 RD Office
|
||||
14 Robotics
|
||||
15 HoP Office
|
||||
16 Library
|
||||
17 Chapel
|
||||
18 Theatre
|
||||
19 Bar
|
||||
20 Kitchen
|
||||
21 Hydroponics
|
||||
22 Janitor
|
||||
23 Genetics
|
||||
*/
|
||||
|
||||
GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
|
||||
"Cargo Bay", "QM Office", "Engineering", "CE Office",
|
||||
"Atmospherics", "Security", "HoS Office", "Medbay",
|
||||
"CMO Office", "Chemistry", "Research", "RD Office",
|
||||
"Robotics", "HoP Office", "Library", "Chapel", "Theatre",
|
||||
"Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics"))
|
||||
|
||||
GLOBAL_LIST_INIT(guitar_notes, flist("sound/guitar/"))
|
||||
|
||||
GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt") + "")
|
||||
|
||||
GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt" + ""))
|
||||
|
||||
GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt"))
|
||||
|
||||
GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt"))
|
||||
|
||||
GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt"))
|
||||
|
||||
GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt"))
|
||||
|
||||
/proc/generate_number_strings()
|
||||
var/list/L[198]
|
||||
for(var/i in 1 to 99)
|
||||
L += "[i]"
|
||||
L += "\Roman[i]"
|
||||
return L
|
||||
|
||||
GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings())
|
||||
|
||||
GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "<i>null</i>","<i>Error: No comment given.</i>", "It's a good day to die!"))
|
||||
//Preferences stuff
|
||||
//Hairstyles
|
||||
GLOBAL_LIST_EMPTY(hair_styles_list) //stores /datum/sprite_accessory/hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(hair_styles_female_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_list) //stores /datum/sprite_accessory/facial_hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_female_list) //stores only hair names
|
||||
//Underwear
|
||||
GLOBAL_LIST_EMPTY(underwear_list) //stores /datum/sprite_accessory/underwear indexed by name
|
||||
GLOBAL_LIST_EMPTY(underwear_m) //stores only underwear name
|
||||
GLOBAL_LIST_EMPTY(underwear_f) //stores only underwear name
|
||||
//Undershirts
|
||||
GLOBAL_LIST_EMPTY(undershirt_list) //stores /datum/sprite_accessory/undershirt indexed by name
|
||||
GLOBAL_LIST_EMPTY(undershirt_m) //stores only undershirt name
|
||||
GLOBAL_LIST_EMPTY(undershirt_f) //stores only undershirt name
|
||||
//Socks
|
||||
GLOBAL_LIST_EMPTY(socks_list) //stores /datum/sprite_accessory/socks indexed by name
|
||||
//Lizard Bits (all datum lists indexed by name)
|
||||
GLOBAL_LIST_EMPTY(body_markings_list)
|
||||
GLOBAL_LIST_EMPTY(tails_list_lizard)
|
||||
GLOBAL_LIST_EMPTY(animated_tails_list_lizard)
|
||||
GLOBAL_LIST_EMPTY(snouts_list)
|
||||
GLOBAL_LIST_EMPTY(horns_list)
|
||||
GLOBAL_LIST_EMPTY(frills_list)
|
||||
GLOBAL_LIST_EMPTY(spines_list)
|
||||
GLOBAL_LIST_EMPTY(legs_list)
|
||||
GLOBAL_LIST_EMPTY(animated_spines_list)
|
||||
|
||||
//Mutant Human bits
|
||||
GLOBAL_LIST_EMPTY(tails_list_human)
|
||||
GLOBAL_LIST_EMPTY(animated_tails_list_human)
|
||||
GLOBAL_LIST_EMPTY(ears_list)
|
||||
GLOBAL_LIST_EMPTY(wings_list)
|
||||
GLOBAL_LIST_EMPTY(wings_open_list)
|
||||
GLOBAL_LIST_EMPTY(r_wings_list)
|
||||
GLOBAL_LIST_EMPTY(moth_wings_list)
|
||||
GLOBAL_LIST_EMPTY(caps_list)
|
||||
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things
|
||||
|
||||
GLOBAL_LIST_INIT(security_depts_prefs, list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY))
|
||||
|
||||
//Backpacks
|
||||
#define GBACKPACK "Grey Backpack"
|
||||
#define GSATCHEL "Grey Satchel"
|
||||
#define GDUFFELBAG "Grey Duffel Bag"
|
||||
#define LSATCHEL "Leather Satchel"
|
||||
#define DBACKPACK "Department Backpack"
|
||||
#define DSATCHEL "Department Satchel"
|
||||
#define DDUFFELBAG "Department Duffel Bag"
|
||||
GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFELBAG, GBACKPACK, GSATCHEL, GDUFFELBAG, LSATCHEL))
|
||||
|
||||
//Uplink spawn loc
|
||||
#define UPLINK_PDA "PDA"
|
||||
#define UPLINK_RADIO "Radio"
|
||||
#define UPLINK_PEN "Pen" //like a real spy!
|
||||
GLOBAL_LIST_INIT(uplink_spawn_loc_list, list(UPLINK_PDA, UPLINK_RADIO, UPLINK_PEN))
|
||||
|
||||
//Female Uniforms
|
||||
GLOBAL_LIST_EMPTY(female_clothing_icons)
|
||||
|
||||
//radical shit
|
||||
GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF"))
|
||||
|
||||
GLOBAL_LIST_INIT(scarySounds, list('sound/weapons/thudswoosh.ogg','sound/weapons/taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg','sound/items/welder.ogg','sound/items/welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg'))
|
||||
|
||||
|
||||
// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to
|
||||
// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages
|
||||
// tagged for the Cargo Bay.
|
||||
|
||||
/* List of sortType codes for mapping reference
|
||||
0 Waste
|
||||
1 Disposals
|
||||
2 Cargo Bay
|
||||
3 QM Office
|
||||
4 Engineering
|
||||
5 CE Office
|
||||
6 Atmospherics
|
||||
7 Security
|
||||
8 HoS Office
|
||||
9 Medbay
|
||||
10 CMO Office
|
||||
11 Chemistry
|
||||
12 Research
|
||||
13 RD Office
|
||||
14 Robotics
|
||||
15 HoP Office
|
||||
16 Library
|
||||
17 Chapel
|
||||
18 Theatre
|
||||
19 Bar
|
||||
20 Kitchen
|
||||
21 Hydroponics
|
||||
22 Janitor
|
||||
23 Genetics
|
||||
*/
|
||||
|
||||
GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
|
||||
"Cargo Bay", "QM Office", "Engineering", "CE Office",
|
||||
"Atmospherics", "Security", "HoS Office", "Medbay",
|
||||
"CMO Office", "Chemistry", "Research", "RD Office",
|
||||
"Robotics", "HoP Office", "Library", "Chapel", "Theatre",
|
||||
"Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics"))
|
||||
|
||||
GLOBAL_LIST_INIT(guitar_notes, flist("sound/guitar/"))
|
||||
|
||||
GLOBAL_LIST_INIT(station_prefixes, world.file2list("strings/station_prefixes.txt") + "")
|
||||
|
||||
GLOBAL_LIST_INIT(station_names, world.file2list("strings/station_names.txt" + ""))
|
||||
|
||||
GLOBAL_LIST_INIT(station_suffixes, world.file2list("strings/station_suffixes.txt"))
|
||||
|
||||
GLOBAL_LIST_INIT(greek_letters, world.file2list("strings/greek_letters.txt"))
|
||||
|
||||
GLOBAL_LIST_INIT(phonetic_alphabet, world.file2list("strings/phonetic_alphabet.txt"))
|
||||
|
||||
GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt"))
|
||||
|
||||
/proc/generate_number_strings()
|
||||
var/list/L[198]
|
||||
for(var/i in 1 to 99)
|
||||
L += "[i]"
|
||||
L += "\Roman[i]"
|
||||
return L
|
||||
|
||||
GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings())
|
||||
|
||||
GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "<i>null</i>","<i>Error: No comment given.</i>", "It's a good day to die!"))
|
||||
|
||||
@@ -25,8 +25,10 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
|
||||
GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for each AI_* status define
|
||||
GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
|
||||
GLOBAL_LIST_EMPTY(bots_list)
|
||||
GLOBAL_LIST_EMPTY(living_cameras)
|
||||
|
||||
GLOBAL_LIST_EMPTY(language_datum_instances)
|
||||
GLOBAL_LIST_EMPTY(all_languages)
|
||||
|
||||
GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes.
|
||||
GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes.
|
||||
GLOBAL_LIST_EMPTY(sentient_disease_instances)
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
//Each lists stores ckeys for "Never for this round" option category
|
||||
|
||||
#define POLL_IGNORE_PAI "pai"
|
||||
#define POLL_IGNORE_SENTIENCE_POTION "sentience_potion"
|
||||
#define POLL_IGNORE_POSSESSED_BLADE "possessed_blade"
|
||||
#define POLL_IGNORE_ALIEN_LARVA "alien_larva"
|
||||
#define POLL_IGNORE_CLOCKWORK_MARAUDER "clockwork_marauder"
|
||||
#define POLL_IGNORE_SYNDICATE "syndicate"
|
||||
#define POLL_IGNORE_HOLOPARASITE "holoparasite"
|
||||
|
||||
|
||||
@@ -22,5 +22,6 @@ GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details
|
||||
GLOBAL_LIST_INIT(bitfields, list(
|
||||
"obj_flags" = list("EMAGGED" = EMAGGED, "IN_USE" = IN_USE, "CAN_BE_HIT" = CAN_BE_HIT, "BEING_SHOCKED" = BEING_SHOCKED, "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, "ON_BLUEPRINTS" = ON_BLUEPRINTS, "UNIQUE_RENAME" = UNIQUE_RENAME),
|
||||
"datum_flags" = list("DF_USE_TAG" = DF_USE_TAG, "DF_VAR_EDITED" = DF_VAR_EDITED),
|
||||
"item_flags" = list("BEING_REMOVED" = BEING_REMOVED, "IN_INVENTORY" = IN_INVENTORY, "FORCE_STRING_OVERRIDE" = FORCE_STRING_OVERRIDE, "NEEDS_PERMIT" = NEEDS_PERMIT)
|
||||
"item_flags" = list("BEING_REMOVED" = BEING_REMOVED, "IN_INVENTORY" = IN_INVENTORY, "FORCE_STRING_OVERRIDE" = FORCE_STRING_OVERRIDE, "NEEDS_PERMIT" = NEEDS_PERMIT),
|
||||
"admin_flags" = list("BUILDMODE" = R_BUILDMODE, "ADMIN" = R_ADMIN, "BAN" = R_BAN, "FUN" = R_FUN, "SERVER" = R_SERVER, "DEBUG" = R_DEBUG, "POSSESS" = R_POSSESS, "PERMISSIONS" = R_PERMISSIONS, "STEALTH" = R_STEALTH, "POLL" = R_POLL, "VAREDIT" = R_VAREDIT, "SOUNDS" = R_SOUNDS, "SPAWN" = R_SPAWN, "AUTOLOGIN" = R_AUTOLOGIN, "DBRANKS" = R_DBRANKS)
|
||||
))
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
//These are a bunch of regex datums for use /((any|every|no|some|head|foot)where(wolf)?\sand\s)+(\.[\.\s]+\s?where\?)?/i
|
||||
GLOBAL_DATUM_INIT(is_http_protocol, /regex, regex("^https?://"))
|
||||
|
||||
GLOBAL_DATUM_INIT(is_website, /regex, regex("http|www.|\[a-z0-9_-]+.(com|org|net|mil|edu)+", "i"))
|
||||
GLOBAL_DATUM_INIT(is_email, /regex, regex("\[a-z0-9_-]+@\[a-z0-9_-]+.\[a-z0-9_-]+", "i"))
|
||||
GLOBAL_DATUM_INIT(is_alphanumeric, /regex, regex("\[a-z0-9]+", "i"))
|
||||
GLOBAL_DATUM_INIT(is_punctuation, /regex, regex("\[.!?]+", "i"))
|
||||
@@ -1 +0,0 @@
|
||||
GLOBAL_VAR_INIT(enable_examine_tips, TRUE)
|
||||
@@ -75,7 +75,7 @@
|
||||
if(modifiers["middle"])
|
||||
MiddleClickOn(A)
|
||||
return
|
||||
if(modifiers["shift"])
|
||||
if(modifiers["shift"] && (client && client.show_popup_menus || modifiers["right"])) //CIT CHANGE - makes shift-click examine use right click instead of left click in combat mode
|
||||
ShiftClickOn(A)
|
||||
return
|
||||
if(modifiers["alt"]) // alt and alt-gr (rightalt)
|
||||
@@ -85,6 +85,10 @@
|
||||
CtrlClickOn(A)
|
||||
return
|
||||
|
||||
if(modifiers["right"]) //CIT CHANGE - allows right clicking to perform actions
|
||||
RightClickOn(A,params) //CIT CHANGE - ditto
|
||||
return //CIT CHANGE - ditto
|
||||
|
||||
if(incapacitated(ignore_restraints = 1))
|
||||
return
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/mob/camera/god/UnarmedAttack(atom/A)
|
||||
A.attack_god(src)
|
||||
|
||||
/mob/camera/god/RangedAttack(atom/A)
|
||||
A.attack_god(src)
|
||||
|
||||
/atom/proc/attack_god(mob/user)
|
||||
return
|
||||
@@ -66,7 +66,7 @@
|
||||
#define ui_monkey_neck "CENTER-3:15,SOUTH:5" //monkey
|
||||
#define ui_monkey_back "CENTER-2:16,SOUTH:5" //monkey
|
||||
|
||||
#define ui_alien_storage_l "CENTER-2:14,SOUTH:5"//alien
|
||||
//#define ui_alien_storage_l "CENTER-2:14,SOUTH:5"//alien
|
||||
#define ui_alien_storage_r "CENTER+1:18,SOUTH:5"//alien
|
||||
#define ui_alien_language_menu "EAST-3:26,SOUTH:5" //alien
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
#define ui_acti "EAST-3:24,SOUTH:5"
|
||||
#define ui_zonesel "EAST-1:28,SOUTH:5"
|
||||
#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12)
|
||||
#define ui_crafting "EAST-4:22,SOUTH:5"
|
||||
#define ui_building "EAST-4:22,SOUTH:21"
|
||||
#define ui_language_menu "EAST-4:6,SOUTH:21"
|
||||
#define ui_crafting "EAST-5:20,SOUTH:5"//CIT CHANGE - moves this over one tile to accommodate for combat mode toggle
|
||||
#define ui_building "EAST-5:20,SOUTH:21"//CIT CHANGE - ditto
|
||||
#define ui_language_menu "EAST-5:4,SOUTH:21"//CIT CHANGE - ditto
|
||||
|
||||
#define ui_borg_pull "EAST-2:26,SOUTH+1:7"
|
||||
#define ui_borg_radio "EAST-1:28,SOUTH+1:7"
|
||||
@@ -102,7 +102,8 @@
|
||||
//Middle right (status indicators)
|
||||
#define ui_healthdoll "EAST-1:28,CENTER-2:13"
|
||||
#define ui_health "EAST-1:28,CENTER-1:15"
|
||||
#define ui_internal "EAST-1:28,CENTER:17"
|
||||
#define ui_internal "EAST-1:28,CENTER+1:19"//CIT CHANGE - moves internal icon up a little bit to accommodate for the stamina meter
|
||||
#define ui_mood "EAST-1:28,CENTER-3:10"
|
||||
|
||||
//borgs
|
||||
#define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator.
|
||||
|
||||
@@ -346,7 +346,11 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
icon_state = "runed_sense2"
|
||||
desc = "You can no longer sense your target's presence."
|
||||
return
|
||||
desc = "You are currently tracking [blood_target] in [get_area_name(blood_target)]."
|
||||
if(isliving(blood_target))
|
||||
var/mob/living/real_target = blood_target
|
||||
desc = "You are currently tracking [real_target.real_name] in [get_area_name(blood_target)]."
|
||||
else
|
||||
desc = "You are currently tracking [blood_target] in [get_area_name(blood_target)]."
|
||||
var/target_angle = Get_Angle(Q, P)
|
||||
var/target_dist = get_dist(P, Q)
|
||||
cut_overlays()
|
||||
|
||||
@@ -106,6 +106,11 @@
|
||||
layer = BLIND_LAYER
|
||||
plane = FULLSCREEN_PLANE
|
||||
|
||||
/obj/screen/fullscreen/depression
|
||||
icon_state = "depression"
|
||||
layer = FLASH_LAYER
|
||||
plane = FULLSCREEN_PLANE
|
||||
|
||||
/obj/screen/fullscreen/curse
|
||||
icon_state = "curse"
|
||||
layer = CURSE_LAYER
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
var/obj/screen/healths
|
||||
var/obj/screen/healthdoll
|
||||
var/obj/screen/internals
|
||||
var/obj/screen/mood
|
||||
|
||||
var/ui_style_icon = 'icons/mob/screen_midnight.dmi'
|
||||
|
||||
@@ -103,6 +104,7 @@
|
||||
healths = null
|
||||
healthdoll = null
|
||||
internals = null
|
||||
mood = null
|
||||
lingchemdisplay = null
|
||||
devilsouldisplay = null
|
||||
lingstingdisplay = null
|
||||
@@ -268,4 +270,4 @@
|
||||
show_hud(HUD_STYLE_STANDARD,mymob)
|
||||
|
||||
/datum/hud/proc/update_locked_slots()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -89,19 +89,29 @@
|
||||
..()
|
||||
owner.overlay_fullscreen("see_through_darkness", /obj/screen/fullscreen/see_through_darkness)
|
||||
|
||||
var/widescreenlayout = FALSE //CIT CHANGE - adds support for different hud layouts depending on widescreen pref
|
||||
if(owner.client && owner.client.prefs && owner.client.prefs.widescreenpref) //CIT CHANGE - ditto
|
||||
widescreenlayout = TRUE // CIT CHANGE - ditto
|
||||
|
||||
var/obj/screen/using
|
||||
var/obj/screen/inventory/inv_box
|
||||
|
||||
using = new /obj/screen/craft
|
||||
using.icon = ui_style
|
||||
if(!widescreenlayout) // CIT CHANGE
|
||||
using.screen_loc = ui_boxcraft // CIT CHANGE
|
||||
static_inventory += using
|
||||
|
||||
using = new/obj/screen/language_menu
|
||||
using.icon = ui_style
|
||||
if(!widescreenlayout) // CIT CHANGE
|
||||
using.screen_loc = ui_boxlang // CIT CHANGE
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/area_creator
|
||||
using.icon = ui_style
|
||||
if(!widescreenlayout) // CIT CHANGE
|
||||
using.screen_loc = ui_boxarea // CIT CHANGE
|
||||
static_inventory += using
|
||||
|
||||
action_intent = new /obj/screen/act_intent/segmented
|
||||
@@ -109,11 +119,19 @@
|
||||
static_inventory += action_intent
|
||||
|
||||
using = new /obj/screen/mov_intent
|
||||
using.icon = ui_style
|
||||
using.icon = tg_ui_icon_to_cit_ui(ui_style) // CIT CHANGE - overrides mov intent icon
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
static_inventory += using
|
||||
|
||||
//CITADEL CHANGES - sprint button
|
||||
using = new /obj/screen/sprintbutton
|
||||
using.icon = tg_ui_icon_to_cit_ui(ui_style)
|
||||
using.icon_state = (owner.sprinting ? "act_sprint_on" : "act_sprint")
|
||||
using.screen_loc = ui_movi
|
||||
static_inventory += using
|
||||
//END OF CITADEL CHANGES
|
||||
|
||||
using = new /obj/screen/drop()
|
||||
using.icon = ui_style
|
||||
using.screen_loc = ui_drop_throw
|
||||
@@ -207,9 +225,21 @@
|
||||
|
||||
using = new /obj/screen/resist()
|
||||
using.icon = ui_style
|
||||
using.screen_loc = ui_pull_resist
|
||||
using.screen_loc = ui_overridden_resist // CIT CHANGE - changes this to overridden resist
|
||||
hotkeybuttons += using
|
||||
|
||||
//CIT CHANGES - rest and combat mode buttons
|
||||
using = new /obj/screen/restbutton()
|
||||
using.icon = tg_ui_icon_to_cit_ui(ui_style)
|
||||
using.screen_loc = ui_pull_resist
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/combattoggle()
|
||||
using.icon = tg_ui_icon_to_cit_ui(ui_style)
|
||||
using.screen_loc = ui_combat_toggle
|
||||
static_inventory += using
|
||||
//END OF CIT CHANGES
|
||||
|
||||
using = new /obj/screen/human/toggle()
|
||||
using.icon = ui_style
|
||||
using.screen_loc = ui_inventory
|
||||
@@ -280,15 +310,25 @@
|
||||
healths = new /obj/screen/healths()
|
||||
infodisplay += healths
|
||||
|
||||
//CIT CHANGE - adds arousal to hud
|
||||
//CIT CHANGE - adds arousal and stamina to hud
|
||||
arousal = new /obj/screen/arousal()
|
||||
arousal.icon_state = (owner.canbearoused == 1 ? "arousal0" : "")
|
||||
infodisplay += arousal
|
||||
|
||||
staminas = new /obj/screen/staminas()
|
||||
infodisplay += staminas
|
||||
|
||||
staminabuffer = new /obj/screen/staminabuffer()
|
||||
infodisplay += staminabuffer
|
||||
//END OF CIT CHANGES
|
||||
|
||||
healthdoll = new /obj/screen/healthdoll()
|
||||
infodisplay += healthdoll
|
||||
|
||||
if(!CONFIG_GET(flag/disable_human_mood))
|
||||
mood = new /obj/screen/mood()
|
||||
infodisplay += mood
|
||||
|
||||
pull_icon = new /obj/screen/pull()
|
||||
pull_icon.icon = ui_style
|
||||
pull_icon.update_icon(mymob)
|
||||
@@ -314,7 +354,7 @@
|
||||
inv.hud = src
|
||||
inv_slots[inv.slot_id] = inv
|
||||
inv.update_icon()
|
||||
|
||||
|
||||
update_locked_slots()
|
||||
|
||||
/datum/hud/human/update_locked_slots()
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
|
||||
/datum/hud/brain/show_hud(version = 0)
|
||||
if(!ismob(mymob))
|
||||
return 0
|
||||
if(!mymob.client)
|
||||
return 0
|
||||
mymob.client.screen = list()
|
||||
mymob.client.screen += mymob.client.void
|
||||
|
||||
/mob/living/brain/create_mob_hud()
|
||||
if(client && !hud_used)
|
||||
hud_used = new /datum/hud/brain(src)
|
||||
|
||||
@@ -152,12 +152,6 @@
|
||||
continue
|
||||
|
||||
var/newstate = initial(L.icon_state)
|
||||
if (animatedir)
|
||||
if(animatedir == NORTH || animatedir == SOUTH)
|
||||
newstate += "_vertical"
|
||||
else
|
||||
newstate += "_horizontal"
|
||||
|
||||
var/T = PARALLAX_LOOP_TIME / L.speed
|
||||
|
||||
if (newstate in icon_states(L.icon))
|
||||
|
||||
@@ -538,6 +538,16 @@
|
||||
name = "health doll"
|
||||
screen_loc = ui_healthdoll
|
||||
|
||||
/obj/screen/mood
|
||||
name = "mood"
|
||||
icon_state = "mood5"
|
||||
screen_loc = ui_mood
|
||||
|
||||
/obj/screen/mood/Click()
|
||||
GET_COMPONENT_FROM(mood, /datum/component/mood, usr)
|
||||
if(mood)
|
||||
mood.print_mood()
|
||||
|
||||
/obj/screen/splash
|
||||
icon = 'icons/blank_title.png'
|
||||
icon_state = ""
|
||||
|
||||
@@ -54,6 +54,10 @@
|
||||
if(flags_1 & NOBLUDGEON_1)
|
||||
return
|
||||
|
||||
if(user.staminaloss >= STAMINA_SOFTCRIT) // CIT CHANGE - makes it impossible to attack in stamina softcrit
|
||||
to_chat(user, "<span class='warning'>You're too exhausted.</span>") // CIT CHANGE - ditto
|
||||
return // CIT CHANGE - ditto
|
||||
|
||||
if(force && user.has_trait(TRAIT_PACIFISM))
|
||||
to_chat(user, "<span class='warning'>You don't want to harm other living beings!</span>")
|
||||
return
|
||||
@@ -72,12 +76,17 @@
|
||||
add_logs(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
|
||||
add_fingerprint(user)
|
||||
|
||||
user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes attacking things cause stamina loss
|
||||
|
||||
//the equivalent of the standard version of attack() but for object targets.
|
||||
/obj/item/proc/attack_obj(obj/O, mob/living/user)
|
||||
SendSignal(COMSIG_ITEM_ATTACK_OBJ, O, user)
|
||||
if(flags_1 & NOBLUDGEON_1)
|
||||
return
|
||||
if(user.staminaloss >= STAMINA_SOFTCRIT) // CIT CHANGE - makes it impossible to attack in stamina softcrit
|
||||
to_chat(user, "<span class='warning'>You're too exhausted.</span>") // CIT CHANGE - ditto
|
||||
return // CIT CHANGE - ditto
|
||||
user.adjustStaminaLossBuffered(getweight()*1.2)//CIT CHANGE - makes attacking things cause stamina loss
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(O)
|
||||
O.attacked_by(src, user)
|
||||
@@ -94,7 +103,16 @@
|
||||
/mob/living/attacked_by(obj/item/I, mob/living/user)
|
||||
send_item_attack_message(I, user)
|
||||
if(I.force)
|
||||
apply_damage(I.force, I.damtype)
|
||||
//CIT CHANGES START HERE - combatmode and resting checks
|
||||
var/totitemdamage = I.force
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/tempcarb = user
|
||||
if(!tempcarb.combatmode)
|
||||
totitemdamage *= 0.5
|
||||
if(user.resting)
|
||||
totitemdamage *= 0.5
|
||||
//CIT CHANGES END HERE
|
||||
apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage
|
||||
if(I.damtype == BRUTE)
|
||||
if(prob(33))
|
||||
I.add_mob_blood(src)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
"<span class='userdanger'>[name] bites [ML]!</span>")
|
||||
if(armor >= 2)
|
||||
return
|
||||
for(var/thing in viruses)
|
||||
for(var/thing in diseases)
|
||||
var/datum/disease/D = thing
|
||||
ML.ForceContractDisease(D)
|
||||
else
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
By default, emulate the user's unarmed attack
|
||||
*/
|
||||
|
||||
#define TK_MAXRANGE 15
|
||||
|
||||
/atom/proc/attack_tk(mob/user)
|
||||
if(user.stat || !tkMaxRangeCheck(user, src))
|
||||
return
|
||||
@@ -188,3 +190,6 @@
|
||||
/obj/item/tk_grab/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return (OXYLOSS)
|
||||
|
||||
|
||||
#undef TK_MAXRANGE
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,40 +0,0 @@
|
||||
/obj/item/clothing/under/bb_sweater
|
||||
name = "cream sweater"
|
||||
desc = "Why trade style for comfort? Now you can go commando down south and still be cozy up north."
|
||||
icon_state = "bb_turtle"
|
||||
item_state = "w_suit"
|
||||
item_color = "bb_turtle"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
can_adjust = 1
|
||||
icon = 'icons/obj/clothing/turtlenecks.dmi'
|
||||
icon_override = 'icons/mob/citadel/uniforms.dmi'
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/black
|
||||
name = "black sweater"
|
||||
icon_state = "bb_turtleblk"
|
||||
item_state = "bl_suit"
|
||||
item_color = "bb_turtleblk"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/purple
|
||||
name = "purple sweater"
|
||||
icon_state = "bb_turtlepur"
|
||||
item_state = "p_suit"
|
||||
item_color = "bb_turtlepur"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/green
|
||||
name = "green sweater"
|
||||
icon_state = "bb_turtlegrn"
|
||||
item_state = "g_suit"
|
||||
item_color = "bb_turtlegrn"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/red
|
||||
name = "red sweater"
|
||||
icon_state = "bb_turtlered"
|
||||
item_state = "r_suit"
|
||||
item_color = "bb_turtlered"
|
||||
|
||||
/obj/item/clothing/under/bb_sweater/blue
|
||||
name = "blue sweater"
|
||||
icon_state = "bb_turtleblu"
|
||||
item_state = "b_suit"
|
||||
item_color = "bb_turtleblu"
|
||||
@@ -1,102 +0,0 @@
|
||||
#define STANDARD_CHARGE 1
|
||||
#define CONTRABAND_CHARGE 2
|
||||
#define COIN_CHARGE 3
|
||||
|
||||
/obj/machinery/vending/kink
|
||||
name = "KinkMate"
|
||||
desc = "A vending machine for all your unmentionable desires."
|
||||
icon = 'icons/obj/citvending.dmi'
|
||||
icon_state = "kink"
|
||||
product_slogans = "Kinky!;Sexy!;Check me out, big boy!"
|
||||
vend_reply = "Have fun, you shameless pervert!"
|
||||
products = list(
|
||||
/obj/item/clothing/under/maid = 5,
|
||||
/obj/item/clothing/under/stripper_pink = 5,
|
||||
/obj/item/clothing/under/stripper_green = 5,
|
||||
/obj/item/dildo/custom = 5
|
||||
)
|
||||
contraband = list(/obj/item/restraints/handcuffs/fake/kinky = 5,
|
||||
/obj/item/clothing/neck/petcollar = 5,
|
||||
/obj/item/clothing/under/mankini = 1,
|
||||
/obj/item/dildo/flared/huge = 1
|
||||
)
|
||||
premium = list(/obj/item/device/electropack/shockcollar = 1)
|
||||
refill_canister = /obj/item/vending_refill/kink
|
||||
/*
|
||||
/obj/machinery/vending/nazivend
|
||||
name = "Nazivend"
|
||||
desc = "A vending machine containing Nazi German supplies. A label reads: \"Remember the gorrilions lost.\""
|
||||
icon = 'icons/obj/citvending.dmi'
|
||||
icon_state = "nazi"
|
||||
vend_reply = "SIEG HEIL!"
|
||||
product_slogans = "Das Vierte Reich wird zuruckkehren!;ENTFERNEN JUDEN!;Billiger als die Juden jemals geben!;Rader auf dem adminbus geht rund und rund.;Warten Sie, warum wir wieder hassen Juden?- *BZZT*"
|
||||
products = list(
|
||||
/obj/item/clothing/head/stalhelm = 20,
|
||||
/obj/item/clothing/head/panzer = 20,
|
||||
/obj/item/clothing/suit/soldiercoat = 20,
|
||||
// /obj/item/clothing/under/soldieruniform = 20,
|
||||
/obj/item/clothing/shoes/jackboots = 20
|
||||
)
|
||||
contraband = list(
|
||||
/obj/item/clothing/head/naziofficer = 10,
|
||||
// /obj/item/clothing/suit/officercoat = 10,
|
||||
// /obj/item/clothing/under/officeruniform = 10,
|
||||
/obj/item/clothing/suit/space/hardsuit/nazi = 3,
|
||||
/obj/item/gun/energy/plasma/MP40k = 4
|
||||
)
|
||||
premium = list()
|
||||
|
||||
refill_canister = /obj/item/vending_refill/nazi
|
||||
*/
|
||||
/obj/machinery/vending/sovietvend
|
||||
name = "KomradeVendtink"
|
||||
desc = "Rodina-mat' zovyot!"
|
||||
icon = 'icons/obj/citvending.dmi'
|
||||
icon_state = "soviet"
|
||||
vend_reply = "The fascist and capitalist svin'ya shall fall, komrade!"
|
||||
product_slogans = "Quality worth waiting in line for!; Get Hammer and Sickled!; Sosvietsky soyuz above all!; With capitalist pigsky, you would have paid a fortunetink! ; Craftink in Motherland herself!"
|
||||
products = list(
|
||||
/obj/item/clothing/under/soviet = 20,
|
||||
/obj/item/clothing/head/ushanka = 20,
|
||||
/obj/item/clothing/shoes/jackboots = 20,
|
||||
/obj/item/clothing/head/squatter_hat = 20,
|
||||
/obj/item/clothing/under/squatter_outfit = 20,
|
||||
/obj/item/clothing/under/russobluecamooutfit = 20,
|
||||
/obj/item/clothing/head/russobluecamohat = 20
|
||||
)
|
||||
contraband = list(
|
||||
/obj/item/clothing/under/syndicate/tacticool = 4,
|
||||
/obj/item/clothing/mask/balaclava = 4,
|
||||
/obj/item/clothing/suit/russofurcoat = 4,
|
||||
/obj/item/clothing/head/russofurhat = 4,
|
||||
/obj/item/clothing/suit/space/hardsuit/soviet = 3,
|
||||
/obj/item/gun/energy/laser/LaserAK = 4
|
||||
)
|
||||
premium = list()
|
||||
|
||||
refill_canister = /obj/item/vending_refill/soviet
|
||||
|
||||
|
||||
#undef STANDARD_CHARGE
|
||||
#undef CONTRABAND_CHARGE
|
||||
#undef COIN_CHARGE
|
||||
|
||||
|
||||
/obj/item/vending_refill/kink
|
||||
machine_name = "KinkMate"
|
||||
icon = 'modular_citadel/icons/vending_restock.dmi'
|
||||
icon_state = "refill_kink"
|
||||
charges = list(8, 5, 0)// of 20 standard, 12 contraband, 0 premium
|
||||
init_charges = list(8, 5, 0)
|
||||
|
||||
/obj/item/vending_refill/nazi
|
||||
machine_name = "nazivend"
|
||||
icon_state = "refill_nazi"
|
||||
charges = list(33, 13, 0)
|
||||
init_charges = list(33, 13, 0)
|
||||
|
||||
/obj/item/vending_refill/soviet
|
||||
machine_name = "sovietvend"
|
||||
icon_state = "refill_soviet"
|
||||
charges = list(47, 7, 0)
|
||||
init_charges = list(47, 7, 0)
|
||||
@@ -1,13 +0,0 @@
|
||||
/proc/send2maindiscord(var/msg)
|
||||
send2discord(msg, FALSE)
|
||||
|
||||
/proc/send2admindiscord(var/msg, var/ping = FALSE)
|
||||
send2discord(msg, TRUE, ping)
|
||||
|
||||
/proc/send2discord(var/msg, var/admin = FALSE, var/ping = FALSE)
|
||||
// if (!config.discord_url || !config.discord_password)
|
||||
// return
|
||||
|
||||
// var/url = "[config.discord_url]?pass=[url_encode(config.discord_password)]&admin=[admin ? "true" : "false"]&content=[url_encode(msg)]&ping=[ping ? "true" : "false"]"
|
||||
// world.Export(url)
|
||||
return
|
||||
@@ -1,287 +0,0 @@
|
||||
GLOBAL_VAR_INIT(config_dir, "config/")
|
||||
GLOBAL_PROTECT(config_dir)
|
||||
|
||||
/datum/controller/configuration
|
||||
name = "Configuration"
|
||||
|
||||
var/hiding_entries_by_type = TRUE //Set for readability, admins can set this to FALSE if they want to debug it
|
||||
var/list/entries
|
||||
var/list/entries_by_type
|
||||
|
||||
var/list/maplist
|
||||
var/datum/map_config/defaultmap
|
||||
|
||||
var/list/modes // allowed modes
|
||||
var/list/gamemode_cache
|
||||
var/list/votable_modes // votable modes
|
||||
var/list/mode_names
|
||||
var/list/mode_reports
|
||||
var/list/mode_false_report_weight
|
||||
|
||||
/datum/controller/configuration/New()
|
||||
config = src
|
||||
var/list/config_files = InitEntries()
|
||||
LoadModes()
|
||||
for(var/I in config_files)
|
||||
LoadEntries(I)
|
||||
if(Get(/datum/config_entry/flag/maprotation))
|
||||
loadmaplist(CONFIG_MAPS_FILE)
|
||||
|
||||
/datum/controller/configuration/Destroy()
|
||||
entries_by_type.Cut()
|
||||
QDEL_LIST_ASSOC_VAL(entries)
|
||||
QDEL_LIST_ASSOC_VAL(maplist)
|
||||
QDEL_NULL(defaultmap)
|
||||
|
||||
config = null
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/controller/configuration/proc/InitEntries()
|
||||
var/list/_entries = list()
|
||||
entries = _entries
|
||||
var/list/_entries_by_type = list()
|
||||
entries_by_type = _entries_by_type
|
||||
|
||||
. = list()
|
||||
|
||||
for(var/I in typesof(/datum/config_entry)) //typesof is faster in this case
|
||||
var/datum/config_entry/E = I
|
||||
if(initial(E.abstract_type) == I)
|
||||
continue
|
||||
E = new I
|
||||
_entries_by_type[I] = E
|
||||
var/esname = E.name
|
||||
var/datum/config_entry/test = _entries[esname]
|
||||
if(test)
|
||||
log_config("Error: [test.type] has the same name as [E.type]: [esname]! Not initializing [E.type]!")
|
||||
qdel(E)
|
||||
continue
|
||||
_entries[esname] = E
|
||||
.[E.resident_file] = TRUE
|
||||
|
||||
/datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE)
|
||||
entries -= CE.name
|
||||
entries_by_type -= CE.type
|
||||
|
||||
/datum/controller/configuration/proc/LoadEntries(filename)
|
||||
log_config("Loading config file [filename]...")
|
||||
var/list/lines = world.file2list("[GLOB.config_dir][filename]")
|
||||
var/list/_entries = entries
|
||||
for(var/L in lines)
|
||||
if(!L)
|
||||
continue
|
||||
|
||||
if(copytext(L, 1, 2) == "#")
|
||||
continue
|
||||
|
||||
var/pos = findtext(L, " ")
|
||||
var/entry = null
|
||||
var/value = null
|
||||
|
||||
if(pos)
|
||||
entry = lowertext(copytext(L, 1, pos))
|
||||
value = copytext(L, pos + 1)
|
||||
else
|
||||
entry = lowertext(L)
|
||||
|
||||
if(!entry)
|
||||
continue
|
||||
|
||||
var/datum/config_entry/E = _entries[entry]
|
||||
if(!E)
|
||||
log_config("Unknown setting in configuration: '[entry]'")
|
||||
continue
|
||||
|
||||
if(filename != E.resident_file)
|
||||
log_config("Found [entry] in [filename] when it should have been in [E.resident_file]! Ignoring.")
|
||||
continue
|
||||
|
||||
var/validated = E.ValidateAndSet(value)
|
||||
if(!validated)
|
||||
log_config("Failed to validate setting \"[value]\" for [entry]")
|
||||
else if(E.modified && !E.dupes_allowed)
|
||||
log_config("Duplicate setting for [entry] ([value]) detected! Using latest.")
|
||||
|
||||
if(validated)
|
||||
E.modified = TRUE
|
||||
|
||||
/datum/controller/configuration/can_vv_get(var_name)
|
||||
return (var_name != "entries_by_type" || !hiding_entries_by_type) && ..()
|
||||
|
||||
/datum/controller/configuration/vv_edit_var(var_name, var_value)
|
||||
return !(var_name in list("entries_by_type", "entries")) && ..()
|
||||
|
||||
/datum/controller/configuration/stat_entry()
|
||||
if(!statclick)
|
||||
statclick = new/obj/effect/statclick/debug(null, "Edit", src)
|
||||
stat("[name]:", statclick)
|
||||
|
||||
/datum/controller/configuration/proc/Get(entry_type)
|
||||
if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "\ref[src]")
|
||||
log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]")
|
||||
return
|
||||
var/datum/config_entry/E = entry_type
|
||||
var/entry_is_abstract = initial(E.abstract_type) == entry_type
|
||||
if(entry_is_abstract)
|
||||
CRASH("Tried to retrieve an abstract config_entry: [entry_type]")
|
||||
E = entries_by_type[entry_type]
|
||||
if(!E)
|
||||
CRASH("Missing config entry for [entry_type]!")
|
||||
return E.value
|
||||
|
||||
/datum/controller/configuration/proc/Set(entry_type, new_val)
|
||||
if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "\ref[src]")
|
||||
log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]")
|
||||
return
|
||||
var/datum/config_entry/E = entry_type
|
||||
var/entry_is_abstract = initial(E.abstract_type) == entry_type
|
||||
if(entry_is_abstract)
|
||||
CRASH("Tried to retrieve an abstract config_entry: [entry_type]")
|
||||
E = entries_by_type[entry_type]
|
||||
if(!E)
|
||||
CRASH("Missing config entry for [entry_type]!")
|
||||
return E.ValidateAndSet(new_val)
|
||||
|
||||
/datum/controller/configuration/proc/LoadModes()
|
||||
gamemode_cache = typecacheof(/datum/game_mode, TRUE)
|
||||
modes = list()
|
||||
mode_names = list()
|
||||
mode_reports = list()
|
||||
mode_false_report_weight = list()
|
||||
votable_modes = list()
|
||||
var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability)
|
||||
for(var/T in gamemode_cache)
|
||||
// I wish I didn't have to instance the game modes in order to look up
|
||||
// their information, but it is the only way (at least that I know of).
|
||||
var/datum/game_mode/M = new T()
|
||||
|
||||
if(M.config_tag)
|
||||
if(!(M.config_tag in modes)) // ensure each mode is added only once
|
||||
modes += M.config_tag
|
||||
mode_names[M.config_tag] = M.name
|
||||
probabilities[M.config_tag] = M.probability
|
||||
mode_reports[M.config_tag] = M.generate_report()
|
||||
mode_false_report_weight[M.config_tag] = M.false_report_weight
|
||||
if(M.votable)
|
||||
votable_modes += M.config_tag
|
||||
qdel(M)
|
||||
votable_modes += "secret"
|
||||
|
||||
/datum/controller/configuration/proc/loadmaplist(filename)
|
||||
filename = "[GLOB.config_dir][filename]"
|
||||
var/list/Lines = world.file2list(filename)
|
||||
|
||||
var/datum/map_config/currentmap = null
|
||||
for(var/t in Lines)
|
||||
if(!t)
|
||||
continue
|
||||
|
||||
t = trim(t)
|
||||
if(length(t) == 0)
|
||||
continue
|
||||
else if(copytext(t, 1, 2) == "#")
|
||||
continue
|
||||
|
||||
var/pos = findtext(t, " ")
|
||||
var/command = null
|
||||
var/data = null
|
||||
|
||||
if(pos)
|
||||
command = lowertext(copytext(t, 1, pos))
|
||||
data = copytext(t, pos + 1)
|
||||
else
|
||||
command = lowertext(t)
|
||||
|
||||
if(!command)
|
||||
continue
|
||||
|
||||
if (!currentmap && command != "map")
|
||||
continue
|
||||
|
||||
switch (command)
|
||||
if ("map")
|
||||
currentmap = new ("_maps/[data].json")
|
||||
if(currentmap.defaulted)
|
||||
log_config("Failed to load map config for [data]!")
|
||||
if ("minplayers","minplayer")
|
||||
currentmap.config_min_users = text2num(data)
|
||||
if ("maxplayers","maxplayer")
|
||||
currentmap.config_max_users = text2num(data)
|
||||
if ("weight","voteweight")
|
||||
currentmap.voteweight = text2num(data)
|
||||
if ("default","defaultmap")
|
||||
defaultmap = currentmap
|
||||
if ("endmap")
|
||||
LAZYINITLIST(maplist)
|
||||
maplist[currentmap.map_name] = currentmap
|
||||
currentmap = null
|
||||
if ("disabled")
|
||||
currentmap = null
|
||||
else
|
||||
WRITE_FILE(GLOB.config_error_log, "Unknown command in map vote config: '[command]'")
|
||||
|
||||
|
||||
/datum/controller/configuration/proc/pick_mode(mode_name)
|
||||
// I wish I didn't have to instance the game modes in order to look up
|
||||
// their information, but it is the only way (at least that I know of).
|
||||
// ^ This guy didn't try hard enough
|
||||
for(var/T in gamemode_cache)
|
||||
var/datum/game_mode/M = T
|
||||
var/ct = initial(M.config_tag)
|
||||
if(ct && ct == mode_name)
|
||||
return new T
|
||||
return new /datum/game_mode/extended()
|
||||
|
||||
/datum/controller/configuration/proc/get_runnable_modes()
|
||||
var/list/datum/game_mode/runnable_modes = new
|
||||
var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability)
|
||||
var/list/min_pop = Get(/datum/config_entry/keyed_number_list/min_pop)
|
||||
var/list/max_pop = Get(/datum/config_entry/keyed_number_list/max_pop)
|
||||
var/list/repeated_mode_adjust = Get(/datum/config_entry/number_list/repeated_mode_adjust)
|
||||
for(var/T in gamemode_cache)
|
||||
var/datum/game_mode/M = new T()
|
||||
if(!(M.config_tag in modes))
|
||||
qdel(M)
|
||||
continue
|
||||
if(probabilities[M.config_tag]<=0)
|
||||
qdel(M)
|
||||
continue
|
||||
if(min_pop[M.config_tag])
|
||||
M.required_players = min_pop[M.config_tag]
|
||||
if(max_pop[M.config_tag])
|
||||
M.maximum_players = max_pop[M.config_tag]
|
||||
if(M.can_start())
|
||||
var/final_weight = probabilities[M.config_tag]
|
||||
if(SSpersistence.saved_modes.len == 3 && repeated_mode_adjust.len == 3)
|
||||
var/recent_round = min(SSpersistence.saved_modes.Find(M.config_tag),3)
|
||||
var/adjustment = 0
|
||||
while(recent_round)
|
||||
adjustment += repeated_mode_adjust[recent_round]
|
||||
recent_round = SSpersistence.saved_modes.Find(M.config_tag,recent_round+1,0)
|
||||
final_weight *= ((100-adjustment)/100)
|
||||
runnable_modes[M] = final_weight
|
||||
return runnable_modes
|
||||
|
||||
/datum/controller/configuration/proc/get_runnable_midround_modes(crew)
|
||||
var/list/datum/game_mode/runnable_modes = new
|
||||
var/list/probabilities = Get(/datum/config_entry/keyed_number_list/probability)
|
||||
var/list/min_pop = Get(/datum/config_entry/keyed_number_list/min_pop)
|
||||
var/list/max_pop = Get(/datum/config_entry/keyed_number_list/max_pop)
|
||||
for(var/T in (gamemode_cache - SSticker.mode.type))
|
||||
var/datum/game_mode/M = new T()
|
||||
if(!(M.config_tag in modes))
|
||||
qdel(M)
|
||||
continue
|
||||
if(probabilities[M.config_tag]<=0)
|
||||
qdel(M)
|
||||
continue
|
||||
if(min_pop[M.config_tag])
|
||||
M.required_players = min_pop[M.config_tag]
|
||||
if(max_pop[M.config_tag])
|
||||
M.maximum_players = max_pop[M.config_tag]
|
||||
if(M.required_players <= crew)
|
||||
if(M.maximum_players >= 0 && M.maximum_players < crew)
|
||||
continue
|
||||
runnable_modes[M] = probabilities[M.config_tag]
|
||||
return runnable_modes
|
||||
@@ -33,12 +33,12 @@
|
||||
|
||||
/datum/config_entry/can_vv_get(var_name)
|
||||
. = ..()
|
||||
if(var_name == "value" || var_name == "default")
|
||||
if(var_name == NAMEOF(src, config_entry_value) || var_name == NAMEOF(src, default))
|
||||
. &= !(protection & CONFIG_ENTRY_HIDDEN)
|
||||
|
||||
/datum/config_entry/vv_edit_var(var_name, var_value)
|
||||
var/static/list/banned_edits = list("name", "default", "resident_file", "protection", "abstract_type", "modified", "dupes_allowed")
|
||||
if(var_name == "value")
|
||||
var/static/list/banned_edits = list(NAMEOF(src, name), NAMEOF(src, default), NAMEOF(src, resident_file), NAMEOF(src, protection), NAMEOF(src, abstract_type), NAMEOF(src, modified), NAMEOF(src, dupes_allowed))
|
||||
if(var_name == NAMEOF(src, config_entry_value))
|
||||
if(protection & CONFIG_ENTRY_LOCKED)
|
||||
return FALSE
|
||||
. = ValidateAndSet("[var_value]")
|
||||
|
||||
@@ -67,6 +67,9 @@
|
||||
entries_by_type -= CE.type
|
||||
|
||||
/datum/controller/configuration/proc/LoadEntries(filename, list/stack = list())
|
||||
if(IsAdminAdvancedProcCall())
|
||||
return
|
||||
|
||||
var/filename_to_test = world.system_type == MS_WINDOWS ? lowertext(filename) : filename
|
||||
if(filename_to_test in stack)
|
||||
log_config("Warning: Config recursion detected ([english_list(stack)]), breaking!")
|
||||
|
||||
@@ -47,8 +47,10 @@
|
||||
/datum/config_entry/flag/force_random_names
|
||||
|
||||
/datum/config_entry/flag/humans_need_surnames
|
||||
|
||||
|
||||
/datum/config_entry/flag/allow_ai // allow ai job
|
||||
|
||||
/datum/config_entry/flag/disable_human_mood
|
||||
|
||||
/datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen.
|
||||
|
||||
@@ -92,6 +94,20 @@
|
||||
|
||||
/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling
|
||||
|
||||
/datum/config_entry/flag/use_antag_rep // see game_options.txt for details
|
||||
|
||||
/datum/config_entry/number/antag_rep_maximum
|
||||
config_entry_value = 200
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/default_antag_tickets
|
||||
config_entry_value = 100
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/max_tickets_per_roll
|
||||
config_entry_value = 100
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/midround_antag_time_check // How late (in minutes you want the midround antag system to stay on, setting this to 0 will disable the system)
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
@@ -276,6 +292,8 @@
|
||||
|
||||
/datum/config_entry/flag/ic_printing
|
||||
|
||||
/datum/config_entry/flag/roundstart_traits
|
||||
|
||||
/datum/config_entry/flag/enable_night_shifts
|
||||
|
||||
/datum/config_entry/flag/randomize_shift_time
|
||||
|
||||
@@ -120,6 +120,15 @@
|
||||
/datum/config_entry/flag/admin_legacy_system //Defines whether the server uses the legacy admin system with admins.txt or the SQL system
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/protect_legacy_admins //Stops any admins loaded by the legacy system from having their rank edited by the permissions panel
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/protect_legacy_ranks //Stops any ranks loaded by the legacy system from having their flags edited by the permissions panel
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/flag/enable_localhost_rank //Gives the !localhost! rank to any client connecting from 127.0.0.1 or ::1
|
||||
protection = CONFIG_ENTRY_LOCKED
|
||||
|
||||
/datum/config_entry/string/hostedby
|
||||
|
||||
/datum/config_entry/flag/norespawn
|
||||
@@ -311,7 +320,6 @@
|
||||
/datum/config_entry/number/client_warn_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
max_val = DM_VERSION - 1
|
||||
|
||||
/datum/config_entry/string/client_warn_message
|
||||
config_entry_value = "Your version of byond may have issues or be blocked from accessing this server in the future."
|
||||
@@ -321,7 +329,6 @@
|
||||
/datum/config_entry/number/client_error_version
|
||||
config_entry_value = null
|
||||
min_val = 500
|
||||
max_val = DM_VERSION - 1
|
||||
|
||||
/datum/config_entry/string/client_error_message
|
||||
config_entry_value = "Your version of byond is too old, may have issues, and is blocked from accessing this server."
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user