Merge branch 'master' into upstream-merge-36242

This commit is contained in:
deathride58
2018-03-09 20:38:39 +00:00
committed by GitHub
296 changed files with 5175 additions and 3012 deletions
-1
View File
@@ -198,4 +198,3 @@ tools/MapAtmosFixer/MapAtmosFixer/obj/x86/Debug/MapAtmosFixer.csproj.CoreCompile
#GitHub Atom
.atom-build.json
cfg/admin.txt
+44 -10
View File
@@ -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
View File
@@ -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;
--
+13 -15
View File
@@ -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;
--
@@ -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" = (
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -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" = (
+1 -1
View File
@@ -6091,7 +6091,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"
},
+3 -3
View File
@@ -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
},
+213 -177
View File
@@ -37291,6 +37291,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/chair/comfy/black,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"bPz" = (
@@ -37317,13 +37318,15 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPA" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 1
},
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/table/glass,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPB" = (
@@ -37413,10 +37416,10 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPI" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bPJ" = (
@@ -38354,9 +38357,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bRZ" = (
@@ -40062,9 +40062,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bWn" = (
@@ -41536,9 +41533,6 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"bZX" = (
@@ -43967,18 +43961,12 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cgl" = (
/obj/structure/disposalpipe/segment{
dir = 4
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
dir = 2;
external_pressure_bound = 120;
name = "killroom vent"
},
/obj/structure/cable{
icon_state = "0-2"
},
/obj/machinery/door/poddoor/preopen{
id = "xenobio0";
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/engine,
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"cgm" = (
/obj/structure/cable{
@@ -44376,21 +44364,9 @@
/turf/closed/wall,
/area/maintenance/starboard/aft)
"chs" = (
/obj/machinery/door/window/northleft{
base_state = "right";
dir = 8;
icon_state = "right";
name = "Containment Pen";
req_access_txt = "55"
},
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/door/poddoor/preopen{
id = "xenobio0";
name = "containment blast door"
},
/turf/open/floor/engine,
/obj/machinery/light,
/obj/machinery/atmospherics/pipe/manifold/general/visible,
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"chv" = (
/obj/structure/cable{
@@ -47996,8 +47972,8 @@
/area/space/nearstation)
"csk" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall/r_wall,
/area/science/xenobiology)
/turf/open/floor/plating/airless,
/area/space/nearstation)
"csl" = (
/obj/structure/transit_tube/curved{
dir = 4
@@ -50012,6 +49988,15 @@
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"cyA" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cyC" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
@@ -52386,6 +52371,13 @@
dir = 6
},
/area/security/brig)
"dkZ" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dAS" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -52425,6 +52417,24 @@
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
"eeP" = (
/obj/machinery/light,
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 5
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"eiu" = (
/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
target_temperature = 80;
dir = 2;
on = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"eiQ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
@@ -52539,26 +52549,6 @@
/obj/machinery/bookbinder,
/turf/open/floor/plasteel/white,
/area/science/circuit)
"fmO" = (
/obj/structure/window/reinforced,
/obj/structure/table/reinforced,
/obj/machinery/button/door{
id = "xenobio7";
name = "Containment Blast Doors";
pixel_y = 4;
req_access_txt = "55"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"fmW" = (
/obj/effect/turf_decal/loading_area/white,
/obj/effect/turf_decal/stripes/white/corner{
@@ -52580,6 +52570,13 @@
},
/turf/open/floor/plasteel/hydrofloor,
/area/hallway/secondary/service)
"foQ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/chair/comfy/black,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"fsC" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/cable{
@@ -52763,6 +52760,11 @@
},
/turf/open/floor/plating,
/area/maintenance/port)
"hfn" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/warning/biohazard,
/turf/open/floor/plating,
/area/science/xenobiology)
"hgP" = (
/obj/structure/closet/bombcloset/security,
/turf/open/floor/plasteel/showroomfloor,
@@ -52886,6 +52888,20 @@
dir = 4
},
/area/security/brig)
"iRn" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 2;
external_pressure_bound = 140;
pressure_checks = 0;
name = "killroom vent"
},
/obj/machinery/camera{
c_tag = "Xenobiology Kill Room";
dir = 4;
network = list("ss13","rd")
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"iZz" = (
/obj/structure/table/wood/poker,
/turf/open/floor/wood,
@@ -52959,6 +52975,9 @@
/obj/structure/table/wood,
/turf/open/floor/wood,
/area/maintenance/bar)
"jxR" = (
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"jyX" = (
/obj/structure/sign/warning/securearea,
/turf/closed/wall/r_wall,
@@ -53112,6 +53131,20 @@
icon_state = "wood-broken7"
},
/area/maintenance/bar)
"kGu" = (
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"kHd" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/science/xenobiology)
"kHN" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"kNw" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -53158,6 +53191,11 @@
dir = 10
},
/area/security/brig)
"lqu" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/science/xenobiology)
"lxM" = (
/obj/structure/sign/poster/random{
pixel_y = -32
@@ -53234,6 +53272,12 @@
},
/turf/open/floor/noslip,
/area/crew_quarters/cryopod)
"mmW" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"mnl" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -53307,18 +53351,6 @@
/obj/structure/falsewall,
/turf/open/floor/plating,
/area/maintenance/bar)
"mHe" = (
/obj/structure/cable,
/obj/structure/cable{
icon_state = "0-4"
},
/obj/machinery/door/poddoor/preopen{
id = "xenobio0";
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/engine,
/area/science/xenobiology)
"mLm" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -53382,26 +53414,11 @@
dir = 8
},
/area/security/brig)
"nvr" = (
/obj/structure/table/reinforced,
/obj/machinery/button/door{
id = "xenobio0";
name = "Containment Blast Doors";
pixel_y = 4;
req_access_txt = "55"
},
/obj/structure/window/reinforced{
dir = 1
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/light,
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"nuC" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"nwx" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
@@ -53511,6 +53528,15 @@
},
/turf/closed/wall,
/area/maintenance/bar)
"ock" = (
/obj/structure/rack,
/obj/item/clothing/shoes/winterboots,
/obj/item/clothing/suit/hooded/wintercoat,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"ody" = (
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/wood{
@@ -53642,6 +53668,12 @@
},
/turf/open/floor/plasteel,
/area/ai_monitored/security/armory)
"plc" = (
/obj/structure/sign/poster/official/safety_internals{
pixel_x = -32
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"plH" = (
/obj/machinery/door/window/brigdoor/security/cell{
dir = 4;
@@ -53832,6 +53864,18 @@
"qWq" = (
/turf/closed/wall,
/area/space)
"rgF" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 9
},
/obj/structure/table,
/obj/item/folder/white,
/obj/item/pen,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"rhJ" = (
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/decal/cleanable/blood/old,
@@ -53892,6 +53936,17 @@
/obj/machinery/power/grounding_rod,
/turf/open/floor/plating/airless,
/area/engine/engineering)
"rPW" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/research{
name = "Kill Chamber";
req_access_txt = "55"
},
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
},
/turf/open/floor/plating,
/area/science/xenobiology)
"rWu" = (
/turf/open/floor/wood{
icon_state = "wood-broken6"
@@ -53952,25 +54007,6 @@
/obj/item/shovel/spade,
/turf/open/floor/plasteel/hydrofloor,
/area/hallway/secondary/service)
"syV" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"sAz" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -96729,7 +96765,7 @@ bDb
bDb
bDb
bDb
bDb
cNW
cNW
cQB
czY
@@ -96982,11 +97018,11 @@ bJN
bRT
bEm
bEm
bJN
bRT
bEm
bEm
bDb
iRn
eeP
bDb
aaa
cNW
cQB
czY
@@ -97225,7 +97261,7 @@ bJJ
bKY
bMi
bNo
bOx
foQ
bPA
bJN
bRU
@@ -97239,12 +97275,12 @@ bJN
bRU
bEm
bEm
bJN
bRU
bEm
bEm
bDb
cNW
jxR
mmW
kHd
aaa
cOT
cQB
czY
cOT
@@ -97496,12 +97532,12 @@ bJN
bRU
bEm
cBz
bJN
bRU
bEm
cBz
bDb
cNW
jxR
mmW
kHd
aaa
cOT
cQB
czY
cOT
@@ -97740,7 +97776,7 @@ bLa
bMi
bNo
bPy
syV
bPA
bJN
bRW
bTb
@@ -97753,11 +97789,11 @@ bJN
bZV
caV
cbS
bJN
bDb
cgl
chs
mHe
bDb
aaa
cNW
cQB
czY
@@ -98010,11 +98046,11 @@ bVi
bRV
bTa
cbR
bVi
bRV
bTa
nvr
bDb
hfn
rPW
bDb
aaa
cNW
cBN
czY
@@ -98267,12 +98303,12 @@ bZa
bMi
bMi
bRZ
bZa
bMi
bMi
bRZ
bDb
cNW
plc
kGu
cyA
kHd
aaf
cOT
cQB
cAa
cOT
@@ -98523,13 +98559,13 @@ bUf
bTc
bRX
bTc
bUf
bTc
bRX
bTc
cbT
kHN
kHN
dkZ
lqu
csk
cko
nuC
czU
czZ
cOT
@@ -98781,12 +98817,12 @@ bZb
bRZ
bMi
bMi
bZb
bRZ
bMi
bMi
bDb
cNW
ock
eiu
rgF
kHd
aaf
cOT
cgm
czY
cOT
@@ -99038,11 +99074,11 @@ bVi
bZW
bTd
bUg
bVi
fmO
bTd
bUg
bDb
bDb
bDb
bDb
aaa
cNW
cgm
czY
@@ -99295,11 +99331,11 @@ bJN
bZX
caW
cbU
bJN
bWn
bXg
bYh
bDb
aaf
aaf
aaa
aaa
cNW
cgm
czY
@@ -99552,12 +99588,12 @@ bJN
bEm
bEm
bRU
bJN
bEm
bEm
bRU
bDb
cNW
aaf
aaa
aaa
aaa
cOT
cgm
czY
cOT
@@ -99809,12 +99845,12 @@ bJN
bEm
bEm
bRU
bJN
bEm
bEm
bRU
bDb
cNW
aaf
aaa
aaa
aaa
cOT
cgm
czY
cOT
@@ -100066,12 +100102,12 @@ bJN
bEm
bEm
bUi
bJN
bEm
bEm
bUi
bDb
cNW
aaf
aaf
aaa
aaa
cOT
cgm
czY
cOT
@@ -100324,10 +100360,10 @@ bDb
bDb
bDb
bDb
bDb
bDb
bDb
bDb
cNW
cNW
cNW
cNW
cNW
czX
cAc
@@ -67542,9 +67542,7 @@
name = "xenobiology camera";
network = list("ss13","xeno","rd")
},
/turf/open/floor/plasteel/vault{
dir = 5
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"cNj" = (
/obj/structure/closet/crate{
@@ -69718,6 +69716,7 @@
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/general/hidden,
/turf/open/floor/plating,
/area/science/xenobiology)
"cSg" = (
@@ -69728,7 +69727,7 @@
icon_state = "2-8"
},
/obj/machinery/door/airlock/research/glass{
name = "Xenobiology Isolation Pin";
name = "Xenobiology Kill Room";
req_access_txt = "47"
},
/obj/effect/turf_decal/stripes/line{
@@ -70518,19 +70517,13 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTR" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
dir = 1;
min_temperature = 80;
on = 1;
target_temperature = 80
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTS" = (
@@ -72226,6 +72219,9 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cXm" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 8
},
/obj/machinery/status_display{
pixel_x = 32
},
@@ -100786,6 +100782,12 @@
dir = 8
},
/area/science/misc_lab)
"gPz" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 4
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"gQS" = (
/turf/open/floor/plasteel/white/side{
dir = 9
@@ -100927,10 +100929,21 @@
"jKb" = (
/turf/open/space,
/area/space/nearstation)
"jRX" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
dir = 2;
external_pressure_bound = 120;
name = "server vent"
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"kwx" = (
/obj/effect/turf_decal/loading_area,
/turf/open/floor/plasteel/whitepurple/corner,
/area/science/research)
"kwP" = (
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"kyo" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -101036,6 +101049,21 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/circuit/green,
/area/science/research/abandoned)
"npb" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 9
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"nGW" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 2;
external_pressure_bound = 140;
name = "killroom vent";
pressure_checks = 0
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"nJG" = (
/obj/structure/lattice,
/turf/open/space/basic,
@@ -101070,6 +101098,9 @@
dir = 1
},
/area/science/circuit)
"pqQ" = (
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"psi" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/bodycontainer/morgue{
@@ -101191,12 +101222,11 @@
dir = 5
},
/area/medical/morgue)
"vyI" = (
/obj/machinery/status_display{
pixel_x = 32
"vOd" = (
/obj/machinery/atmospherics/pipe/manifold/general/hidden{
dir = 8
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/circuit/green,
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"wei" = (
/obj/effect/turf_decal/stripes/line,
@@ -132544,9 +132574,9 @@ cHA
cjp
cKl
cLI
cNd
cNd
cNd
kwP
kwP
kwP
cNc
cTQ
cVI
@@ -132801,9 +132831,9 @@ cHB
cjp
cKj
cLI
cNd
cNd
cNd
kwP
nGW
vOd
cSf
cTR
cVP
@@ -133059,8 +133089,8 @@ caE
cKm
cLI
cNi
cNd
cNd
pqQ
gPz
cSg
cTS
cVQ
@@ -133315,9 +133345,9 @@ cHB
cjp
cKk
cLI
cNd
cNd
cNd
kwP
jRX
npb
cSh
cTT
cVR
@@ -133572,9 +133602,9 @@ cHA
ceb
cKk
cLI
cNd
cNd
cNd
kwP
kwP
kwP
cNc
cTU
cVS
@@ -133837,7 +133867,7 @@ cTV
cVT
cXm
cZb
vyI
cXm
dcu
ddV
cMY
+116 -58
View File
@@ -35104,6 +35104,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"bvU" = (
@@ -40974,8 +40977,11 @@
/turf/open/floor/plasteel/bar,
/area/crew_quarters/bar)
"bIv" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 10
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"bIw" = (
/obj/machinery/light,
/obj/machinery/camera{
@@ -71575,7 +71581,7 @@
"cTT" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"cUH" = (
/obj/structure/table/optable,
/turf/open/floor/plasteel/white,
@@ -72192,6 +72198,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 6
},
/obj/machinery/light/small{
dir = 1
},
@@ -72201,14 +72210,15 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"daS" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating{
icon_state = "platingdmg2"
},
/area/maintenance/department/science/xenobiology)
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"daW" = (
/obj/machinery/button/door{
id = "engpa";
@@ -72343,10 +72353,8 @@
"dbv" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/light/small,
/turf/open/floor/plating{
icon_state = "platingdmg2"
},
/area/maintenance/department/science/xenobiology)
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"dbE" = (
/obj/machinery/plantgenes,
/obj/effect/turf_decal/stripes/line{
@@ -72753,18 +72761,15 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/computer/camera_advanced/xenobio,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
dir = 9
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
@@ -72788,6 +72793,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
/obj/machinery/computer/camera_advanced/xenobio,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
@@ -72857,6 +72863,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/obj/structure/chair/comfy/black{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
@@ -72871,6 +72880,9 @@
/area/science/xenobiology)
"dcx" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/chair/comfy/black{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 6
},
@@ -72948,13 +72960,18 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcJ" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/extinguisher{
pixel_x = 4;
pixel_y = 3
},
/obj/item/extinguisher,
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcK" = (
@@ -73380,8 +73397,11 @@
},
/obj/structure/chair,
/obj/item/cigbutt,
/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"ddy" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
@@ -73389,8 +73409,9 @@
/area/maintenance/department/science/xenobiology)
"ddz" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plating,
/area/science/xenobiology)
"ddA" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor,
@@ -73400,15 +73421,15 @@
opacity = 0;
req_access_txt = "55"
},
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ddC" = (
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/structure/disposaloutlet,
/turf/open/floor/plating/airless,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"ddE" = (
/obj/effect/landmark/start/cook,
/obj/machinery/holopad,
@@ -74831,6 +74852,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
@@ -74841,7 +74865,7 @@
dir = 4
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"dmr" = (
/obj/machinery/door/airlock/research{
glass = 1;
@@ -74853,7 +74877,7 @@
dir = 8
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
/area/science/xenobiology)
"dmD" = (
/obj/structure/displaycase/trophy,
/turf/open/floor/wood,
@@ -76142,6 +76166,15 @@
},
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"dYv" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1;
external_pressure_bound = 140;
name = "server vent";
pressure_checks = 0
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"dZD" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -76257,6 +76290,9 @@
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
/area/engine/engineering)
"ffK" = (
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"fjy" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -76303,6 +76339,14 @@
/obj/machinery/libraryscanner,
/turf/open/floor/plasteel/white,
/area/science/circuit)
"gha" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
dir = 1;
external_pressure_bound = 120;
name = "server vent"
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"gix" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable/yellow{
@@ -76455,6 +76499,15 @@
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
"jwP" = (
/obj/machinery/camera{
c_tag = "Xenobiology Lab - Kill Chamber";
dir = 1;
network = list("ss13","rd","xeno");
start_active = 1
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"jwW" = (
/turf/closed/wall/mineral/plastitanium,
/area/crew_quarters/fitness/recreation)
@@ -76485,10 +76538,6 @@
},
/turf/open/floor/plating,
/area/maintenance/solars/port/aft)
"jzw" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"jFx" = (
/obj/machinery/door/airlock/external{
req_access_txt = "13"
@@ -76905,6 +76954,15 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard)
"pPA" = (
/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
dir = 1;
name = "euthanization chamber freezer";
on = 1;
target_temperature = 80
},
/turf/open/floor/plating,
/area/science/xenobiology)
"pSX" = (
/obj/machinery/door/airlock/external{
name = "Auxiliary Escape Airlock"
@@ -110259,7 +110317,7 @@ cRi
cRi
cRi
daP
cTA
pPA
dlV
aaa
aaa
@@ -110516,10 +110574,10 @@ daF
daJ
cRi
bvT
dlV
dlV
dlV
dlV
cRi
cRi
cRi
cRi
aaa
aai
aaa
@@ -110773,10 +110831,10 @@ cSn
cSn
cRi
dmq
dlV
ddj
ddj
dlV
cRi
ffK
ffK
cRi
aaf
aag
aaa
@@ -111031,9 +111089,9 @@ cSn
cRi
ddx
ddz
ddj
ddj
jzw
dYv
ffK
cRe
aaa
aaa
aaa
@@ -111545,9 +111603,9 @@ daK
cRi
bIv
ddz
ddj
ddj
jzw
gha
ffK
cRe
aaa
aaf
aaa
@@ -111801,10 +111859,10 @@ cSn
daN
cRi
dmr
dlV
ddj
ddj
dlV
cRi
ffK
jwP
cRi
aaa
aag
aaa
@@ -112058,10 +112116,10 @@ daI
daM
cRi
cTA
dlV
dlV
dlV
dlV
cRi
cRi
cRi
cRi
aaf
aag
aaa
@@ -12686,7 +12686,6 @@
/area/storage/primary)
"aGk" = (
/obj/machinery/vending/boozeomat{
products = list(/obj/item/reagent_containers/food/drinks/bottle/rum = 1, /obj/item/reagent_containers/food/drinks/bottle/wine = 1, /obj/item/reagent_containers/food/drinks/ale = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 6, /obj/item/reagent_containers/food/drinks/ice = 1, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 4);
req_access_txt = "20"
},
/turf/open/floor/plasteel/vault{
@@ -27811,6 +27810,9 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"brQ" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 8
},
/obj/machinery/camera{
c_tag = "Xenobiology Port";
dir = 8;
@@ -28602,11 +28604,11 @@
/turf/open/floor/plating,
/area/science/xenobiology)
"btD" = (
/turf/open/floor/plating,
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"btE" = (
/obj/effect/decal/remains/xeno,
/turf/open/floor/plating,
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"btF" = (
/obj/structure/chair{
@@ -29227,7 +29229,12 @@
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plating,
/obj/machinery/camera{
c_tag = "Xenobiology Kill Room";
dir = 8;
network = list("ss13","rd")
},
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"bva" = (
/turf/closed/wall,
@@ -31294,22 +31301,16 @@
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bzi" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
/obj/item/extinguisher{
pixel_x = 4;
pixel_y = 3
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
},
/turf/open/floor/plasteel,
/obj/structure/table/glass,
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bzj" = (
/obj/structure/reagent_dispensers/watertank,
/obj/machinery/requests_console{
department = "Science";
departmentType = 2;
@@ -31317,7 +31318,6 @@
pixel_x = 32;
receive_ore_updates = 1
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bzk" = (
@@ -33793,8 +33793,7 @@
dir = 1
},
/obj/machinery/vending/wallmed{
pixel_y = 28;
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/spray/medical/sterilizer = 1)
pixel_y = 28
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/landmark/blobstart,
@@ -35454,8 +35453,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/vending/wallmed{
pixel_y = 28;
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/spray/medical/sterilizer = 1)
pixel_y = 28
},
/turf/open/floor/plasteel/whiteblue/side{
dir = 1
@@ -36332,8 +36330,7 @@
/area/medical/medbay/central)
"bKw" = (
/obj/machinery/vending/wallmed{
pixel_y = 28;
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/spray/medical/sterilizer = 1)
pixel_y = 28
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -49831,7 +49828,6 @@
/area/maintenance/department/engine)
"cBk" = (
/obj/machinery/vending/boozeomat{
products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, /obj/item/reagent_containers/food/drinks/bottle/cream = 1, /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/reagent_containers/food/drinks/ice = 3, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, /obj/item/reagent_containers/food/drinks/flask = 1);
req_access_txt = "0"
},
/turf/closed/wall,
@@ -50435,6 +50431,12 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"uPm" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"vpU" = (
/turf/open/floor/plasteel/darkpurple,
/area/crew_quarters/cryopod)
@@ -93281,7 +93283,7 @@ bkE
aht
bnd
boh
bpn
uPm
bqx
brQ
btr
File diff suppressed because it is too large Load Diff
+142 -112
View File
@@ -112,6 +112,30 @@
/obj/structure/cable,
/turf/open/space,
/area/solar/starboard/fore)
"aap" = (
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"aaq" = (
/obj/machinery/light/small{
dir = 1
},
/obj/machinery/camera{
c_tag = "Xenobiology - Killroom Chamber";
dir = 2;
name = "xenobiology camera";
network = list("ss13","xeno","rd")
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"aar" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 2;
external_pressure_bound = 140;
name = "killroom vent";
pressure_checks = 0
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"aas" = (
/obj/docking_port/stationary/random{
id = "pod_lavaland1";
@@ -131,6 +155,35 @@
/obj/effect/landmark/xeno_spawn,
/turf/open/space,
/area/solar/starboard/fore)
"aav" = (
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"aaw" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
dir = 2;
external_pressure_bound = 120;
name = "server vent"
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"aax" = (
/obj/machinery/atmospherics/pipe/manifold/general/hidden{
dir = 8
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"aay" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 4
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"aaz" = (
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 9
},
/turf/open/floor/plasteel/vault/killroom,
/area/science/xenobiology)
"aaA" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/pod_1)
@@ -149,6 +202,52 @@
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/solar/starboard/fore)
"aaF" = (
/obj/structure/cable/white{
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/general/hidden,
/turf/open/floor/plating,
/area/science/xenobiology)
"aaG" = (
/obj/structure/cable/white{
icon_state = "2-4"
},
/obj/structure/cable/white{
icon_state = "2-8"
},
/obj/machinery/door/airlock/research/glass{
name = "Xenobiology Kill Room";
req_access_txt = "47"
},
/obj/effect/turf_decal/stripes/line{
dir = 2
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"aaH" = (
/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
dir = 1;
min_temperature = 80;
on = 1;
target_temperature = 80
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"aaI" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 8
},
/obj/machinery/status_display{
pixel_x = 32
},
/turf/open/floor/circuit/green,
/area/science/xenobiology)
"aaO" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -1312,7 +1411,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"afV" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
@@ -26364,7 +26463,7 @@
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/box,
/obj/machinery/rnd/protolathe/department/security,
/obj/machinery/rnd/production/techfab/department/security,
/turf/open/floor/plasteel/red/side{
dir = 1
},
@@ -35704,7 +35803,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/vault{
dir = 5
},
@@ -45268,7 +45367,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
@@ -46320,7 +46419,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/vault{
dir = 5
},
@@ -47105,7 +47204,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bXz" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/structure/cable/white{
icon_state = "4-8"
},
@@ -53410,7 +53509,7 @@
/turf/open/floor/plasteel,
/area/security/courtroom)
"cjY" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/neutral/side{
dir = 8
},
@@ -58216,7 +58315,7 @@
/obj/structure/cable/white{
icon_state = "1-8"
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -60886,7 +60985,7 @@
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
"czU" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/neutral,
/area/ai_monitored/storage/eva)
"czV" = (
@@ -61257,7 +61356,7 @@
/turf/open/floor/plating,
/area/engine/engineering)
"cAL" = (
/obj/machinery/rnd/protolathe/department/engineering,
/obj/machinery/rnd/production/protolathe/department/engineering,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -67532,20 +67631,6 @@
dir = 5
},
/area/science/xenobiology)
"cNi" = (
/obj/machinery/light/small{
dir = 1
},
/obj/machinery/camera{
c_tag = "Xenobiology - Killroom Chamber";
dir = 2;
name = "xenobiology camera";
network = list("ss13","xeno","rd")
},
/turf/open/floor/plasteel/vault{
dir = 5
},
/area/science/xenobiology)
"cNj" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
@@ -69232,8 +69317,8 @@
/obj/machinery/light{
dir = 8
},
/obj/machinery/rnd/protolathe/department/medical,
/obj/effect/turf_decal/stripes/box,
/obj/machinery/rnd/production/techfab/department/medical,
/turf/open/floor/plasteel/neutral/side{
dir = 4
},
@@ -69713,32 +69798,6 @@
},
/turf/open/floor/plating,
/area/science/xenobiology)
"cSf" = (
/obj/structure/cable/white{
icon_state = "0-4"
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/science/xenobiology)
"cSg" = (
/obj/structure/cable/white{
icon_state = "2-4"
},
/obj/structure/cable/white{
icon_state = "2-8"
},
/obj/machinery/door/airlock/research/glass{
name = "Xenobiology Isolation Pin";
req_access_txt = "47"
},
/obj/effect/turf_decal/stripes/line{
dir = 2
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSh" = (
/obj/structure/cable/white{
icon_state = "0-8"
@@ -70517,22 +70576,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTR" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTS" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -72225,12 +72268,6 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cXm" = (
/obj/machinery/status_display{
pixel_x = 32
},
/turf/open/floor/circuit/green,
/area/science/xenobiology)
"cXn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/camera{
@@ -74856,7 +74893,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,
/area/science/lab)
"dcL" = (
@@ -75510,7 +75547,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,
/area/science/lab)
"dek" = (
@@ -77248,7 +77285,7 @@
/turf/open/floor/plasteel/neutral,
/area/science/research)
"dhZ" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -77486,7 +77523,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/whiteblue,
/area/medical/medbay/central)
@@ -77818,7 +77855,7 @@
/area/science/circuit)
"djq" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/rnd/protolathe/department/science,
/obj/machinery/rnd/production/protolathe/department/science,
/obj/machinery/light{
dir = 1
},
@@ -88762,7 +88799,7 @@
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"dGe" = (
/obj/machinery/rnd/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter,
/obj/item/reagent_containers/glass/beaker/sulphuric,
/obj/machinery/airalarm{
dir = 8;
@@ -89819,7 +89856,7 @@
icon_state = "1-2"
},
/obj/effect/landmark/blobstart,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -91509,7 +91546,7 @@
/turf/open/floor/plating/airless,
/area/science/test_area)
"dLF" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/airless,
/area/science/test_area)
@@ -93879,7 +93916,7 @@
/turf/open/floor/plasteel/neutral,
/area/hallway/primary/aft)
"dQR" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/neutral,
/area/hallway/primary/aft)
"dQU" = (
@@ -100613,7 +100650,7 @@
/turf/open/floor/plasteel/caution,
/area/engine/engineering)
"ehw" = (
/obj/machinery/rnd/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -100634,8 +100671,8 @@
name = "Station Intercom";
pixel_x = -26
},
/obj/machinery/rnd/protolathe/department/service,
/obj/effect/turf_decal/stripes/box,
/obj/machinery/rnd/production/techfab/department/service,
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
@@ -100665,7 +100702,7 @@
/area/hallway/secondary/service)
"ehJ" = (
/obj/effect/turf_decal/stripes/box,
/obj/machinery/rnd/protolathe/department/cargo,
/obj/machinery/rnd/production/techfab/department/cargo,
/turf/open/floor/plasteel/brown,
/area/quartermaster/office)
"ehK" = (
@@ -101123,13 +101160,6 @@
"saw" = (
/turf/closed/wall,
/area/science/circuit)
"shc" = (
/obj/machinery/status_display{
pixel_x = 32
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/circuit/green,
/area/science/xenobiology)
"tdp" = (
/obj/effect/turf_decal/stripes/line{
dir = 2
@@ -132544,9 +132574,9 @@ cHA
cjp
cKl
cLI
cNd
cNd
cNd
aap
aap
aap
cNc
cTQ
cVI
@@ -132801,11 +132831,11 @@ cHB
cjp
cKj
cLI
cNd
cNd
cNd
cSf
cTR
aap
aar
aax
aaF
aaH
cVP
cXi
cYX
@@ -133058,10 +133088,10 @@ cHD
caE
cKm
cLI
cNi
cNd
cNd
cSg
aaq
aav
aay
aaG
cTS
cVQ
cXj
@@ -133315,9 +133345,9 @@ cHB
cjp
cKk
cLI
cNd
cNd
cNd
aap
aaw
aaz
cSh
cTT
cVR
@@ -133572,9 +133602,9 @@ cHA
ceb
cKk
cLI
cNd
cNd
cNd
aap
aap
aap
cNc
cTU
cVS
@@ -133835,9 +133865,9 @@ cMY
cMY
cTV
cVT
cXm
aaI
cZb
shc
aaI
dcu
ddV
cMY
+279 -221
View File
@@ -2,10 +2,48 @@
"aaa" = (
/turf/open/space/basic,
/area/space)
"aab" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/computer/camera_advanced/xenobio,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"aac" = (
/obj/effect/landmark/carpspawn,
/turf/open/space,
/area/space)
"aad" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
/obj/machinery/computer/camera_advanced/xenobio,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"aae" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/obj/structure/chair/comfy/black{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"aaf" = (
/obj/structure/lattice,
/turf/open/space,
@@ -298,9 +336,46 @@
},
/turf/open/floor/plasteel/floorgrime,
/area/security/prison)
"aaU" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/chair/comfy/black{
dir = 1
},
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"aaV" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/pod_2)
"aaW" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/extinguisher{
pixel_x = 4;
pixel_y = 3
},
/obj/item/extinguisher,
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"aaX" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 6
},
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"aaY" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -335,6 +410,15 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/security/prison)
"abd" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"abe" = (
/turf/closed/wall,
/area/security/prison)
@@ -754,6 +838,24 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/security/prison)
"acd" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
opacity = 0;
req_access_txt = "55"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ace" = (
/obj/machinery/vending/sustenance{
desc = "A vending machine normally reserved for work camps.";
@@ -2007,6 +2109,17 @@
},
/turf/open/floor/plating,
/area/crew_quarters/fitness/recreation)
"aeD" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/structure/chair,
/obj/item/cigbutt,
/obj/machinery/atmospherics/pipe/manifold/cyan/visible{
dir = 1
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"aeE" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -2733,6 +2846,15 @@
dir = 1
},
/area/security/prison)
"afQ" = (
/obj/structure/disposalpipe/segment{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"afR" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -3700,6 +3822,12 @@
icon_state = "platingdmg1"
},
/area/maintenance/fore)
"ahT" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 10
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ahU" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/table,
@@ -4296,6 +4424,18 @@
/obj/item/restraints/handcuffs/cable/pink,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"ajk" = (
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
opacity = 0;
req_access_txt = "55"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"ajl" = (
/obj/item/soap/deluxe,
/obj/item/storage/secure/safe{
@@ -4384,6 +4524,15 @@
dir = 4
},
/area/security/warden)
"aju" = (
/obj/machinery/atmospherics/components/unary/thermomachine/freezer{
dir = 1;
name = "euthanization chamber freezer";
on = 1;
target_temperature = 80
},
/turf/open/floor/plating,
/area/science/xenobiology)
"ajv" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -5314,6 +5463,11 @@
"alq" = (
/turf/closed/wall,
/area/maintenance/starboard)
"alr" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plating,
/area/science/xenobiology)
"als" = (
/obj/machinery/light{
dir = 8
@@ -6120,6 +6274,17 @@
icon_state = "platingdmg2"
},
/area/maintenance/port)
"amV" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
opacity = 0;
req_access_txt = "55"
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"amW" = (
/obj/structure/table/reinforced,
/obj/item/folder,
@@ -6365,6 +6530,9 @@
/obj/item/paper,
/turf/open/floor/plasteel,
/area/security/main)
"anz" = (
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"anA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
@@ -6801,6 +6969,15 @@
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/security/warden)
"aov" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1;
external_pressure_bound = 140;
name = "server vent";
pressure_checks = 0
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"aow" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/yellow{
@@ -7485,6 +7662,10 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"apP" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"apQ" = (
/obj/structure/reagent_dispensers/peppertank{
pixel_x = 32
@@ -7537,6 +7718,14 @@
/obj/item/device/assembly/flash/handheld,
/turf/open/floor/plasteel,
/area/security/main)
"apX" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
dir = 1;
external_pressure_bound = 120;
name = "server vent"
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"apY" = (
/obj/structure/table,
/obj/item/folder/red,
@@ -7580,6 +7769,11 @@
/obj/item/clothing/head/soft/red,
/turf/open/floor/plasteel/vault,
/area/crew_quarters/fitness/recreation)
"aqe" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/light/small,
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"aqf" = (
/obj/structure/closet/lasertag/blue,
/turf/open/floor/plasteel/vault,
@@ -8038,6 +8232,15 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
"arh" = (
/obj/machinery/camera{
c_tag = "Xenobiology Lab - Kill Chamber";
dir = 1;
network = list("ss13","rd","xeno");
start_active = 1
},
/turf/open/floor/circuit/killroom,
/area/science/xenobiology)
"ari" = (
/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -8230,6 +8433,10 @@
dir = 4
},
/area/crew_quarters/dorms)
"arF" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall/r_wall,
/area/science/xenobiology)
"arG" = (
/obj/structure/closet,
/obj/item/storage/box/lights/mixed,
@@ -8884,7 +9091,7 @@
/turf/open/floor/plasteel/red/side,
/area/security/main)
"asL" = (
/obj/machinery/rnd/protolathe/department/security,
/obj/machinery/rnd/production/techfab/department/security,
/turf/open/floor/plasteel/red/side{
dir = 6
},
@@ -9296,6 +9503,13 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
"atC" = (
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/structure/disposaloutlet,
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"atD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -13152,7 +13366,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/obj/machinery/rnd/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/engine/engineering)
@@ -13161,7 +13375,7 @@
/obj/structure/cable/yellow{
icon_state = "1-8"
},
/obj/machinery/rnd/protolathe/department/engineering,
/obj/machinery/rnd/production/protolathe/department/engineering,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/engine/engineering)
@@ -15317,7 +15531,7 @@
},
/area/hallway/primary/fore)
"aGo" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/red/corner{
dir = 2
},
@@ -18754,7 +18968,7 @@
/turf/open/floor/plasteel/neutral/side,
/area/security/courtroom)
"aOj" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/neutral/side,
/area/security/courtroom)
"aOk" = (
@@ -21494,7 +21708,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/rnd/protolathe/department/cargo,
/obj/machinery/rnd/production/techfab/department/cargo,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aUj" = (
@@ -29499,7 +29713,7 @@
},
/area/bridge)
"bkF" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
@@ -31939,7 +32153,7 @@
icon_state = "4-8"
},
/obj/machinery/holopad,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat/foyer)
"bpL" = (
@@ -33370,7 +33584,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bsm" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
@@ -35100,12 +35314,6 @@
dir = 5
},
/area/hallway/primary/port)
"bvT" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"bvU" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -36475,7 +36683,7 @@
/area/ai_monitored/storage/satellite)
"byP" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/caution{
dir = 8
},
@@ -40762,7 +40970,7 @@
"bIe" = (
/obj/structure/table,
/obj/item/hand_tele,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/airalarm{
dir = 4;
pixel_x = -23
@@ -40973,9 +41181,6 @@
},
/turf/open/floor/plasteel/bar,
/area/crew_quarters/bar)
"bIv" = (
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
"bIw" = (
/obj/machinery/light,
/obj/machinery/camera{
@@ -41570,7 +41775,7 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/neutral/side{
dir = 2
},
@@ -41883,7 +42088,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bKy" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
@@ -50925,7 +51130,7 @@
},
/area/medical/storage)
"cdv" = (
/obj/machinery/rnd/protolathe/department/medical,
/obj/machinery/rnd/production/techfab/department/medical,
/turf/open/floor/plasteel/whiteblue/side{
dir = 5
},
@@ -53408,7 +53613,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/rnd/protolathe/department/science,
/obj/machinery/rnd/production/protolathe/department/science,
/turf/open/floor/plasteel,
/area/science/lab)
"ciE" = (
@@ -53561,7 +53766,7 @@
/turf/open/floor/engine,
/area/science/explab)
"ciT" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
@@ -54044,7 +54249,7 @@
"cjZ" = (
/obj/item/reagent_containers/glass/beaker/sulphuric,
/obj/effect/turf_decal/stripes/line,
/obj/machinery/rnd/circuit_imprinter/department/science,
/obj/machinery/rnd/production/circuit_imprinter/department/science,
/turf/open/floor/plasteel,
/area/science/lab)
"cka" = (
@@ -56179,7 +56384,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/rnd/protolathe/department/service,
/obj/machinery/rnd/production/techfab/department/service,
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"cox" = (
@@ -63636,7 +63841,7 @@
/turf/open/floor/plating/airless,
/area/science/test_area)
"cDx" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plating/airless,
/area/science/test_area)
"cDy" = (
@@ -65507,7 +65712,7 @@
/obj/machinery/light{
dir = 8
},
/obj/machinery/rnd/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
@@ -69856,7 +70061,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -71572,10 +71777,6 @@
/obj/effect/landmark/xmastree,
/turf/open/floor/wood,
/area/crew_quarters/bar)
"cTT" = (
/obj/structure/disposalpipe/segment,
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
"cUH" = (
/obj/structure/table/optable,
/turf/open/floor/plasteel/white,
@@ -72124,7 +72325,7 @@
/turf/open/floor/engine,
/area/science/xenobiology)
"daH" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/engine,
/area/science/xenobiology)
"daI" = (
@@ -72188,27 +72389,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"daP" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"daQ" = (
/obj/structure/disposalpipe/segment{
dir = 10
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
"daS" = (
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating{
icon_state = "platingdmg2"
},
/area/maintenance/department/science/xenobiology)
"daW" = (
/obj/machinery/button/door{
id = "engpa";
@@ -72340,13 +72520,6 @@
},
/turf/open/floor/engine,
/area/science/xenobiology)
"dbv" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/light/small,
/turf/open/floor/plating{
icon_state = "platingdmg2"
},
/area/maintenance/department/science/xenobiology)
"dbE" = (
/obj/machinery/plantgenes,
/obj/effect/turf_decal/stripes/line{
@@ -72752,22 +72925,6 @@
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcm" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dcn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -72784,18 +72941,6 @@
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dco" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dcp" = (
/obj/structure/cable/yellow{
icon_state = "1-8"
@@ -72853,15 +72998,6 @@
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dcw" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -72869,13 +73005,6 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dcx" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dcy" = (
/obj/machinery/holopad,
/turf/open/floor/plasteel/white,
@@ -72947,16 +73076,6 @@
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcJ" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcK" = (
/obj/machinery/disposal/bin,
/obj/structure/sign/warning/deathsposal{
@@ -73374,41 +73493,11 @@
},
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"ddx" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/structure/chair,
/obj/item/cigbutt,
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
"ddy" = (
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
/area/maintenance/department/science/xenobiology)
"ddz" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
"ddA" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
opacity = 0;
req_access_txt = "55"
},
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
"ddC" = (
/obj/structure/disposalpipe/trunk{
dir = 1
},
/obj/structure/disposaloutlet,
/turf/open/floor/plating/airless,
/area/maintenance/department/science/xenobiology)
"ddE" = (
/obj/effect/landmark/start/cook,
/obj/machinery/holopad,
@@ -74827,33 +74916,6 @@
"dlV" = (
/turf/closed/wall/r_wall,
/area/maintenance/department/science/xenobiology)
"dmq" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
opacity = 0;
req_access_txt = "55"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
"dmr" = (
/obj/machinery/door/airlock/research{
glass = 1;
name = "Slime Euthanization Chamber";
opacity = 0;
req_access_txt = "55"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/maintenance/department/science/xenobiology)
"dmD" = (
/obj/structure/displaycase/trophy,
/turf/open/floor/wood,
@@ -76455,10 +76517,6 @@
},
/turf/open/floor/plating/airless,
/area/engine/engineering)
"jot" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"jwW" = (
/turf/closed/wall/mineral/plastitanium,
/area/crew_quarters/fitness/recreation)
@@ -77193,7 +77251,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/rnd/protolathe/department/science,
/obj/machinery/rnd/production/protolathe/department/science,
/turf/open/floor/plasteel/white,
/area/science/circuit)
"uYk" = (
@@ -110258,8 +110316,8 @@ cRi
cRi
cRi
cRi
daP
cTA
aaX
aju
dlV
aaa
aaa
@@ -110515,11 +110573,11 @@ cSn
daF
daJ
cRi
bvT
dlV
dlV
dlV
dlV
abd
cRi
cRi
cRi
cRi
aaa
aai
aaa
@@ -110772,11 +110830,11 @@ cSn
cSn
cSn
cRi
dmq
dlV
ddj
ddj
dlV
acd
cRi
anz
anz
cRi
aaf
aag
aaa
@@ -111003,8 +111061,8 @@ aaa
aaf
cRe
cRS
dcm
dcv
aab
aae
cRC
dcG
cSe
@@ -111029,11 +111087,11 @@ daB
daG
cSn
cRi
ddx
ddz
ddj
ddj
jot
aeD
alr
aov
anz
cRe
aaa
aaa
aaa
@@ -111286,12 +111344,12 @@ cSn
cSn
daL
cRi
daQ
ddA
daS
dbv
cTT
ddC
afQ
amV
apP
aqe
arF
atC
aaf
aaa
aaa
@@ -111517,8 +111575,8 @@ aaa
aaf
cRe
cRS
dco
dcx
aad
aaU
dcA
dcI
cRR
@@ -111543,11 +111601,11 @@ cSn
daH
daK
cRi
bIv
ddz
ddj
ddj
jot
ahT
alr
apX
anz
cRe
aaa
aaf
aaa
@@ -111777,7 +111835,7 @@ dcb
cZa
dDI
dcB
dcJ
aaW
cRa
cSm
cSw
@@ -111800,11 +111858,11 @@ cSn
cSn
daN
cRi
dmr
dlV
ddj
ddj
dlV
ajk
cRi
anz
arh
cRi
aaa
aag
aaa
@@ -112058,10 +112116,10 @@ daI
daM
cRi
cTA
dlV
dlV
dlV
dlV
cRi
cRi
cRi
cRi
aaf
aag
aaa
+1 -1
View File
@@ -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)
+49 -47
View File
@@ -1455,7 +1455,7 @@
/area/ai_monitored/turret_protected/aisat_interior)
"afy" = (
/obj/effect/landmark/start/cyborg,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"afz" = (
@@ -7515,7 +7515,7 @@
},
/area/bridge)
"atU" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/darkblue/side{
dir = 1
},
@@ -9537,7 +9537,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"ayQ" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"ayR" = (
@@ -12686,7 +12686,6 @@
/area/storage/primary)
"aGk" = (
/obj/machinery/vending/boozeomat{
products = list(/obj/item/reagent_containers/food/drinks/bottle/rum = 1, /obj/item/reagent_containers/food/drinks/bottle/wine = 1, /obj/item/reagent_containers/food/drinks/ale = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 6, /obj/item/reagent_containers/food/drinks/ice = 1, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 4);
req_access_txt = "20"
},
/turf/open/floor/plasteel/vault{
@@ -16445,7 +16444,7 @@
/area/storage/eva)
"aPM" = (
/obj/structure/table,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel/darkblue/side{
dir = 10
@@ -25241,7 +25240,7 @@
/area/science/server)
"blP" = (
/obj/effect/landmark/event_spawn,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/light{
dir = 8
},
@@ -25812,7 +25811,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bnq" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
@@ -25991,7 +25990,7 @@
/turf/open/floor/plasteel,
/area/science/research/lobby)
"bnO" = (
/obj/machinery/rnd/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter,
/obj/machinery/light{
dir = 8
},
@@ -27811,6 +27810,9 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"brQ" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 8
},
/obj/machinery/camera{
c_tag = "Xenobiology Port";
dir = 8;
@@ -28602,11 +28604,11 @@
/turf/open/floor/plating,
/area/science/xenobiology)
"btD" = (
/turf/open/floor/plating,
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"btE" = (
/obj/effect/decal/remains/xeno,
/turf/open/floor/plating,
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"btF" = (
/obj/structure/chair{
@@ -28901,7 +28903,7 @@
/area/science/lab)
"bur" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/rnd/protolathe/department/science,
/obj/machinery/rnd/production/protolathe/department/science,
/turf/open/floor/plasteel,
/area/science/lab)
"bus" = (
@@ -29227,7 +29229,12 @@
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plating,
/obj/machinery/camera{
c_tag = "Xenobiology Kill Room";
dir = 8;
network = list("ss13","rd")
},
/turf/open/floor/plating/airless,
/area/science/xenobiology)
"bva" = (
/turf/closed/wall,
@@ -29419,7 +29426,7 @@
"bvy" = (
/obj/item/reagent_containers/glass/beaker/sulphuric,
/obj/effect/turf_decal/delivery,
/obj/machinery/rnd/circuit_imprinter/department/science,
/obj/machinery/rnd/production/circuit_imprinter/department/science,
/turf/open/floor/plasteel,
/area/science/lab)
"bvz" = (
@@ -31294,22 +31301,16 @@
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bzi" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
/obj/item/extinguisher{
pixel_x = 4;
pixel_y = 3
},
/obj/structure/table/glass,
/obj/item/extinguisher,
/obj/item/extinguisher{
pixel_x = 2;
pixel_y = 2
},
/obj/item/extinguisher{
pixel_x = 5;
pixel_y = 5
},
/turf/open/floor/plasteel,
/obj/structure/table/glass,
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bzj" = (
/obj/structure/reagent_dispensers/watertank,
/obj/machinery/requests_console{
department = "Science";
departmentType = 2;
@@ -31317,7 +31318,6 @@
pixel_x = 32;
receive_ore_updates = 1
},
/obj/structure/reagent_dispensers/watertank/high,
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bzk" = (
@@ -33628,7 +33628,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
/obj/machinery/rnd/protolathe/department/medical,
/obj/machinery/rnd/production/techfab/department/medical,
/turf/open/floor/plasteel/whiteblue/side{
dir = 1
},
@@ -33793,8 +33793,7 @@
dir = 1
},
/obj/machinery/vending/wallmed{
pixel_y = 28;
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/spray/medical/sterilizer = 1)
pixel_y = 28
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/landmark/blobstart,
@@ -35454,8 +35453,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/vending/wallmed{
pixel_y = 28;
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/spray/medical/sterilizer = 1)
pixel_y = 28
},
/turf/open/floor/plasteel/whiteblue/side{
dir = 1
@@ -36332,8 +36330,7 @@
/area/medical/medbay/central)
"bKw" = (
/obj/machinery/vending/wallmed{
pixel_y = 28;
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 1, /obj/item/reagent_containers/pill/patch/silver_sulf = 1, /obj/item/reagent_containers/spray/medical/sterilizer = 1)
pixel_y = 28
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -36373,7 +36370,7 @@
dir = 4
},
/obj/effect/landmark/event_spawn,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bKA" = (
@@ -39638,7 +39635,7 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/dark,
/area/storage/tech)
"bSG" = (
@@ -39754,7 +39751,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bSS" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel,
/area/engine/atmos)
"bST" = (
@@ -46040,7 +46037,7 @@
/turf/closed/mineral/random/low_chance,
/area/asteroid/nearstation/bomb_site)
"ckL" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plating/airless,
/area/asteroid/nearstation/bomb_site)
"ckM" = (
@@ -46319,7 +46316,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel,
/area/tcommsat/computer)
"clS" = (
@@ -47188,7 +47185,7 @@
/turf/open/floor/plasteel/neutral/corner,
/area/hallway/secondary/exit/departure_lounge)
"coT" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"coV" = (
@@ -47342,7 +47339,7 @@
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
"cpt" = (
/obj/item/device/radio/beacon,
/obj/item/device/beacon,
/turf/open/floor/plasteel/vault{
dir = 5
},
@@ -49831,7 +49828,6 @@
/area/maintenance/department/engine)
"cBk" = (
/obj/machinery/vending/boozeomat{
products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, /obj/item/reagent_containers/food/drinks/bottle/cream = 1, /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/reagent_containers/food/drinks/ice = 3, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, /obj/item/reagent_containers/food/drinks/flask = 1);
req_access_txt = "0"
},
/turf/closed/wall,
@@ -50018,7 +50014,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"cCD" = (
/obj/machinery/rnd/protolathe/department/service,
/obj/machinery/rnd/production/techfab/department/service,
/turf/open/floor/plating,
/area/crew_quarters/kitchen)
"cCF" = (
@@ -50067,19 +50063,19 @@
/turf/open/floor/plating/airless,
/area/maintenance/department/chapel/monastery)
"cCS" = (
/obj/machinery/rnd/protolathe/department/security,
/obj/machinery/rnd/production/techfab/department/security,
/turf/open/floor/plasteel/dark,
/area/security/main)
"cCT" = (
/obj/machinery/rnd/protolathe/department/cargo,
/obj/machinery/rnd/production/techfab/department/cargo,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"cCU" = (
/obj/machinery/rnd/circuit_imprinter,
/obj/machinery/rnd/production/circuit_imprinter,
/turf/open/floor/plasteel,
/area/engine/engineering)
"cCV" = (
/obj/machinery/rnd/protolathe/department/engineering,
/obj/machinery/rnd/production/protolathe/department/engineering,
/turf/open/floor/plasteel,
/area/engine/engineering)
"cCW" = (
@@ -50178,6 +50174,12 @@
},
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"gFV" = (
/obj/machinery/computer/camera_advanced/xenobio{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"izp" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
@@ -93281,7 +93283,7 @@ bkE
aht
bnd
boh
bpn
gFV
bqx
brQ
btr
+1 -1
View File
@@ -1514,7 +1514,7 @@
/turf/open/floor/plating,
/area/hallway/primary/central)
"NZ" = (
/obj/machinery/rnd/protolathe,
/obj/machinery/rnd/production/protolathe,
/turf/open/floor/plasteel,
/area/science)
"Qt" = (
-1
View File
@@ -1 +0,0 @@
poojawa role=admin
+1
View File
@@ -34,6 +34,7 @@
#define R_SOUNDS 0x800
#define R_SPAWN 0x1000
#define R_AUTOLOGIN 0x2000
#define R_DBRANKS 0x4000
#define R_DEFAULT R_AUTOLOGIN
+1 -1
View File
@@ -3,7 +3,7 @@
//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
#define ui_arousal "EAST-1:28,CENTER-4:8"//Below the health doll
//organ defines
+3
View File
@@ -81,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
+1 -1
View File
@@ -52,7 +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 250
#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
-1
View File
@@ -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
-3
View File
@@ -86,8 +86,6 @@
#define SCREWYHUD_DEAD 2
#define SCREWYHUD_HEALTHY 3
<<<<<<< HEAD
=======
//Moods levels for humans
#define MOOD_LEVEL_HAPPY4 15
#define MOOD_LEVEL_HAPPY3 10
@@ -107,7 +105,6 @@
>>>>>>> 0bc8550... Small moodie balance changes (#36242)
//Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
+1
View File
@@ -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)
+5 -9
View File
@@ -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
+3 -3
View File
@@ -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
@@ -59,8 +59,8 @@
#define INIT_ORDER_TRAITS 11
#define INIT_ORDER_TICKER 10
#define INIT_ORDER_MAPPING 9
#define INIT_ORDER_ATOMS 8
#define INIT_ORDER_NETWORKS 7
#define INIT_ORDER_NETWORKS 8
#define INIT_ORDER_ATOMS 7
#define INIT_ORDER_LANGUAGE 6
#define INIT_ORDER_MACHINES 5
#define INIT_ORDER_CIRCUIT 4
+2 -3
View File
@@ -39,13 +39,12 @@
#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"
<<<<<<< HEAD
=======
>>>>>>> 0bc8550... Small moodie balance changes (#36242)
#define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance"
#define TRAIT_AGEUSIA "ageusia"
#define TRAIT_HEAVY_SLEEPER "heavy_sleeper"
+2 -2
View File
@@ -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
View File
@@ -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
+25
View File
@@ -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))
+21 -19
View File
@@ -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)
-2
View File
@@ -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)
+131 -130
View File
@@ -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!"))
+2 -1
View File
@@ -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)
))
+1
View File
@@ -103,6 +103,7 @@
#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_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.
+5 -1
View File
@@ -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()
+5
View File
@@ -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
+3 -1
View File
@@ -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
+4
View File
@@ -289,6 +289,10 @@
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)
+10
View File
@@ -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 = ""
@@ -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.
@@ -394,4 +394,4 @@
min_val = 0
/datum/config_entry/string/default_view
config_entry_value = "15x15"
config_entry_value = "15x15"
+4 -13
View File
@@ -3,7 +3,7 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
/datum/controller/global_vars
name = "Global Variables"
var/list/gvars_datum_protected_varlist
var/static/list/gvars_datum_protected_varlist
var/list/gvars_datum_in_built_vars
var/list/gvars_datum_init_order
@@ -20,18 +20,9 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
Initialize()
/datum/controller/global_vars/Destroy(force)
stack_trace("Some fucker qdel'd the global holder!")
if(!force)
return QDEL_HINT_LETMELIVE
QDEL_NULL(statclick)
gvars_datum_protected_varlist.Cut()
gvars_datum_in_built_vars.Cut()
GLOB = null
return ..()
/datum/controller/global_vars/Destroy()
//fuck off kevinz
return QDEL_HINT_IWILLGC
/datum/controller/global_vars/stat_entry()
if(!statclick)
+5 -3
View File
@@ -50,11 +50,13 @@ SUBSYSTEM_DEF(mapping)
preloadTemplates()
#ifndef LOWMEMORYMODE
// Create space ruin levels
while (space_levels_so_far < ZLEVEL_SPACE_RUIN_COUNT)
while (space_levels_so_far < config.space_ruin_levels)
++space_levels_so_far
add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE)
// and one level with no ruins
empty_space = add_new_zlevel("Empty Area [1 + space_levels_so_far]", list(ZTRAIT_LINKAGE = CROSSLINKED))
for (var/i in 1 to config.space_empty_levels)
++space_levels_so_far
empty_space = add_new_zlevel("Empty Area [space_levels_so_far]", list(ZTRAIT_LINKAGE = CROSSLINKED))
// and the transit level
transit = add_new_zlevel("Transit", list(ZTRAIT_TRANSIT = TRUE))
@@ -175,7 +177,7 @@ SUBSYSTEM_DEF(mapping)
#ifndef LOWMEMORYMODE
// TODO: remove this when the DB is prepared for the z-levels getting reordered
while (world.maxz < (5 - 1) && space_levels_so_far < ZLEVEL_SPACE_RUIN_COUNT)
while (world.maxz < (5 - 1) && space_levels_so_far < config.space_ruin_levels)
++space_levels_so_far
add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE)
+4
View File
@@ -0,0 +1,4 @@
PROCESSING_SUBSYSTEM_DEF(mood)
name = "Mood"
flags = SS_NO_INIT | SS_BACKGROUND
priority = 20
@@ -171,6 +171,8 @@ SUBSYSTEM_DEF(persistence)
/datum/controller/subsystem/persistence/proc/SetUpTrophies(list/trophy_items)
for(var/A in GLOB.trophy_cases)
var/obj/structure/displaycase/trophy/T = A
if (T.showpiece)
continue
T.added_roundstart = TRUE
var/trophy_data = pick_n_take(trophy_items)
@@ -9,7 +9,7 @@ PROCESSING_SUBSYSTEM_DEF(traits)
wait = 10
runlevels = RUNLEVEL_GAME
var/list/traits = list() //Assoc. list of all roundstart trait datums; "name" = /path/
var/list/traits = list() //Assoc. list of all roundstart trait datum types; "name" = /path/
var/list/trait_points = list() //Assoc. list of trait names and their "point cost"; positive numbers are good traits, and negative ones are bad
var/list/trait_objects = list() //A list of all trait objects in the game, since some may process
@@ -24,11 +24,10 @@ PROCESSING_SUBSYSTEM_DEF(traits)
traits[initial(T.name)] = T
trait_points[initial(T.name)] = initial(T.value)
/datum/controller/subsystem/processing/traits/proc/AssignTraits(mob/living/user, client/cli)
if(!isnewplayer(user))
GenerateTraits(cli)
/datum/controller/subsystem/processing/traits/proc/AssignTraits(mob/living/user, client/cli, spawn_effects)
GenerateTraits(cli)
for(var/V in cli.prefs.character_traits)
user.add_trait_datum(V)
user.add_trait_datum(V, spawn_effects)
/datum/controller/subsystem/processing/traits/proc/GenerateTraits(client/user)
if(user.prefs.character_traits.len)
+2
View File
@@ -387,6 +387,8 @@ SUBSYSTEM_DEF(ticker)
captainless=0
if(player.mind.assigned_role != player.mind.special_role)
SSjob.EquipRank(N, player.mind.assigned_role, 0)
if(CONFIG_GET(flag/roundstart_traits))
SStraits.AssignTraits(player, N.client, TRUE)
CHECK_TICK
if(captainless)
for(var/mob/dead/new_player/N in GLOB.player_list)
+1 -1
View File
@@ -458,7 +458,7 @@ SUBSYSTEM_DEF(timer)
if (wait >= 1 && callback && callback.object && callback.object != GLOBAL_PROC && QDELETED(callback.object))
stack_trace("addtimer called with a callback assigned to a qdeleted object")
wait = max(wait, world.tick_lag)
wait = max(wait, 0)
if(wait >= INFINITY)
CRASH("Attempted to create timer with INFINITY delay")
+7 -1
View File
@@ -43,6 +43,9 @@
/datum/brain_trauma/mild/dumbness/on_gain()
owner.add_trait(TRAIT_DUMB, TRAUMA_TRAIT)
GET_COMPONENT_FROM(mood, /datum/component/mood, owner)
if(mood)
mood.add_event("dumb", /datum/mood_event/oblivious)
..()
/datum/brain_trauma/mild/dumbness/on_life()
@@ -56,6 +59,9 @@
/datum/brain_trauma/mild/dumbness/on_lose()
owner.remove_trait(TRAIT_DUMB, TRAUMA_TRAIT)
owner.derpspeech = 0
GET_COMPONENT_FROM(mood, /datum/component/mood, owner)
if(mood)
mood.clear_event("dumb")
..()
/datum/brain_trauma/mild/speech_impediment
@@ -211,4 +217,4 @@
to_chat(owner, "<span class='warning'>Your arm spasms!</span>")
log_attack("[key_name(owner)] threw [I] due to a Muscle Spasm.")
owner.throw_item(pick(targets))
..()
..()
+21 -17
View File
@@ -223,25 +223,27 @@
/datum/browser/modal/listpicker
var/valueslist = list()
/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox")
/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox", width, height, slidecolor)
if (!User)
return
var/output = {"<form><input type="hidden" name="src" value="[REF(src)]"><ul class="sparse">"}
if (inputtype == "checkbox" || inputtype == "radio")
for (var/i in values)
var/div_slider = slidecolor
if(!i["allowed_edit"])
div_slider = "locked"
output += {"<li>
<label class="switch">
<input type="[inputtype]" value="1" name="[i["name"]]"[i["checked"] ? " checked" : ""]>
<div class="slider"></div>
<span>[i["name"]]</span>
</label>
</li>"}
<label class="switch">
<input type="[inputtype]" value="1" name="[i["name"]]"[i["checked"] ? " checked" : ""][i["allowed_edit"] ? "" : " onclick='return false' onkeydown='return false'"]>
<div class="slider [div_slider ? "[div_slider]" : ""]"></div>
<span>[i["name"]]</span>
</label>
</li>"}
else
for (var/i in values)
output += {"<li><input id="name="[i["name"]]"" style="width: 50px" type="[type]" name="[i["name"]]" value="[i["value"]]">
<label for="[i["name"]]">[i["name"]]</label></li>"}
<label for="[i["name"]]">[i["name"]]</label></li>"}
output += {"</ul><div style="text-align:center">
<button type="submit" name="button" value="1" style="font-size:large;float:[( Button2 ? "left" : "right" )]">[Button1]</button>"}
@@ -252,7 +254,7 @@
output += {"<button type="submit" name="button" value="3" style="font-size:large;float:right">[Button3]</button>"}
output += {"</form></div>"}
..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 350, src, StealFocus, Timeout)
..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, width, height, src, StealFocus, Timeout)
set_content(output)
/datum/browser/modal/listpicker/Topic(href,href_list)
@@ -272,30 +274,32 @@
opentime = 0
close()
/proc/presentpicker(var/mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox")
/proc/presentpicker(var/mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox", width, height, slidecolor)
if (!istype(User))
if (istype(User, /client/))
var/client/C = User
User = C.mob
else
return
var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype)
var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype, width, height, slidecolor)
A.open()
A.wait()
if (A.selectedbutton)
return list("button" = A.selectedbutton, "values" = A.valueslist)
/proc/input_bitfield(var/mob/User, title, bitfield, current_value)
/proc/input_bitfield(var/mob/User, title, bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_list = null)
if (!User || !(bitfield in GLOB.bitfields))
return
var/list/pickerlist = list()
for (var/i in GLOB.bitfields[bitfield])
var/can_edit = 1
if(!isnull(allowed_edit_list) && !(allowed_edit_list & GLOB.bitfields[bitfield][i]))
can_edit = 0
if (current_value & GLOB.bitfields[bitfield][i])
pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i))
pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit))
else
pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i))
var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist)
pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit))
var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist, width = nwidth, height = nheight, slidecolor = nslidecolor)
if (islist(result))
if (result["button"] == 2) // If the user pressed the cancel button
return
+122
View File
@@ -0,0 +1,122 @@
/datum/component/mood
var/mood //Real happiness
var/shown_mood //Shown happiness, this is what others can see when they try to examine you, prevents antag checking by noticing traitors are always very happy.
var/mood_level //To track what stage of moodies they're on
var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets
var/datum/mood_event/list/mood_events = list()
var/mob/living/owner
/datum/component/mood/Initialize()
if(!isliving(parent))
. = COMPONENT_INCOMPATIBLE
CRASH("Some good for nothing loser put a mood component on something that isn't even a living mob.")
START_PROCESSING(SSmood, src)
owner = parent
/datum/component/mood/Destroy()
STOP_PROCESSING(SSmood, src)
return ..()
/datum/component/mood/proc/print_mood()
var/msg = "<span class='info'>*---------*\n<EM>Your current mood</EM>\n"
for(var/i in mood_events)
var/datum/mood_event/event = mood_events[i]
msg += event.description
to_chat(owner, msg)
/datum/component/mood/proc/update_mood() //Called whenever a mood event is added or removed
mood = 0
shown_mood = 0
for(var/i in mood_events)
var/datum/mood_event/event = mood_events[i]
mood += event.mood_change
if(!event.hidden)
shown_mood += event.mood_change
mood *= mood_modifier
shown_mood *= mood_modifier
switch(mood)
if(-INFINITY to MOOD_LEVEL_SAD4)
mood_level = 1
if(MOOD_LEVEL_SAD4 to MOOD_LEVEL_SAD3)
mood_level = 2
if(MOOD_LEVEL_SAD3 to MOOD_LEVEL_SAD2)
mood_level = 3
if(MOOD_LEVEL_SAD2 to MOOD_LEVEL_SAD1)
mood_level = 4
if(MOOD_LEVEL_SAD1 to MOOD_LEVEL_HAPPY1)
mood_level = 5
if(MOOD_LEVEL_HAPPY1 to MOOD_LEVEL_HAPPY2)
mood_level = 6
if(MOOD_LEVEL_HAPPY2 to MOOD_LEVEL_HAPPY3)
mood_level = 7
if(MOOD_LEVEL_HAPPY3 to MOOD_LEVEL_HAPPY4)
mood_level = 8
if(MOOD_LEVEL_HAPPY4 to INFINITY)
mood_level = 9
if(owner.client && owner.hud_used)
owner.hud_used.mood.icon_state = "mood[mood_level]"
/datum/component/mood/process() //Called on SSmood process
switch(mood)
if(-INFINITY to MOOD_LEVEL_SAD4)
owner.overlay_fullscreen("depression", /obj/screen/fullscreen/depression, 3)
if(MOOD_LEVEL_SAD4 to MOOD_LEVEL_SAD3)
owner.overlay_fullscreen("depression", /obj/screen/fullscreen/depression, 2)
if(MOOD_LEVEL_SAD3 to MOOD_LEVEL_SAD2)
owner.overlay_fullscreen("depression", /obj/screen/fullscreen/depression, 1)
if(MOOD_LEVEL_SAD2 to INFINITY)
owner.clear_fullscreen("depression")
if(owner.has_trait(TRAIT_DEPRESSION))
if(prob(0.1))
add_event("depression", /datum/mood_event/depression)
clear_event("jolly")
if(owner.has_trait(TRAIT_JOLLY))
if(prob(0.1))
add_event("jolly", /datum/mood_event/jolly)
clear_event("depression")
/datum/component/mood/proc/add_event(category, type, param) //Category will override any events in the same category, should be unique unless the event is based on the same thing like hunger.
var/datum/mood_event/the_event
if(mood_events[category])
the_event = mood_events[category]
if(the_event.type != type)
clear_event(category)
return .()
else
return 0 //Don't have to update the event.
else
the_event = new type(src, param)
mood_events[category] = the_event
update_mood()
if(the_event.timeout)
addtimer(CALLBACK(src, .proc/clear_event, category), the_event.timeout)
/datum/component/mood/proc/clear_event(category)
var/datum/mood_event/event = mood_events[category]
if(!event)
return 0
mood_events -= category
qdel(event)
update_mood()
/datum/component/mood/proc/update_beauty(var/area/A)
if(A.outdoors) //if we're outside, we don't care.
clear_event("area_beauty")
return FALSE
switch(A.beauty)
if(-INFINITY to BEAUTY_LEVEL_HORRID)
add_event("area_beauty", /datum/mood_event/disgustingroom)
if(BEAUTY_LEVEL_HORRID to BEAUTY_LEVEL_BAD)
add_event("area_beauty", /datum/mood_event/grossroom)
if(BEAUTY_LEVEL_BAD to BEAUTY_LEVEL_GOOD)
clear_event("area_beauty")
if(BEAUTY_LEVEL_GOOD to BEAUTY_LEVEL_GREAT)
add_event("area_beauty", /datum/mood_event/niceroom)
if(BEAUTY_LEVEL_GREAT to INFINITY)
add_event("area_beauty", /datum/mood_event/greatroom)
+62 -59
View File
@@ -1,59 +1,62 @@
//Thing meant for allowing datums and objects to access a NTnet network datum.
/datum/proc/ntnet_recieve(datum/netdata/data)
return
/datum/proc/ntnet_send(datum/netdata/data, netid)
GET_COMPONENT(NIC, /datum/component/ntnet_interface)
if(!NIC)
return FALSE
return NIC.__network_send(data, netid)
/datum/component/ntnet_interface
var/hardware_id //text
var/network_name = "" //text
var/list/networks_connected_by_id = list() //id = datum/ntnet
/datum/component/ntnet_interface/Initialize(force_ID, force_name = "NTNet Device", autoconnect_station_network = TRUE) //Don't force ID unless you know what you're doing!
if(!force_ID)
hardware_id = "[SSnetworks.assignment_hardware_id++]"
else
hardware_id = force_ID
network_name = force_name
SSnetworks.register_interface(src)
if(autoconnect_station_network)
register_connection(SSnetworks.station_network)
/datum/component/ntnet_interface/Destroy()
unregister_all_connections()
SSnetworks.unregister_interface(src)
return ..()
/datum/component/ntnet_interface/proc/__network_recieve(datum/netdata/data) //Do not directly proccall!
parent.SendSignal(COMSIG_COMPONENT_NTNET_RECIEVE, data)
parent.ntnet_recieve(data)
/datum/component/ntnet_interface/proc/__network_send(datum/netdata/data, netid) //Do not directly proccall!
if(netid)
if(networks_connected_by_id[netid])
var/datum/ntnet/net = networks_connected_by_id[netid]
return net.process_data_transmit(src, data)
return FALSE
for(var/i in networks_connected_by_id)
var/datum/ntnet/net = networks_connected_by_id[i]
net.process_data_transmit(src, data)
return TRUE
/datum/component/ntnet_interface/proc/register_connection(datum/ntnet/net)
if(net.interface_connect(src))
networks_connected_by_id[net.network_id] = net
return TRUE
/datum/component/ntnet_interface/proc/unregister_all_connections()
for(var/i in networks_connected_by_id)
unregister_connection(networks_connected_by_id[i])
return TRUE
/datum/component/ntnet_interface/proc/unregister_connection(datum/ntnet/net)
net.interface_disconnect(src)
networks_connected_by_id -= net.network_id
return TRUE
//Thing meant for allowing datums and objects to access a NTnet network datum.
/datum/proc/ntnet_recieve(datum/netdata/data)
return
/datum/proc/ntnet_send(datum/netdata/data, netid)
GET_COMPONENT(NIC, /datum/component/ntnet_interface)
if(!NIC)
return FALSE
return NIC.__network_send(data, netid)
/datum/component/ntnet_interface
var/hardware_id //text
var/network_name = "" //text
var/list/networks_connected_by_id = list() //id = datum/ntnet
/datum/component/ntnet_interface/Initialize(force_ID, force_name = "NTNet Device", autoconnect_station_network = TRUE) //Don't force ID unless you know what you're doing!
if(!force_ID)
hardware_id = "[SSnetworks.assignment_hardware_id++]"
else
hardware_id = force_ID
network_name = force_name
SSnetworks.register_interface(src)
if(autoconnect_station_network)
register_connection(SSnetworks.station_network)
/datum/component/ntnet_interface/Destroy()
unregister_all_connections()
SSnetworks.unregister_interface(src)
return ..()
/datum/component/ntnet_interface/proc/__network_recieve(datum/netdata/data) //Do not directly proccall!
parent.SendSignal(COMSIG_COMPONENT_NTNET_RECIEVE, data)
parent.ntnet_recieve(data)
/datum/component/ntnet_interface/proc/__network_send(datum/netdata/data, netid) //Do not directly proccall!
// Process data before sending it
data.pre_send(src)
if(netid)
if(networks_connected_by_id[netid])
var/datum/ntnet/net = networks_connected_by_id[netid]
return net.process_data_transmit(src, data)
return FALSE
for(var/i in networks_connected_by_id)
var/datum/ntnet/net = networks_connected_by_id[i]
net.process_data_transmit(src, data)
return TRUE
/datum/component/ntnet_interface/proc/register_connection(datum/ntnet/net)
if(net.interface_connect(src))
networks_connected_by_id[net.network_id] = net
return TRUE
/datum/component/ntnet_interface/proc/unregister_all_connections()
for(var/i in networks_connected_by_id)
unregister_connection(networks_connected_by_id[i])
return TRUE
/datum/component/ntnet_interface/proc/unregister_connection(datum/ntnet/net)
net.interface_disconnect(src)
networks_connected_by_id -= net.network_id
return TRUE
+1
View File
@@ -109,6 +109,7 @@
return
..()
//Proc to use when you 100% want to try to infect someone (ignoreing protective clothing and such), as long as they aren't immune
/mob/living/proc/ForceContractDisease(datum/disease/D, make_copy = TRUE, del_on_fail = FALSE)
if(!CanContractDisease(D))
+3 -5
View File
@@ -109,6 +109,7 @@
A.symptoms += S.Copy()
A.properties = properties.Copy()
A.id = id
A.mutable = mutable
//this is a new disease starting over at stage 1, so processing is not copied
return A
@@ -166,13 +167,10 @@
var/the_id = GetDiseaseID()
if(!SSdisease.archive_diseases[the_id])
if(new_name)
AssignName()
SSdisease.archive_diseases[the_id] = src // So we don't infinite loop
SSdisease.archive_diseases[the_id] = Copy()
var/datum/disease/advance/A = SSdisease.archive_diseases[the_id]
name = A.name
if(new_name)
AssignName()
//Generate disease properties based on the effects. Returns an associated list.
/datum/disease/advance/proc/GenerateProperties()
+16
View File
@@ -18,6 +18,8 @@
var/map_file = "BoxStation.dmm"
var/traits = null
var/space_ruin_levels = 7
var/space_empty_levels = 1
var/minetype = "lavaland"
@@ -106,6 +108,20 @@
log_world("map_config traits is not a list!")
return
var/temp = json["space_ruin_levels"]
if (isnum(temp))
space_ruin_levels = temp
else if (!isnull(temp))
log_world("map_config space_ruin_levels is not a number!")
return
temp = json["space_empty_levels"]
if (isnum(temp))
space_empty_levels = temp
else if (!isnull(temp))
log_world("map_config space_empty_levels is not a number!")
return
if ("minetype" in json)
minetype = json["minetype"]
+36
View File
@@ -0,0 +1,36 @@
/datum/martial_art/mushpunch
name = "Mushroom Punch"
/datum/martial_art/mushpunch/basic_hit(mob/living/carbon/human/A, mob/living/carbon/human/D)
var/atk_verb
to_chat(A, "<span class='spider'>You begin to wind up an attack...</span>")
if(do_after(A, 25, target = D))
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
atk_verb = pick("punches", "smashes", "ruptures", "cracks")
D.visible_message("<span class='danger'>[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards!</span>", \
"<span class='userdanger'>[A] [atk_verb] you with inhuman strength, sending you flying backwards!</span>")
D.apply_damage(rand(15,30), BRUTE)
playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1)
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
D.Knockdown(20)
if(atk_verb)
add_logs(A, D, "[atk_verb] (Mushroom Punch)")
return TRUE
return FALSE
/obj/item/mushpunch
name = "mysterious mushroom"
desc = "<I>Sapienza Ophioglossoides</I>:An odd mushroom from the flesh of a mushroom person. it has apparently retained some innate power of it's owner, as it quivers with barely-contained POWER!"
icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
icon_state = "mycelium-angel"
/obj/item/mushpunch/attack_self(mob/living/carbon/human/user)
if(!istype(user) || !user)
return
var/message = "<span class='spider'>You devour [src], and a confluence of skill and power from the mushroom enhances your punches! You do need a short moment to charge these powerful punches.</span>"
to_chat(user, message)
var/datum/martial_art/mushpunch/mush = new(null)
mush.teach(user)
qdel(src)
visible_message("<span class='warning'>[user] devours [src].</span>")
+39
View File
@@ -0,0 +1,39 @@
/datum/mood_event/drugs/high
mood_change = 6
description = "<span class='nicegreen'>Woooow duudeeeeee...I'm tripping baaalls...</span>\n"
/datum/mood_event/drugs/smoked
description = "<span class='nicegreen'>I have had a smoke recently.</span>\n"
mood_change = 2
timeout = 3600
/datum/mood_event/drugs/overdose
mood_change = -8
timeout = 3000
/datum/mood_event/drugs/overdose/add_effects(drug_name)
description = "<span class='warning'>I think I took a bit too much of that [drug_name]</span>\n"
/datum/mood_event/drugs/withdrawal_light
mood_change = -2
/datum/mood_event/drugs/withdrawal_light/add_effects(drug_name)
description = "<span class='warning'>I could use some [drug_name]</span>\n"
/datum/mood_event/drugs/withdrawal_medium
mood_change = -5
/datum/mood_event/drugs/withdrawal_medium/add_effects(drug_name)
description = "<span class='warning'>I really need [drug_name]</span>\n"
/datum/mood_event/drugs/withdrawal_severe
mood_change = -8
/datum/mood_event/drugs/withdrawal_severe/add_effects(drug_name)
description = "<span class='boldwarning'>Oh god I need some [drug_name]</span>\n"
/datum/mood_event/drugs/withdrawal_critical
mood_change = -10
/datum/mood_event/drugs/withdrawal_critical/add_effects(drug_name)
description = "<span class='boldwarning'>[drug_name]! [drug_name]! [drug_name]!</span>\n"
@@ -0,0 +1,71 @@
/datum/mood_event/hug
description = "<span class='nicegreen'>Hugs are nice.</span>\n"
mood_change = 1
timeout = 1200
/datum/mood_event/arcade
description = "<span class='nicegreen'>I beat the arcade game!</span>\n"
mood_change = 3
timeout = 3000
/datum/mood_event/blessing
description = "<span class='nicegreen'>I've been blessed.</span>\n"
mood_change = 3
timeout = 3000
/datum/mood_event/book_nerd
description = "<span class='nicegreen'>I have recently read a book.</span>\n"
mood_change = 3
timeout = 3000
/datum/mood_event/pet_corgi
description = "<span class='nicegreen'>Corgis are adorable! I can't stop petting them!</span>\n"
mood_change = 3
timeout = 3000
/datum/mood_event/honk
description = "<span class='nicegreen'>Maybe clowns aren't so bad after all. Honk!</span>\n"
mood_change = 2
timeout = 2400
/datum/mood_event/perform_cpr
description = "<span class='nicegreen'>It feels good to save a life.</span>\n"
mood_change = 6
timeout = 3000
/datum/mood_event/oblivious
description = "<span class='nicegreen'>What a lovely day.</span>\n"
mood_change = 3
/datum/mood_event/happytable
description = "<span class='nicegreen'>They want to play on the table!</span>\n"
mood_change = 2
timeout = 1200
/datum/mood_event/jolly
description = "<span class='nicegreen'>I feel happy for no particular reason.</span>\n"
mood_change = 6
timeout = 1200
/datum/mood_event/focused
description = "<span class='nicegreen'>I have a goal, and I will reach it, whatever it takes!</span>\n" //Used for syndies, nukeops etc so they can focus on their goals
mood_change = 12
hidden = TRUE
/datum/mood_event/revolution
description = "<span class='nicegreen'>VIVA LA REVOLUTION!</span>\n"
mood_change = 3
hidden = TRUE
/datum/mood_event/cult
description = "<span class='nicegreen'>I have seen the truth, praise the almighty one!</span>\n"
mood_change = 40 //maybe being a cultist isnt that bad after all
hidden = TRUE
/datum/mood_event/niceroom
description = "<span class='nicegreen'>This room looks really pretty!</span>\n"
mood_change = 4
/datum/mood_event/greatroom
description = "<span class='nicegreen'>This room is beautiful!</span>\n"
mood_change = 7
+19
View File
@@ -0,0 +1,19 @@
/datum/mood_event
var/description ///For descriptions, use the span classes bold nicegreen, nicegreen, none, warning and boldwarning in order from great to horrible.
var/mood_change = 0
var/timeout = 0
var/hidden = FALSE//Not shown on examine
var/mob/owner
/datum/mood_event/New(mob/M, param)
owner = M
add_effects(param)
/datum/mood_event/Destroy()
remove_effects()
/datum/mood_event/proc/add_effects(param)
return
/datum/mood_event/proc/remove_effects()
return
+54
View File
@@ -0,0 +1,54 @@
//nutrition
/datum/mood_event/nutrition/fat
description = "<span class='warning'><B>I'm so fat..</B></span>\n" //muh fatshaming
mood_change = -4
/datum/mood_event/nutrition/wellfed
description = "<span class='nicegreen'>My belly feels round and full.</span>\n"
mood_change = 6
/datum/mood_event/nutrition/fed
description = "<span class='nicegreen'>I have recently had some food.</span>\n"
mood_change = 3
/datum/mood_event/nutrition/hungry
description = "<span class='warning'>I'm getting a bit hungry.</span>\n"
mood_change = -8
/datum/mood_event/nutrition/starving
description = "<span class='boldwarning'>I'm starving!</span>\n"
mood_change = -15
//Disgust
/datum/mood_event/disgust/gross
description = "<span class='warning'>I saw something gross.</span>\n"
mood_change = -2
/datum/mood_event/disgust/verygross
description = "<span class='warning'>I think I'm going to puke...</span>\n"
mood_change = -5
/datum/mood_event/disgust/disgusted
description = "<span class='boldwarning'>Oh god that's disgusting...</span>\n"
mood_change = -8
//Generic needs events
/datum/mood_event/favorite_food
description = "<span class='nicegreen'>I really enjoyed eating that.</span>\n"
mood_change = 3
timeout = 2400
/datum/mood_event/gross_food
description = "<span class='nicegreen'>I really didn't like that food.</span>\n"
mood_change = -2
timeout = 2400
/datum/mood_event/disgusting_food
description = "<span class='nicegreen'>That food was disgusting!</span>\n"
mood_change = -4
timeout = 2400
/datum/mood_event/nice_shower
description = "<span class='nicegreen'>I have recently had a nice shower.</span>\n"
mood_change = 2
timeout = 1800
+3
View File
@@ -11,6 +11,9 @@
owner.visible_message("<span class='danger'>[owner] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
owner.Unconscious(200)
owner.Jitter(1000)
GET_COMPONENT_FROM(mood, /datum/component/mood, owner)
if(mood)
mood.add_event("epilepsy", /datum/mood_event/epilepsy)
addtimer(CALLBACK(src, .proc/jitter_less, owner), 90)
/datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner)
+7 -1
View File
@@ -14,6 +14,9 @@
owner.add_trait(TRAIT_STUNIMMUNE, TRAIT_HULK)
owner.add_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK)
owner.update_body_parts()
GET_COMPONENT_FROM(mood, /datum/component/mood, owner)
if(mood)
mood.add_event("hulk", /datum/mood_event/hulk)
/datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity)
if(proximity) //no telekinetic hulk attack
@@ -30,7 +33,10 @@
owner.remove_trait(TRAIT_STUNIMMUNE, TRAIT_HULK)
owner.remove_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK)
owner.update_body_parts()
GET_COMPONENT_FROM(mood, /datum/component/mood, owner)
if(mood)
mood.clear_event("hulk")
/datum/mutation/human/hulk/say_mod(message)
if(message)
message = "[uppertext(replacetext(message, ".", "!"))]!!"
+2
View File
@@ -85,6 +85,8 @@
if(backpack_contents)
for(var/path in backpack_contents)
var/number = backpack_contents[path]
if(!isnum(number))//Default to 1
number = 1
for(var/i=0,i<number,i++)
H.equip_to_slot_or_del(new path(H),slot_in_backpack)
+22 -3
View File
@@ -11,7 +11,7 @@
var/mob_trait //if applicable, apply and remove this mob trait
var/mob/living/trait_holder
/datum/trait/New(mob/living/trait_mob)
/datum/trait/New(mob/living/trait_mob, spawn_effects)
..()
if(!trait_mob || (human_only && !ishuman(trait_mob)) || trait_mob.has_trait_datum(type))
qdel(src)
@@ -23,9 +23,9 @@
trait_holder.add_trait(mob_trait, ROUNDSTART_TRAIT)
START_PROCESSING(SStraits, src)
add()
if(!SSticker.HasRoundStarted()) //on roundstart or on latejoin; latejoin code is in new_player.dm
if(spawn_effects)
on_spawn()
addtimer(CALLBACK(src, .proc/post_add), 30)
addtimer(CALLBACK(src, .proc/post_add), 30)
/datum/trait/Destroy()
STOP_PROCESSING(SStraits, src)
@@ -38,16 +38,25 @@
SStraits.trait_objects -= src
return ..()
/datum/trait/proc/transfer_mob(mob/living/to_mob)
trait_holder.roundstart_traits -= src
to_mob.roundstart_traits += src
trait_holder = to_mob
on_transfer()
/datum/trait/proc/add() //special "on add" effects
/datum/trait/proc/on_spawn() //these should only trigger when the character is being created for the first time, i.e. roundstart/latejoin
/datum/trait/proc/remove() //special "on remove" effects
/datum/trait/proc/on_process() //process() has some special checks, so this is the actual process
/datum/trait/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait
/datum/trait/proc/on_transfer() //code called when the trait is transferred to a new mob
/datum/trait/process()
if(QDELETED(trait_holder))
qdel(src)
return
if(trait_holder.stat == DEAD)
return
on_process()
/mob/living/proc/get_trait_string(medical) //helper string. gets a string of all the traits the mob has
@@ -67,6 +76,16 @@
return "None"
return dat.Join("<br>")
/mob/living/proc/cleanse_trait_datums() //removes all trait datums
for(var/V in roundstart_traits)
var/datum/trait/T = V
qdel(T)
/mob/living/proc/transfer_trait_datums(mob/living/to_mob)
for(var/V in roundstart_traits)
var/datum/trait/T = V
T.transfer_mob(to_mob)
/*
Commented version of Nearsighted to help you add your own traits
+24 -1
View File
@@ -26,7 +26,7 @@
desc = "You walk with a gentle step, making stepping on sharp objects quieter and less painful."
value = 1
mob_trait = TRAIT_LIGHT_STEP
gain_text = "<span class='notice'>You walk with a little more lithenessk.</span>"
gain_text = "<span class='notice'>You walk with a little more litheness.</span>"
lose_text = "<span class='danger'>You start tromping around like a barbarian.</span>"
@@ -81,3 +81,26 @@
mob_trait = TRAIT_VORACIOUS
gain_text = "<span class='notice'>You feel HONGRY.</span>"
lose_text = "<span class='danger'>You no longer feel HONGRY.</span>"
/datum/trait/jolly
name = "Jolly"
desc = "You sometimes just feel happy, for no reason at all."
value = 1
mob_trait = TRAIT_JOLLY
/datum/trait/apathetic
name = "Apathetic"
desc = "You just don't care as much as other people, that's nice to have in a place like this, I guess."
value = 1
/datum/trait/apathetic/add()
GET_COMPONENT_FROM(mood, /datum/component/mood, trait_holder)
if(mood)
mood.mood_modifier = 0.8
/datum/trait/apathetic/remove()
GET_COMPONENT_FROM(mood, /datum/component/mood, trait_holder)
if(mood)
mood.mood_modifier = 1 //Change this once/if species get their own mood modifiers.
+10 -1
View File
@@ -114,7 +114,7 @@
if(trait_holder.reagents.has_reagent("mindbreaker"))
trait_holder.hallucination = 0
return
if(prob(1)) //we'll all be mad soon enough
if(prob(2)) //we'll all be mad soon enough
madness()
/datum/trait/insanity/proc/madness(mad_fools)
@@ -154,3 +154,12 @@
else if(prob(0.5) && dumb_thing)
to_chat(H, "<span class='danger'>You think of a dumb thing you said a long time ago and scream internally.</span>")
dumb_thing = FALSE //only once per life
/datum/trait/depression
name = "Depression"
desc = "You sometimes just hate life."
mob_trait = TRAIT_DEPRESSION
value = -1
gain_text = "<span class='danger'>You start feeling depressed.</span>"
lose_text = "<span class='notice'>You no longer feel depressed.</span>" //if only it were that easy!
medical_record_text = "Patient has a severe mood disorder causing them to experience sudden moments of sadness."
+2 -4
View File
@@ -48,17 +48,15 @@
return
if(!A.requiresID() || A.check_access(null))
if(A.density)
A.open()
INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/open)
else
A.close()
INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/close)
if(WIRE_BOLTS) // Pulse to toggle bolts (but only raise if power is on).
if(!A.locked)
A.bolt()
A.audible_message("<span class='italics'>You hear a click from the bottom of the door.</span>", null, 1)
else
if(A.hasPower())
A.unbolt()
A.audible_message("<span class='italics'>You hear a click from the bottom of the door.</span>", null, 1)
A.update_icon()
if(WIRE_IDSCAN) // Pulse to disable emergency access and flash red lights.
if(A.hasPower() && A.density)
+15
View File
@@ -31,6 +31,9 @@
var/outdoors = FALSE //For space, the asteroid, lavaland, etc. Used with blueprints to determine if we are adding a new area (vs editing a station room)
var/beauty = 0 //To see how clean/dirty this area is, only works with indoors areas.
var/areasize = 0 //Size of the area in tiles, only calculated for indoors areas.
var/power_equip = TRUE
var/power_light = TRUE
var/power_environ = TRUE
@@ -145,6 +148,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
if(!areas_in_z["[z]"])
areas_in_z["[z]"] = list()
areas_in_z["[z]"] += src
update_area_size()
return INITIALIZE_HINT_LATELOAD
@@ -497,6 +501,10 @@ GLOBAL_LIST_EMPTY(teleportlocs)
L.client.played = TRUE
addtimer(CALLBACK(L.client, /client/proc/ResetAmbiencePlayed), 600)
GET_COMPONENT_FROM(mood, /datum/component/mood, L)
if(mood)
mood.update_beauty(src)
/client/proc/ResetAmbiencePlayed()
played = FALSE
@@ -524,6 +532,13 @@ GLOBAL_LIST_EMPTY(teleportlocs)
blob_allowed = FALSE
addSorted()
/area/proc/update_area_size()
if(outdoors)
return FALSE
areasize = 0
for(var/turf/T in src.contents)
areasize++
/area/AllowDrop()
CRASH("Bad op: area/AllowDrop() called")
+1 -1
View File
@@ -542,4 +542,4 @@
if(EMERGENCY_ESCAPED_OR_ENDGAMED)
SSticker.news_report = STATION_EVACUATED
if(SSshuttle.emergency.is_hijacked())
SSticker.news_report = SHUTTLE_HIJACK
SSticker.news_report = SHUTTLE_HIJACK
+1 -1
View File
@@ -9,7 +9,7 @@
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 0
var/obj/item/device/radio/beacon/Beacon
var/obj/item/device/beacon/Beacon
/obj/machinery/bluespace_beacon/Initialize()
. = ..()
+1 -1
View File
@@ -131,7 +131,7 @@
flick("autolathe_o",src)//plays metal insertion animation
if (MAT_GLASS)
flick("autolathe_r",src)//plays glass insertion animation
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * amount_inserted / 100)))
use_power(min(1000, amount_inserted / 100))
updateUsrDialog()
/obj/machinery/autolathe/Topic(href, href_list)
+6 -1
View File
@@ -126,7 +126,7 @@
return examine(user)
//Start growing a human clone in the pod!
/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, se, mindref, datum/species/mrace, list/features, factions)
/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, se, mindref, datum/species/mrace, list/features, factions, list/traits)
if(panel_open)
return FALSE
if(mess || attempting)
@@ -198,6 +198,9 @@
if(H)
H.faction |= factions
for(var/V in traits)
new V(H)
H.set_cloned_appearance()
H.suiciding = FALSE
@@ -316,6 +319,7 @@
SPEAK("An emergency ejection of [clonemind.name] has occurred. Survival not guaranteed.")
to_chat(user, "<span class='notice'>You force an emergency ejection. </span>")
go_out()
mob_occupant.apply_vore_prefs()
else
return ..()
@@ -405,6 +409,7 @@
connected_message(Gibberish("EMP-caused Accidental Ejection", 0))
SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of [mob_occupant.real_name] prematurely." ,0))
go_out()
mob_occupant.apply_vore_prefs()
..()
/obj/machinery/clonepod/ex_act(severity, target)
+6 -3
View File
@@ -67,7 +67,10 @@
return INITIALIZE_HINT_QDEL
Reset()
/obj/machinery/computer/arcade/proc/prizevend()
/obj/machinery/computer/arcade/proc/prizevend(mob/user)
GET_COMPONENT_FROM(mood, /datum/component/mood, user)
if(mood)
mood.add_event("arcade", /datum/mood_event/arcade)
if(prob(0.0001)) //1 in a million
new /obj/item/gun/energy/pulse/prize(src)
SSmedals.UnlockMedal(MEDAL_PULSE, usr.client)
@@ -237,7 +240,7 @@
Reset()
obj_flags &= ~EMAGGED
else
prizevend()
prizevend(usr)
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (obj_flags & EMAGGED ? "emagged":"normal")))
@@ -1031,7 +1034,7 @@
message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.")
log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.")
else
prizevend()
prizevend(usr)
obj_flags &= ~EMAGGED
name = "The Orion Trail"
desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+6 -2
View File
@@ -71,7 +71,7 @@
if(pod.occupant)
continue //how though?
if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"]))
if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["traits"]))
temp = "[R.fields["name"]] => <font class='good'>Cloning cycle in progress...</font>"
records -= R
@@ -409,7 +409,7 @@
else if(pod.occupant)
temp = "<font class='bad'>Cloning cycle already in progress.</font>"
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"]))
else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["traits"]))
temp = "[C.fields["name"]] => <font class='good'>Cloning cycle in progress...</font>"
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
records.Remove(C)
@@ -482,6 +482,10 @@
R.fields["blood_type"] = dna.blood_type
R.fields["features"] = dna.features
R.fields["factions"] = mob_occupant.faction
R.fields["traits"] = list()
for(var/V in mob_occupant.roundstart_traits)
var/datum/trait/T = V
R.fields["traits"] += T.type
if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning.
R.fields["mind"] = "[REF(mob_occupant.mind)]"
+1 -1
View File
@@ -75,4 +75,4 @@
return 0
if(B.scrambledcodes || B.emagged)
return 0
return ..()
return ..()
+1 -1
View File
@@ -160,7 +160,7 @@
var/list/L = list()
var/list/areaindex = list()
if(regime_set == "Teleporter")
for(var/obj/item/device/radio/beacon/R in GLOB.teleportbeacons)
for(var/obj/item/device/beacon/R in GLOB.teleportbeacons)
if(is_eligible(R))
var/area/A = get_area(R)
L[avoid_assoc_duplicate_keys(A.name, areaindex)] = R
+56 -3
View File
@@ -101,8 +101,6 @@
/obj/machinery/door/airlock/Initialize()
. = ..()
wires = new /datum/wires/airlock(src)
if (cyclelinkeddir)
cyclelinkairlock()
if(frequency)
set_frequency(frequency)
@@ -127,6 +125,8 @@
/obj/machinery/door/airlock/LateInitialize()
. = ..()
if (cyclelinkeddir)
cyclelinkairlock()
if(abandoned)
var/outcome = rand(1,100)
switch(outcome)
@@ -153,6 +153,7 @@
/obj/machinery/door/airlock/ComponentInitialize()
. = ..()
AddComponent(/datum/component/ntnet_interface)
AddComponent(/datum/component/rad_insulation, RAD_MEDIUM_INSULATION)
/obj/machinery/door/airlock/proc/update_other_id()
@@ -178,6 +179,7 @@
limit--
while(!FoundDoor && limit)
if (!FoundDoor)
log_world("### MAP WARNING, [src] at [get_area_name(src, TRUE)] [COORD(src)] failed to find a valid airlock to cyclelink with!")
return
FoundDoor.cyclelinkedairlock = src
cyclelinkedairlock = FoundDoor
@@ -188,6 +190,55 @@
if ("cyclelinkeddir")
cyclelinkairlock()
/obj/machinery/door/airlock/check_access_ntnet(datum/netdata/data)
return !requiresID() || ..()
/obj/machinery/door/airlock/ntnet_recieve(datum/netdata/data)
// Check if the airlock is powered and can accept control packets.
if(!hasPower() || !canAIControl())
return
// Check packet access level.
if(!check_access_ntnet(data))
return
// Handle recieved packet.
var/command = lowertext(data.plaintext_data)
var/command_value = lowertext(data.plaintext_data_secondary)
switch(command)
if("open")
if(command_value == "on" && !density)
return
if(command_value == "off" && density)
return
if(density)
INVOKE_ASYNC(src, .proc/open)
else
INVOKE_ASYNC(src, .proc/close)
if("bolt")
if(command_value == "on" && locked)
return
if(command_value == "off" && !locked)
return
if(locked)
unbolt()
else
bolt()
if("emergency")
if(command_value == "on" && emergency)
return
if(command_value == "off" && !emergency)
return
emergency = !emergency
update_icon()
/obj/machinery/door/airlock/lock()
bolt()
@@ -197,6 +248,7 @@
return
locked = TRUE
playsound(src,boltDown,30,0,3)
audible_message("<span class='italics'>You hear a click from the bottom of the door.</span>", null, 1)
update_icon()
/obj/machinery/door/airlock/unlock()
@@ -207,6 +259,7 @@
return
locked = FALSE
playsound(src,boltUp,30,0,3)
audible_message("<span class='italics'>You hear a click from the bottom of the door.</span>", null, 1)
update_icon()
/obj/machinery/door/airlock/narsie_act()
@@ -320,7 +373,7 @@
return FALSE
/obj/machinery/door/airlock/proc/canAIControl(mob/user)
return ((aiControlDisabled != 1) && (!isAllPowerCut()));
return ((aiControlDisabled != 1) && !isAllPowerCut())
/obj/machinery/door/airlock/proc/canAIHack()
return ((aiControlDisabled==1) && (!hackProof) && (!isAllPowerCut()));
-5
View File
@@ -45,11 +45,6 @@
if(!poddoor)
to_chat(user, "<span class='notice'>Its maintenance panel is <b>screwed</b> in place.</span>")
/obj/machinery/door/check_access(access)
if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED)
return TRUE
return ..()
/obj/machinery/door/check_access_list(list/access_list)
if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED)
return TRUE
+1 -1
View File
@@ -68,4 +68,4 @@
/obj/machinery/door/poddoor/try_to_crowbar(obj/item/I, mob/user)
if(stat & NOPOWER)
open(1)
open(1)
+1 -1
View File
@@ -104,7 +104,7 @@
// SINGULO BEACON SPAWNER
/obj/item/device/sbeacondrop
name = "suspicious beacon"
icon = 'icons/obj/radio.dmi'
icon = 'icons/obj/device.dmi'
icon_state = "beacon"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
@@ -178,3 +178,4 @@
priority = "Extreme"
else
priority = "Undetermined"
+2 -2
View File
@@ -850,7 +850,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
req_access_txt = "5"
products = list(/obj/item/reagent_containers/syringe = 12, /obj/item/reagent_containers/dropper = 3, /obj/item/stack/medical/gauze = 8, /obj/item/reagent_containers/pill/patch/styptic = 5, /obj/item/reagent_containers/pill/insulin = 10,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/glass/bottle/charcoal = 4, /obj/item/reagent_containers/spray/medical/sterilizer = 1,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/medspray/styptic = 2, /obj/item/reagent_containers/medspray/silver_sulf = 2, /obj/item/reagent_containers/glass/bottle/charcoal = 4, /obj/item/reagent_containers/medspray/sterilizine = 1,
/obj/item/reagent_containers/glass/bottle/epinephrine = 4, /obj/item/reagent_containers/glass/bottle/morphine = 4, /obj/item/reagent_containers/glass/bottle/salglu_solution = 3,
/obj/item/reagent_containers/glass/bottle/toxin = 3, /obj/item/reagent_containers/syringe/antiviral = 6, /obj/item/reagent_containers/pill/salbutamol = 2, /obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2, /obj/item/pinpointer/crew = 2)
contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, /obj/item/reagent_containers/pill/charcoal = 6)
@@ -876,7 +876,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
density = FALSE
products = list(/obj/item/reagent_containers/syringe = 3, /obj/item/reagent_containers/pill/patch/styptic = 5,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/pill/charcoal = 2,
/obj/item/reagent_containers/spray/medical/sterilizer = 1)
/obj/item/reagent_containers/medspray/sterilizine = 1)
contraband = list(/obj/item/reagent_containers/pill/tox = 2, /obj/item/reagent_containers/pill/morphine = 2)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
+1
View File
@@ -19,3 +19,4 @@
/obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0)
..()
defense_action.Remove(user)
+1
View File
@@ -27,3 +27,4 @@
..()
switch_damtype_action.Remove(user)
phasing_action.Remove(user)
-11
View File
@@ -64,17 +64,6 @@
time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01)
/obj/machinery/mecha_part_fabricator/check_access(obj/item/card/id/I)
if(istype(I, /obj/item/device/pda))
var/obj/item/device/pda/pda = I
I = pda.id
if(!istype(I) || !I.access) //not ID or no access
return FALSE
for(var/req in req_access)
if(!(req in I.access)) //doesn't have this access
return FALSE
return TRUE
/obj/machinery/mecha_part_fabricator/emag_act()
if(obj_flags & EMAGGED)
return
+3 -3
View File
@@ -193,9 +193,9 @@
var/turf/T = safepick(get_area_turfs(impact_area))
if(T)
// Calculate new position (searches through beacons in world)
var/obj/item/device/radio/beacon/chosen
var/obj/item/device/beacon/chosen
var/list/possible = list()
for(var/obj/item/device/radio/beacon/W in GLOB.teleportbeacons)
for(var/obj/item/device/beacon/W in GLOB.teleportbeacons)
possible += W
if(possible.len > 0)
@@ -218,7 +218,7 @@
var/y_distance = TO.y - FROM.y
var/x_distance = TO.x - FROM.x
for (var/atom/movable/A in urange(12, FROM )) // iterate thru list of mobs in the area
if(istype(A, /obj/item/device/radio/beacon))
if(istype(A, /obj/item/device/beacon))
continue // don't teleport beacons because that's just insanely stupid
if(A.anchored)
continue
@@ -4,6 +4,7 @@
var/list/random_icon_states = list()
var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA
var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints
var/beauty = 0
var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one?
/obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases)
@@ -16,6 +17,7 @@
if(C != src && C.type == src.type && !QDELETED(C))
if (replace_decal(C))
return INITIALIZE_HINT_QDEL
if(LAZYLEN(diseases))
var/list/datum/disease/diseases_to_add = list()
for(var/datum/disease/D in diseases)
@@ -24,6 +26,11 @@
if(LAZYLEN(diseases_to_add))
AddComponent(/datum/component/infective, diseases_to_add)
/obj/effect/decal/cleanable/LateInitialize()
if(src.loc && isturf(src.loc))
var/area/A = get_area(src)
A.beauty += beauty / max(1, A.areasize) //Ensures that the effects scale with room size
/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal
if(mergeable_decal)
return TRUE
@@ -90,12 +97,9 @@
return bloodiness
else
return 0
<<<<<<< HEAD
=======
/obj/effect/decal/cleanable/Destroy()
. = ..()
if(src.loc && isturf(src.loc))
var/area/A = get_area(src)
A.beauty -= beauty / max(1, A.areasize)
>>>>>>> 0bc8550... Small moodie balance changes (#36242)
@@ -8,6 +8,7 @@
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
bloodiness = MAX_SHOE_BLOODINESS
blood_state = BLOOD_STATE_XENO
beauty = -200
/obj/effect/decal/cleanable/xenoblood/Initialize()
. = ..()
@@ -6,6 +6,7 @@
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_HUMAN
bloodiness = MAX_SHOE_BLOODINESS
beauty = -200
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
C.add_blood_DNA(return_blood_DNA())
@@ -3,6 +3,7 @@
desc = "Someone should clean that up."
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
beauty = -150
/obj/effect/decal/cleanable/ash
name = "ashes"
@@ -10,6 +11,7 @@
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
mergeable_decal = FALSE
beauty = -150
/obj/effect/decal/cleanable/ash/Initialize()
. = ..()
@@ -24,6 +26,7 @@
/obj/effect/decal/cleanable/ash/large
name = "large pile of ashes"
icon_state = "big_ash"
beauty = -150
/obj/effect/decal/cleanable/ash/large/Initialize()
. = ..()
@@ -34,6 +37,7 @@
desc = "Back to sand."
icon = 'icons/obj/shards.dmi'
icon_state = "tiny"
beauty = -20
/obj/effect/decal/cleanable/glass/Initialize()
. = ..()
@@ -47,17 +51,20 @@
desc = "Someone should clean that up."
icon_state = "dirt"
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
beauty = -150
/obj/effect/decal/cleanable/flour
name = "flour"
desc = "It's still good. Four second rule!"
icon_state = "flour"
beauty = -100
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
light_color = LIGHT_COLOR_GREEN
icon_state = "greenglow"
beauty = -100
/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
. = ..()
@@ -73,6 +80,7 @@
layer = WALL_OBJ_LAYER
icon_state = "cobweb1"
resistance_flags = FLAMMABLE
beauty = -150
/obj/effect/decal/cleanable/cobweb/cobweb2
icon_state = "cobweb2"
@@ -84,10 +92,12 @@
icon = 'icons/effects/effects.dmi'
icon_state = "molten"
mergeable_decal = FALSE
beauty = -250
/obj/effect/decal/cleanable/molten_object/large
name = "big gooey grey mass"
icon_state = "big_molten"
beauty = -200
//Vomit (sorry)
/obj/effect/decal/cleanable/vomit
@@ -96,6 +106,7 @@
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
beauty = -400
/obj/effect/decal/cleanable/vomit/attack_hand(mob/user)
if(ishuman(user))
@@ -127,12 +138,14 @@
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
beauty = -125
/obj/effect/decal/cleanable/plant_smudge
name = "plant smudge"
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_plant")
beauty = -125
/obj/effect/decal/cleanable/egg_smudge
name = "smashed egg"
@@ -140,6 +153,7 @@
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
beauty = -125
/obj/effect/decal/cleanable/pie_smudge //honk
name = "smashed pie"
@@ -147,6 +161,7 @@
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_pie")
beauty = -125
/obj/effect/decal/cleanable/chem_pile
name = "chemical pile"
@@ -154,6 +169,7 @@
gender = NEUTER
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
beauty = -125
/obj/effect/decal/cleanable/shreds
name = "shreds"
@@ -161,6 +177,7 @@
icon_state = "shreds"
gender = PLURAL
mergeable_decal = FALSE
beauty = -125
/obj/effect/decal/cleanable/shreds/ex_act(severity, target)
if(severity == 1) //so shreds created during an explosion aren't deleted by the explosion.
@@ -177,12 +194,14 @@
icon = 'icons/effects/tomatodecal.dmi'
icon_state = "salt_pile"
gender = NEUTER
beauty = -125
/obj/effect/decal/cleanable/glitter
name = "generic glitter pile"
desc = "The herpes of arts and crafts."
icon = 'icons/effects/tile_effects.dmi'
gender = NEUTER
beauty = 300
/obj/effect/decal/cleanable/glitter/pink
name = "pink glitter"
@@ -200,4 +219,5 @@
name = "stabilized plasma"
desc = "A puddle of stabilized plasma."
icon_state = "flour"
color = "#C8A5DC"
color = "#C8A5DC"
beauty = -200
@@ -10,6 +10,7 @@
blood_state = BLOOD_STATE_OIL
bloodiness = MAX_SHOE_BLOODINESS
mergeable_decal = FALSE
beauty = -200
/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions)
set waitfor = 0
@@ -46,6 +47,7 @@
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_OIL
bloodiness = MAX_SHOE_BLOODINESS
beauty = -125
/obj/effect/decal/cleanable/oil/Initialize()
. = ..()
@@ -57,4 +59,4 @@
/obj/effect/decal/cleanable/oil/slippery
/obj/effect/decal/cleanable/oil/slippery/Initialize()
AddComponent(/datum/component/slippery, 80, (NO_SLIP_WHEN_WALKING | SLIDE))
AddComponent(/datum/component/slippery, 80, (NO_SLIP_WHEN_WALKING | SLIDE))
+1 -1
View File
@@ -30,4 +30,4 @@
/obj/effect/decal/cleanable/robot_debris/old
name = "dusty robot debris"
desc = "Looks like nobody has touched this in a while."
desc = "Looks like nobody has touched this in a while."
+1 -1
View File
@@ -22,7 +22,7 @@
/obj/item/reagent_containers/food/snacks/egg)
/obj/effect/spawner/bundle/costume/gladiator
name = "gladitator costume spawner"
name = "gladiator costume spawner"
items = list(
/obj/item/clothing/under/gladiator,
/obj/item/clothing/head/helmet/gladiator)
+4
View File
@@ -531,6 +531,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
else
M.take_bodypart_damage(7)
GET_COMPONENT_FROM(mood, /datum/component/mood, M)
if(mood)
mood.add_event("eye_stab", /datum/mood_event/eye_stab)
add_logs(user, M, "attacked", "[src.name]", "(INTENT: [uppertext(user.a_intent)])")
M.adjust_blurriness(3)
+1
View File
@@ -191,6 +191,7 @@
FD.CalculateAffectingAreas()
to_chat(usr, "<span class='notice'>You rename the '[prevname]' to '[str]'.</span>")
log_game("[key_name(usr)] has renamed [prevname] to [str]")
A.update_area_size()
interact()
return 1

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