Merge branch 'master' into upstream-merge-27773
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
[submodule "tools/tgstation-server"]
|
||||
path = tools/tgstation-server
|
||||
url = https://github.com/tgstation/tgstation-server
|
||||
branch = master
|
||||
@@ -1,3 +1,23 @@
|
||||
20 May 2017, by Jordie0608
|
||||
|
||||
Created table `round` to replace tracking of the datapoints 'round_start', 'round_end', 'server_ip', 'game_mode', 'round_end_results', 'end_error', 'end_proper', 'emergency_shuttle', 'map_name' and 'station_renames' in the `feedback` table.
|
||||
Once created this table is populated with rows from the `feedback` table.
|
||||
|
||||
START TRANSACTION;
|
||||
CREATE TABLE `feedback`.`round` (`id` INT(11) NOT NULL AUTO_INCREMENT, `start_datetime` DATETIME NOT NULL, `end_datetime` DATETIME NULL, `server_ip` INT(10) UNSIGNED NOT NULL, `server_port` SMALLINT(5) UNSIGNED NOT NULL, `commit_hash` CHAR(40) NULL, `game_mode` VARCHAR(32) NULL, `game_mode_result` VARCHAR(64) NULL, `end_state` VARCHAR(64) NULL, `shuttle_name` VARCHAR(64) NULL, `map_name` VARCHAR(32) NULL, `station_name` VARCHAR(80) NULL, PRIMARY KEY (`id`));
|
||||
INSERT INTO `feedback`.`round`
|
||||
(`id`, `start_datetime`, `end_datetime`, `server_ip`, `server_port`, `commit_hash`, `game_mode`, `game_mode_result`, `end_state`, `shuttle_name`, `map_name`, `station_name`)
|
||||
SELECT DISTINCT ri.round_id, IFNULL(STR_TO_DATE(st.details,'%a %b %e %H:%i:%s %Y'), TIMESTAMP(0)), STR_TO_DATE(et.details,'%a %b %e %H:%i:%s %Y'), IFNULL(INET_ATON(SUBSTRING_INDEX(IF(si.details = '', '0', IF(SUBSTRING_INDEX(si.details, ':', 1) LIKE '%_._%', si.details, '0')), ':', 1)), INET_ATON(0)), IFNULL(IF(si.details LIKE '%:_%', CAST(SUBSTRING_INDEX(si.details, ':', -1) AS UNSIGNED), '0'), '0'), ch.details, gm.details, mr.details, IFNULL(es.details, ep.details), ss.details, mn.details, sn.details
|
||||
FROM `feedback`.`feedback`AS ri
|
||||
LEFT JOIN `feedback`.`feedback` AS st ON ri.round_id = st.round_id AND st.var_name = "round_start" LEFT JOIN `feedback`.`feedback` AS et ON ri.round_id = et.round_id AND et.var_name = "round_end" LEFT JOIN `feedback`.`feedback` AS si ON ri.round_id = si.round_id AND si.var_name = "server_ip" LEFT JOIN `feedback`.`feedback` AS ch ON ri.round_id = ch.round_id AND ch.var_name = "revision" LEFT JOIN `feedback`.`feedback` AS gm ON ri.round_id = gm.round_id AND gm.var_name = "game_mode" LEFT JOIN `feedback`.`feedback` AS mr ON ri.round_id = mr.round_id AND mr.var_name = "round_end_result" LEFT JOIN `feedback`.`feedback` AS es ON ri.round_id = es.round_id AND es.var_name = "end_state" LEFT JOIN `feedback`.`feedback` AS ep ON ri.round_id = ep.round_id AND ep.var_name = "end_proper" LEFT JOIN `feedback`.`feedback` AS ss ON ri.round_id = ss.round_id AND ss.var_name = "emergency_shuttle" LEFT JOIN `feedback`.`feedback` AS mn ON ri.round_id = mn.round_id AND mn.var_name = "map_name" LEFT JOIN `feedback`.`feedback` AS sn ON ri.round_id = sn.round_id AND sn.var_name = "station_renames";
|
||||
COMMIT;
|
||||
|
||||
It's not necessary to delete the rows from the `feedback` table but henceforth these datapoints will be in the `round` table.
|
||||
|
||||
Remember to add a prefix to the table names if you use them
|
||||
|
||||
----------------------------------------------------
|
||||
|
||||
21 April 2017, by Jordie0608
|
||||
|
||||
Modified table 'player', adding the column 'accountjoindate', removing the column 'id' and making the column 'ckey' the primary key.
|
||||
|
||||
@@ -362,6 +362,29 @@ CREATE TABLE `poll_vote` (
|
||||
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `round`
|
||||
--
|
||||
DROP TABLE IF EXISTS `round`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `round` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`start_datetime` DATETIME NOT NULL,
|
||||
`end_datetime` DATETIME NULL,
|
||||
`server_ip` INT(10) UNSIGNED NOT NULL,
|
||||
`server_port` SMALLINT(5) UNSIGNED NOT NULL,
|
||||
`commit_hash` CHAR(40) NULL,
|
||||
`game_mode` VARCHAR(32) NULL,
|
||||
`game_mode_result` VARCHAR(64) NULL,
|
||||
`end_state` VARCHAR(64) NULL,
|
||||
`shuttle_name` VARCHAR(64) NULL,
|
||||
`map_name` VARCHAR(32) NULL,
|
||||
`station_name` VARCHAR(80) NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
|
||||
@@ -362,6 +362,29 @@ CREATE TABLE `SS13_poll_vote` (
|
||||
KEY `idx_pvote_optionid_ckey` (`optionid`,`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `SS13_round`
|
||||
--
|
||||
DROP TABLE IF EXISTS `SS13_round`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `SS13_round` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`start_datetime` DATETIME NOT NULL,
|
||||
`end_datetime` DATETIME NULL,
|
||||
`server_ip` INT(10) UNSIGNED NOT NULL,
|
||||
`server_port` SMALLINT(5) UNSIGNED NOT NULL,
|
||||
`commit_hash` CHAR(40) NULL,
|
||||
`game_mode` VARCHAR(32) NULL,
|
||||
`game_mode_result` VARCHAR(64) NULL,
|
||||
`end_state` VARCHAR(64) NULL,
|
||||
`shuttle_name` VARCHAR(64) NULL,
|
||||
`map_name` VARCHAR(32) NULL,
|
||||
`station_name` VARCHAR(80) NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"ad" = (
|
||||
/obj/structure/flora/ausbushes/leafybush,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ae" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/toolbox/mechanical,
|
||||
@@ -21,44 +21,47 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"af" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ag" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ah" = (
|
||||
/obj/machinery/power/smes,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ai" = (
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aj" = (
|
||||
/turf/closed/wall/mineral/sandstone{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ak" = (
|
||||
/obj/structure/toilet,
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"al" = (
|
||||
/obj/structure/urinal{
|
||||
pixel_y = 32
|
||||
@@ -66,7 +69,7 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"am" = (
|
||||
/obj/structure/urinal{
|
||||
pixel_y = 32
|
||||
@@ -75,13 +78,16 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"an" = (
|
||||
/obj/item/device/flashlight/lantern,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ao" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
@@ -96,213 +102,219 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ap" = (
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aq" = (
|
||||
/obj/structure/flora/ausbushes/sunnybush,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ar" = (
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"as" = (
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"at" = (
|
||||
/obj/item/weapon/tank/internals/oxygen,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"au" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"av" = (
|
||||
/obj/machinery/door/airlock/hatch,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aw" = (
|
||||
/obj/machinery/door/airlock/sandstone,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ax" = (
|
||||
/obj/structure/extinguisher_cabinet,
|
||||
/turf/closed/wall/mineral/sandstone{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ay" = (
|
||||
/obj/machinery/door/airlock/hatch,
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"az" = (
|
||||
/obj/item/clothing/neck/necklace/dope,
|
||||
/obj/item/weapon/reagent_containers/spray/spraytan,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aA" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aB" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aC" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aD" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/box/drinkingglasses,
|
||||
/obj/item/weapon/storage/box/drinkingglasses,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/weapon/storage/box/beakers,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aE" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/reagentgrinder,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aF" = (
|
||||
/obj/machinery/vending/boozeomat{
|
||||
emagged = 1;
|
||||
req_access_txt = "0"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aG" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/book/manual/barman_recipes,
|
||||
/obj/item/weapon/reagent_containers/glass/rag,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aH" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/box/donkpockets,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aI" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aJ" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/item/weapon/tank/internals/emergency_oxygen,
|
||||
/obj/item/trash/candy,
|
||||
/obj/item/toy/talking/owl,
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aK" = (
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aL" = (
|
||||
/obj/effect/mob_spawn/human/bartender/alive{
|
||||
name = "beach bum sleeper"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aM" = (
|
||||
/obj/structure/reagent_dispensers/beerkeg,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aN" = (
|
||||
/obj/machinery/vending/cigarette,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aO" = (
|
||||
/obj/structure/stacklifter,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aP" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aQ" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/device/flashlight/lamp,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aR" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aS" = (
|
||||
/obj/machinery/processor,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aT" = (
|
||||
/obj/machinery/vending/cola,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aU" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aV" = (
|
||||
/obj/effect/mob_spawn/human/beach/alive{
|
||||
flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?";
|
||||
pocket2 = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank;
|
||||
l_pocket = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank;
|
||||
uniform = /obj/item/clothing/under/pants/youngfolksjeans
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aW" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aX" = (
|
||||
/obj/structure/closet/secure_closet/freezer/meat,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aY" = (
|
||||
/obj/machinery/vending/snack,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aZ" = (
|
||||
/obj/effect/overlay/coconut,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ba" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4;
|
||||
@@ -316,24 +328,24 @@
|
||||
"bb" = (
|
||||
/obj/structure/weightlifter,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bc" = (
|
||||
/obj/machinery/door/airlock/sandstone,
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bd" = (
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"be" = (
|
||||
/obj/vehicle/scooter/skateboard{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bf" = (
|
||||
/obj/machinery/light{
|
||||
icon_state = "tube1";
|
||||
@@ -347,10 +359,10 @@
|
||||
"bg" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/closed/wall/mineral/sandstone,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bh" = (
|
||||
/turf/closed/wall/mineral/sandstone,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bi" = (
|
||||
/turf/open/floor/plating/beach/sand{
|
||||
density = 1;
|
||||
@@ -365,14 +377,14 @@
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bk" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pastatomato,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bl" = (
|
||||
/obj/structure/chair/wood/normal{
|
||||
icon_state = "wooden_chair";
|
||||
@@ -381,7 +393,7 @@
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bm" = (
|
||||
/mob/living/simple_animal/crab,
|
||||
/turf/open/floor/plating/beach/sand{
|
||||
@@ -456,7 +468,7 @@
|
||||
"bx" = (
|
||||
/obj/structure/flora/rock,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"by" = (
|
||||
/obj/machinery/door/airlock/sandstone,
|
||||
/obj/effect/decal/sandeffect,
|
||||
@@ -467,7 +479,7 @@
|
||||
"bz" = (
|
||||
/mob/living/simple_animal/crab,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bA" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
@@ -480,7 +492,7 @@
|
||||
/obj/item/weapon/storage/firstaid,
|
||||
/obj/item/weapon/storage/firstaid/brute,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bB" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4;
|
||||
@@ -492,7 +504,7 @@
|
||||
},
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bC" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/tank/internals/oxygen,
|
||||
@@ -512,11 +524,11 @@
|
||||
"bE" = (
|
||||
/obj/item/weapon/reagent_containers/spray/spraytan,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bF" = (
|
||||
/obj/item/toy/beach_ball,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bG" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
@@ -524,7 +536,7 @@
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/item/device/megaphone,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bH" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4;
|
||||
@@ -532,13 +544,13 @@
|
||||
},
|
||||
/obj/effect/mob_spawn/human/beach/alive{
|
||||
flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff.";
|
||||
has_id = 1;
|
||||
id = /obj/item/weapon/card/id;
|
||||
id_access = "Medical Doctor";
|
||||
id_job = "Lifeguard";
|
||||
mob_gender = "female"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bI" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/floor/pod/dark{
|
||||
@@ -548,11 +560,11 @@
|
||||
"bJ" = (
|
||||
/obj/structure/chair,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bK" = (
|
||||
/obj/item/weapon/storage/backpack/dufflebag,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bL" = (
|
||||
/obj/effect/decal/sandeffect{
|
||||
density = 1
|
||||
@@ -562,43 +574,227 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
density = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bM" = (
|
||||
/turf/open/floor/plasteel/stairs/old,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bN" = (
|
||||
/obj/structure/flora/ausbushes/reedbush,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bO" = (
|
||||
/obj/item/device/camera,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bP" = (
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bQ" = (
|
||||
/obj/structure/flora/ausbushes/reedbush,
|
||||
/turf/open/floor/plating/beach/coastline_t,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bR" = (
|
||||
/turf/open/floor/plating/beach/coastline_t,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bS" = (
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/turf/open/floor/plating/beach/coastline_t,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bT" = (
|
||||
/turf/open/floor/plating/beach/coastline_b,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bU" = (
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bV" = (
|
||||
/obj/structure/flora/ausbushes/stalkybush,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"bW" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"bX" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"bY" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"bZ" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"ca" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cb" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cc" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cd" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/closed/wall/mineral/sandstone{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"ce" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cf" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cg" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"ch" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"ci" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cj" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"ck" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cl" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cm" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"cn" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"co" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"cp" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"cq" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cr" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cs" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"ct" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cu" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cv" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cw" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cx" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cy" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -646,11 +842,11 @@ ab
|
||||
ab
|
||||
ab
|
||||
bn
|
||||
br
|
||||
cm
|
||||
bu
|
||||
bv
|
||||
bu
|
||||
bs
|
||||
co
|
||||
bC
|
||||
ab
|
||||
ab
|
||||
@@ -673,7 +869,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ap
|
||||
ar
|
||||
cg
|
||||
ar
|
||||
ar
|
||||
ab
|
||||
@@ -721,7 +917,7 @@ ap
|
||||
bR
|
||||
bT
|
||||
bU
|
||||
bU
|
||||
ct
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -740,7 +936,7 @@ aO
|
||||
ar
|
||||
bb
|
||||
ar
|
||||
ar
|
||||
ci
|
||||
ar
|
||||
ar
|
||||
aA
|
||||
@@ -748,7 +944,7 @@ aA
|
||||
aA
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
cr
|
||||
bN
|
||||
bR
|
||||
bT
|
||||
@@ -819,7 +1015,7 @@ bT
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cv
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -859,10 +1055,10 @@ aa
|
||||
(9,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aA
|
||||
bW
|
||||
bW
|
||||
bW
|
||||
ce
|
||||
aA
|
||||
aA
|
||||
aA
|
||||
@@ -893,7 +1089,7 @@ aa
|
||||
ac
|
||||
ae
|
||||
as
|
||||
ab
|
||||
bW
|
||||
aB
|
||||
aK
|
||||
aK
|
||||
@@ -980,7 +1176,7 @@ bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cx
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
@@ -1051,7 +1247,7 @@ aa
|
||||
(15,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
aj
|
||||
cd
|
||||
aj
|
||||
aj
|
||||
aF
|
||||
@@ -1092,7 +1288,7 @@ aj
|
||||
aj
|
||||
bc
|
||||
aj
|
||||
aB
|
||||
cj
|
||||
aK
|
||||
aA
|
||||
ar
|
||||
@@ -1172,7 +1368,7 @@ bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cy
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
@@ -1188,14 +1384,14 @@ aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aB
|
||||
ck
|
||||
aK
|
||||
aA
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
cq
|
||||
ar
|
||||
ar
|
||||
bR
|
||||
@@ -1275,10 +1471,10 @@ aa
|
||||
(22,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aA
|
||||
bW
|
||||
bW
|
||||
bW
|
||||
cf
|
||||
aA
|
||||
aA
|
||||
aA
|
||||
@@ -1363,7 +1559,7 @@ bT
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cw
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -1412,7 +1608,7 @@ aq
|
||||
ar
|
||||
be
|
||||
ar
|
||||
ar
|
||||
cl
|
||||
ar
|
||||
ar
|
||||
aA
|
||||
@@ -1420,7 +1616,7 @@ aA
|
||||
aA
|
||||
ar
|
||||
ar
|
||||
aU
|
||||
cs
|
||||
ar
|
||||
bR
|
||||
bT
|
||||
@@ -1457,7 +1653,7 @@ ap
|
||||
bR
|
||||
bT
|
||||
bU
|
||||
bU
|
||||
cu
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -1473,7 +1669,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ap
|
||||
ar
|
||||
ch
|
||||
ap
|
||||
ar
|
||||
ab
|
||||
@@ -1510,11 +1706,11 @@ ab
|
||||
ab
|
||||
ab
|
||||
bo
|
||||
bs
|
||||
cn
|
||||
bu
|
||||
bu
|
||||
bv
|
||||
br
|
||||
cp
|
||||
bC
|
||||
ab
|
||||
ab
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"ac" = (
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/structure/table,
|
||||
@@ -19,6 +19,9 @@
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -36,6 +39,9 @@
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"ag" = (
|
||||
/obj/structure/reagent_dispensers/beerkeg,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -54,6 +60,9 @@
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"aj" = (
|
||||
/obj/structure/sink,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -290,89 +299,92 @@
|
||||
/obj/item/clothing/shoes/winterboots,
|
||||
/obj/item/clothing/gloves/fingerless,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aT" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/fulltile,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aU" = (
|
||||
/obj/machinery/vending/coffee,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aV" = (
|
||||
/obj/structure/closet/secure_closet/freezer/fridge,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aW" = (
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aX" = (
|
||||
/turf/open/floor/pod/light,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aY" = (
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aZ" = (
|
||||
/obj/machinery/door/airlock/hatch,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"ba" = (
|
||||
/obj/machinery/door/airlock/silver,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bb" = (
|
||||
/obj/machinery/door/airlock/silver,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bc" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bd" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/paper_bin,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"be" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bf" = (
|
||||
/obj/effect/decal/cleanable/oil,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bg" = (
|
||||
/obj/item/weapon/twohanded/required/chainsaw,
|
||||
/obj/structure/closet,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bh" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bi" = (
|
||||
/obj/machinery/computer/monitor,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bj" = (
|
||||
/obj/item/weapon/storage/toolbox/mechanical,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bk" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bl" = (
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
@@ -382,22 +394,22 @@
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bm" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bn" = (
|
||||
/obj/item/clothing/mask/balaclava,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bo" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bp" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/paper,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bq" = (
|
||||
/obj/machinery/light/built{
|
||||
dir = 1
|
||||
@@ -406,12 +418,202 @@
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt;
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"br" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/machinery/door/airlock/glass_large,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bs" = (
|
||||
/obj/machinery/door/airlock/glass_large,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bt" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bu" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bv" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/ice{
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bw" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bx" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"by" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bz" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bA" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bB" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bC" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bD" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bE" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bF" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bG" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bH" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bI" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bJ" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bK" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bL" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bM" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bN" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/ice{
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bO" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bP" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bQ" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bR" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -458,10 +660,10 @@ ab
|
||||
ab
|
||||
ab
|
||||
aS
|
||||
aW
|
||||
bG
|
||||
aW
|
||||
aX
|
||||
aW
|
||||
bI
|
||||
aW
|
||||
bh
|
||||
ab
|
||||
@@ -486,7 +688,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
by
|
||||
ak
|
||||
ab
|
||||
aS
|
||||
@@ -552,7 +754,7 @@ ak
|
||||
aI
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
bC
|
||||
az
|
||||
ak
|
||||
aB
|
||||
@@ -560,7 +762,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
aI
|
||||
ak
|
||||
bJ
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -577,7 +779,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
ab
|
||||
ao
|
||||
bv
|
||||
ao
|
||||
ao
|
||||
ao
|
||||
@@ -631,7 +833,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
bO
|
||||
ab
|
||||
ab
|
||||
bm
|
||||
@@ -744,7 +946,7 @@ aq
|
||||
aq
|
||||
aK
|
||||
aq
|
||||
ak
|
||||
bD
|
||||
ao
|
||||
ao
|
||||
ao
|
||||
@@ -770,7 +972,7 @@ ab
|
||||
ad
|
||||
af
|
||||
ar
|
||||
at
|
||||
bw
|
||||
at
|
||||
aD
|
||||
at
|
||||
@@ -790,7 +992,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
az
|
||||
ak
|
||||
bM
|
||||
ab
|
||||
aS
|
||||
aS
|
||||
@@ -806,7 +1008,7 @@ au
|
||||
au
|
||||
aq
|
||||
at
|
||||
at
|
||||
bz
|
||||
aq
|
||||
ak
|
||||
ak
|
||||
@@ -825,7 +1027,7 @@ ak
|
||||
aI
|
||||
ab
|
||||
bn
|
||||
aW
|
||||
bQ
|
||||
ab
|
||||
bm
|
||||
"}
|
||||
@@ -887,7 +1089,7 @@ ao
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
aO
|
||||
bs
|
||||
aX
|
||||
aX
|
||||
br
|
||||
@@ -919,10 +1121,10 @@ ao
|
||||
ao
|
||||
ak
|
||||
ak
|
||||
aP
|
||||
bt
|
||||
aX
|
||||
aX
|
||||
aP
|
||||
bt
|
||||
bm
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
@@ -966,7 +1168,7 @@ av
|
||||
at
|
||||
aG
|
||||
at
|
||||
at
|
||||
bA
|
||||
aq
|
||||
aR
|
||||
ak
|
||||
@@ -985,7 +1187,7 @@ ao
|
||||
ao
|
||||
ab
|
||||
aW
|
||||
aW
|
||||
bR
|
||||
ab
|
||||
bm
|
||||
"}
|
||||
@@ -995,7 +1197,7 @@ ai
|
||||
af
|
||||
aq
|
||||
av
|
||||
at
|
||||
bx
|
||||
aH
|
||||
at
|
||||
aN
|
||||
@@ -1014,7 +1216,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ao
|
||||
ao
|
||||
bN
|
||||
ab
|
||||
bo
|
||||
bp
|
||||
@@ -1032,7 +1234,7 @@ aq
|
||||
aq
|
||||
aq
|
||||
aq
|
||||
ak
|
||||
bE
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -1175,7 +1377,7 @@ ak
|
||||
aI
|
||||
aI
|
||||
ak
|
||||
ak
|
||||
bP
|
||||
ab
|
||||
ab
|
||||
bm
|
||||
@@ -1224,7 +1426,7 @@ az
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
bF
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -1232,7 +1434,7 @@ ak
|
||||
ak
|
||||
az
|
||||
ak
|
||||
ak
|
||||
bK
|
||||
ak
|
||||
ak
|
||||
az
|
||||
@@ -1286,7 +1488,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
bB
|
||||
ak
|
||||
ab
|
||||
aU
|
||||
@@ -1298,7 +1500,7 @@ bf
|
||||
bj
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
bL
|
||||
ak
|
||||
ab
|
||||
ab
|
||||
@@ -1322,7 +1524,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
aV
|
||||
aW
|
||||
bH
|
||||
aY
|
||||
bc
|
||||
be
|
||||
|
||||
@@ -15,36 +15,36 @@
|
||||
/area/ruin/powered)
|
||||
"e" = (
|
||||
/turf/open/floor/plating/lava/smooth,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"f" = (
|
||||
/obj/item/weapon/reagent_containers/syringe/gluttony,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"g" = (
|
||||
/obj/effect/gluttony,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"h" = (
|
||||
/obj/item/weapon/veilrender/vealrender,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"i" = (
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"j" = (
|
||||
/obj/item/trash/plate,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"k" = (
|
||||
/obj/machinery/door/airlock/uranium,
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
@@ -57,37 +57,113 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"m" = (
|
||||
/obj/item/trash/raisins,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"n" = (
|
||||
/obj/item/trash/pistachios,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"o" = (
|
||||
/obj/item/trash/popcorn,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"p" = (
|
||||
/obj/item/trash/semki,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"q" = (
|
||||
/obj/item/trash/syndi_cakes,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"r" = (
|
||||
/obj/effect/gluttony,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"s" = (
|
||||
/obj/effect/gluttony,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"t" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"u" = (
|
||||
/obj/effect/gluttony,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"v" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"w" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"x" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"y" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"z" = (
|
||||
/obj/item/trash/plate,
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"A" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -211,7 +287,7 @@ c
|
||||
d
|
||||
i
|
||||
i
|
||||
i
|
||||
v
|
||||
d
|
||||
c
|
||||
b
|
||||
@@ -253,7 +329,7 @@ c
|
||||
c
|
||||
c
|
||||
d
|
||||
i
|
||||
t
|
||||
i
|
||||
m
|
||||
d
|
||||
@@ -277,7 +353,7 @@ d
|
||||
d
|
||||
g
|
||||
m
|
||||
i
|
||||
w
|
||||
d
|
||||
d
|
||||
d
|
||||
@@ -294,7 +370,7 @@ c
|
||||
d
|
||||
e
|
||||
d
|
||||
g
|
||||
r
|
||||
g
|
||||
g
|
||||
g
|
||||
@@ -302,7 +378,7 @@ g
|
||||
i
|
||||
p
|
||||
i
|
||||
j
|
||||
z
|
||||
l
|
||||
i
|
||||
d
|
||||
@@ -338,7 +414,7 @@ c
|
||||
d
|
||||
e
|
||||
d
|
||||
g
|
||||
s
|
||||
g
|
||||
g
|
||||
g
|
||||
@@ -346,7 +422,7 @@ i
|
||||
g
|
||||
i
|
||||
l
|
||||
i
|
||||
A
|
||||
i
|
||||
q
|
||||
d
|
||||
@@ -365,7 +441,7 @@ d
|
||||
d
|
||||
g
|
||||
i
|
||||
i
|
||||
x
|
||||
d
|
||||
d
|
||||
d
|
||||
@@ -385,7 +461,7 @@ c
|
||||
c
|
||||
c
|
||||
d
|
||||
g
|
||||
u
|
||||
i
|
||||
i
|
||||
d
|
||||
@@ -431,7 +507,7 @@ c
|
||||
d
|
||||
j
|
||||
i
|
||||
i
|
||||
y
|
||||
d
|
||||
c
|
||||
b
|
||||
|
||||
@@ -122,6 +122,9 @@
|
||||
name = "shrine of the liberator";
|
||||
pixel_x = 0
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -215,6 +218,7 @@
|
||||
/obj/item/weapon/storage/firstaid/fire,
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/firstaid/fire,
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -262,6 +266,122 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"I" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"J" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"K" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"L" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"M" = (
|
||||
/obj/effect/mob_spawn/human/golem/adamantine,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"N" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"O" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"P" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"Q" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"R" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"S" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"T" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"U" = (
|
||||
/obj/effect/mob_spawn/human/golem/adamantine,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"V" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"W" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"X" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -358,7 +478,7 @@ a
|
||||
a
|
||||
a
|
||||
b
|
||||
l
|
||||
L
|
||||
l
|
||||
j
|
||||
l
|
||||
@@ -384,10 +504,10 @@ l
|
||||
l
|
||||
b
|
||||
l
|
||||
l
|
||||
Q
|
||||
G
|
||||
l
|
||||
l
|
||||
T
|
||||
b
|
||||
b
|
||||
b
|
||||
@@ -427,7 +547,7 @@ j
|
||||
l
|
||||
l
|
||||
b
|
||||
l
|
||||
P
|
||||
l
|
||||
G
|
||||
l
|
||||
@@ -444,18 +564,18 @@ a
|
||||
a
|
||||
b
|
||||
c
|
||||
f
|
||||
I
|
||||
b
|
||||
m
|
||||
M
|
||||
o
|
||||
b
|
||||
l
|
||||
l
|
||||
G
|
||||
o
|
||||
m
|
||||
U
|
||||
b
|
||||
f
|
||||
V
|
||||
F
|
||||
b
|
||||
a
|
||||
@@ -510,18 +630,18 @@ a
|
||||
a
|
||||
b
|
||||
c
|
||||
f
|
||||
J
|
||||
b
|
||||
l
|
||||
l
|
||||
O
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
S
|
||||
l
|
||||
z
|
||||
b
|
||||
f
|
||||
W
|
||||
F
|
||||
b
|
||||
a
|
||||
@@ -598,9 +718,9 @@ a
|
||||
a
|
||||
b
|
||||
e
|
||||
f
|
||||
K
|
||||
b
|
||||
l
|
||||
N
|
||||
l
|
||||
l
|
||||
l
|
||||
@@ -609,7 +729,7 @@ v
|
||||
l
|
||||
B
|
||||
b
|
||||
f
|
||||
X
|
||||
f
|
||||
b
|
||||
a
|
||||
@@ -670,7 +790,7 @@ h
|
||||
h
|
||||
b
|
||||
t
|
||||
l
|
||||
R
|
||||
b
|
||||
h
|
||||
h
|
||||
|
||||
@@ -16,26 +16,32 @@
|
||||
"e" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/gun/ballistic/revolver/russian/soul,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"f" = (
|
||||
/obj/structure/cursed_slot_machine,
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"g" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/coin/mythril,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"h" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/coin/diamond,
|
||||
@@ -43,13 +49,13 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"i" = (
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"j" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/coin/adamantine,
|
||||
@@ -57,7 +63,7 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"k" = (
|
||||
/obj/machinery/computer/arcade/battle{
|
||||
emagged = 1
|
||||
@@ -65,46 +71,50 @@
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"l" = (
|
||||
/obj/item/weapon/coin/gold,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"m" = (
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"n" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c1000,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"o" = (
|
||||
/obj/item/weapon/storage/bag/money,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"p" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/ore/gold,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"q" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c20,
|
||||
/obj/item/stack/spacecash/c50,
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"r" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c500,
|
||||
@@ -113,21 +123,47 @@
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"s" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c200,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"t" = (
|
||||
/obj/machinery/door/airlock/gold,
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/area/ruin/powered)
|
||||
"u" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c500,
|
||||
/obj/item/stack/spacecash/c100,
|
||||
/obj/item/stack/spacecash/c1000,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/greed)
|
||||
"v" = (
|
||||
/obj/item/weapon/coin/gold,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/greed)
|
||||
"w" = (
|
||||
/obj/item/weapon/storage/bag/money,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/greed)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -320,7 +356,7 @@ m
|
||||
m
|
||||
l
|
||||
m
|
||||
l
|
||||
v
|
||||
d
|
||||
d
|
||||
a
|
||||
@@ -364,7 +400,7 @@ m
|
||||
l
|
||||
m
|
||||
l
|
||||
o
|
||||
w
|
||||
d
|
||||
d
|
||||
a
|
||||
@@ -404,7 +440,7 @@ c
|
||||
d
|
||||
d
|
||||
p
|
||||
r
|
||||
u
|
||||
r
|
||||
d
|
||||
c
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/pride)
|
||||
"f" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
@@ -28,12 +28,12 @@
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/pride)
|
||||
"g" = (
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/pride)
|
||||
"h" = (
|
||||
/obj/structure/mirror/magic/pride,
|
||||
/turf/closed/wall/mineral/diamond{
|
||||
@@ -47,6 +47,109 @@
|
||||
blocks_air = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"j" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"k" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"l" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"m" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"n" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"o" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"p" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"q" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"r" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"s" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -120,16 +223,16 @@ c
|
||||
d
|
||||
d
|
||||
d
|
||||
j
|
||||
e
|
||||
e
|
||||
l
|
||||
e
|
||||
e
|
||||
n
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
p
|
||||
e
|
||||
e
|
||||
d
|
||||
@@ -153,7 +256,7 @@ g
|
||||
g
|
||||
g
|
||||
g
|
||||
g
|
||||
r
|
||||
d
|
||||
a
|
||||
a
|
||||
@@ -197,7 +300,7 @@ g
|
||||
g
|
||||
g
|
||||
g
|
||||
g
|
||||
s
|
||||
d
|
||||
c
|
||||
a
|
||||
@@ -208,16 +311,16 @@ c
|
||||
d
|
||||
d
|
||||
d
|
||||
k
|
||||
f
|
||||
f
|
||||
m
|
||||
f
|
||||
f
|
||||
o
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
q
|
||||
f
|
||||
f
|
||||
d
|
||||
|
||||
@@ -19,31 +19,31 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"e" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/box/disks_plantgene,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"f" = (
|
||||
/obj/machinery/plantgenes/seedvault,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"g" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"h" = (
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"i" = (
|
||||
/obj/structure/closet/crate/hydroponics,
|
||||
/obj/structure/beebox,
|
||||
@@ -57,7 +57,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"j" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
@@ -71,13 +71,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"l" = (
|
||||
/obj/machinery/door/airlock,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"m" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
@@ -90,7 +90,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"o" = (
|
||||
/obj/structure/closet/crate/hydroponics,
|
||||
/obj/item/weapon/cultivator,
|
||||
@@ -108,13 +108,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"p" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"q" = (
|
||||
/obj/item/weapon/hatchet,
|
||||
/obj/item/weapon/storage/bag/plants,
|
||||
@@ -123,7 +123,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"r" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/bag/plants,
|
||||
@@ -133,7 +133,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"s" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/gun/energy/floragun,
|
||||
@@ -144,13 +144,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"t" = (
|
||||
/obj/effect/mob_spawn/human/seed_vault,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"u" = (
|
||||
/obj/structure/sink{
|
||||
icon_state = "sink";
|
||||
@@ -161,19 +161,19 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"v" = (
|
||||
/obj/machinery/vending/hydronutrients,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"w" = (
|
||||
/obj/machinery/vending/hydroseeds,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"x" = (
|
||||
/obj/machinery/reagentgrinder{
|
||||
pixel_y = 5
|
||||
@@ -186,7 +186,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"y" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
@@ -197,13 +197,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"z" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"A" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/obj/structure/fans/tiny,
|
||||
@@ -217,31 +217,31 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"C" = (
|
||||
/obj/machinery/seed_extractor,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"D" = (
|
||||
/obj/machinery/biogenerator,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"E" = (
|
||||
/obj/machinery/chem_dispenser/mutagensaltpeter,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"F" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"G" = (
|
||||
/obj/structure/closet/crate/hydroponics,
|
||||
/obj/item/clothing/under/rank/hydroponics,
|
||||
@@ -251,13 +251,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"H" = (
|
||||
/obj/machinery/chem_master/condimaster,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"I" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/reagent_containers/glass/bucket,
|
||||
@@ -267,14 +267,14 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"J" = (
|
||||
/obj/item/weapon/storage/toolbox/syndicate,
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"K" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -292,6 +292,102 @@
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"N" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/box/disks_plantgene,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"O" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"P" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"Q" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"R" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"S" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"T" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"U" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"V" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"W" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"X" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"Y" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -346,10 +442,10 @@ a
|
||||
a
|
||||
c
|
||||
c
|
||||
T
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
U
|
||||
c
|
||||
c
|
||||
a
|
||||
@@ -389,12 +485,12 @@ c
|
||||
k
|
||||
c
|
||||
n
|
||||
h
|
||||
R
|
||||
u
|
||||
h
|
||||
h
|
||||
u
|
||||
h
|
||||
V
|
||||
u
|
||||
c
|
||||
a
|
||||
@@ -429,17 +525,17 @@ a
|
||||
a
|
||||
a
|
||||
c
|
||||
e
|
||||
N
|
||||
h
|
||||
c
|
||||
p
|
||||
P
|
||||
h
|
||||
p
|
||||
h
|
||||
h
|
||||
p
|
||||
h
|
||||
p
|
||||
X
|
||||
c
|
||||
a
|
||||
a
|
||||
@@ -539,17 +635,17 @@ a
|
||||
b
|
||||
a
|
||||
c
|
||||
h
|
||||
O
|
||||
h
|
||||
c
|
||||
p
|
||||
Q
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
p
|
||||
Y
|
||||
c
|
||||
a
|
||||
a
|
||||
@@ -587,12 +683,12 @@ c
|
||||
i
|
||||
c
|
||||
s
|
||||
h
|
||||
S
|
||||
y
|
||||
h
|
||||
h
|
||||
y
|
||||
h
|
||||
W
|
||||
J
|
||||
c
|
||||
a
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -475,7 +475,7 @@
|
||||
/area/ruin/derelictoutpost)
|
||||
"bq" = (
|
||||
/obj/effect/mob_spawn/human/corpse/nanotrasensoldier{
|
||||
helmet = null;
|
||||
head = null;
|
||||
id_job = "Tradepost Officer";
|
||||
name = "Tradeport Officer";
|
||||
random = 1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -37,6 +37,9 @@
|
||||
/area/ruin/powered/aesthetic)
|
||||
"j" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"k" = (
|
||||
@@ -153,10 +156,10 @@
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"G" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line,
|
||||
/turf/open/floor/plating/astplate{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"H" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
@@ -196,6 +199,39 @@
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plasteel/airless/asteroid,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"O" = (
|
||||
/obj/structure/chair/comfy/black{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"P" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"Q" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"R" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/astplate{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"S" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/astplate{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -294,7 +330,7 @@ h
|
||||
u
|
||||
y
|
||||
f
|
||||
B
|
||||
R
|
||||
d
|
||||
d
|
||||
a
|
||||
@@ -326,7 +362,7 @@ j
|
||||
k
|
||||
k
|
||||
v
|
||||
k
|
||||
P
|
||||
f
|
||||
C
|
||||
I
|
||||
@@ -390,11 +426,11 @@ a
|
||||
d
|
||||
c
|
||||
g
|
||||
n
|
||||
O
|
||||
n
|
||||
k
|
||||
w
|
||||
k
|
||||
Q
|
||||
g
|
||||
F
|
||||
I
|
||||
@@ -430,7 +466,7 @@ p
|
||||
u
|
||||
y
|
||||
g
|
||||
B
|
||||
S
|
||||
d
|
||||
d
|
||||
a
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
/area/awaymission/beach)
|
||||
"aC" = (
|
||||
/obj/effect/mob_spawn/human/cook{
|
||||
helmet = null;
|
||||
head = null;
|
||||
id_access = "Bartender";
|
||||
id_job = "Bartender";
|
||||
suit = /obj/item/clothing/suit/armor/vest;
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
/turf/closed/mineral,
|
||||
/area/awaymission/wwmines)
|
||||
"aO" = (
|
||||
/obj/effect/mob_spawn/human/syndicatecommando,
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatecommando,
|
||||
/turf/open/floor/plasteel/cult{
|
||||
name = "engraved floor";
|
||||
tag = "icon-cult"
|
||||
@@ -929,7 +929,7 @@
|
||||
},
|
||||
/area/awaymission/wwgov)
|
||||
"dh" = (
|
||||
/obj/effect/mob_spawn/human/syndicatecommando{
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatecommando{
|
||||
mob_name = "Syndicate Commando"
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
@@ -2017,7 +2017,7 @@
|
||||
},
|
||||
/area/awaymission/wwmines)
|
||||
"gy" = (
|
||||
/obj/effect/mob_spawn/human/syndicatecommando{
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatecommando{
|
||||
mob_name = "Syndicate Commando"
|
||||
},
|
||||
/turf/open/floor/grass,
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
The /tg/ codebase currently requires you to have 11 z-levels of the same size dimensions.
|
||||
z-level order is important, the order you put them in inside the map config.dm will determine what z level number they are assigned ingame.
|
||||
Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1
|
||||
|
||||
current as of 2016/6/2
|
||||
z1 = station
|
||||
z2 = centcomm
|
||||
z5 = mining
|
||||
Everything else = randomized space
|
||||
Last space-z level = empty
|
||||
*/
|
||||
|
||||
#define CROSSLINKED 2
|
||||
#define SELFLOOPING 1
|
||||
#define UNAFFECTED 0
|
||||
|
||||
#define MAIN_STATION "Main Station"
|
||||
#define CENTCOMM "CentComm"
|
||||
#define EMPTY_AREA_1 "Empty Area 1"
|
||||
#define EMPTY_AREA_2 "Empty Area 2"
|
||||
#define MINING "Mining Asteroid"
|
||||
#define EMPTY_AREA_3 "Empty Area 3"
|
||||
#define EMPTY_AREA_4 "Empty Area 4"
|
||||
#define EMPTY_AREA_5 "Empty Area 5"
|
||||
#define EMPTY_AREA_6 "Empty Area 6"
|
||||
#define EMPTY_AREA_7 "Empty Area 7"
|
||||
#define EMPTY_AREA_8 "Empty Area 8"
|
||||
#define AWAY_MISSION "Away Mission"
|
||||
#define AWAY_MISSION_LIST list(AWAY_MISSION = SELFLOOPING)
|
||||
#define DEFAULT_MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, MINING = SELFLOOPING, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED, EMPTY_AREA_5 = CROSSLINKED, EMPTY_AREA_6 = CROSSLINKED, EMPTY_AREA_7 = CROSSLINKED, EMPTY_AREA_8 = CROSSLINKED)
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef ALL_MAPS
|
||||
|
||||
#include "map_files\generic\SpaceStation.dmm"
|
||||
#include "map_files\generic\Centcomm.dmm"
|
||||
#include "map_files\generic\SpaceStation.dmm"
|
||||
#include "map_files\generic\Space.dmm"
|
||||
#include "map_files\generic\SpaceDock.dmm"
|
||||
#include "map_files\Mining\lavaland.dmm"
|
||||
#include "map_files\Mining\Lavaland.dmm"
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifdef ALL_MAPS
|
||||
#include "map_files\debug\runtimestation.dmm"
|
||||
#include "map_files\Deltastation\DeltaStation2.dmm"
|
||||
#include "map_files\MetaStation\MetaStation.dmm"
|
||||
#include "map_files\OmegaStation\OmegaStation.dmm"
|
||||
#include "map_files\PubbyStation\PubbyStation.dmm"
|
||||
#include "map_files\TgStation\tgstation.2.1.3.dmm"
|
||||
#include "map_files\Cerestation\cerestation.dmm"
|
||||
#include "map_files\CitadelStation\CitadelStation-1.2.1.dmm"
|
||||
|
||||
#include "map_files\generic\Centcomm.dmm"
|
||||
#include "map_files\generic\SpaceStation.dmm"
|
||||
#include "map_files\generic\Space.dmm"
|
||||
#include "map_files\generic\SpaceDock.dmm"
|
||||
|
||||
#include "map_files\Mining\Lavaland.dmm"
|
||||
|
||||
#ifdef TRAVISBUILDING
|
||||
#include "templates.dm"
|
||||
#endif
|
||||
#endif
|
||||
+40864
-43362
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+8002
-14842
File diff suppressed because it is too large
Load Diff
+8858
-12514
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+7316
-128268
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2648,7 +2648,7 @@
|
||||
/turf/open/floor/circuit,
|
||||
/area/ctf)
|
||||
"hq" = (
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"hr" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
@@ -3700,7 +3700,7 @@
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow;
|
||||
width = 50
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"jY" = (
|
||||
/turf/open/floor/plasteel/brown{
|
||||
@@ -4260,7 +4260,7 @@
|
||||
/area/centcom/control)
|
||||
"ln" = (
|
||||
/obj/structure/flora/grass/both,
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"lo" = (
|
||||
/obj/structure/table/reinforced,
|
||||
@@ -4415,11 +4415,11 @@
|
||||
/area/centcom/control)
|
||||
"lF" = (
|
||||
/obj/structure/flora/grass/brown,
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"lG" = (
|
||||
/obj/structure/flora/tree/pine,
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"lH" = (
|
||||
/turf/closed/indestructible/fakeglass{
|
||||
@@ -4433,7 +4433,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"lJ" = (
|
||||
/turf/closed/indestructible/riveted,
|
||||
@@ -4636,7 +4636,7 @@
|
||||
/area/syndicate_mothership/control)
|
||||
"mh" = (
|
||||
/obj/item/toy/figure/syndie,
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"mi" = (
|
||||
/obj/machinery/newscaster/security_unit,
|
||||
@@ -4769,7 +4769,7 @@
|
||||
/area/centcom/control)
|
||||
"mz" = (
|
||||
/obj/structure/flora/bush,
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"mA" = (
|
||||
/turf/closed/indestructible/fakeglass,
|
||||
@@ -5976,7 +5976,7 @@
|
||||
},
|
||||
/area/wizard_station)
|
||||
"pk" = (
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/space)
|
||||
"pl" = (
|
||||
/obj/machinery/computer/shuttle/syndicate/recall,
|
||||
@@ -6941,7 +6941,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/syndicate_mothership/control)
|
||||
"rl" = (
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/obj/machinery/porta_turret/syndicate/pod,
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 8;
|
||||
@@ -6960,7 +6960,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/assault_pod)
|
||||
"ro" = (
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/obj/machinery/porta_turret/syndicate/pod,
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 1;
|
||||
@@ -7776,7 +7776,7 @@
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow;
|
||||
width = 18
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/space)
|
||||
"th" = (
|
||||
/obj/item/weapon/storage/box/drinkingglasses,
|
||||
@@ -8097,7 +8097,7 @@
|
||||
name = "\improper FOURTH WALL";
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"tS" = (
|
||||
/turf/open/floor/wood,
|
||||
@@ -8332,14 +8332,14 @@
|
||||
},
|
||||
/area/syndicate_mothership/control)
|
||||
"ux" = (
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/obj/machinery/porta_turret/syndicate/pod,
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
icon_state = "diagonalWall3"
|
||||
},
|
||||
/area/shuttle/assault_pod)
|
||||
"uy" = (
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/obj/machinery/porta_turret/syndicate/pod,
|
||||
/turf/closed/wall/mineral/plastitanium{
|
||||
dir = 4;
|
||||
@@ -9745,7 +9745,7 @@
|
||||
/area/centcom/evac)
|
||||
"yc" = (
|
||||
/obj/structure/statue/uranium/nuke,
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"yd" = (
|
||||
/obj/structure/table/wood,
|
||||
@@ -12212,7 +12212,7 @@
|
||||
name = "Thunderdome Blast Door"
|
||||
},
|
||||
/turf/open/floor/plasteel/loadingarea{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
|
||||
baseturf = /turf/open/space;
|
||||
dir = 8
|
||||
},
|
||||
/area/tdome/arena)
|
||||
@@ -12243,7 +12243,7 @@
|
||||
name = "General Supply"
|
||||
},
|
||||
/turf/open/floor/plasteel/loadingarea{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
|
||||
baseturf = /turf/open/space;
|
||||
dir = 8
|
||||
},
|
||||
/area/tdome/arena)
|
||||
@@ -12394,7 +12394,7 @@
|
||||
/area/tdome/arena)
|
||||
"Ey" = (
|
||||
/turf/open/floor/plasteel/loadingarea{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
|
||||
baseturf = /turf/open/space;
|
||||
dir = 8
|
||||
},
|
||||
/area/tdome/arena)
|
||||
@@ -13716,7 +13716,7 @@
|
||||
/area/tdome/arena_source)
|
||||
"IS" = (
|
||||
/turf/open/floor/plasteel/loadingarea{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
|
||||
baseturf = /turf/open/space;
|
||||
dir = 8
|
||||
},
|
||||
/area/tdome/arena_source)
|
||||
@@ -13765,7 +13765,7 @@
|
||||
/area/tdome/arena_source)
|
||||
"Jd" = (
|
||||
/turf/open/floor/plasteel/loadingarea{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
|
||||
baseturf = /turf/open/space;
|
||||
dir = 8
|
||||
},
|
||||
/area/tdome/arena_source)
|
||||
@@ -14078,7 +14078,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"Kh" = (
|
||||
/obj/machinery/light{
|
||||
@@ -14104,7 +14104,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"Kk" = (
|
||||
/obj/structure/chair{
|
||||
@@ -14123,7 +14123,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"Km" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
@@ -14141,7 +14141,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"Kp" = (
|
||||
/obj/structure/flora/ausbushes/lavendergrass,
|
||||
@@ -14657,7 +14657,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"Lx" = (
|
||||
/obj/structure/flora/grass/brown,
|
||||
@@ -14665,7 +14665,7 @@
|
||||
set_cap = 1;
|
||||
set_luminosity = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere,
|
||||
/turf/open/floor/plating/asteroid/snow/airless,
|
||||
/area/syndicate_mothership)
|
||||
"Ly" = (
|
||||
/obj/structure/flora/grass/brown,
|
||||
@@ -14897,6 +14897,27 @@
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"Mg" = (
|
||||
/obj/item/cardboard_cutout{
|
||||
desc = "They seem to be ignoring you... Typical.";
|
||||
dir = 1;
|
||||
icon_state = "cutout_ntsec";
|
||||
name = "Private Security Officer"
|
||||
},
|
||||
/turf/open/floor/plasteel/darkred/side{
|
||||
dir = 1
|
||||
},
|
||||
/area/centcom/evac)
|
||||
"Mh" = (
|
||||
/obj/item/cardboard_cutout{
|
||||
desc = "They seem to be ignoring you... Typical.";
|
||||
icon_state = "cutout_ntsec";
|
||||
name = "Private Security Officer"
|
||||
},
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
/area/centcom/evac)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -65195,7 +65216,7 @@ sv
|
||||
wW
|
||||
xt
|
||||
xQ
|
||||
xZ
|
||||
Mg
|
||||
yC
|
||||
yC
|
||||
yU
|
||||
@@ -65454,7 +65475,7 @@ xp
|
||||
xR
|
||||
xZ
|
||||
yC
|
||||
yC
|
||||
Mh
|
||||
yV
|
||||
qk
|
||||
aa
|
||||
|
||||
+65537
-256
File diff suppressed because it is too large
Load Diff
+65549
-257
File diff suppressed because it is too large
Load Diff
+65537
-256
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,7 @@
|
||||
#define WACKY "Wacky"
|
||||
#define MUT_MUTE "Mute"
|
||||
#define SMILE "Smile"
|
||||
#define STONER "Stoner"
|
||||
#define UNINTELLIGABLE "Unintelligable"
|
||||
#define SWEDISH "Swedish"
|
||||
#define CHAV "Chav"
|
||||
|
||||
@@ -95,11 +95,13 @@
|
||||
|
||||
//tablecrafting defines
|
||||
#define CAT_NONE ""
|
||||
#define CAT_WEAPON "Weaponry"
|
||||
#define CAT_WEAPONRY "Weaponry"
|
||||
#define CAT_WEAPON "Weapons"
|
||||
#define CAT_AMMO "Ammunition"
|
||||
#define CAT_ROBOT "Robots"
|
||||
#define CAT_MISC "Misc"
|
||||
#define CAT_PRIMAL "Tribal"
|
||||
#define CAT_FOOD "Foods"
|
||||
#define CAT_BREAD "Breads"
|
||||
#define CAT_BURGER "Burgers"
|
||||
#define CAT_CAKE "Cakes"
|
||||
|
||||
@@ -51,8 +51,10 @@
|
||||
#define LIGHT_COLOR_GREEN "#64C864" //Bright but quickly dissipating neon green. rgb(100, 200, 100)
|
||||
#define LIGHT_COLOR_BLUE "#6496FA" //Cold, diluted blue. rgb(100, 150, 250)
|
||||
|
||||
#define LIGHT_COLOR_BLUEGREEN "#7DE1AF" //Light blueish green. rgb(125, 225, 175)
|
||||
#define LIGHT_COLOR_CYAN "#7DE1E1" //Diluted cyan. rgb(125, 225, 225)
|
||||
#define LIGHT_COLOR_LIGHT_CYAN "#40CEFF" //More-saturated cyan. rgb(64, 206, 255)
|
||||
#define LIGHT_COLOR_DARK_BLUE "#6496FA" //Saturated blue. rgb(51, 117, 248)
|
||||
#define LIGHT_COLOR_PINK "#E17DE1" //Diluted, mid-warmth pink. rgb(225, 125, 225)
|
||||
#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
|
||||
#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
|
||||
|
||||
@@ -34,8 +34,8 @@ Last space-z level = empty
|
||||
#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() }
|
||||
|
||||
//zlevel defines, can be overridden for different maps in the appropriate _maps file.
|
||||
#define ZLEVEL_STATION 1
|
||||
#define ZLEVEL_CENTCOM 2
|
||||
#define ZLEVEL_CENTCOM 1
|
||||
#define ZLEVEL_STATION 2
|
||||
#define ZLEVEL_MINING 5
|
||||
#define ZLEVEL_LAVALAND 5
|
||||
#define ZLEVEL_EMPTY_SPACE 11
|
||||
|
||||
@@ -4,6 +4,19 @@
|
||||
// #define EAST 4
|
||||
// #define WEST 8
|
||||
|
||||
//These get to go at the top, because they're special
|
||||
//You can use these defines to get the typepath of the currently running proc/verb (yes procs + verbs are objects)
|
||||
/* eg:
|
||||
/mob/living/carbon/human/death()
|
||||
world << THIS_PROC_TYPE_STR //You can only output the string versions
|
||||
Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a string with () (eg: the _WITH_ARGS defines) to make it look nicer)
|
||||
*/
|
||||
#define THIS_PROC_TYPE .....
|
||||
#define THIS_PROC_TYPE_STR "[THIS_PROC_TYPE]" //Because you can only obtain a string of THIS_PROC_TYPE using "[]", and it's nice to just +/+= strings
|
||||
#define THIS_PROC_TYPE_STR_WITH_ARGS "[THIS_PROC_TYPE]([args.Join(",")])"
|
||||
#define THIS_PROC_TYPE_WEIRD ...... //This one is WEIRD, in some cases (When used in certain defines? (eg: ASSERT)) THIS_PROC_TYPE will fail to work, but THIS_PROC_TYPE_WEIRD will work instead
|
||||
#define THIS_PROC_TYPE_WEIRD_STR "[THIS_PROC_TYPE_WEIRD]" //Included for completeness
|
||||
#define THIS_PROC_TYPE_WEIRD_STR_WITH_ARGS "[THIS_PROC_TYPE_WEIRD]([args.Join(",")])" //Ditto
|
||||
|
||||
#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#define REBOOT_MODE_NORMAL 0
|
||||
#define REBOOT_MODE_HARD 1
|
||||
#define REBOOT_MODE_SHUTDOWN 2
|
||||
|
||||
#define IRC_STATUS_THROTTLE 50
|
||||
|
||||
//keep these in sync with TGS3
|
||||
#define SERVICE_WORLD_PARAM "server_service"
|
||||
#define SERVICE_PR_TEST_JSON "..\\..\\prtestjob.json"
|
||||
|
||||
#define SERVICE_CMD_HARD_REBOOT "hard_reboot"
|
||||
#define SERVICE_CMD_GRACEFUL_SHUTDOWN "graceful_shutdown"
|
||||
#define SERVICE_CMD_WORLD_ANNOUNCE "world_announce"
|
||||
#define SERVICE_CMD_IRC_STATUS "irc_status"
|
||||
#define SERVICE_CMD_ADMIN_MSG "adminmsg"
|
||||
#define SERVICE_CMD_NAME_CHECK "namecheck"
|
||||
#define SERVICE_CMD_ADMIN_WHO "adminwho"
|
||||
|
||||
//#define SERVICE_CMD_PARAM_KEY //defined in __compile_options.dm
|
||||
#define SERVICE_CMD_PARAM_COMMAND "command"
|
||||
#define SERVICE_CMD_PARAM_MESSAGE "message"
|
||||
#define SERVICE_CMD_PARAM_TARGET "target"
|
||||
#define SERVICE_CMD_PARAM_SENDER "sender"
|
||||
|
||||
#define SERVICE_REQUEST_KILL_PROCESS "killme"
|
||||
#define SERVICE_REQUEST_IRC_BROADCAST "irc"
|
||||
#define SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE "send2irc"
|
||||
@@ -30,7 +30,6 @@
|
||||
// DEBUFFS //
|
||||
/////////////
|
||||
|
||||
#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark
|
||||
#define STATUS_EFFECT_BELLIGERENT /datum/status_effect/belligerent //forces the affected to walk, doing damage if they try to run
|
||||
|
||||
#define STATUS_EFFECT_MANIAMOTOR /datum/status_effect/maniamotor //disrupts, damages, and confuses the affected as long as they're in range of the motor
|
||||
@@ -41,3 +40,12 @@
|
||||
|
||||
#define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes
|
||||
#define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage
|
||||
|
||||
|
||||
/////////////
|
||||
// NEUTRAL //
|
||||
/////////////
|
||||
|
||||
#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark
|
||||
|
||||
#define STATUS_EFFECT_CRUSHERDAMAGETRACKING /datum/status_effect/crusher_damage //tracks total kinetic crusher damage on a target
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
// Subsystems shutdown in the reverse of the order they initialize in
|
||||
// The numbers just define the ordering, they are meaningless otherwise.
|
||||
|
||||
#define INIT_ORDER_DBCORE 17
|
||||
#define INIT_ORDER_SERVER_MAINT 16
|
||||
#define INIT_ORDER_JOBS 15
|
||||
#define INIT_ORDER_EVENTS 14
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#define WIRE_AI "AI Connection"
|
||||
#define WIRE_ALARM "Alarm"
|
||||
#define WIRE_AVOIDANCE "Avoidance"
|
||||
#define WIRE_BACKUP1 "Auxillary Power 1"
|
||||
#define WIRE_BACKUP2 "Auxillary Power 2"
|
||||
#define WIRE_BACKUP1 "Auxiliary Power 1"
|
||||
#define WIRE_BACKUP2 "Auxiliary Power 2"
|
||||
#define WIRE_BEACON "Beacon"
|
||||
#define WIRE_BOLTS "Bolts"
|
||||
#define WIRE_BOOM "Boom"
|
||||
|
||||
@@ -131,9 +131,12 @@
|
||||
return
|
||||
|
||||
//Removes any null entries from the list
|
||||
//Returns TRUE if the list had nulls, FALSE otherwise
|
||||
/proc/listclearnulls(list/L)
|
||||
var/list/N = new(L.len)
|
||||
var/start_len = L.len
|
||||
var/list/N = new(start_len)
|
||||
L -= N
|
||||
return L.len < start_len
|
||||
|
||||
/*
|
||||
* Returns list containing all the entries from first list that are not present in second.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
for(var/file in args)
|
||||
src << browse_rsc(file)
|
||||
|
||||
/client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm"))
|
||||
/client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list("txt","log","htm", "html"))
|
||||
var/path = root
|
||||
|
||||
for(var/i=0, i<max_iterations, i++)
|
||||
@@ -22,9 +22,13 @@
|
||||
|
||||
if(copytext(path,-1,0) != "/") //didn't choose a directory, no need to iterate again
|
||||
break
|
||||
|
||||
var/extension = copytext(path,-4,0)
|
||||
if( !fexists(path) || !(extension in valid_extensions) )
|
||||
var/extensions
|
||||
for(var/i in valid_extensions)
|
||||
if(extensions)
|
||||
extensions += "|"
|
||||
extensions += "[i]"
|
||||
var/regex/valid_ext = new("\\.([extensions])$", "i")
|
||||
if( !fexists(path) || !(valid_ext.Find(path)) )
|
||||
to_chat(src, "<font color='red'>Error: browse_files(): File not found/Invalid file([path]).</font>")
|
||||
return
|
||||
|
||||
|
||||
@@ -507,7 +507,8 @@
|
||||
return
|
||||
|
||||
//First we spawn a dude.
|
||||
var/mob/living/carbon/human/new_character = new(pick(GLOB.latejoin))//The mob being spawned.
|
||||
var/mob/living/carbon/human/new_character = new//The mob being spawned.
|
||||
SSjob.SendToLateJoin(new_character)
|
||||
|
||||
G_found.client.prefs.copy_to(new_character)
|
||||
new_character.dna.update_dna_identity()
|
||||
|
||||
@@ -1079,18 +1079,17 @@ B --><-- A
|
||||
return L
|
||||
|
||||
//similar function to RANGE_TURFS(), but will search spiralling outwards from the center (like the above, but only turfs)
|
||||
/proc/spiral_range_turfs(dist=0, center=usr, orange=0)
|
||||
/proc/spiral_range_turfs(dist=0, center=usr, orange=0, list/outlist = list(), tick_checked)
|
||||
outlist.Cut()
|
||||
if(!dist)
|
||||
if(!orange)
|
||||
return list(center)
|
||||
else
|
||||
return list()
|
||||
outlist += center
|
||||
return outlist
|
||||
|
||||
var/turf/t_center = get_turf(center)
|
||||
if(!t_center)
|
||||
return list()
|
||||
return outlist
|
||||
|
||||
var/list/L = list()
|
||||
var/list/L = outlist
|
||||
var/turf/T
|
||||
var/y
|
||||
var/x
|
||||
@@ -1128,6 +1127,8 @@ B --><-- A
|
||||
if(T)
|
||||
L += T
|
||||
c_dist++
|
||||
if(tick_checked)
|
||||
CHECK_TICK
|
||||
|
||||
return L
|
||||
|
||||
@@ -1343,7 +1344,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
//kevinz000 if you touch this I will hunt you down
|
||||
GLOBAL_VAR_INIT(valid_HTTPSGet, FALSE)
|
||||
GLOBAL_PROTECT(valid_HTTPSGet)
|
||||
/proc/HTTPSGet(url)
|
||||
/proc/HTTPSGet(url) //tgs2 support
|
||||
if(findtext(url, "\""))
|
||||
GLOB.valid_HTTPSGet = FALSE
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
//MINOR TWEAKS/MISC
|
||||
#define AGE_MIN 17 //youngest a character can be
|
||||
#define AGE_MAX 85 //oldest a character can be
|
||||
#define WIZARD_AGE_MIN 30 //youngest a wizard can be
|
||||
#define WIZARD_AGE_MIN 30 //youngest a wizard can be
|
||||
#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up
|
||||
#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets
|
||||
#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you
|
||||
@@ -62,14 +62,12 @@
|
||||
#endif
|
||||
|
||||
//Update this whenever you need to take advantage of more recent byond features
|
||||
#define MIN_COMPILER_VERSION 511
|
||||
#define MIN_COMPILER_VERSION 511
|
||||
#if DM_VERSION < MIN_COMPILER_VERSION
|
||||
//Don't forget to update this part
|
||||
#error Your version of BYOND is too out-of-date to compile this project. Go to byond.com/download and update.
|
||||
#error You need version 511 or higher
|
||||
#error You need version 511 or higher
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef SERVERTOOLS
|
||||
#define SERVERTOOLS 0
|
||||
#endif
|
||||
#define SERVICE_CMD_PARAM_KEY "serviceCommsKey"
|
||||
|
||||
@@ -22,12 +22,12 @@ GLOBAL_VAR_INIT(tinted_weldhelh, TRUE)
|
||||
// Debug2 is used in conjunction with a lot of admin verbs and therefore is actually legit.
|
||||
GLOBAL_VAR_INIT(Debug, FALSE) // global debug switch
|
||||
GLOBAL_VAR_INIT(Debug2, FALSE)
|
||||
|
||||
//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
|
||||
GLOBAL_VAR_INIT(MAX_EX_DEVESTATION_RANGE, 3)
|
||||
GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7)
|
||||
GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
|
||||
|
||||
|
||||
//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
|
||||
GLOBAL_VAR_INIT(MAX_EX_DEVESTATION_RANGE, 3)
|
||||
GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7)
|
||||
GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events
|
||||
|
||||
GLOBAL_LIST_EMPTY(wizardstart)
|
||||
GLOBAL_LIST_EMPTY(newplayer_start)
|
||||
GLOBAL_LIST_EMPTY(latejoin)
|
||||
GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these
|
||||
GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here
|
||||
GLOBAL_LIST_EMPTY(xeno_spawn)//Aliens spawn at these.
|
||||
|
||||
@@ -32,4 +32,6 @@ GLOBAL_LIST_EMPTY(ladders)
|
||||
GLOBAL_LIST_EMPTY(trophy_cases)
|
||||
|
||||
GLOBAL_LIST_EMPTY(wire_color_directory)
|
||||
GLOBAL_LIST_EMPTY(wire_name_directory)
|
||||
GLOBAL_LIST_EMPTY(wire_name_directory)
|
||||
|
||||
GLOBAL_LIST_EMPTY(ai_status_displays)
|
||||
|
||||
@@ -31,4 +31,6 @@ GLOBAL_PROTECT(OOClog)
|
||||
GLOBAL_LIST_EMPTY(adminlog)
|
||||
GLOBAL_PROTECT(adminlog)
|
||||
|
||||
GLOBAL_LIST_EMPTY(individual_log_list) // Logs each mob individual logs, a global so it doesn't get lost on cloning/changing mobs
|
||||
|
||||
GLOBAL_LIST_EMPTY(active_turfs_startlist)
|
||||
@@ -208,6 +208,8 @@
|
||||
var/generate_minimaps = 0
|
||||
var/grey_assistants = 0
|
||||
|
||||
var/id_console_jobslot_delay = 30
|
||||
|
||||
var/lavaland_budget = 60
|
||||
var/space_budget = 16
|
||||
|
||||
@@ -261,6 +263,8 @@
|
||||
|
||||
var/mice_roundstart = 10 // how many wire chewing rodents spawn at roundstart.
|
||||
|
||||
var/irc_announce_new_game = FALSE
|
||||
|
||||
/datum/configuration/New()
|
||||
gamemode_cache = typecacheof(/datum/game_mode,TRUE)
|
||||
for(var/T in gamemode_cache)
|
||||
@@ -409,6 +413,8 @@
|
||||
usewhitelist = TRUE
|
||||
if("allow_metadata")
|
||||
allow_Metadata = 1
|
||||
if("id_console_jobslot_delay")
|
||||
id_console_jobslot_delay = text2num(value)
|
||||
if("inactivity_period")
|
||||
inactivity_period = text2num(value) * 10 //documented as seconds in config.txt
|
||||
if("afk_period")
|
||||
@@ -423,7 +429,7 @@
|
||||
popup_admin_pm = 1
|
||||
if("allow_holidays")
|
||||
allow_holidays = 1
|
||||
if("useircbot")
|
||||
if("useircbot") //tgs2 support
|
||||
useircbot = 1
|
||||
if("ticklag")
|
||||
var/ticklag = text2num(value)
|
||||
@@ -536,6 +542,8 @@
|
||||
error_silence_time = text2num(value)
|
||||
if("error_msg_delay")
|
||||
error_msg_delay = text2num(value)
|
||||
if("irc_announce_new_game")
|
||||
irc_announce_new_game = TRUE
|
||||
else
|
||||
GLOB.config_error_log << "Unknown setting in configuration: '[name]'"
|
||||
|
||||
@@ -827,6 +835,8 @@
|
||||
if ("endmap")
|
||||
maplist[currentmap.map_name] = currentmap
|
||||
currentmap = null
|
||||
if ("disabled")
|
||||
currentmap = null
|
||||
else
|
||||
GLOB.config_error_log << "Unknown command in map vote config: '[command]'"
|
||||
|
||||
|
||||
@@ -177,7 +177,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
to_chat(world, "<span class='boldannounce'>[msg]</span>")
|
||||
log_world(msg)
|
||||
|
||||
SetRunLevel(1)
|
||||
if (!current_runlevel)
|
||||
SetRunLevel(1)
|
||||
|
||||
// Sort subsystems by display setting for easy access.
|
||||
sortTim(subsystems, /proc/cmp_subsystem_display)
|
||||
|
||||
@@ -27,7 +27,7 @@ SUBSYSTEM_DEF(blackbox)
|
||||
if(M.client)
|
||||
playercount += 1
|
||||
var/admincount = GLOB.admins.len
|
||||
var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON('[world.internet_address]'), '[world.port]')")
|
||||
var/datum/DBQuery/query_record_playercount = SSdbcore.NewQuery("INSERT INTO [format_table_name("legacy_population")] (playercount, admincount, time, server_ip, server_port) VALUES ([playercount], [admincount], '[SQLtime()]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')")
|
||||
query_record_playercount.Execute()
|
||||
|
||||
/datum/controller/subsystem/blackbox/Recover()
|
||||
@@ -82,8 +82,6 @@ SUBSYSTEM_DEF(blackbox)
|
||||
add_details("radio_usage","PDA-[pda_msg_amt]")
|
||||
add_details("radio_usage","RC-[rc_msg_amt]")
|
||||
|
||||
set_details("round_end","[time2text(world.realtime)]") //This one MUST be the last one that gets set.
|
||||
|
||||
if (!SSdbcore.Connect())
|
||||
return
|
||||
|
||||
@@ -178,7 +176,7 @@ SUBSYSTEM_DEF(blackbox)
|
||||
var/sqlstamina = sanitizeSQL(L.getStaminaLoss())
|
||||
var/coord = sanitizeSQL("[L.x], [L.y], [L.z]")
|
||||
var/map = sanitizeSQL(SSmapping.config.map_name)
|
||||
var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, coord, mapname, server_ip, server_port) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[SQLtime()]', '[laname]', '[lakey]', '[sqlgender]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[coord]', '[map]', INET_ATON('[world.internet_address]'), '[world.port]')")
|
||||
var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, coord, mapname, server_ip, server_port) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[SQLtime()]', '[laname]', '[lakey]', '[sqlgender]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]')")
|
||||
query_report_death.Execute()
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
SUBSYSTEM_DEF(dbcore)
|
||||
name = "Database"
|
||||
flags = SS_NO_INIT|SS_NO_FIRE
|
||||
|
||||
init_order = INIT_ORDER_DBCORE
|
||||
var/const/FAILED_DB_CONNECTION_CUTOFF = 5
|
||||
|
||||
var/const/Default_Cursor = 0
|
||||
@@ -30,6 +30,11 @@ SUBSYSTEM_DEF(dbcore)
|
||||
_db_con = SSdbcore._db_con
|
||||
|
||||
/datum/controller/subsystem/dbcore/Shutdown()
|
||||
//This is as close as we can get to the true round end before Disconnect() without changing where it's called, defeating the reason this is a subsystem
|
||||
if(SSdbcore.Connect())
|
||||
var/sql_station_name = sanitizeSQL(station_name())
|
||||
var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (end_datetime, game_mode_result, end_state, station_name) VALUES (Now(), '[SSticker.mode_result]', '[SSticker.end_state]', '[sql_station_name]') WHERE id = [GLOB.round_id]")
|
||||
query_round_end.Execute()
|
||||
if(IsConnected())
|
||||
Disconnect()
|
||||
|
||||
@@ -48,7 +53,7 @@ SUBSYSTEM_DEF(dbcore)
|
||||
|
||||
if(failed_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to connect anymore.
|
||||
return FALSE
|
||||
|
||||
|
||||
if(!config.sql_enabled)
|
||||
return FALSE
|
||||
|
||||
@@ -171,16 +176,16 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table
|
||||
var/_db_query
|
||||
|
||||
/datum/DBQuery/New(sql_query, datum/controller/subsystem/dbcore/connection_handler, cursor_handler)
|
||||
if(sql_query)
|
||||
if(sql_query)
|
||||
sql = sql_query
|
||||
if(connection_handler)
|
||||
if(connection_handler)
|
||||
db_connection = connection_handler
|
||||
if(cursor_handler)
|
||||
if(cursor_handler)
|
||||
default_cursor = cursor_handler
|
||||
item = list()
|
||||
_db_query = _dm_db_new_query()
|
||||
|
||||
/datum/DBQuery/proc/Connect(datum/controller/subsystem/dbcore/connection_handler)
|
||||
/datum/DBQuery/proc/Connect(datum/controller/subsystem/dbcore/connection_handler)
|
||||
db_connection = connection_handler
|
||||
|
||||
/datum/DBQuery/proc/warn_execute()
|
||||
@@ -194,16 +199,16 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table
|
||||
if(!. && log_error)
|
||||
log_sql("[ErrorMsg()] | Query used: [sql]")
|
||||
|
||||
/datum/DBQuery/proc/NextRow()
|
||||
/datum/DBQuery/proc/NextRow()
|
||||
return _dm_db_next_row(_db_query,item,conversions)
|
||||
|
||||
/datum/DBQuery/proc/RowsAffected()
|
||||
return _dm_db_rows_affected(_db_query)
|
||||
|
||||
/datum/DBQuery/proc/RowCount()
|
||||
/datum/DBQuery/proc/RowCount()
|
||||
return _dm_db_row_count(_db_query)
|
||||
|
||||
/datum/DBQuery/proc/ErrorMsg()
|
||||
/datum/DBQuery/proc/ErrorMsg()
|
||||
return _dm_db_error_msg(_db_query)
|
||||
|
||||
/datum/DBQuery/proc/Columns()
|
||||
@@ -232,11 +237,11 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table
|
||||
return db_connection.Quote(str)
|
||||
|
||||
/datum/DBQuery/proc/SetConversion(column,conversion)
|
||||
if(istext(column))
|
||||
if(istext(column))
|
||||
column = columns.Find(column)
|
||||
if(!conversions)
|
||||
if(!conversions)
|
||||
conversions = list(column)
|
||||
else if(conversions.len < column)
|
||||
else if(conversions.len < column)
|
||||
conversions.len = column
|
||||
conversions[column] = conversion
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ SUBSYSTEM_DEF(events)
|
||||
//These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up.
|
||||
var/list/danger_areas = list(
|
||||
/area/engine/break_room,
|
||||
/area/engine/chiefs_office)
|
||||
/area/crew_quarters/heads/chief)
|
||||
|
||||
//Need to locate() as it's just a list of paths.
|
||||
return locate(pick((GLOB.the_station_areas - safe_areas) + danger_areas))
|
||||
|
||||
@@ -0,0 +1,510 @@
|
||||
SUBSYSTEM_DEF(explosion)
|
||||
priority = 99
|
||||
wait = 1
|
||||
flags = SS_TICKER|SS_NO_INIT
|
||||
|
||||
var/list/explosions
|
||||
|
||||
var/rebuild_tick_split_count = FALSE
|
||||
var/tick_portions_required = 0
|
||||
|
||||
var/list/logs
|
||||
|
||||
var/list/zlevels_that_ignore_bombcap
|
||||
var/list/doppler_arrays
|
||||
|
||||
//legacy caps, set by config
|
||||
var/devastation_cap = 3
|
||||
var/heavy_cap = 7
|
||||
var/light_cap = 14
|
||||
var/flash_cap = 14
|
||||
var/flame_cap = 14
|
||||
var/dyn_ex_scale = 0.5
|
||||
|
||||
var/id_counter = 0
|
||||
|
||||
/datum/controller/subsystem/explosion/PreInit()
|
||||
doppler_arrays = list()
|
||||
logs = list()
|
||||
explosions = list()
|
||||
zlevels_that_ignore_bombcap = list("[ZLEVEL_MINING]")
|
||||
|
||||
/datum/controller/subsystem/explosion/Shutdown()
|
||||
QDEL_LIST(explosions)
|
||||
QDEL_LIST(logs)
|
||||
zlevels_that_ignore_bombcap.Cut()
|
||||
|
||||
/datum/controller/subsystem/explosion/Recover()
|
||||
explosions = SSexplosion.explosions
|
||||
logs = SSexplosion.logs
|
||||
id_counter = SSexplosion.id_counter
|
||||
rebuild_tick_split_count = TRUE
|
||||
zlevels_that_ignore_bombcap = SSexplosion.zlevels_that_ignore_bombcap
|
||||
doppler_arrays = SSexplosion.doppler_arrays
|
||||
|
||||
devastation_cap = SSexplosion.devastation_cap
|
||||
heavy_cap = SSexplosion.heavy_cap
|
||||
light_cap = SSexplosion.light_cap
|
||||
flash_cap = SSexplosion.flash_cap
|
||||
flame_cap = SSexplosion.flame_cap
|
||||
dyn_ex_scale = SSexplosion.dyn_ex_scale
|
||||
|
||||
/datum/controller/subsystem/explosion/fire()
|
||||
var/list/cached_explosions = explosions
|
||||
var/num_explosions = cached_explosions.len
|
||||
if(!num_explosions)
|
||||
return
|
||||
|
||||
//figure exactly how many tick splits are required
|
||||
var/num_splits
|
||||
if(rebuild_tick_split_count)
|
||||
var/reactionary = config.reactionary_explosions
|
||||
num_splits = num_explosions
|
||||
for(var/I in cached_explosions)
|
||||
var/datum/explosion/E = I
|
||||
if(!E.turfs_processed)
|
||||
++num_splits
|
||||
if(reactionary && !E.densities_processed)
|
||||
++num_splits
|
||||
tick_portions_required = num_splits
|
||||
else
|
||||
num_splits = tick_portions_required
|
||||
|
||||
MC_SPLIT_TICK_INIT(num_splits)
|
||||
|
||||
for(var/I in cached_explosions)
|
||||
var/datum/explosion/E = I
|
||||
|
||||
var/etp = E.turfs_processed
|
||||
if(!etp)
|
||||
if(GatherTurfs(E))
|
||||
--tick_portions_required
|
||||
etp = TRUE
|
||||
MC_SPLIT_TICK
|
||||
|
||||
var/edp = E.densities_processed
|
||||
if(!edp)
|
||||
if(DensityCalculate(E, etp))
|
||||
--tick_portions_required
|
||||
edp = TRUE
|
||||
MC_SPLIT_TICK
|
||||
|
||||
if(ProcessExplosion(E, edp)) //splits the tick
|
||||
--tick_portions_required
|
||||
explosions -= E
|
||||
logs += E
|
||||
NotifyDopplers(E)
|
||||
MC_SPLIT_TICK
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/NotifyDopplers(datum/explosion/E)
|
||||
for(var/array in doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(E.epicenter, E.devastation, E.heavy, E.light, E.finished_at - E.started_at, E.orig_dev_range, E.orig_heavy_range, E.orig_light_range)
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/Create(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0 , silent = FALSE, smoke = FALSE)
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [get_area(epicenter)] [ADMIN_COORDJMP(epicenter)]")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
|
||||
var/datum/explosion/E = new(++id_counter, epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, flame_range, silent, smoke, ignorecap)
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect_system/explosion/Eff
|
||||
if(smoke)
|
||||
Eff = new /datum/effect_system/explosion/smoke
|
||||
else
|
||||
Eff = new
|
||||
Eff.set_up(epicenter)
|
||||
Eff.start()
|
||||
|
||||
//flash mobs
|
||||
if(flash_range)
|
||||
for(var/mob/living/L in viewers(flash_range, epicenter))
|
||||
L.flash_act()
|
||||
|
||||
if(!silent)
|
||||
ExplosionSound(epicenter, devastation_range, heavy_impact_range, E.extent)
|
||||
|
||||
//add to SS
|
||||
if(E.extent)
|
||||
tick_portions_required += 2 + (config.reactionary_explosions ? 1 : 0)
|
||||
explosions += E
|
||||
else
|
||||
logs += E //Already done processing
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/CreateDynamic(atom/epicenter, power, flash_range, adminlog = TRUE, ignorecap = TRUE, flame_range = 0 , silent = FALSE, smoke = TRUE)
|
||||
if(!power)
|
||||
return
|
||||
var/range = round((2 * power) ** dyn_ex_scale)
|
||||
Create(epicenter, round(range * 0.25), round(range * 0.5), round(range), flash_range*range, adminlog, ignorecap, flame_range*range, silent, smoke)
|
||||
|
||||
// Using default dyn_ex scale:
|
||||
// 100 explosion power is a (5, 10, 20) explosion.
|
||||
// 75 explosion power is a (4, 8, 17) explosion.
|
||||
// 50 explosion power is a (3, 7, 14) explosion.
|
||||
// 25 explosion power is a (2, 5, 10) explosion.
|
||||
// 10 explosion power is a (1, 3, 6) explosion.
|
||||
// 5 explosion power is a (0, 1, 3) explosion.
|
||||
// 1 explosion power is a (0, 0, 1) explosion.
|
||||
|
||||
/datum/explosion
|
||||
var/explosion_id
|
||||
var/turf/epicenter
|
||||
|
||||
var/started_at
|
||||
var/finished_at
|
||||
var/tick_started
|
||||
var/tick_finished
|
||||
|
||||
var/turfs_processed = FALSE
|
||||
var/densities_processed = FALSE
|
||||
|
||||
var/orig_dev_range
|
||||
var/orig_heavy_range
|
||||
var/orig_light_range
|
||||
var/orig_flash_range
|
||||
var/orig_flame_range
|
||||
|
||||
var/devastation
|
||||
var/heavy
|
||||
var/light
|
||||
var/extent
|
||||
|
||||
var/flash
|
||||
var/flame
|
||||
|
||||
var/gather_dist = 0
|
||||
|
||||
var/list/gathered_turfs
|
||||
var/list/calculated_turfs
|
||||
|
||||
var/list/unsafe_turfs
|
||||
|
||||
/datum/explosion/New(id, turf/epi, devastation_range, heavy_impact_range, light_impact_range, flash_range, flame_range, silent, smoke, ignorecap)
|
||||
explosion_id = id
|
||||
epicenter = epi
|
||||
|
||||
densities_processed = !config.reactionary_explosions
|
||||
|
||||
orig_dev_range = devastation_range
|
||||
orig_heavy_range = heavy_impact_range
|
||||
orig_light_range = light_impact_range
|
||||
orig_flash_range = flash_range
|
||||
orig_flame_range = flame_range
|
||||
|
||||
if(!ignorecap && !("[epicenter.z]" in SSexplosion.zlevels_that_ignore_bombcap))
|
||||
//Clamp all values
|
||||
devastation_range = min(SSexplosion.devastation_cap, devastation_range)
|
||||
heavy_impact_range = min(SSexplosion.heavy_cap, heavy_impact_range)
|
||||
light_impact_range = min(SSexplosion.light_cap, light_impact_range)
|
||||
flash_range = min(SSexplosion.flash_cap, flash_range)
|
||||
flame_range = min(SSexplosion.flame_cap, flame_range)
|
||||
|
||||
//store this
|
||||
devastation = devastation_range
|
||||
heavy = heavy_impact_range
|
||||
light = light_impact_range
|
||||
|
||||
extent = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
|
||||
|
||||
flash = flash_range
|
||||
flame = flame_range
|
||||
|
||||
started_at = REALTIMEOFDAY
|
||||
tick_started = world.time
|
||||
|
||||
gathered_turfs = list()
|
||||
calculated_turfs = list()
|
||||
unsafe_turfs = list()
|
||||
|
||||
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
|
||||
// Stereo users will also hear the direction of the explosion!
|
||||
|
||||
// Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions.
|
||||
// 3/7/14 will calculate to 80 + 35
|
||||
/proc/ExplosionSound(turf/epicenter, devastation_range, heavy_impact_range, extent)
|
||||
var/far_dist = 0
|
||||
far_dist += heavy_impact_range * 5
|
||||
far_dist += devastation_range * 20
|
||||
|
||||
var/z0 = epicenter.z
|
||||
|
||||
var/frequency = get_rand_frequency()
|
||||
var/ex_sound = get_sfx("explosion")
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
// Double check for client
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == z0)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(extent + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
|
||||
/datum/explosion/Destroy()
|
||||
SSexplosion.explosions -= src
|
||||
SSexplosion.logs -= src
|
||||
LAZYCLEARLIST(gathered_turfs)
|
||||
LAZYCLEARLIST(calculated_turfs)
|
||||
LAZYCLEARLIST(unsafe_turfs)
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/GatherTurfs(datum/explosion/E)
|
||||
var/turf/epicenter = E.epicenter
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
var/c_dist = E.gather_dist
|
||||
var/dist = E.extent
|
||||
|
||||
var/list/L = E.gathered_turfs
|
||||
|
||||
if(!c_dist)
|
||||
L += epicenter
|
||||
++c_dist
|
||||
|
||||
while( c_dist <= dist )
|
||||
var/y = y0 + c_dist
|
||||
var/x = x0 - c_dist + 1
|
||||
for(x in x to x0 + c_dist)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
|
||||
y = y0 + c_dist - 1
|
||||
x = x0 + c_dist
|
||||
for(y in y0 - c_dist to y)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
|
||||
y = y0 - c_dist
|
||||
x = x0 + c_dist - 1
|
||||
for(x in x0 - c_dist to x)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
|
||||
y = y0 - c_dist + 1
|
||||
x = x0 - c_dist
|
||||
for(y in y to y0 + c_dist)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
++c_dist
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
break
|
||||
|
||||
if(c_dist > dist)
|
||||
E.turfs_processed = TRUE
|
||||
return TRUE
|
||||
else
|
||||
E.gather_dist = c_dist
|
||||
return FALSE
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/DensityCalculate(datum/explosion/E, done_gathering_turfs)
|
||||
var/list/L = E.calculated_turfs
|
||||
var/cut_to = 1
|
||||
for(var/I in E.gathered_turfs) // we cache the explosion block rating of every turf in the explosion area
|
||||
var/turf/T = I
|
||||
++cut_to
|
||||
|
||||
var/current_exp_block = T.density ? T.explosion_block : 0
|
||||
|
||||
for(var/obj/machinery/door/D in T)
|
||||
if(D.density)
|
||||
current_exp_block += D.explosion_block
|
||||
|
||||
for(var/obj/structure/window/W in T)
|
||||
if(W.reinf && W.fulltile)
|
||||
current_exp_block += W.explosion_block
|
||||
|
||||
for(var/obj/structure/blob/B in T)
|
||||
current_exp_block += B.explosion_block
|
||||
|
||||
L[T] = current_exp_block
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
E.gathered_turfs.Cut(1, cut_to)
|
||||
return FALSE
|
||||
|
||||
E.gathered_turfs.Cut()
|
||||
return done_gathering_turfs
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/ProcessExplosion(datum/explosion/E, done_calculating_turfs)
|
||||
//cache shit for speed
|
||||
var/id = E.explosion_id
|
||||
|
||||
var/list/cached_unsafe = E.unsafe_turfs
|
||||
var/list/cached_exp_block = E.calculated_turfs
|
||||
var/list/affected_turfs = cached_exp_block ? cached_exp_block : E.gathered_turfs
|
||||
|
||||
var/devastation_range = E.devastation
|
||||
var/heavy_impact_range = E.heavy
|
||||
var/light_impact_range = E.light
|
||||
|
||||
var/flame_range = E.flame
|
||||
var/throw_range_max = E.extent
|
||||
|
||||
var/turf/epi = E.epicenter
|
||||
|
||||
var/x0 = epi.x
|
||||
var/y0 = epi.y
|
||||
|
||||
var/cut_to = 1
|
||||
for(var/TI in affected_turfs)
|
||||
var/turf/T = TI
|
||||
++cut_to
|
||||
|
||||
var/init_dist = cheap_hypotenuse(T.x, T.y, x0, y0)
|
||||
var/dist = init_dist
|
||||
|
||||
if(cached_exp_block)
|
||||
var/turf/Trajectory = T
|
||||
while(Trajectory != epi)
|
||||
Trajectory = get_step_towards(Trajectory, epi)
|
||||
dist += cached_exp_block[Trajectory]
|
||||
|
||||
var/flame_dist = dist < flame_range
|
||||
var/throw_dist = dist
|
||||
|
||||
if(dist < devastation_range)
|
||||
dist = 1
|
||||
else if(dist < heavy_impact_range)
|
||||
dist = 2
|
||||
else if(dist < light_impact_range)
|
||||
dist = 3
|
||||
else
|
||||
dist = 0
|
||||
|
||||
//------- EX_ACT AND TURF FIRES -------
|
||||
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
|
||||
if(dist > 0)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
cached_unsafe += T
|
||||
|
||||
//--- THROW ITEMS AROUND ---
|
||||
|
||||
var/throw_dir = get_dir(epi, T)
|
||||
for(var/obj/item/I in T)
|
||||
if(!I.anchored)
|
||||
var/throw_range = rand(throw_dist, throw_range_max)
|
||||
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
|
||||
I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Resets when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, 4)
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
var/circumference = (PI * (init_dist + 4) * 2) //+4 to radius to prevent shit gaps
|
||||
if(cached_unsafe.len > circumference) //only do this every revolution
|
||||
for(var/Unexplode in cached_unsafe)
|
||||
var/turf/UnexplodeT = Unexplode
|
||||
UnexplodeT.explosion_level = 0
|
||||
cached_unsafe.Cut()
|
||||
done_calculating_turfs = FALSE
|
||||
break
|
||||
|
||||
affected_turfs.Cut(1, cut_to)
|
||||
|
||||
if(!done_calculating_turfs)
|
||||
return FALSE
|
||||
|
||||
//unfuck the shit
|
||||
for(var/Unexplode in cached_unsafe)
|
||||
var/turf/UnexplodeT = Unexplode
|
||||
UnexplodeT.explosion_level = 0
|
||||
cached_unsafe.Cut()
|
||||
|
||||
E.finished_at = REALTIMEOFDAY
|
||||
E.tick_finished = world.time
|
||||
|
||||
return TRUE
|
||||
|
||||
/client/proc/check_bomb_impacts()
|
||||
set name = "Check Bomb Impact"
|
||||
set category = "Debug"
|
||||
|
||||
var/newmode = alert("Use reactionary explosions?","Check Bomb Impact", "Yes", "No")
|
||||
var/turf/epicenter = get_turf(mob)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
|
||||
var/dev = 0
|
||||
var/heavy = 0
|
||||
var/light = 0
|
||||
var/list/choices = list("Small Bomb","Medium Bomb","Big Bomb","Custom Bomb")
|
||||
var/choice = input("Bomb Size?") in choices
|
||||
switch(choice)
|
||||
if(null)
|
||||
return 0
|
||||
if("Small Bomb")
|
||||
dev = 1
|
||||
heavy = 2
|
||||
light = 3
|
||||
if("Medium Bomb")
|
||||
dev = 2
|
||||
heavy = 3
|
||||
light = 4
|
||||
if("Big Bomb")
|
||||
dev = 3
|
||||
heavy = 5
|
||||
light = 7
|
||||
if("Custom Bomb")
|
||||
dev = input("Devestation range (Tiles):") as num
|
||||
heavy = input("Heavy impact range (Tiles):") as num
|
||||
light = input("Light impact range (Tiles):") as num
|
||||
else
|
||||
return
|
||||
|
||||
var/datum/explosion/E = new(null, epicenter, dev, heavy, light, ignorecap = TRUE)
|
||||
|
||||
while(!SSexplosion.GatherTurfs(E))
|
||||
stoplag()
|
||||
var/list/turfs
|
||||
if(newmode)
|
||||
while(!SSexplosion.DensityCalculate(E, TRUE))
|
||||
stoplag()
|
||||
turfs = E.calculated_turfs.Copy()
|
||||
else
|
||||
turfs = E.gathered_turfs.Copy()
|
||||
|
||||
qdel(E)
|
||||
|
||||
for(var/I in turfs)
|
||||
var/turf/T = I
|
||||
var/dist = cheap_hypotenuse(T.x, T.y, x0, y0) + turfs[T]
|
||||
|
||||
if(dist < dev)
|
||||
T.color = "red"
|
||||
T.maptext = "Dev"
|
||||
else if (dist < heavy)
|
||||
T.color = "yellow"
|
||||
T.maptext = "Heavy"
|
||||
else if (dist < light)
|
||||
T.color = "blue"
|
||||
T.maptext = "Light"
|
||||
CHECK_TICK
|
||||
|
||||
sleep(100)
|
||||
for(var/I in turfs)
|
||||
var/turf/T = I
|
||||
T.color = null
|
||||
T.maptext = null
|
||||
@@ -11,6 +11,7 @@ SUBSYSTEM_DEF(job)
|
||||
var/initial_players_to_assign = 0 //used for checking against population caps
|
||||
|
||||
var/list/prioritized_jobs = list()
|
||||
var/list/latejoin_trackers = list() //Don't read this list, use GetLateJoinTurfs() instead
|
||||
|
||||
/datum/controller/subsystem/job/Initialize(timeofday)
|
||||
if(!occupations.len)
|
||||
@@ -378,23 +379,11 @@ SUBSYSTEM_DEF(job)
|
||||
continue
|
||||
S = sloc
|
||||
break
|
||||
if(S)
|
||||
SendToAtom(H, S, buckle = FALSE)
|
||||
if(!S) //if there isn't a spawnpoint send them to latejoin, if there's no latejoin go yell at your mapper
|
||||
log_world("Couldn't find a round start spawn point for [rank]")
|
||||
S = get_turf(pick(GLOB.latejoin))
|
||||
if(!S) //final attempt, lets find some area in the arrivals shuttle to spawn them in to.
|
||||
log_world("Couldn't find a round start latejoin spawn point.")
|
||||
for(var/turf/T in get_area_turfs(/area/shuttle/arrival))
|
||||
if(!T.density)
|
||||
var/clear = 1
|
||||
for(var/obj/O in T)
|
||||
if(O.density)
|
||||
clear = 0
|
||||
break
|
||||
if(clear)
|
||||
S = T
|
||||
continue
|
||||
if(istype(S, /obj/effect/landmark) && isturf(S.loc))
|
||||
H.loc = S.loc
|
||||
SendToLateJoin(H)
|
||||
|
||||
if(H.mind)
|
||||
H.mind.assigned_role = rank
|
||||
@@ -516,3 +505,45 @@ SUBSYSTEM_DEF(job)
|
||||
newjob.total_positions = J.total_positions
|
||||
newjob.spawn_positions = J.spawn_positions
|
||||
newjob.current_positions = J.current_positions
|
||||
|
||||
/datum/controller/subsystem/job/proc/SendToAtom(mob/M, atom/A, buckle)
|
||||
if(buckle && isliving(M) && istype(A, /obj/structure/chair))
|
||||
var/obj/structure/chair/C = A
|
||||
if(C.buckle_mob(M, FALSE, FALSE))
|
||||
return
|
||||
M.forceMove(get_turf(A))
|
||||
|
||||
/datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE)
|
||||
if(latejoin_trackers.len)
|
||||
SendToAtom(M, pick(latejoin_trackers), buckle)
|
||||
else
|
||||
//bad mojo
|
||||
var/area/shuttle/arrival/A = locate() in GLOB.sortedAreas
|
||||
if(A)
|
||||
//first check if we can find a chair
|
||||
var/obj/structure/chair/C = locate() in A
|
||||
if(C)
|
||||
SendToAtom(M, C, buckle)
|
||||
return
|
||||
else //last hurrah
|
||||
var/list/avail = list()
|
||||
for(var/turf/T in A)
|
||||
if(!is_blocked_turf(T, TRUE))
|
||||
avail += T
|
||||
if(avail.len)
|
||||
SendToAtom(M, pick(avail), FALSE)
|
||||
return
|
||||
|
||||
//pick an open spot on arrivals and dump em
|
||||
var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival))
|
||||
if(arrivals_turfs.len)
|
||||
for(var/turf/T in arrivals_turfs)
|
||||
if(!is_blocked_turf(T, TRUE))
|
||||
SendToAtom(M, T, FALSE)
|
||||
return
|
||||
//last chance, pick ANY spot on arrivals and dump em
|
||||
SendToAtom(M, arrivals_turfs[1], FALSE)
|
||||
else
|
||||
var/msg = "Unable to send mob [M] to late join!"
|
||||
message_admins(msg)
|
||||
CRASH(msg)
|
||||
|
||||
@@ -37,11 +37,11 @@ SUBSYSTEM_DEF(machines)
|
||||
|
||||
var/seconds = wait * 0.1
|
||||
while(currentrun.len)
|
||||
var/datum/thing = currentrun[currentrun.len]
|
||||
var/obj/machinery/thing = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if(thing && thing.process(seconds) != PROCESS_KILL)
|
||||
if(thing:use_power)
|
||||
thing:auto_use_power() //add back the power state
|
||||
if(thing.use_power)
|
||||
thing.auto_use_power() //add back the power state
|
||||
else
|
||||
processing -= thing
|
||||
if (thing)
|
||||
|
||||
@@ -119,7 +119,9 @@ SUBSYSTEM_DEF(mapping)
|
||||
INIT_ANNOUNCE("Loading [config.map_name]...")
|
||||
TryLoadZ(config.GetFullMapPath(), FailedZs, ZLEVEL_STATION)
|
||||
INIT_ANNOUNCE("Loaded station in [(REALTIMEOFDAY - start_time)/10]s!")
|
||||
SSblackbox.add_details("map_name", config.map_name)
|
||||
if(SSdbcore.Connect())
|
||||
var/datum/DBQuery/query_round_map_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET map_name = '[config.map_name]' WHERE id = [GLOB.round_id]")
|
||||
query_round_map_name.Execute()
|
||||
|
||||
if(config.minetype != "lavaland")
|
||||
INIT_ANNOUNCE("WARNING: A map without lavaland set as it's minetype was loaded! This is being ignored! Update the maploader code!")
|
||||
|
||||
@@ -25,6 +25,7 @@ SUBSYSTEM_DEF(shuttle)
|
||||
var/area/emergencyLastCallLoc
|
||||
var/emergencyCallAmount = 0 //how many times the escape shuttle was called
|
||||
var/emergencyNoEscape
|
||||
var/emergencyNoRecall = FALSE
|
||||
var/list/hostileEnvironments = list()
|
||||
|
||||
//supply shuttle stuff
|
||||
@@ -222,7 +223,7 @@ SUBSYSTEM_DEF(shuttle)
|
||||
/datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message)
|
||||
if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer)
|
||||
return
|
||||
emergency.cancel(/area/centcom)
|
||||
emergency.cancel()
|
||||
|
||||
if(!admiral_message)
|
||||
admiral_message = pick(GLOB.admiral_messages)
|
||||
|
||||
@@ -60,6 +60,8 @@ SUBSYSTEM_DEF(ticker)
|
||||
|
||||
var/round_start_time = 0
|
||||
var/list/round_start_events
|
||||
var/mode_result = "undefined"
|
||||
var/end_state = "undefined"
|
||||
|
||||
var/modevoted = FALSE //Have we sent a vote for the gamemode?
|
||||
|
||||
@@ -639,9 +641,9 @@ SUBSYSTEM_DEF(ticker)
|
||||
|
||||
sleep(50)
|
||||
if(mode.station_was_nuked)
|
||||
Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
|
||||
Reboot("Station destroyed by Nuclear Device.", "nuke")
|
||||
else
|
||||
Reboot("Round ended.", "end_proper", "proper completion")
|
||||
Reboot("Round ended.", "proper completion")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/send_tip_of_the_round()
|
||||
var/m
|
||||
@@ -744,6 +746,15 @@ SUBSYSTEM_DEF(ticker)
|
||||
cinematic = SSticker.cinematic
|
||||
maprotatechecked = SSticker.maprotatechecked
|
||||
|
||||
switch (current_state)
|
||||
if(GAME_STATE_SETTING_UP)
|
||||
Master.SetRunLevel(RUNLEVEL_SETUP)
|
||||
if(GAME_STATE_PLAYING)
|
||||
Master.SetRunLevel(RUNLEVEL_GAME)
|
||||
if(GAME_STATE_FINISHED)
|
||||
Master.SetRunLevel(RUNLEVEL_POSTGAME)
|
||||
|
||||
|
||||
modevoted = SSticker.modevoted
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/send_news_report()
|
||||
@@ -833,7 +844,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
C.Export("##action=load_rsc", round_end_sound)
|
||||
round_end_sound_sent = TRUE
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/Reboot(reason, feedback_c, feedback_r, delay)
|
||||
/datum/controller/subsystem/ticker/proc/Reboot(reason, end_string, delay)
|
||||
set waitfor = FALSE
|
||||
if(usr && !check_rights(R_SERVER, TRUE))
|
||||
return
|
||||
@@ -841,21 +852,24 @@ SUBSYSTEM_DEF(ticker)
|
||||
if(!delay)
|
||||
delay = config.round_end_countdown * 10
|
||||
|
||||
if(delay_end)
|
||||
var/skip_delay = check_rights()
|
||||
if(delay_end && !skip_delay)
|
||||
to_chat(world, "<span class='boldannounce'>An admin has delayed the round end.</span>")
|
||||
return
|
||||
|
||||
|
||||
to_chat(world, "<span class='boldannounce'>Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]</span>")
|
||||
|
||||
var/start_wait = world.time
|
||||
UNTIL(round_end_sound_sent && (world.time - start_wait) > (delay * 2)) //don't wait forever
|
||||
UNTIL(round_end_sound_sent || (world.time - start_wait) > (delay * 2)) //don't wait forever
|
||||
sleep(delay - (world.time - start_wait))
|
||||
|
||||
if(delay_end)
|
||||
if(delay_end && !skip_delay)
|
||||
to_chat(world, "<span class='boldannounce'>Reboot was cancelled by an admin.</span>")
|
||||
return
|
||||
|
||||
SSblackbox.set_details("[feedback_c]","[feedback_r]")
|
||||
|
||||
if(end_string)
|
||||
end_state = end_string
|
||||
|
||||
|
||||
log_game("<span class='boldannounce'>Rebooting World. [reason]</span>")
|
||||
|
||||
@@ -873,4 +887,4 @@ SUBSYSTEM_DEF(ticker)
|
||||
'sound/roundend/disappointed.ogg'\
|
||||
)
|
||||
|
||||
world << sound(round_end_sound)
|
||||
world << sound(round_end_sound)
|
||||
|
||||
@@ -137,7 +137,7 @@ SUBSYSTEM_DEF(vote)
|
||||
active_admins = 1
|
||||
break
|
||||
if(!active_admins)
|
||||
SSticker.Reboot("Restart vote successful.", "end_error", "restart vote")
|
||||
SSticker.Reboot("Restart vote successful.", "restart vote")
|
||||
else
|
||||
to_chat(world, "<span style='boldannounce'>Notice:Restart vote will not restart the server automatically because there are active admins on.</span>")
|
||||
message_admins("A restart vote has passed, but there are active admins on with +server, so it has been canceled. If you wish, you may restart the server.")
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/list/symptoms = list() // The symptoms of the disease.
|
||||
var/id = ""
|
||||
var/processing = 0
|
||||
|
||||
|
||||
// The order goes from easy to cure to hard to cure.
|
||||
var/static/list/advance_cures = list(
|
||||
"sodiumchloride", "sugar", "orangejuice",
|
||||
@@ -399,7 +399,7 @@
|
||||
AD.Refresh()
|
||||
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
|
||||
if(H.z != 1)
|
||||
if(H.z != ZLEVEL_STATION)
|
||||
continue
|
||||
if(!H.HasDisease(D))
|
||||
H.ForceContractDisease(D)
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
if(findtext(msg, "%s"))
|
||||
msg = replacetext(msg, "%s", user.p_s())
|
||||
|
||||
msg = replace_pronoun(user, msg)
|
||||
|
||||
var/mob/living/L = user
|
||||
for(var/obj/item/weapon/implant/I in L.implants)
|
||||
I.trigger(key, L)
|
||||
@@ -61,6 +63,15 @@
|
||||
user.visible_message(msg)
|
||||
log_emote("[key_name(user)] : [msg]")
|
||||
|
||||
/datum/emote/proc/replace_pronoun(mob/user, message)
|
||||
if(findtext(message, "their"))
|
||||
message = replacetext(message, "their", user.p_their())
|
||||
if(findtext(message, "them"))
|
||||
message = replacetext(message, "them", user.p_them())
|
||||
if(findtext(message, "%s"))
|
||||
message = replacetext(message, "%s", user.p_s())
|
||||
return message
|
||||
|
||||
/datum/emote/proc/select_message_type(mob/user)
|
||||
. = message
|
||||
if(!muzzle_ignore && user.is_muzzled() && emote_type == EMOTE_AUDIBLE)
|
||||
|
||||
@@ -1,10 +1,48 @@
|
||||
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range, silent = 0, smoke = 1)
|
||||
set waitfor = 0
|
||||
src = null //so we don't abort once src is deleted
|
||||
#define EXPLOSION_THROW_SPEED 4
|
||||
|
||||
GLOBAL_LIST_EMPTY(explosions)
|
||||
//Against my better judgement, I will return the explosion datum
|
||||
//If I see any GC errors for it I will find you
|
||||
//and I will gib you
|
||||
/proc/explosion(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0 , silent = FALSE, smoke = FALSE)
|
||||
return new /datum/explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke)
|
||||
|
||||
//This datum creates 3 async tasks
|
||||
//1 GatherSpiralTurfsProc runs spiral_range_turfs(tick_checked = TRUE) to populate the affected_turfs list
|
||||
//2 CaculateExplosionBlock adds the blockings to the cached_exp_block list
|
||||
//3 The main thread explodes the prepared turfs
|
||||
|
||||
/datum/explosion
|
||||
var/explosion_id
|
||||
var/started_at
|
||||
var/running = TRUE
|
||||
var/stopped = 0 //This is the number of threads stopped !DOESN'T COUNT THREAD 2!
|
||||
var/static/id_counter = 0
|
||||
|
||||
#define EX_PREPROCESS_EXIT_CHECK \
|
||||
if(!running) {\
|
||||
stopped = 2;\
|
||||
qdel(src);\
|
||||
return;\
|
||||
}
|
||||
|
||||
#define EX_PREPROCESS_CHECK_TICK \
|
||||
if(TICK_CHECK) {\
|
||||
stoplag();\
|
||||
EX_PREPROCESS_EXIT_CHECK\
|
||||
}
|
||||
|
||||
/datum/explosion/New(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke)
|
||||
set waitfor = FALSE
|
||||
|
||||
var/id = ++id_counter
|
||||
explosion_id = id
|
||||
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
GLOB.explosions += src
|
||||
if(isnull(flame_range))
|
||||
flame_range = light_impact_range
|
||||
if(isnull(flash_range))
|
||||
@@ -30,14 +68,13 @@
|
||||
//I would make this not ex_act the thing that triggered the explosion,
|
||||
//but everything that explodes gives us their loc or a get_turf()
|
||||
//and somethings expect us to ex_act them so they can qdel()
|
||||
sleep(1) //tldr, let the calling proc call qdel(src) before we explode
|
||||
stoplag() //tldr, let the calling proc call qdel(src) before we explode
|
||||
|
||||
var/static/explosionid = 1
|
||||
var/id = explosionid++
|
||||
var/start = world.timeofday
|
||||
EX_PREPROCESS_EXIT_CHECK
|
||||
|
||||
started_at = REALTIMEOFDAY
|
||||
|
||||
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
|
||||
var/list/cached_exp_block = list()
|
||||
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [get_area(epicenter)] [ADMIN_COORDJMP(epicenter)]")
|
||||
@@ -53,23 +90,27 @@
|
||||
far_dist += heavy_impact_range * 5
|
||||
far_dist += devastation_range * 20
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
if(!silent)
|
||||
var/frequency = get_rand_frequency()
|
||||
var/ex_sound = get_sfx("explosion")
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
// Double check for client
|
||||
if(M && M.client)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == epicenter.z)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == z0)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//postpone processing for a bit
|
||||
var/postponeCycles = max(round(devastation_range/8),1)
|
||||
@@ -77,66 +118,52 @@
|
||||
SSmachines.postpone(postponeCycles)
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect_system/explosion/E
|
||||
if(smoke)
|
||||
var/datum/effect_system/explosion/smoke/E = new/datum/effect_system/explosion/smoke()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
E = new /datum/effect_system/explosion/smoke
|
||||
else
|
||||
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
E = new
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
var/list/affected_turfs = spiral_range_turfs(max_range, epicenter)
|
||||
|
||||
if(config.reactionary_explosions)
|
||||
for(var/turf/T in affected_turfs) // we cache the explosion block rating of every turf in the explosion area
|
||||
cached_exp_block[T] = 0
|
||||
if(T.density && T.explosion_block)
|
||||
cached_exp_block[T] += T.explosion_block
|
||||
|
||||
for(var/obj/machinery/door/D in T)
|
||||
if(D.density && D.explosion_block)
|
||||
cached_exp_block[T] += D.explosion_block
|
||||
|
||||
for(var/obj/structure/window/W in T)
|
||||
if(W.reinf && W.fulltile)
|
||||
cached_exp_block[T] += W.explosion_block
|
||||
|
||||
for(var/obj/structure/blob/B in T)
|
||||
cached_exp_block[T] += B.explosion_block
|
||||
CHECK_TICK
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//flash mobs
|
||||
if(flash_range)
|
||||
for(var/mob/living/L in viewers(flash_range, epicenter))
|
||||
L.flash_act()
|
||||
|
||||
CHECK_TICK
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
var/list/exploded_this_tick = list() //open turfs that need to be blocked off while we sleep
|
||||
for(var/turf/T in affected_turfs)
|
||||
var/list/affected_turfs = GatherSpiralTurfs(max_range, epicenter)
|
||||
|
||||
if (!T)
|
||||
continue
|
||||
var/reactionary = config.reactionary_explosions
|
||||
var/list/cached_exp_block
|
||||
|
||||
if(reactionary)
|
||||
cached_exp_block = CaculateExplosionBlock(affected_turfs)
|
||||
|
||||
//lists are guaranteed to contain at least 1 turf at this point
|
||||
|
||||
var/iteration = 0
|
||||
var/affTurfLen = affected_turfs.len
|
||||
var/expBlockLen = cached_exp_block.len
|
||||
for(var/TI in affected_turfs)
|
||||
var/turf/T = TI
|
||||
++iteration
|
||||
var/init_dist = cheap_hypotenuse(T.x, T.y, x0, y0)
|
||||
var/dist = init_dist
|
||||
|
||||
if(config.reactionary_explosions)
|
||||
if(reactionary)
|
||||
var/turf/Trajectory = T
|
||||
while(Trajectory != epicenter)
|
||||
Trajectory = get_step_towards(Trajectory, epicenter)
|
||||
dist += cached_exp_block[Trajectory]
|
||||
|
||||
var/flame_dist = 0
|
||||
var/flame_dist = dist < flame_range
|
||||
var/throw_dist = dist
|
||||
|
||||
if(dist < flame_range)
|
||||
flame_dist = 1
|
||||
|
||||
if(dist < devastation_range)
|
||||
dist = 1
|
||||
else if(dist < heavy_impact_range)
|
||||
@@ -148,27 +175,61 @@
|
||||
|
||||
//------- EX_ACT AND TURF FIRES -------
|
||||
|
||||
if(T)
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
if(dist > 0)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
exploded_this_tick += T
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
|
||||
if(dist > 0)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
exploded_this_tick += T
|
||||
|
||||
//--- THROW ITEMS AROUND ---
|
||||
|
||||
var/throw_dir = get_dir(epicenter,T)
|
||||
for(var/obj/item/I in T)
|
||||
if(I && !I.anchored)
|
||||
if(!I.anchored)
|
||||
var/throw_range = rand(throw_dist, max_range)
|
||||
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
|
||||
I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, I.throw_speed)
|
||||
I.throw_speed = EXPLOSION_THROW_SPEED //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, EXPLOSION_THROW_SPEED)
|
||||
|
||||
if(TICK_CHECK)
|
||||
//wait for the lists to repop
|
||||
var/break_condition
|
||||
if(reactionary)
|
||||
//If we've caught up to the density checker thread and there are no more turfs to process
|
||||
break_condition = iteration == expBlockLen && iteration < affTurfLen
|
||||
else
|
||||
//If we've caught up to the turf gathering thread and it's still running
|
||||
break_condition = iteration == affTurfLen && !stopped
|
||||
|
||||
if(break_condition || TICK_CHECK)
|
||||
stoplag()
|
||||
|
||||
if(!running)
|
||||
break
|
||||
|
||||
//update the trackers
|
||||
affTurfLen = affected_turfs.len
|
||||
expBlockLen = cached_exp_block.len
|
||||
|
||||
if(break_condition)
|
||||
if(reactionary)
|
||||
//until there are more block checked turfs than what we are currently at
|
||||
//or the explosion has stopped
|
||||
UNTIL(iteration < affTurfLen || !running)
|
||||
else
|
||||
//until there are more gathered turfs than what we are currently at
|
||||
//or there are no more turfs to gather/the explosion has stopped
|
||||
UNTIL(iteration < expBlockLen || stopped)
|
||||
|
||||
if(!running)
|
||||
break
|
||||
|
||||
//update the trackers
|
||||
affTurfLen = affected_turfs.len
|
||||
expBlockLen = cached_exp_block.len
|
||||
|
||||
var/circumference = (PI * (init_dist + 4) * 2) //+4 to radius to prevent shit gaps
|
||||
if(exploded_this_tick.len > circumference) //only do this every revolution
|
||||
for(var/Unexplode in exploded_this_tick)
|
||||
@@ -182,24 +243,67 @@
|
||||
UnexplodeT.explosion_level = 0
|
||||
exploded_this_tick.Cut()
|
||||
|
||||
var/took = (world.timeofday-start)/10
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
var/took = (REALTIMEOFDAY - started_at) / 10
|
||||
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
if(GLOB.Debug2)
|
||||
log_world("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.")
|
||||
|
||||
//Machines which report explosions.
|
||||
for(var/array in GLOB.doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(epicenter,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
|
||||
if(running) //if we aren't in a hurry
|
||||
//Machines which report explosions.
|
||||
for(var/array in GLOB.doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, took,orig_dev_range, orig_heavy_range, orig_light_range)
|
||||
|
||||
return 1
|
||||
++stopped
|
||||
qdel(src)
|
||||
|
||||
#undef EX_PREPROCESS_EXIT_CHECK
|
||||
#undef EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//asyncly populate the affected_turfs list
|
||||
/datum/explosion/proc/GatherSpiralTurfs(range, turf/epicenter)
|
||||
set waitfor = FALSE
|
||||
. = list()
|
||||
spiral_range_turfs(range, epicenter, outlist = ., tick_checked = TRUE)
|
||||
++stopped
|
||||
|
||||
/proc/secondaryexplosion(turf/epicenter, range)
|
||||
for(var/turf/tile in spiral_range_turfs(range, epicenter))
|
||||
tile.ex_act(2)
|
||||
/datum/explosion/proc/CaculateExplosionBlock(list/affected_turfs)
|
||||
set waitfor = FALSE
|
||||
|
||||
. = list()
|
||||
var/processed = 0
|
||||
while(!stopped && running)
|
||||
var/I
|
||||
for(I in (processed + 1) to affected_turfs.len) // we cache the explosion block rating of every turf in the explosion area
|
||||
var/turf/T = affected_turfs[I]
|
||||
var/current_exp_block = T.density ? T.explosion_block : 0
|
||||
|
||||
for(var/obj/machinery/door/D in T)
|
||||
if(D.density)
|
||||
current_exp_block += D.explosion_block
|
||||
|
||||
for(var/obj/structure/window/W in T)
|
||||
if(W.reinf && W.fulltile)
|
||||
current_exp_block += W.explosion_block
|
||||
|
||||
for(var/obj/structure/blob/B in T)
|
||||
current_exp_block += B.explosion_block
|
||||
|
||||
.[T] = current_exp_block
|
||||
|
||||
if(TICK_CHECK)
|
||||
break
|
||||
|
||||
processed = I
|
||||
stoplag()
|
||||
|
||||
/datum/explosion/Destroy()
|
||||
running = FALSE
|
||||
if(stopped < 2) //wait for main thread and spiral_range thread
|
||||
return QDEL_HINT_IWILLGC
|
||||
GLOB.explosions -= src
|
||||
return ..()
|
||||
|
||||
/client/proc/check_bomb_impacts()
|
||||
set name = "Check Bomb Impact"
|
||||
@@ -1,37 +1,44 @@
|
||||
/datum/getrev
|
||||
var/originmastercommit
|
||||
var/originmastercommit
|
||||
var/commit
|
||||
var/list/testmerge = list()
|
||||
var/has_pr_details = FALSE //example data in a testmerge entry when this is true: https://api.github.com/repositories/3234987/pulls/22586
|
||||
var/has_pr_details = FALSE //tgs2 support
|
||||
var/date
|
||||
|
||||
/datum/getrev/New()
|
||||
if(SERVERTOOLS && fexists("..\\prtestjob.lk"))
|
||||
if(fexists(SERVICE_PR_TEST_JSON))
|
||||
testmerge = json_decode(file2text(SERVICE_PR_TEST_JSON))
|
||||
else if(!world.RunningService() && fexists("../prtestjob.lk")) //tgs2 support
|
||||
var/list/tmp = world.file2list("..\\prtestjob.lk")
|
||||
for(var/I in tmp)
|
||||
if(I)
|
||||
testmerge |= I
|
||||
|
||||
|
||||
log_world("Running /tg/ revision:")
|
||||
var/list/logs = world.file2list(".git/logs/HEAD")
|
||||
if(logs)
|
||||
logs = splittext(logs[logs.len - 1], " ")
|
||||
date = unix2date(text2num(logs[5]))
|
||||
commit = logs[2]
|
||||
log_world("[date]")
|
||||
logs = world.file2list(".git/logs/refs/remotes/origin/master")
|
||||
if(logs)
|
||||
originmastercommit = splittext(logs[logs.len - 1], " ")[2]
|
||||
|
||||
var/list/logs = world.file2list(".git/logs/HEAD")
|
||||
if(logs)
|
||||
logs = splittext(logs[logs.len - 1], " ")
|
||||
date = unix2date(text2num(logs[5]))
|
||||
commit = logs[2]
|
||||
log_world("[date]")
|
||||
logs = world.file2list(".git/logs/refs/remotes/origin/master")
|
||||
if(logs)
|
||||
originmastercommit = splittext(logs[logs.len - 1], " ")[2]
|
||||
|
||||
if(testmerge.len)
|
||||
log_world(commit)
|
||||
for(var/line in testmerge)
|
||||
if(line)
|
||||
log_world("Test merge active of PR #[line]")
|
||||
SSblackbox.add_details("testmerged_prs","[line]")
|
||||
log_world("Based off origin/master commit [originmastercommit]")
|
||||
if(world.RunningService())
|
||||
var/tmcommit = testmerge[line]["commit"]
|
||||
log_world("Test merge active of PR #[line] commit [tmcommit]")
|
||||
SSblackbox.add_details("testmerged_prs","[line]|[tmcommit]")
|
||||
else //tgs2 support
|
||||
log_world("Test merge active of PR #[line]")
|
||||
SSblackbox.add_details("testmerged_prs","[line]")
|
||||
log_world("Based off origin/master commit [originmastercommit]")
|
||||
else
|
||||
log_world(originmastercommit)
|
||||
log_world(originmastercommit)
|
||||
|
||||
/datum/getrev/proc/DownloadPRDetails()
|
||||
if(!config.githubrepoid)
|
||||
@@ -66,8 +73,11 @@
|
||||
return ""
|
||||
. = header ? "The following pull requests are currently test merged:<br>" : ""
|
||||
for(var/line in testmerge)
|
||||
var/details = ""
|
||||
if(has_pr_details)
|
||||
var/cm = testmerge[line]["commit"]
|
||||
var/details
|
||||
if(world.RunningService())
|
||||
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["author"]) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 7)))
|
||||
else if(has_pr_details) //tgs2 support
|
||||
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["user"]["login"])
|
||||
. += "<a href='[config.githuburl]/pull/[line]'>#[line][details]</a><br>"
|
||||
|
||||
@@ -76,14 +86,14 @@
|
||||
set name = "Show Server Revision"
|
||||
set desc = "Check the current server code revision"
|
||||
|
||||
if(GLOB.revdata.originmastercommit)
|
||||
if(GLOB.revdata.originmastercommit)
|
||||
to_chat(src, "<b>Server revision compiled on:</b> [GLOB.revdata.date]")
|
||||
var/prefix = ""
|
||||
var/prefix = ""
|
||||
if(GLOB.revdata.testmerge.len)
|
||||
to_chat(src, GLOB.revdata.GetTestMergeInfo())
|
||||
prefix = "Based off origin/master commit: "
|
||||
var/pc = GLOB.revdata.originmastercommit
|
||||
to_chat(src, "[prefix]<a href='[config.githuburl]/commit/[pc]'>[copytext(pc, 1, min(length(pc), 7))]</a>")
|
||||
prefix = "Based off origin/master commit: "
|
||||
var/pc = GLOB.revdata.originmastercommit
|
||||
to_chat(src, "[prefix]<a href='[config.githuburl]/commit/[pc]'>[copytext(pc, 1, min(length(pc), 7))]</a>")
|
||||
else
|
||||
to_chat(src, "Revision unknown")
|
||||
to_chat(src, "<b>Current Infomational Settings:</b>")
|
||||
@@ -94,7 +104,7 @@
|
||||
to_chat(src, "Enforce Continuous Rounds: [config.continuous.len] of [config.modes.len] roundtypes")
|
||||
to_chat(src, "Allow Midround Antagonists: [config.midround_antag.len] of [config.modes.len] roundtypes")
|
||||
if(config.show_game_type_odds)
|
||||
if(SSticker.IsRoundInProgress())
|
||||
if(SSticker.IsRoundInProgress())
|
||||
var/prob_sum = 0
|
||||
var/current_odds_differ = FALSE
|
||||
var/list/probs = list()
|
||||
@@ -110,13 +120,13 @@
|
||||
probs[ctag] = 1
|
||||
prob_sum += config.probabilities[ctag]
|
||||
if(current_odds_differ)
|
||||
to_chat(src, "<b>Game Mode Odds for current round:</b>")
|
||||
to_chat(src, "<b>Game Mode Odds for current round:</b>")
|
||||
for(var/ctag in probs)
|
||||
if(config.probabilities[ctag] > 0)
|
||||
var/percentage = round(config.probabilities[ctag] / prob_sum * 100, 0.1)
|
||||
to_chat(src, "[ctag] [percentage]%")
|
||||
|
||||
to_chat(src, "<b>All Game Mode Odds:</b>")
|
||||
to_chat(src, "<b>All Game Mode Odds:</b>")
|
||||
var/sum = 0
|
||||
for(var/ctag in config.probabilities)
|
||||
sum += config.probabilities[ctag]
|
||||
|
||||
+12
-13
@@ -43,18 +43,18 @@
|
||||
|
||||
//cleans up ALL references :)
|
||||
/datum/holocall/Destroy()
|
||||
user.reset_perspective()
|
||||
if(user.client)
|
||||
for(var/datum/camerachunk/chunk in eye.visibleCameraChunks)
|
||||
chunk.remove(eye)
|
||||
user.remote_control = null
|
||||
if(!QDELETED(user))
|
||||
user.reset_perspective()
|
||||
if(user.client)
|
||||
for(var/datum/camerachunk/chunk in eye.visibleCameraChunks)
|
||||
chunk.remove(eye)
|
||||
user.remote_control = null
|
||||
user = null
|
||||
QDEL_NULL(eye)
|
||||
|
||||
user = null
|
||||
|
||||
if(hologram)
|
||||
hologram.HC = null
|
||||
hologram = null
|
||||
calling_holopad.outgoing_call = null
|
||||
hologram = null
|
||||
|
||||
for(var/I in dialed_holopads)
|
||||
var/obj/machinery/holopad/H = I
|
||||
@@ -62,6 +62,7 @@
|
||||
dialed_holopads.Cut()
|
||||
|
||||
if(calling_holopad)
|
||||
calling_holopad.outgoing_call = null
|
||||
calling_holopad.SetLightsAndPower()
|
||||
calling_holopad = null
|
||||
if(connected_holopad)
|
||||
@@ -86,7 +87,7 @@
|
||||
/datum/holocall/proc/ConnectionFailure(obj/machinery/holopad/H, graceful = FALSE)
|
||||
testing("Holocall connection failure: graceful [graceful]")
|
||||
if(H == connected_holopad || H == calling_holopad)
|
||||
if(!graceful)
|
||||
if(!graceful && H != calling_holopad)
|
||||
calling_holopad.say("Connection failure.")
|
||||
qdel(src)
|
||||
return
|
||||
@@ -152,9 +153,7 @@
|
||||
. = !QDELETED(user) && !user.incapacitated() && !QDELETED(calling_holopad) && calling_holopad.is_operational() && user.loc == calling_holopad.loc
|
||||
|
||||
if(.)
|
||||
if(connected_holopad)
|
||||
. = !QDELETED(connected_holopad) && connected_holopad.is_operational()
|
||||
else
|
||||
if(!connected_holopad)
|
||||
. = world.time < (call_start_time + HOLOPAD_MAX_DIAL_TIME)
|
||||
if(!.)
|
||||
calling_holopad.say("No answer recieved.")
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
var/minetype = "lavaland"
|
||||
|
||||
var/list/transition_config = list(MAIN_STATION = CROSSLINKED,
|
||||
CENTCOMM = SELFLOOPING,
|
||||
var/list/transition_config = list(CENTCOMM = SELFLOOPING,
|
||||
MAIN_STATION = CROSSLINKED,
|
||||
EMPTY_AREA_1 = CROSSLINKED,
|
||||
EMPTY_AREA_2 = CROSSLINKED,
|
||||
MINING = SELFLOOPING,
|
||||
|
||||
+2
-2
@@ -68,6 +68,7 @@
|
||||
/datum/mind/New(var/key)
|
||||
src.key = key
|
||||
soulOwner = src
|
||||
martial_art = default_martial_art
|
||||
|
||||
/datum/mind/Destroy()
|
||||
SSticker.minds -= src
|
||||
@@ -1288,7 +1289,6 @@
|
||||
else if (istype(M) && length(M.viruses))
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
D.cure(0)
|
||||
sleep(0) //because deleting of virus is done through spawn(0)
|
||||
if("infected")
|
||||
if (check_rights(R_ADMIN, 0))
|
||||
var/mob/living/carbon/human/H = current
|
||||
@@ -1447,7 +1447,7 @@
|
||||
special_role = "Wizard"
|
||||
assigned_role = "Wizard"
|
||||
if(!GLOB.wizardstart.len)
|
||||
current.loc = pick(GLOB.latejoin)
|
||||
SSjob.SendToLateJoin(current)
|
||||
to_chat(current, "HOT INSERTION, GO GO GO")
|
||||
else
|
||||
current.loc = pick(GLOB.wizardstart)
|
||||
|
||||
@@ -608,6 +608,23 @@ GLOBAL_LIST_EMPTY(mutations_list)
|
||||
message = replacetext(message," muh valids "," getting my kicks ")
|
||||
return trim(message)
|
||||
|
||||
/datum/mutation/human/stoner
|
||||
name = "Stoner"
|
||||
quality = NEGATIVE
|
||||
dna_block = NON_SCANNABLE
|
||||
text_gain_indication = "<span class='notice'>You feel...totally chill, man!</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel like you have a better sense of time.</span>"
|
||||
|
||||
/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner)
|
||||
..()
|
||||
owner.grant_language(/datum/language/beachbum)
|
||||
owner.remove_language(/datum/language/common)
|
||||
|
||||
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
|
||||
..()
|
||||
owner.grant_language(/datum/language/common)
|
||||
owner.remove_language(/datum/language/beachbum)
|
||||
|
||||
/datum/mutation/human/laser_eyes
|
||||
name = "Laser Eyes"
|
||||
quality = POSITIVE
|
||||
|
||||
+13
-6
@@ -20,7 +20,10 @@
|
||||
var/r_hand = null
|
||||
var/l_hand = null
|
||||
var/internals_slot = null //ID of slot containing a gas tank
|
||||
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format
|
||||
var/list/backpack_contents = null // In the list(path=count,otherpath=count) format
|
||||
var/list/implants = null
|
||||
|
||||
var/can_be_admin_equipped = TRUE // Set to FALSE if your outfit requires runtime parameters
|
||||
|
||||
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
//to be overriden for customization depending on client prefs,species etc
|
||||
@@ -71,11 +74,11 @@
|
||||
H.equip_to_slot_or_del(new l_pocket(H),slot_l_store)
|
||||
if(r_pocket)
|
||||
H.equip_to_slot_or_del(new r_pocket(H),slot_r_store)
|
||||
|
||||
for(var/path in backpack_contents)
|
||||
var/number = backpack_contents[path]
|
||||
for(var/i=0,i<number,i++)
|
||||
H.equip_to_slot_or_del(new path(H),slot_in_backpack)
|
||||
if(backpack_contents)
|
||||
for(var/path in backpack_contents)
|
||||
var/number = backpack_contents[path]
|
||||
for(var/i=0,i<number,i++)
|
||||
H.equip_to_slot_or_del(new path(H),slot_in_backpack)
|
||||
|
||||
if(!H.head && toggle_helmet && istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit))
|
||||
var/obj/item/clothing/suit/space/hardsuit/HS = H.wear_suit
|
||||
@@ -88,6 +91,10 @@
|
||||
if(internals_slot)
|
||||
H.internal = H.get_item_by_slot(internals_slot)
|
||||
H.update_action_buttons_icon()
|
||||
if(implants)
|
||||
for(var/implant_type in implants)
|
||||
var/obj/item/weapon/implant/I = new implant_type(H)
|
||||
I.implant(H, null, silent=TRUE)
|
||||
|
||||
H.update_body()
|
||||
return 1
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
if(offsetdir == ridden_dir)
|
||||
var/list/diroffsets = offsets[offsetdir]
|
||||
buckled_mob.pixel_x = diroffsets[1]
|
||||
if(diroffsets.len == 2)
|
||||
if(diroffsets.len >= 2)
|
||||
buckled_mob.pixel_y = diroffsets[2]
|
||||
if(diroffsets.len == 3)
|
||||
buckled_mob.layer = diroffsets[3]
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
|
||||
/datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(-12, 7), "[EAST]" = list(0, 7), "[WEST]" = list( 12, 7))
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 7), "[EAST]" = list(-12, 7), "[WEST]" = list( 12, 7))
|
||||
|
||||
//scooter
|
||||
/datum/riding/scooter/handle_vehicle_layer()
|
||||
|
||||
@@ -241,10 +241,4 @@
|
||||
id = "miracle"
|
||||
suffix = "miracle.dmm"
|
||||
name = "Ordinary Space Tile"
|
||||
description = "Absolutely nothing strange going on here please move along, plenty more space to see right this way!"
|
||||
|
||||
/datum/map_template/ruin/space/dragoon
|
||||
id = "dragoon"
|
||||
suffix = "dragoontomb.dmm"
|
||||
name = "Sky Bulge Tomb"
|
||||
description = "A tomb of a dice-loving dragoon in space. Turns out he got too good and jumped too high. Contains the Sky Bulge, which when thrown, warps the thrower."
|
||||
description = "Absolutely nothing strange going on here please move along, plenty more space to see right this way!"
|
||||
@@ -1,15 +1,5 @@
|
||||
//Largely negative status effects go here, even if they have small benificial effects
|
||||
|
||||
/datum/status_effect/sigil_mark //allows the affected target to always trigger sigils while mindless
|
||||
id = "sigil_mark"
|
||||
duration = -1
|
||||
alert_type = null
|
||||
var/stat_allowed = DEAD //if owner's stat is below this, will remove itself
|
||||
|
||||
/datum/status_effect/sigil_mark/tick()
|
||||
if(owner.stat < stat_allowed)
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/his_wrath //does minor damage over time unless holding His Grace
|
||||
id = "his_wrath"
|
||||
duration = -1
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
//entirely neutral or internal status effects go here
|
||||
|
||||
/datum/status_effect/sigil_mark //allows the affected target to always trigger sigils while mindless
|
||||
id = "sigil_mark"
|
||||
duration = -1
|
||||
alert_type = null
|
||||
var/stat_allowed = DEAD //if owner's stat is below this, will remove itself
|
||||
|
||||
/datum/status_effect/sigil_mark/tick()
|
||||
if(owner.stat < stat_allowed)
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/crusher_damage //tracks the damage dealt to this mob by kinetic crushers
|
||||
id = "crusher_damage"
|
||||
duration = -1
|
||||
status_type = STATUS_EFFECT_UNIQUE
|
||||
alert_type = null
|
||||
var/total_damage = 0
|
||||
@@ -134,7 +134,7 @@
|
||||
|
||||
area_type = /area
|
||||
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency, /area/storage/emergency2, /area/shuttle)
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle)
|
||||
target_z = ZLEVEL_STATION
|
||||
|
||||
immunity_type = "rad"
|
||||
|
||||
@@ -50,9 +50,9 @@
|
||||
R.show_laws()
|
||||
if(WIRE_LOCKDOWN)
|
||||
R.SetLockdown(!R.lockcharge) // Toggle
|
||||
if(WIRE_RESET_MODULE)
|
||||
if(R.has_module())
|
||||
R.ResetModule()
|
||||
if(WIRE_RESET_MODULE)
|
||||
if(R.has_module())
|
||||
R.visible_message("[R]'s module servos twitch.", "Your module display flickers.")
|
||||
|
||||
/datum/wires/robot/on_cut(wire, mend)
|
||||
var/mob/living/silicon/robot/R = holder
|
||||
@@ -74,3 +74,6 @@
|
||||
R.visible_message("[R]'s camera lense focuses loudly.", "Your camera lense focuses loudly.")
|
||||
if(WIRE_LOCKDOWN) // Simple lockdown.
|
||||
R.SetLockdown(!mend)
|
||||
if(WIRE_RESET_MODULE)
|
||||
if(R.has_module() && !mend)
|
||||
R.ResetModule()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -37,6 +37,7 @@
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
requires_power = 0
|
||||
has_gravity = 1
|
||||
flags = NONE
|
||||
|
||||
/area/tdome/arena
|
||||
name = "Thunderdome Arena"
|
||||
@@ -75,6 +76,7 @@
|
||||
requires_power = 0
|
||||
has_gravity = 1
|
||||
noteleport = 1
|
||||
flags = NONE
|
||||
|
||||
//Abductors
|
||||
/area/abductor_ship
|
||||
@@ -83,6 +85,7 @@
|
||||
requires_power = 0
|
||||
noteleport = 1
|
||||
has_gravity = 1
|
||||
flags = NONE
|
||||
|
||||
//Syndicates
|
||||
/area/syndicate_mothership
|
||||
@@ -92,6 +95,7 @@
|
||||
has_gravity = 1
|
||||
noteleport = 1
|
||||
blob_allowed = 0 //Not... entirely sure this will ever come up... but if the bus makes blobs AND ops, it shouldn't aim for the ops to win.
|
||||
flags = NONE
|
||||
|
||||
/area/syndicate_mothership/control
|
||||
name = "Syndicate Control Room"
|
||||
|
||||
@@ -57,13 +57,13 @@
|
||||
name = "Mining Station Communications"
|
||||
|
||||
/area/mine/cafeteria
|
||||
name = "Mining station Cafeteria"
|
||||
name = "Mining Station Cafeteria"
|
||||
|
||||
/area/mine/hydroponics
|
||||
name = "Mining station Hydroponics"
|
||||
name = "Mining Station Hydroponics"
|
||||
|
||||
/area/mine/sleeper
|
||||
name = "Mining station Emergency Sleeper"
|
||||
name = "Mining Station Emergency Sleeper"
|
||||
|
||||
/area/mine/north_outpost
|
||||
name = "North Mining Outpost"
|
||||
|
||||
@@ -115,15 +115,26 @@
|
||||
/area/prison/solitary
|
||||
name = "Solitary Confinement"
|
||||
icon_state = "brig"
|
||||
|
||||
/area/prison/execution_room
|
||||
name = "Prisoner Education Chamber"
|
||||
icon_state = "armory"
|
||||
|
||||
/area/prison/cell_block/A
|
||||
/area/prison/execution_room
|
||||
name = "Prisoner Education Chamber"
|
||||
icon_state = "armory"
|
||||
|
||||
/area/prison/cell_block/a
|
||||
// /area/prison/cell_block/A
|
||||
name = "Prison Cell Block A"
|
||||
icon_state = "brig"
|
||||
|
||||
/area/prison/cell_block/B
|
||||
/area/prison/cell_block/b
|
||||
// /area/prison/cell_block/B
|
||||
name = "Prison Cell Block B"
|
||||
icon_state = "brig"
|
||||
|
||||
/area/prison/cell_block/C
|
||||
/area/prison/cell_block/c
|
||||
// /area/prison/cell_block/C
|
||||
name = "Prison Cell Block C"
|
||||
icon_state = "brig"
|
||||
|
||||
@@ -21,20 +21,48 @@
|
||||
|
||||
|
||||
//Areas
|
||||
|
||||
/area/ruin/powered/beach
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/clownplanet
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/animal_hospital
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/snow_biodome
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/gluttony
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/golem_ship
|
||||
name = "Free Golem Ship"
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/greed
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/unpowered/hierophant
|
||||
name = "Hierophant's Arena"
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/pride
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/seedvault
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/syndicate_lava_base
|
||||
name = "Secret Base"
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
|
||||
/area/ruin/unpowered/no_grav/way_home
|
||||
name = "\improper Salvation"
|
||||
icon_state = "away"
|
||||
|
||||
/area/ruin/powered/snow_biodome
|
||||
|
||||
/area/ruin/powered/golem_ship
|
||||
name = "Free Golem Ship"
|
||||
|
||||
/area/ruin/powered/syndicate_lava_base
|
||||
name = "Secret Base"
|
||||
|
||||
// Ruins of "onehalf" ship
|
||||
|
||||
|
||||
+36
-36
@@ -28,8 +28,8 @@
|
||||
var/list/our_overlays //our local copy of (non-priority) overlays without byond magic. Use procs in SSoverlays to manipulate
|
||||
var/list/priority_overlays //overlays that should remain on top and not normally removed when using cut_overlay functions, like c4.
|
||||
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
|
||||
/atom/New(loc, ...)
|
||||
//atom creation method that preloads variables at creation
|
||||
if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New()
|
||||
@@ -39,21 +39,21 @@
|
||||
|
||||
var/do_initialize = SSatoms.initialized
|
||||
if(do_initialize > INITIALIZATION_INSSATOMS)
|
||||
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
|
||||
if(SSatoms.InitAtom(src, args))
|
||||
//we were deleted
|
||||
return
|
||||
|
||||
var/list/created = SSatoms.created_atoms
|
||||
if(created)
|
||||
created += src
|
||||
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
|
||||
if(SSatoms.InitAtom(src, args))
|
||||
//we were deleted
|
||||
return
|
||||
|
||||
var/list/created = SSatoms.created_atoms
|
||||
if(created)
|
||||
created += src
|
||||
|
||||
//Called after New if the map is being loaded. mapload = TRUE
|
||||
//Called from base of New if the map is being loaded. mapload = FALSE
|
||||
//This base must be called or derivatives must set initialized to TRUE
|
||||
//must not sleep
|
||||
//This base must be called or derivatives must set initialized to TRUE
|
||||
//must not sleep
|
||||
//Other parameters are passed from New (excluding loc), this does not happen if mapload is TRUE
|
||||
//Must return an Initialize hint. Defined in __DEFINES/subsystems.dm
|
||||
//Must return an Initialize hint. Defined in __DEFINES/subsystems.dm
|
||||
|
||||
//Note: the following functions don't call the base for optimization and must copypasta:
|
||||
// /turf/Initialize
|
||||
@@ -76,23 +76,23 @@
|
||||
if (opacity && isturf(loc))
|
||||
var/turf/T = loc
|
||||
T.has_opaque_atom = TRUE // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways.
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
|
||||
//called if Initialize returns INITIALIZE_HINT_LATELOAD
|
||||
//This version shouldn't be called
|
||||
/atom/proc/LateInitialize()
|
||||
var/static/list/warned_types = list()
|
||||
if(!warned_types[type])
|
||||
WARNING("Old style LateInitialize behaviour detected in [type]!")
|
||||
warned_types[type] = TRUE
|
||||
Initialize(FALSE)
|
||||
//called if Initialize returns INITIALIZE_HINT_LATELOAD
|
||||
//This version shouldn't be called
|
||||
/atom/proc/LateInitialize()
|
||||
var/static/list/warned_types = list()
|
||||
if(!warned_types[type])
|
||||
WARNING("Old style LateInitialize behaviour detected in [type]!")
|
||||
warned_types[type] = TRUE
|
||||
Initialize(FALSE)
|
||||
|
||||
/atom/Destroy()
|
||||
if(alternate_appearances)
|
||||
for(var/K in alternate_appearances)
|
||||
var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K]
|
||||
AA.remove_from_hud(src)
|
||||
|
||||
for(var/K in alternate_appearances)
|
||||
var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K]
|
||||
AA.remove_from_hud(src)
|
||||
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
|
||||
@@ -100,13 +100,13 @@
|
||||
LAZYCLEARLIST(priority_overlays)
|
||||
//SSoverlays.processing -= src //we COULD do this, but it's better to just let it fall out of the processing queue
|
||||
|
||||
QDEL_NULL(light)
|
||||
|
||||
QDEL_NULL(light)
|
||||
|
||||
return ..()
|
||||
|
||||
/atom/proc/handle_ricochet(obj/item/projectile/P)
|
||||
return
|
||||
|
||||
/atom/proc/handle_ricochet(obj/item/projectile/P)
|
||||
return
|
||||
|
||||
/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5)
|
||||
return (!density || !height)
|
||||
|
||||
@@ -277,7 +277,7 @@
|
||||
return
|
||||
|
||||
/atom/proc/ex_act(severity, target)
|
||||
set waitfor = FALSE
|
||||
set waitfor = FALSE
|
||||
contents_explosion(severity, target)
|
||||
|
||||
/atom/proc/blob_act(obj/structure/blob/B)
|
||||
@@ -509,10 +509,10 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
/atom/proc/mech_melee_attack(obj/mecha/M)
|
||||
return
|
||||
|
||||
//If a mob logouts/logins in side of an object you can use this proc
|
||||
/atom/proc/on_log(login)
|
||||
if(loc)
|
||||
loc.on_log(login)
|
||||
//If a mob logouts/logins in side of an object you can use this proc
|
||||
/atom/proc/on_log(login)
|
||||
if(loc)
|
||||
loc.on_log(login)
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/antag_spawner/slaughter_demon/attack_self(mob/user)
|
||||
if(user.z != 1)
|
||||
if(user.z != ZLEVEL_STATION)
|
||||
to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>")
|
||||
return
|
||||
if(used)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if(round_converted) //So badmin blobs later don't step on the dead natural blobs metaphorical toes
|
||||
..()
|
||||
if(blobwincount <= GLOB.blobs_legit.len)
|
||||
SSblackbox.set_details("round_end_result","win - blob took over")
|
||||
SSticker.mode_result = "win - blob took over"
|
||||
to_chat(world, "<FONT size = 3><B>The blob has taken over the station!</B></FONT>")
|
||||
to_chat(world, "<B>The entire station was eaten by the Blob!</B>")
|
||||
log_game("Blob mode completed with a blob victory.")
|
||||
@@ -28,7 +28,7 @@
|
||||
SSticker.news_report = BLOB_WIN
|
||||
|
||||
else if(station_was_nuked)
|
||||
SSblackbox.set_details("round_end_result","halfwin - nuke")
|
||||
SSticker.mode_result = "halfwin - nuke"
|
||||
to_chat(world, "<FONT size = 3><B>Partial Win: The station has been destroyed!</B></FONT>")
|
||||
to_chat(world, "<B>Directive 7-12 has been successfully carried out, preventing the Blob from spreading.</B>")
|
||||
log_game("Blob mode completed with a tie (station destroyed).")
|
||||
@@ -36,7 +36,7 @@
|
||||
SSticker.news_report = BLOB_NUKE
|
||||
|
||||
else if(!GLOB.blob_cores.len)
|
||||
SSblackbox.set_details("round_end_result","loss - blob eliminated")
|
||||
SSticker.mode_result = "loss - blob eliminated"
|
||||
to_chat(world, "<FONT size = 3><B>The staff has won!</B></FONT>")
|
||||
to_chat(world, "<B>The alien organism has been eradicated from the station!</B>")
|
||||
log_game("Blob mode completed with a crew victory.")
|
||||
|
||||
@@ -191,7 +191,7 @@ Credit where due:
|
||||
var/datum/game_mode/clockwork_cult/C = SSticker.mode
|
||||
if(C.check_clockwork_victory())
|
||||
text += "<span class='large_brass'><b>Ratvar's servants have succeeded in fulfilling His goals!</b></span>"
|
||||
SSblackbox.set_details("round_end_result", "win - servants completed their objective (summon ratvar)")
|
||||
SSticker.mode_result = "win - servants completed their objective (summon ratvar)"
|
||||
else
|
||||
var/half_victory = FALSE
|
||||
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = locate() in GLOB.all_clockwork_objects
|
||||
@@ -200,10 +200,10 @@ Credit where due:
|
||||
if(half_victory)
|
||||
text += "<span class='large_brass'><b>The crew escaped before Ratvar could rise, but the gateway \
|
||||
was successfully constructed!</b></span>"
|
||||
SSblackbox.set_details("round_end_result", "halfwin - servants constructed the gateway but their objective was not completed (summon ratvar)")
|
||||
SSticker.mode_result = "halfwin - servants constructed the gateway but their objective was not completed (summon ratvar)"
|
||||
else
|
||||
text += "<span class='userdanger'>Ratvar's servants have failed!</span>"
|
||||
SSblackbox.set_details("round_end_result", "loss - servants failed their objective (summon ratvar)")
|
||||
SSticker.mode_result = "loss - servants failed their objective (summon ratvar)"
|
||||
text += "<br><b>The servants' objective was:</b> <br>[CLOCKCULT_OBJECTIVE]"
|
||||
text += "<br>Ratvar's servants had <b>[GLOB.clockwork_caches]</b> Tinkerer's Caches."
|
||||
text += "<br><b>Construction Value(CV)</b> was: <b>[GLOB.clockwork_construction_value]</b>"
|
||||
|
||||
@@ -208,12 +208,10 @@
|
||||
/datum/game_mode/cult/declare_completion()
|
||||
|
||||
if(!check_cult_victory())
|
||||
SSblackbox.set_details("round_end_result","win - cult win")
|
||||
SSblackbox.set_val("round_end_result",acolytes_survived)
|
||||
SSticker.mode_result = "win - cult win"
|
||||
to_chat(world, "<span class='greentext'>The cult has succeeded! Nar-sie has snuffed out another torch in the void!</span>")
|
||||
else
|
||||
SSblackbox.set_details("round_end_result","loss - staff stopped the cult")
|
||||
SSblackbox.set_val("round_end_result",acolytes_survived)
|
||||
SSticker.mode_result = "loss - staff stopped the cult"
|
||||
to_chat(world, "<span class='redtext'>The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!</span>")
|
||||
|
||||
var/text = ""
|
||||
@@ -257,22 +255,15 @@
|
||||
|
||||
/datum/game_mode/proc/datum_cult_completion()
|
||||
var/text = ""
|
||||
var/acolytes_survived = 0
|
||||
for(var/datum/mind/cult_mind in cult)
|
||||
if (cult_mind.current && cult_mind.current.stat != DEAD)
|
||||
if(cult_mind.current.onCentcom() || cult_mind.current.onSyndieBase())
|
||||
acolytes_survived++
|
||||
var/cult_fail = 0
|
||||
cult_fail += eldergod
|
||||
if(!GLOB.sac_complete)
|
||||
cult_fail++
|
||||
if(!cult_fail)
|
||||
SSblackbox.set_details("round_end_result","win - cult win")
|
||||
SSblackbox.set_val("round_end_result",acolytes_survived)
|
||||
SSticker.mode_result = "win - cult win"
|
||||
to_chat(world, "<span class='greentext'>The cult has succeeded! Nar-sie has snuffed out another torch in the void!</span>")
|
||||
else
|
||||
SSblackbox.set_details("round_end_result","loss - staff stopped the cult")
|
||||
SSblackbox.set_val("round_end_result",acolytes_survived)
|
||||
SSticker.mode_result = "loss - staff stopped the cult"
|
||||
to_chat(world, "<span class='redtext'>The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!</span>")
|
||||
if(cult_objectives.len)
|
||||
text += "<br><b>The cultists' objectives were:</b>"
|
||||
|
||||
@@ -225,7 +225,10 @@ This file contains the arcane tome files.
|
||||
"<span class='cult'>You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.</span>")
|
||||
if(user.blood_volume)
|
||||
user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm"))
|
||||
if(!do_after(user, initial(rune_to_scribe.scribe_delay), target = get_turf(user)))
|
||||
var/scribe_mod = initial(rune_to_scribe.scribe_delay)
|
||||
if(istype(get_turf(user), /turf/open/floor/engine/cult))
|
||||
scribe_mod *= 0.5
|
||||
if(!do_after(user, scribe_mod, target = get_turf(user)))
|
||||
for(var/V in shields)
|
||||
var/obj/structure/emergency_shield/sanguine/S = V
|
||||
if(S && !QDELETED(S))
|
||||
|
||||
@@ -46,7 +46,10 @@
|
||||
if(damage_interrupt && isliving(owner))
|
||||
var/mob/living/L = owner
|
||||
health = list("health" = L.health)
|
||||
if(do_after(owner, scribe_time, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt)))
|
||||
var/scribe_mod = scribe_time
|
||||
if(istype(get_turf(owner), /turf/open/floor/engine/cult))
|
||||
scribe_mod *= 0.5
|
||||
if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt)))
|
||||
var/obj/effect/rune/new_rune = new rune_type(owner.loc)
|
||||
new_rune.keyword = chosen_keyword
|
||||
else
|
||||
|
||||
+569
-562
File diff suppressed because it is too large
Load Diff
@@ -33,13 +33,14 @@
|
||||
/obj/machinery/dominator/tesla_act()
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/dominator/New()
|
||||
..()
|
||||
/obj/machinery/dominator/Initialize()
|
||||
. = ..()
|
||||
set_light(2)
|
||||
GLOB.poi_list |= src
|
||||
spark_system = new
|
||||
spark_system.set_up(5, TRUE, src)
|
||||
countdown = new(src)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/dominator/examine(mob/user)
|
||||
..()
|
||||
@@ -103,8 +104,23 @@
|
||||
spark_system.start()
|
||||
else if(!(stat & BROKEN))
|
||||
spark_system.start()
|
||||
cut_overlays()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/dominator/update_icon()
|
||||
cut_overlays()
|
||||
if(!(stat & BROKEN))
|
||||
icon_state = "dominator-active"
|
||||
if(operating)
|
||||
var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay")
|
||||
if(gang)
|
||||
dominator_overlay.color = gang.color_hex
|
||||
add_overlay(dominator_overlay)
|
||||
else
|
||||
icon_state = "dominator"
|
||||
if(obj_integrity/max_integrity < 0.66)
|
||||
add_overlay("damage")
|
||||
else
|
||||
icon_state = "dominator-broken"
|
||||
|
||||
/obj/machinery/dominator/obj_break(damage_flag)
|
||||
if(!(stat & BROKEN) && !(flags & NODECONSTRUCT))
|
||||
@@ -142,10 +158,9 @@
|
||||
gang.message_gangtools("Hostile takeover cancelled: Dominator is no longer operational.[gang.dom_attempts ? " You have [gang.dom_attempts] attempt remaining." : " The station network will have likely blocked any more attempts by us."]",1,1)
|
||||
|
||||
set_light(0)
|
||||
icon_state = "dominator-broken"
|
||||
cut_overlays()
|
||||
operating = 0
|
||||
stat |= BROKEN
|
||||
update_icon()
|
||||
STOP_PROCESSING(SSmachines, src)
|
||||
|
||||
/obj/machinery/dominator/Destroy()
|
||||
@@ -196,9 +211,9 @@
|
||||
priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert")
|
||||
gang.domination()
|
||||
SSshuttle.registerHostileEnvironment(src)
|
||||
src.name = "[gang.name] Gang [src.name]"
|
||||
name = "[gang.name] Gang [name]"
|
||||
operating = 1
|
||||
icon_state = "dominator-[gang.color]"
|
||||
update_icon()
|
||||
|
||||
countdown.color = gang.color_hex
|
||||
countdown.start()
|
||||
|
||||
@@ -261,6 +261,20 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
|
||||
gang_bosses += G.bosses
|
||||
return gang_bosses
|
||||
|
||||
/datum/game_mode/proc/shuttle_check()
|
||||
if(SSshuttle.emergencyNoRecall)
|
||||
return
|
||||
var/alive = 0
|
||||
for(var/mob/living/L in GLOB.player_list)
|
||||
if(L.stat != DEAD)
|
||||
alive++
|
||||
|
||||
if((alive < (GLOB.joined_player_list.len * 0.4)) && ((SSshuttle.emergency.timeLeft(1) > (SSshuttle.emergencyCallTime * 0.4))))
|
||||
|
||||
SSshuttle.emergencyNoRecall = TRUE
|
||||
SSshuttle.emergency.request(null, set_coefficient = 0.4)
|
||||
priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
|
||||
|
||||
/proc/determine_domination_time(var/datum/gang/G)
|
||||
return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9))
|
||||
|
||||
@@ -274,12 +288,12 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
|
||||
return
|
||||
if(!winner)
|
||||
to_chat(world, "<span class='redtext'>The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]</span><br>")
|
||||
SSblackbox.set_details("round_end_result","loss - gangs failed takeover")
|
||||
SSticker.mode_result = "loss - gangs failed takeover"
|
||||
|
||||
SSticker.news_report = GANG_LOSS
|
||||
else
|
||||
to_chat(world, "<span class='redtext'>The [winner.name] Gang successfully performed a hostile takeover of the station!</span><br>")
|
||||
SSblackbox.set_details("round_end_result","win - gang domination complete")
|
||||
SSticker.mode_result = "win - gang domination complete"
|
||||
|
||||
SSticker.news_report = GANG_TAKEOVER
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
/datum/gang_item/clothing/hands,
|
||||
/datum/gang_item/clothing/belt,
|
||||
|
||||
/datum/gang_item/weapon/shuriken,
|
||||
/datum/gang_item/weapon/shuriken,
|
||||
/datum/gang_item/weapon/switchblade,
|
||||
/datum/gang_item/weapon/improvised,
|
||||
/datum/gang_item/weapon/ammo/improvised_ammo,
|
||||
@@ -202,7 +202,9 @@
|
||||
return
|
||||
var/added_names = ""
|
||||
var/lost_names = ""
|
||||
|
||||
|
||||
SSticker.mode.shuttle_check() // See if its time to start wrapping things up
|
||||
|
||||
//Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report
|
||||
var/list/reclaimed_territories = territory_new & territory_lost
|
||||
territory |= reclaimed_territories
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
/datum/gang_item/clothing/hat
|
||||
name = "Pimp Hat"
|
||||
id = "hat"
|
||||
cost = 18
|
||||
cost = 16
|
||||
item_path = /obj/item/clothing/head/collectable/petehat/gang
|
||||
|
||||
/obj/item/clothing/head/collectable/petehat/gang
|
||||
@@ -121,7 +121,7 @@
|
||||
/datum/gang_item/clothing/mask
|
||||
name = "Golden Death Mask"
|
||||
id = "mask"
|
||||
cost = 20
|
||||
cost = 18
|
||||
item_path = /obj/item/clothing/mask/gskull
|
||||
|
||||
/obj/item/clothing/mask/gskull
|
||||
@@ -133,7 +133,7 @@
|
||||
/datum/gang_item/clothing/shoes
|
||||
name = "Bling Boots"
|
||||
id = "boots"
|
||||
cost = 25
|
||||
cost = 22
|
||||
item_path = /obj/item/clothing/shoes/gang
|
||||
|
||||
/obj/item/clothing/shoes/gang
|
||||
@@ -144,14 +144,14 @@
|
||||
/datum/gang_item/clothing/neck
|
||||
name = "Gold Necklace"
|
||||
id = "necklace"
|
||||
cost = 10
|
||||
cost = 9
|
||||
item_path = /obj/item/clothing/neck/necklace/dope
|
||||
|
||||
|
||||
/datum/gang_item/clothing/hands
|
||||
name = "Decorative Brass Knuckles"
|
||||
id = "hand"
|
||||
cost = 12
|
||||
cost = 11
|
||||
item_path = /obj/item/clothing/gloves/gang
|
||||
|
||||
/obj/item/clothing/gloves/gang
|
||||
@@ -163,7 +163,7 @@
|
||||
/datum/gang_item/clothing/belt
|
||||
name = "Badass Belt"
|
||||
id = "belt"
|
||||
cost = 15
|
||||
cost = 13
|
||||
item_path = /obj/item/weapon/storage/belt/military/gang
|
||||
|
||||
/obj/item/weapon/storage/belt/military/gang
|
||||
@@ -215,7 +215,6 @@
|
||||
name = "Sawn-Off Improvised Shotgun"
|
||||
id = "sawn"
|
||||
cost = 6
|
||||
item_path = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/sawn
|
||||
|
||||
/datum/gang_item/weapon/ammo/improvised_ammo
|
||||
name = "Box of Buckshot"
|
||||
@@ -236,16 +235,24 @@
|
||||
item_path = /obj/item/ammo_box/magazine/m10mm
|
||||
|
||||
/datum/gang_item/weapon/sniper
|
||||
name = ".50cal Sniper Rifle"
|
||||
name = "Black Market .50cal Sniper Rifle"
|
||||
id = "sniper"
|
||||
cost = 40
|
||||
item_path = /obj/item/weapon/gun/ballistic/automatic/sniper_rifle
|
||||
|
||||
/datum/gang_item/weapon/ammo/sniper_ammo
|
||||
name = "Standard .50cal Sniper Rounds"
|
||||
name = "Smuggled .50cal Sniper Rounds"
|
||||
id = "sniper_ammo"
|
||||
cost = 15
|
||||
item_path = /obj/item/ammo_box/magazine/sniper_rounds
|
||||
item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang
|
||||
|
||||
|
||||
/datum/gang_item/weapon/ammo/sleeper_ammo
|
||||
name = "Illicit Tranquilizer Cartridges"
|
||||
id = "sniper_ammo"
|
||||
cost = 15
|
||||
item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper
|
||||
|
||||
|
||||
/datum/gang_item/weapon/machinegun
|
||||
name = "Mounted Machine Gun"
|
||||
@@ -326,6 +333,7 @@
|
||||
if(spawn_msg)
|
||||
to_chat(user, spawn_msg)
|
||||
|
||||
|
||||
/datum/gang_item/equipment/wetwork_boots
|
||||
name = "Wetwork boots"
|
||||
id = "wetwork"
|
||||
@@ -412,7 +420,7 @@
|
||||
/datum/gang_item/equipment/dominator/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool)
|
||||
var/area/usrarea = get_area(user.loc)
|
||||
var/usrturf = get_turf(user.loc)
|
||||
if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != 1)
|
||||
if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != ZLEVEL_STATION)
|
||||
to_chat(user, "<span class='warning'>You can only use this on the station!</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -167,6 +167,9 @@
|
||||
if(!can_use(user))
|
||||
return 0
|
||||
|
||||
if(SSshuttle.emergencyNoRecall)
|
||||
return 0
|
||||
|
||||
if(recalling)
|
||||
to_chat(usr, "<span class='warning'>Error: Recall already in progress.</span>")
|
||||
return 0
|
||||
@@ -194,7 +197,7 @@
|
||||
return 0
|
||||
|
||||
var/turf/userturf = get_turf(user)
|
||||
if(userturf.z != 1) //Shuttle can only be recalled while on station
|
||||
if(userturf.z != ZLEVEL_STATION) //Shuttle can only be recalled while on station
|
||||
to_chat(user, "<span class='warning'>\icon[src]Error: Device out of range of station communication arrays.</span>")
|
||||
recalling = 0
|
||||
return 0
|
||||
@@ -212,7 +215,7 @@
|
||||
log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.")
|
||||
message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1)
|
||||
userturf = get_turf(user)
|
||||
if(userturf.z == 1) //Check one more time that they are on station.
|
||||
if(userturf.z == ZLEVEL_STATION) //Check one more time that they are on station.
|
||||
if(SSshuttle.cancelEvac(user))
|
||||
gang.recalls -= 1
|
||||
return 1
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
set desc = "Detonate all RCDs on the station, while sparing onboard cyborg RCDs."
|
||||
set waitfor = FALSE
|
||||
|
||||
if(!canUseTopic() || malf_cooldown)
|
||||
if(!canUseTopic() || malf_cooldown > world.time)
|
||||
return
|
||||
|
||||
for(var/I in GLOB.rcd_list)
|
||||
@@ -203,9 +203,7 @@
|
||||
RCD.detonate_pulse()
|
||||
|
||||
to_chat(src, "<span class='warning'>RCD detonation pulse emitted.</span>")
|
||||
malf_cooldown = TRUE
|
||||
sleep(100)
|
||||
malf_cooldown = FALSE
|
||||
malf_cooldown = world.time + 100
|
||||
|
||||
/datum/AI_Module/large/mecha_domination
|
||||
module_name = "Viral Mech Domination"
|
||||
@@ -446,7 +444,7 @@
|
||||
set name = "Reactivate Cameranet"
|
||||
set category = "Malfunction"
|
||||
|
||||
if(!canUseTopic() || malf_cooldown)
|
||||
if(!canUseTopic() || malf_cooldown > world.time)
|
||||
return
|
||||
var/fixedcams = 0 //Tells the AI how many cams it fixed. Stats are fun.
|
||||
|
||||
@@ -469,9 +467,7 @@
|
||||
break
|
||||
to_chat(src, "<span class='notice'>Diagnostic complete! Operations completed: [fixedcams].</span>")
|
||||
|
||||
malf_cooldown = 1
|
||||
spawn(30) //Lag protection
|
||||
malf_cooldown = 0
|
||||
malf_cooldown = world.time + 30
|
||||
|
||||
/datum/AI_Module/large/upgrade_cameras
|
||||
module_name = "Upgrade Camera Network"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user