Merge branch 'master' into upstream-merge-27721
This commit is contained in:
@@ -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
@@ -8,185 +8,81 @@
|
||||
},
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"c" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"d" = (
|
||||
/obj/structure/alien/resin/wall,
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"e" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"f" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"g" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"h" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"i" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"j" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"k" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"l" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"m" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/structure/bed/nest,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"n" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/bed/nest,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"o" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
@@ -198,43 +94,19 @@
|
||||
},
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"p" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"q" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"r" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -242,112 +114,48 @@
|
||||
/obj/structure/alien/resin/wall,
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"s" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/structure/alien/egg,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"t" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"u" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"v" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"w" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"x" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg/burst,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"y" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/obj/structure/alien/resin/wall,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"z" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -364,28 +172,12 @@
|
||||
/obj/item/weapon/melee/baton/loaded,
|
||||
/obj/item/clothing/head/helmet,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"A" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"B" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -393,59 +185,27 @@
|
||||
/obj/structure/alien/egg/burst,
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"C" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/egg/burst,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"D" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"E" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"F" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large{
|
||||
@@ -455,15 +215,7 @@
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"G" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -472,28 +224,12 @@
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"H" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"I" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
@@ -507,56 +243,24 @@
|
||||
/obj/item/clothing/under/syndicate,
|
||||
/obj/item/clothing/glasses/night,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"J" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/mob/living/simple_animal/hostile/alien/sentinel,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"K" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"L" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/mob/living/simple_animal/hostile/alien/drone{
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"M" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds1"
|
||||
@@ -573,15 +277,7 @@
|
||||
stat = 2
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"N" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/obj/structure/alien/resin/wall,
|
||||
@@ -590,15 +286,7 @@
|
||||
"O" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/turf/template_noop,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"P" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
@@ -615,41 +303,17 @@
|
||||
plants_off = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"R" = (
|
||||
/obj/structure/alien/weeds,
|
||||
/turf/template_noop,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"S" = (
|
||||
/obj/structure/alien/weeds{
|
||||
icon_state = "weeds2"
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/awaycontent/a5{
|
||||
always_unpowered = 1;
|
||||
has_gravity = 1;
|
||||
name = "The Hive";
|
||||
power_environ = 0;
|
||||
power_equip = 0;
|
||||
power_light = 0;
|
||||
poweralm = 0
|
||||
})
|
||||
/area/ruin/xenonest)
|
||||
"T" = (
|
||||
/obj/structure/alien/weeds/node,
|
||||
/obj/structure/alien/resin/wall,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
+7618
-8748
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
@@ -0,0 +1,12 @@
|
||||
diff a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm (rejected hunks)
|
||||
@@ -20207,9 +20151,7 @@
|
||||
/area/shuttle/syndicate)
|
||||
"aTq" = (
|
||||
/turf/closed/wall,
|
||||
-/area/security/vacantoffice{
|
||||
- name = "Vacant Office A"
|
||||
- })
|
||||
+/area/security/vacantoffice/a)
|
||||
"aTr" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/status_display{
|
||||
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
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
"a" = ()
|
||||
|
||||
(1,1,1, 1,1,1) = {""}
|
||||
+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"
|
||||
|
||||
@@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby()
|
||||
#define MASKINTERNALS 8 // mask allows internals
|
||||
#define HEAR 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
|
||||
#define CHECK_RICOCHET 32 // Projectiels will check ricochet on things impacted that have this.
|
||||
#define CONDUCT 64 // conducts electricity (metal etc.)
|
||||
#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way
|
||||
#define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff
|
||||
@@ -57,6 +58,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define UNUSED_TRANSIT_TURF 2
|
||||
#define CAN_BE_DIRTY 4 //If a turf can be made dirty at roundstart. This is also used in areas.
|
||||
#define NO_DEATHRATTLE 16 // Do not notify deadchat about any deaths that occur on this turf.
|
||||
//#define CHECK_RICOCHET 32 //Same thing as atom flag.
|
||||
|
||||
/*
|
||||
These defines are used specifically with the atom/pass_flags bitmask
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -124,3 +124,8 @@
|
||||
#define MAX_CHICKENS 50
|
||||
|
||||
#define UNHEALING_EAR_DAMAGE 100
|
||||
|
||||
|
||||
#define INCORPOREAL_MOVE_BASIC 1
|
||||
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
|
||||
#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt
|
||||
@@ -39,8 +39,10 @@
|
||||
|
||||
|
||||
// Subsystem init_order, from highest priority to lowest priority
|
||||
// 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
|
||||
@@ -71,4 +73,4 @@
|
||||
#define RUNLEVEL_GAME 4
|
||||
#define RUNLEVEL_POSTGAME 8
|
||||
|
||||
#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME)
|
||||
#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -167,23 +167,14 @@
|
||||
underlay_appearance.icon = fixed_underlay["icon"]
|
||||
underlay_appearance.icon_state = fixed_underlay["icon_state"]
|
||||
else
|
||||
var/turf/T = get_step(src, turn(adjacencies, 180))
|
||||
if(T && (T.density || T.smooth))
|
||||
var/turned_adjacency = turn(adjacencies, 180)
|
||||
var/turf/T = get_step(src, turned_adjacency)
|
||||
if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
|
||||
T = get_step(src, turn(adjacencies, 135))
|
||||
if(T && (T.density || T.smooth))
|
||||
if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
|
||||
T = get_step(src, turn(adjacencies, 225))
|
||||
|
||||
if(isspaceturf(T) && !istype(T, /turf/open/space/transit))
|
||||
underlay_appearance.icon = 'icons/turf/space.dmi'
|
||||
underlay_appearance.icon_state = SPACE_ICON_STATE
|
||||
underlay_appearance.plane = PLANE_SPACE
|
||||
else if(T && !T.density && !T.smooth)
|
||||
underlay_appearance.icon = T.icon
|
||||
underlay_appearance.icon_state = T.icon_state
|
||||
else if(baseturf && !initial(baseturf.density) && !initial(baseturf.smooth))
|
||||
underlay_appearance.icon = initial(baseturf.icon)
|
||||
underlay_appearance.icon_state = initial(baseturf.icon_state)
|
||||
else
|
||||
//if all else fails, ask our own turf
|
||||
if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency) && !get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
|
||||
underlay_appearance.icon = DEFAULT_UNDERLAY_ICON
|
||||
underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE
|
||||
underlays = U
|
||||
|
||||
+16
-2
@@ -130,6 +130,22 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
|
||||
var/t = round((val - min) / d)
|
||||
return val - (t * d)
|
||||
|
||||
#define NORM_ROT(rot) ((((rot % 360) + (rot - round(rot, 1))) > 0) ? ((rot % 360) + (rot - round(rot, 1))) : (((rot % 360) + (rot - round(rot, 1))) + 360))
|
||||
|
||||
/proc/get_angle_of_incidence(face_angle, angle_in, auto_normalize = TRUE)
|
||||
|
||||
var/angle_in_s = NORM_ROT(angle_in)
|
||||
var/face_angle_s = NORM_ROT(face_angle)
|
||||
var/incidence = face_angle_s - angle_in_s
|
||||
var/incidence_s = incidence
|
||||
while(incidence_s < -90)
|
||||
incidence_s += 180
|
||||
while(incidence_s > 90)
|
||||
incidence_s -= 180
|
||||
if(auto_normalize)
|
||||
return incidence_s
|
||||
else
|
||||
return incidence
|
||||
|
||||
//A logarithm that converts an integer to a number scaled between 0 and 1 (can be tweaked to be higher).
|
||||
//Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions.
|
||||
@@ -141,8 +157,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
|
||||
return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5
|
||||
//to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]")
|
||||
|
||||
|
||||
|
||||
//converts a uniform distributed random number into a normal distributed one
|
||||
//since this method produces two random numbers, one is saved for subsequent calls
|
||||
//(making the cost negligble for every second call)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
//User itself, current loc, and user inventory
|
||||
if(DirectAccess(A))
|
||||
if(W)
|
||||
melee_item_attack_chain(src,W,A,params)
|
||||
W.melee_attack_chain(src, A, params)
|
||||
else
|
||||
if(ismob(A))
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
@@ -133,7 +133,7 @@
|
||||
//Standard reach turf to turf or reaching inside storage
|
||||
if(CanReach(A,W))
|
||||
if(W)
|
||||
melee_item_attack_chain(src,W,A,params)
|
||||
W.melee_attack_chain(src, A, params)
|
||||
else
|
||||
if(ismob(A))
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
// cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents)
|
||||
if(A == loc || (A in loc) || (A in contents))
|
||||
melee_item_attack_chain(src, W, A, params)
|
||||
W.melee_attack_chain(src, A, params)
|
||||
return
|
||||
|
||||
if(!isturf(loc))
|
||||
@@ -80,7 +80,7 @@
|
||||
// cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc))
|
||||
if(isturf(A) || isturf(A.loc))
|
||||
if(A.Adjacent(src)) // see adjacent.dm
|
||||
melee_item_attack_chain(src, W, A, params)
|
||||
W.melee_attack_chain(src, A, params)
|
||||
return
|
||||
else
|
||||
W.afterattack(A, src, 0, params)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
|
||||
/proc/melee_item_attack_chain(mob/user, obj/item/I, atom/target, params)
|
||||
if(I.pre_attackby(target, user, params))
|
||||
/obj/item/proc/melee_attack_chain(mob/user, atom/target, params)
|
||||
if(pre_attackby(target, user, params))
|
||||
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
|
||||
var/resolved = target.attackby(I,user,params)
|
||||
if(!resolved && target && I)
|
||||
I.afterattack(target, user, 1, params) // 1: clicking something Adjacent
|
||||
var/resolved = target.attackby(src, user, params)
|
||||
if(!resolved && target && !QDELETED(src))
|
||||
afterattack(target, user, 1, params) // 1: clicking something Adjacent
|
||||
|
||||
|
||||
// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown.
|
||||
|
||||
@@ -124,7 +124,8 @@
|
||||
|
||||
if(!isturf(target) && istype(focus,/obj/item) && target.Adjacent(focus))
|
||||
apply_focus_overlay()
|
||||
melee_item_attack_chain(tk_user, focus, target, params) //isn't copying the attack chain fun. we should do it more often.
|
||||
var/obj/item/I = focus
|
||||
I.melee_attack_chain(tk_user, target, params) //isn't copying the attack chain fun. we should do it more often.
|
||||
if(check_if_focusable(focus))
|
||||
focus.do_attack_animation(target, null, focus)
|
||||
else
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -164,8 +164,8 @@ SUBSYSTEM_DEF(garbage)
|
||||
if (time > highest_del_time)
|
||||
highest_del_time = time
|
||||
if (time > 10)
|
||||
log_game("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete)")
|
||||
message_admins("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete).")
|
||||
log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)")
|
||||
message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).")
|
||||
postpone(time/5)
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/HardQueue(datum/A)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -844,18 +855,20 @@ SUBSYSTEM_DEF(ticker)
|
||||
if(delay_end)
|
||||
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)
|
||||
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>")
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(!stopped) //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,34 +1,37 @@
|
||||
/datum/getrev
|
||||
var/parentcommit
|
||||
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/date
|
||||
|
||||
/datum/getrev/New()
|
||||
var/head_file = file2text(".git/logs/HEAD")
|
||||
if(SERVERTOOLS && fexists("..\\prtestjob.lk"))
|
||||
var/list/tmp = world.file2list("..\\prtestjob.lk")
|
||||
for(var/I in tmp)
|
||||
if(I)
|
||||
testmerge |= I
|
||||
var/testlen = max(testmerge.len - 1, 0)
|
||||
var/regex/head_log = new("(\\w{40}) .+> (\\d{10}).+(?=(\n.*(\\w{40}).*){[testlen]}\n*\\Z)")
|
||||
head_log.Find(head_file)
|
||||
parentcommit = head_log.group[1]
|
||||
date = unix2date(text2num(head_log.group[2]))
|
||||
commit = head_log.group[4]
|
||||
|
||||
log_world("Running /tg/ revision:")
|
||||
log_world("[date]")
|
||||
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 master commit [parentcommit]")
|
||||
log_world("Based off origin/master commit [originmastercommit]")
|
||||
else
|
||||
log_world(parentcommit)
|
||||
log_world(originmastercommit)
|
||||
|
||||
/datum/getrev/proc/DownloadPRDetails()
|
||||
if(!config.githubrepoid)
|
||||
@@ -73,13 +76,13 @@
|
||||
set name = "Show Server Revision"
|
||||
set desc = "Check the current server code revision"
|
||||
|
||||
if(GLOB.revdata.parentcommit)
|
||||
if(GLOB.revdata.originmastercommit)
|
||||
to_chat(src, "<b>Server revision compiled on:</b> [GLOB.revdata.date]")
|
||||
var/prefix = ""
|
||||
if(GLOB.revdata.testmerge.len)
|
||||
to_chat(src, GLOB.revdata.GetTestMergeInfo())
|
||||
prefix = "Based off master commit: "
|
||||
var/pc = GLOB.revdata.parentcommit
|
||||
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")
|
||||
|
||||
@@ -44,11 +44,12 @@
|
||||
//cleans up ALL references :)
|
||||
/datum/holocall/Destroy()
|
||||
user.reset_perspective()
|
||||
if(user.client)
|
||||
if(!QDELETED(eye) && user.client)
|
||||
for(var/datum/camerachunk/chunk in eye.visibleCameraChunks)
|
||||
chunk.remove(eye)
|
||||
qdel(eye)
|
||||
eye = null
|
||||
user.remote_control = null
|
||||
QDEL_NULL(eye)
|
||||
|
||||
user = null
|
||||
if(hologram)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
+11
-6
@@ -20,7 +20,8 @@
|
||||
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
|
||||
|
||||
/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 +72,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 +89,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
|
||||
|
||||
+59
-116
@@ -1,6 +1,4 @@
|
||||
/datum/riding
|
||||
var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver
|
||||
var/generic_pixel_y = 0 //All dirs show this pixel_y for the driver, use these vars if the pixel shift is stable across all dir, override handle_vehicle_offsets otherwise.
|
||||
var/next_vehicle_move = 0 //used for move delays
|
||||
var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower
|
||||
var/keytype = null
|
||||
@@ -34,16 +32,29 @@
|
||||
/datum/riding/proc/force_dismount(mob/living/M)
|
||||
ridden.unbuckle_mob(M)
|
||||
|
||||
//Override this to set your vehicle's various pixel offsets
|
||||
//if they differ between directions, otherwise use the
|
||||
//generic variables
|
||||
/datum/riding/proc/handle_vehicle_offsets()
|
||||
var/ridden_dir = "[ridden.dir]"
|
||||
var/passindex = 0
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
passindex++
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.setDir(ridden.dir)
|
||||
buckled_mob.pixel_x = generic_pixel_x
|
||||
buckled_mob.pixel_y = generic_pixel_y
|
||||
var/list/offsets = get_offsets(passindex)
|
||||
dir_loop:
|
||||
for(var/offsetdir in offsets)
|
||||
if(offsetdir == ridden_dir)
|
||||
var/list/diroffsets = offsets[offsetdir]
|
||||
buckled_mob.pixel_x = diroffsets[1]
|
||||
if(diroffsets.len == 2)
|
||||
buckled_mob.pixel_y = diroffsets[2]
|
||||
if(diroffsets.len == 3)
|
||||
buckled_mob.layer = diroffsets[3]
|
||||
break dir_loop
|
||||
|
||||
|
||||
//Override this to set your vehicle's various pixel offsets
|
||||
/datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0))
|
||||
|
||||
//KEYS
|
||||
/datum/riding/proc/keycheck(mob/user)
|
||||
@@ -100,10 +111,12 @@
|
||||
//atv
|
||||
/datum/riding/atv
|
||||
keytype = /obj/item/key
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
vehicle_move_delay = 1
|
||||
|
||||
/datum/riding/atv/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
|
||||
|
||||
|
||||
/datum/riding/atv/handle_vehicle_layer()
|
||||
if(ridden.dir == SOUTH)
|
||||
ridden.layer = ABOVE_MOB_LAYER
|
||||
@@ -150,24 +163,9 @@
|
||||
keytype = /obj/item/key/janitor
|
||||
|
||||
|
||||
/datum/riding/janicart/handle_vehicle_offsets()
|
||||
..()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
switch(buckled_mob.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 4
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -12
|
||||
buckled_mob.pixel_y = 7
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 7
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 12
|
||||
buckled_mob.pixel_y = 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))
|
||||
|
||||
//scooter
|
||||
/datum/riding/scooter/handle_vehicle_layer()
|
||||
if(ridden.dir == SOUTH)
|
||||
@@ -175,20 +173,14 @@
|
||||
else
|
||||
ridden.layer = OBJ_LAYER
|
||||
|
||||
/datum/riding/scooter/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0), "[SOUTH]" = list(-2), "[EAST]" = list(0), "[WEST]" = list( 2))
|
||||
|
||||
/datum/riding/scooter/handle_vehicle_offsets()
|
||||
..()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
switch(buckled_mob.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -2
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 2
|
||||
if(buckled_mob.get_num_legs() > 0)
|
||||
buckled_mob.pixel_y = 5
|
||||
else
|
||||
@@ -209,16 +201,18 @@
|
||||
//secway
|
||||
/datum/riding/secway
|
||||
keytype = /obj/item/key/security
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
|
||||
/datum/riding/secway/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
|
||||
|
||||
//i want to ride my
|
||||
/datum/riding/bicycle
|
||||
keytype = null
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
vehicle_move_delay = 0
|
||||
|
||||
/datum/riding/bicycle/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
|
||||
|
||||
//speedbike
|
||||
/datum/riding/space/speedbike
|
||||
keytype = null
|
||||
@@ -233,54 +227,28 @@
|
||||
ridden.pixel_x = -18
|
||||
ridden.pixel_y = 0
|
||||
|
||||
/datum/riding/space/speedbike/handle_vehicle_offsets()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.setDir(ridden.dir)
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = -8
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 4
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -10
|
||||
buckled_mob.pixel_y = 5
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 10
|
||||
buckled_mob.pixel_y = 5
|
||||
/datum/riding/space/speedbike/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, -8), "[SOUTH]" = list(0, 4), "[EAST]" = list(-10, 5), "[WEST]" = list( 10, 5))
|
||||
|
||||
//SPEEDUWAGON
|
||||
|
||||
/datum/riding/space/speedwagon
|
||||
vehicle_move_delay = 0
|
||||
|
||||
/datum/riding/space/speedwagon/handle_vehicle_offsets()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/m in ridden.buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
buckled_mob.setDir(ridden.dir)
|
||||
ridden.pixel_x = -48
|
||||
ridden.pixel_y = -48
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
buckled_mob.pixel_x = -10
|
||||
buckled_mob.pixel_y = -3
|
||||
if(SOUTH)
|
||||
buckled_mob.pixel_x = 16
|
||||
buckled_mob.pixel_y = 3
|
||||
if(EAST)
|
||||
buckled_mob.pixel_x = -4
|
||||
buckled_mob.pixel_y = 30
|
||||
if(WEST)
|
||||
buckled_mob.pixel_x = 4
|
||||
buckled_mob.pixel_y = -1
|
||||
|
||||
/datum/riding/space/speedwagon/handle_vehicle_layer()
|
||||
ridden.layer = BELOW_MOB_LAYER
|
||||
|
||||
/datum/riding/space/speedwagon/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
switch(pass_index)
|
||||
if(1)
|
||||
return list("[NORTH]" = list(-10, -4), "[SOUTH]" = list(16, 3), "[EAST]" = list(-4, 30), "[WEST]" = list(4, -3))
|
||||
if(2)
|
||||
return list("[NORTH]" = list(19, -5, 4), "[SOUTH]" = list(-13, 3, 4), "[EAST]" = list(-4, -3, 4.1), "[WEST]" = list(4, 28, 3.9))
|
||||
if(3)
|
||||
return list("[NORTH]" = list(-10, -18, 4.2), "[SOUTH]" = list(16, 25, 3.9), "[EAST]" = list(-22, 30), "[WEST]" = list(22, -3, 4.1))
|
||||
if(4)
|
||||
return list("[NORTH]" = list(19, -18, 4.2), "[SOUTH]" = list(-13, 25, 3.9), "[EAST]" = list(-22, 3, 3.9), "[WEST]" = list(22, 28))
|
||||
|
||||
///////////////BOATS////////////
|
||||
/datum/riding/boat
|
||||
keytype = /obj/item/weapon/oar
|
||||
@@ -297,17 +265,15 @@
|
||||
|
||||
/datum/riding/boat/dragon
|
||||
keytype = null
|
||||
generic_pixel_y = 2
|
||||
generic_pixel_x = 1
|
||||
vehicle_move_delay = 1
|
||||
|
||||
/datum/riding/boat/dragon/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(1, 2), "[SOUTH]" = list(1, 2), "[EAST]" = list(1, 2), "[WEST]" = list( 1, 2))
|
||||
|
||||
///////////////ANIMALS////////////
|
||||
//general animals
|
||||
/datum/riding/animal
|
||||
keytype = null
|
||||
generic_pixel_x = 0
|
||||
generic_pixel_y = 4
|
||||
|
||||
/datum/riding/animal/handle_ride(mob/user, direction)
|
||||
if(user.incapacitated())
|
||||
@@ -335,7 +301,7 @@
|
||||
/datum/riding/human/ride_check(mob/living/M)
|
||||
var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins.
|
||||
if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE))
|
||||
M.visible_message("<span class='warning'>[M] falls off [ridden]!</span>")
|
||||
M.visible_message("<span class='boldwarning'>[M] falls off of [ridden]!</span>")
|
||||
Unbuckle(M)
|
||||
return FALSE
|
||||
if(M.restrained(TRUE))
|
||||
@@ -345,22 +311,8 @@
|
||||
if(H.pulling == M)
|
||||
H.stop_pulling()
|
||||
|
||||
/datum/riding/human/handle_vehicle_offsets()
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
M.setDir(ridden.dir)
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 6
|
||||
if(SOUTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 6
|
||||
if(EAST)
|
||||
M.pixel_x = -6
|
||||
M.pixel_y = 4
|
||||
if(WEST)
|
||||
M.pixel_x = 6
|
||||
M.pixel_y = 4
|
||||
/datum/riding/human/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 6), "[SOUTH]" = list(0, 6), "[EAST]" = list(-6, 4), "[WEST]" = list( 6, 4))
|
||||
|
||||
/datum/riding/human/handle_vehicle_layer()
|
||||
if(ridden.buckled_mobs && ridden.buckled_mobs.len)
|
||||
@@ -375,7 +327,7 @@
|
||||
ridden.unbuckle_mob(user)
|
||||
user.Weaken(3)
|
||||
user.Stun(3)
|
||||
user.visible_message("<span class='warning'>[ridden] pushes [user] off of them!</span>")
|
||||
user.visible_message("<span class='boldwarning'>[ridden] pushes [user] off of them!</span>")
|
||||
|
||||
/datum/riding/cyborg
|
||||
keytype = null
|
||||
@@ -407,6 +359,9 @@
|
||||
else
|
||||
ridden.layer = MOB_LAYER
|
||||
|
||||
/datum/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(-6, 3), "[WEST]" = list( 6, 3))
|
||||
|
||||
/datum/riding/cyborg/handle_vehicle_offsets()
|
||||
if(ridden.has_buckled_mobs())
|
||||
for(var/mob/living/M in ridden.buckled_mobs)
|
||||
@@ -417,26 +372,14 @@
|
||||
M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)]
|
||||
M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)]
|
||||
else
|
||||
switch(ridden.dir)
|
||||
if(NORTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 4
|
||||
if(SOUTH)
|
||||
M.pixel_x = 0
|
||||
M.pixel_y = 4
|
||||
if(EAST)
|
||||
M.pixel_x = -6
|
||||
M.pixel_y = 3
|
||||
if(WEST)
|
||||
M.pixel_x = 6
|
||||
M.pixel_y = 3
|
||||
..()
|
||||
|
||||
/datum/riding/cyborg/force_dismount(mob/living/M)
|
||||
ridden.unbuckle_mob(M)
|
||||
var/turf/target = get_edge_target_turf(ridden, ridden.dir)
|
||||
var/turf/targetm = get_step(get_turf(ridden), ridden.dir)
|
||||
M.Move(targetm)
|
||||
M.visible_message("<span class='warning'>[M] is thrown clear of [ridden]!</span>")
|
||||
M.visible_message("<span class='boldwarning'>[M] is thrown clear of [ridden]!</span>")
|
||||
M.throw_at(target, 14, 5, ridden)
|
||||
M.Weaken(3)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
@@ -86,6 +86,7 @@
|
||||
/area/lavaland
|
||||
icon_state = "mining"
|
||||
has_gravity = 1
|
||||
flags = NONE
|
||||
|
||||
/area/lavaland/surface
|
||||
name = "Lavaland"
|
||||
@@ -123,4 +124,4 @@
|
||||
icon_state = "danger"
|
||||
|
||||
/area/lavaland/surface/outdoors/explored
|
||||
name = "Lavaland Labor Camp"
|
||||
name = "Lavaland Labor Camp"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "away"
|
||||
has_gravity = 1
|
||||
hidden = TRUE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
|
||||
/area/ruin/unpowered
|
||||
@@ -20,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
|
||||
|
||||
@@ -199,3 +228,15 @@
|
||||
/area/ruin/abandonedzoo
|
||||
name = "Abandoned Zoo"
|
||||
icon_state = "green"
|
||||
|
||||
|
||||
//Xeno Nest
|
||||
|
||||
/area/ruin/xenonest
|
||||
name = "The Hive"
|
||||
always_unpowered = 1
|
||||
power_environ = 0
|
||||
power_equip = 0
|
||||
power_light = 0
|
||||
poweralm = 0
|
||||
|
||||
+36
-33
@@ -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,10 +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/CanPass(atom/movable/mover, turf/target, height=1.5)
|
||||
return (!density || !height)
|
||||
|
||||
@@ -274,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)
|
||||
@@ -506,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)
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
diff a/code/game/atoms.dm b/code/game/atoms.dm (rejected hunks)
|
||||
@@ -274,6 +274,7 @@
|
||||
return
|
||||
|
||||
/atom/proc/ex_act(severity, target)
|
||||
+ set waitfor = FALSE
|
||||
contents_explosion(severity, target)
|
||||
|
||||
/atom/proc/blob_act(obj/structure/blob/B)
|
||||
@@ -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>"
|
||||
|
||||
@@ -80,11 +80,17 @@
|
||||
report = config.intercept
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME)
|
||||
|
||||
SSblackbox.set_details("round_start","[time2text(world.realtime)]")
|
||||
if(SSticker && SSticker.mode)
|
||||
SSblackbox.set_details("game_mode","[SSticker.mode]")
|
||||
if(GLOB.revdata.commit)
|
||||
SSblackbox.set_details("revision","[GLOB.revdata.commit]")
|
||||
if(SSdbcore.Connect())
|
||||
var/sql
|
||||
if(SSticker && SSticker.mode)
|
||||
sql += "game_mode = '[SSticker.mode]'"
|
||||
if(sql)
|
||||
sql += ", "
|
||||
if(GLOB.revdata.commit)
|
||||
sql += "commit_hash = '[GLOB.revdata.commit]'"
|
||||
if(sql)
|
||||
var/datum/DBQuery/query_round_game_mode = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET [sql] WHERE id = [GLOB.round_id]")
|
||||
query_round_game_mode.Execute()
|
||||
if(report)
|
||||
addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h))
|
||||
generate_station_goals()
|
||||
@@ -233,11 +239,11 @@
|
||||
if(ishuman(M))
|
||||
if(!M.stat)
|
||||
surviving_humans++
|
||||
if(M.z == 2)
|
||||
if(M.z == ZLEVEL_CENTCOM)
|
||||
escaped_humans++
|
||||
if(!M.stat)
|
||||
surviving_total++
|
||||
if(M.z == 2)
|
||||
if(M.z == ZLEVEL_CENTCOM)
|
||||
escaped_total++
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
/datum/gang_item/weapon/ammo/uzi_ammo,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/spraycan,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/emp,
|
||||
/datum/gang_item/equipment/c4,
|
||||
/datum/gang_item/equipment/frag,
|
||||
@@ -91,7 +90,6 @@
|
||||
/datum/gang_item/weapon/ammo/uzi_ammo,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/spraycan,
|
||||
/datum/gang_item/equipment/sharpener,
|
||||
/datum/gang_item/equipment/emp,
|
||||
/datum/gang_item/equipment/c4,
|
||||
/datum/gang_item/equipment/frag,
|
||||
@@ -204,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
|
||||
|
||||
@@ -326,6 +326,7 @@
|
||||
if(spawn_msg)
|
||||
to_chat(user, spawn_msg)
|
||||
|
||||
|
||||
/datum/gang_item/equipment/wetwork_boots
|
||||
name = "Wetwork boots"
|
||||
id = "wetwork"
|
||||
@@ -412,7 +413,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
|
||||
|
||||
@@ -422,7 +423,7 @@
|
||||
return FALSE
|
||||
|
||||
if(dominator_excessive_walls(user))
|
||||
to_chat(user, "span class='warning'>The <b>dominator</b> will not function here! The <b>dominator</b> requires a sizable open space within three standard units so that walls do not interfere with the signal.</span>")
|
||||
to_chat(user, "<span class='warning'>The <b>dominator</b> will not function here! The <b>dominator</b> requires a sizable open space within three standard units so that walls do not interfere with the signal.</span>")
|
||||
return FALSE
|
||||
|
||||
if(!(usrarea.type in gang.territory|gang.territory_new))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -50,8 +50,6 @@
|
||||
else
|
||||
to_chat(world, "<span class='boldnotice'>Nobody survived the meteor storm!</span>")
|
||||
|
||||
SSblackbox.set_details("round_end_result","end - evacuation")
|
||||
SSblackbox.set_val("round_end_result",survivors)
|
||||
|
||||
SSticker.mode_result = "end - evacuation"
|
||||
..()
|
||||
return 1
|
||||
|
||||
@@ -70,12 +70,12 @@
|
||||
origin.vest_mode_action.Remove(C)
|
||||
origin.vest_disguise_action.Remove(C)
|
||||
origin.set_droppoint_action.Remove(C)
|
||||
remote_eye.eye_user = null
|
||||
C.reset_perspective(null)
|
||||
if(C.client)
|
||||
C.client.images -= remote_eye.user_image
|
||||
for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks)
|
||||
chunk.remove(remote_eye)
|
||||
remote_eye.eye_user = null
|
||||
C.remote_control = null
|
||||
C.unset_machine()
|
||||
Remove(C)
|
||||
|
||||
@@ -181,6 +181,7 @@
|
||||
to_chat(H, "<span class='warning'>You feel intensely watched.</span>")
|
||||
sleep(5)
|
||||
to_chat(H, "<span class='warning'><b>Your mind snaps!</b></span>")
|
||||
to_chat(H, "<big><span class='warning'><b>You can't remember how you got here...</b></span></big>")
|
||||
var/objtype = pick(subtypesof(/datum/objective/abductee/))
|
||||
var/datum/objective/abductee/O = new objtype()
|
||||
SSticker.mode.abductees += H.mind
|
||||
|
||||
@@ -107,10 +107,8 @@
|
||||
|
||||
/datum/game_mode/monkey/declare_completion()
|
||||
if(check_monkey_victory())
|
||||
SSblackbox.set_details("round_end_result","win - monkey win")
|
||||
SSblackbox.set_val("round_end_result",escaped_monkeys)
|
||||
SSticker.mode_result = "win - monkey win"
|
||||
to_chat(world, "<span class='userdanger'>The monkeys have overthrown their captors! Eeek eeeek!!</span>")
|
||||
else
|
||||
SSblackbox.set_details("round_end_result","loss - staff stopped the monkeys")
|
||||
SSblackbox.set_val("round_end_result",escaped_monkeys)
|
||||
SSticker.mode_result = "loss - staff stopped the monkeys"
|
||||
to_chat(world, "<span class='userdanger'>The staff managed to contain the monkey infestation!</span>")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/icon_stun = "revenant_stun"
|
||||
var/icon_drain = "revenant_draining"
|
||||
var/stasis = FALSE
|
||||
incorporeal_move = 3
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
health = INFINITY //Revenants don't use health, they use essence instead
|
||||
maxHealth = INFINITY
|
||||
@@ -102,7 +102,7 @@
|
||||
if(unreveal_time && world.time >= unreveal_time)
|
||||
unreveal_time = 0
|
||||
revealed = FALSE
|
||||
incorporeal_move = 3
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
|
||||
if(unstun_time && world.time >= unstun_time)
|
||||
@@ -222,7 +222,7 @@
|
||||
R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls
|
||||
R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body
|
||||
R.revenant = src
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
revealed = FALSE
|
||||
ghostize(0)//Don't re-enter invisible corpse
|
||||
return
|
||||
@@ -236,7 +236,7 @@
|
||||
return
|
||||
revealed = TRUE
|
||||
invisibility = 0
|
||||
incorporeal_move = 0
|
||||
incorporeal_move = FALSE
|
||||
if(!unreveal_time)
|
||||
to_chat(src, "<span class='revendanger'>You have been revealed!</span>")
|
||||
unreveal_time = world.time + time
|
||||
@@ -309,12 +309,12 @@
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/death_reset()
|
||||
revealed = FALSE
|
||||
unreveal_time = 0
|
||||
unreveal_time = 0
|
||||
notransform = 0
|
||||
unstun_time = 0
|
||||
inhibited = FALSE
|
||||
draining = FALSE
|
||||
incorporeal_move = 3
|
||||
incorporeal_move = INCORPOREAL_MOVE_JAUNT
|
||||
invisibility = INVISIBILITY_REVENANT
|
||||
alpha=255
|
||||
stasis = FALSE
|
||||
|
||||
@@ -201,70 +201,70 @@
|
||||
|
||||
|
||||
if(nuke_off_station == NUKE_SYNDICATE_BASE)
|
||||
SSblackbox.set_details("round_end_result","loss - syndicate nuked - disk secured")
|
||||
SSticker.mode_result = "loss - syndicate nuked - disk secured"
|
||||
to_chat(world, "<FONT size = 3><B>Humiliating Syndicate Defeat</B></FONT>")
|
||||
to_chat(world, "<B>The crew of [station_name()] gave [syndicate_name()] operatives back their bomb! The syndicate base was destroyed!</B> Next time, don't lose the nuke!")
|
||||
|
||||
SSticker.news_report = NUKE_SYNDICATE_BASE
|
||||
|
||||
else if(!disk_rescued && station_was_nuked && !syndies_didnt_escape)
|
||||
SSblackbox.set_details("round_end_result","win - syndicate nuke")
|
||||
SSticker.mode_result = "win - syndicate nuke"
|
||||
to_chat(world, "<FONT size = 3><B>Syndicate Major Victory!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives have destroyed [station_name()]!</B>")
|
||||
|
||||
SSticker.news_report = STATION_NUKED
|
||||
|
||||
else if (!disk_rescued && station_was_nuked && syndies_didnt_escape)
|
||||
SSblackbox.set_details("round_end_result","halfwin - syndicate nuke - did not evacuate in time")
|
||||
SSticker.mode_result = "halfwin - syndicate nuke - did not evacuate in time"
|
||||
to_chat(world, "<FONT size = 3><B>Total Annihilation</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.</B> Next time, don't lose the disk!")
|
||||
|
||||
SSticker.news_report = STATION_NUKED
|
||||
|
||||
else if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape)
|
||||
SSblackbox.set_details("round_end_result","halfwin - blew wrong station")
|
||||
SSticker.mode_result = "halfwin - blew wrong station"
|
||||
to_chat(world, "<FONT size = 3><B>Crew Minor Victory</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't do that!")
|
||||
|
||||
SSticker.news_report = NUKE_MISS
|
||||
|
||||
else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape)
|
||||
SSblackbox.set_details("round_end_result","halfwin - blew wrong station - did not evacuate in time")
|
||||
SSticker.mode_result = "halfwin - blew wrong station - did not evacuate in time"
|
||||
to_chat(world, "<FONT size = 3><B>[syndicate_name()] operatives have earned Darwin Award!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't do that!")
|
||||
|
||||
SSticker.news_report = NUKE_MISS
|
||||
|
||||
else if ((disk_rescued || SSshuttle.emergency.mode != SHUTTLE_ENDGAME) && are_operatives_dead())
|
||||
SSblackbox.set_details("round_end_result","loss - evacuation - disk secured - syndi team dead")
|
||||
SSticker.mode_result = "loss - evacuation - disk secured - syndi team dead"
|
||||
to_chat(world, "<FONT size = 3><B>Crew Major Victory!</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff has saved the disk and killed the [syndicate_name()] Operatives</B>")
|
||||
|
||||
SSticker.news_report = OPERATIVES_KILLED
|
||||
|
||||
else if (disk_rescued)
|
||||
SSblackbox.set_details("round_end_result","loss - evacuation - disk secured")
|
||||
SSticker.mode_result = "loss - evacuation - disk secured"
|
||||
to_chat(world, "<FONT size = 3><B>Crew Major Victory</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff has saved the disk and stopped the [syndicate_name()] Operatives!</B>")
|
||||
|
||||
SSticker.news_report = OPERATIVES_KILLED
|
||||
|
||||
else if (!disk_rescued && are_operatives_dead())
|
||||
SSblackbox.set_details("round_end_result","halfwin - evacuation - disk not secured")
|
||||
SSticker.mode_result = "halfwin - evacuation - disk not secured"
|
||||
to_chat(world, "<FONT size = 3><B>Neutral Victory!</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!</B>")
|
||||
|
||||
SSticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
else if (!disk_rescued && crew_evacuated)
|
||||
SSblackbox.set_details("round_end_result","halfwin - detonation averted")
|
||||
SSticker.mode_result = "halfwin - detonation averted"
|
||||
to_chat(world, "<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives survived the assault but did not achieve the destruction of [station_name()].</B> Next time, don't lose the disk!")
|
||||
|
||||
SSticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
else if (!disk_rescued && !crew_evacuated)
|
||||
SSblackbox.set_details("round_end_result","halfwin - interrupted")
|
||||
SSticker.mode_result = "halfwin - interrupted"
|
||||
to_chat(world, "<FONT size = 3><B>Neutral Victory</B></FONT>")
|
||||
to_chat(world, "<B>Round was mysteriously interrupted!</B>")
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@
|
||||
var/datum/game_mode/nuclear/NM = SSticker.mode
|
||||
NM.nukes_left --
|
||||
if(!SSticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is
|
||||
SSticker.Reboot("Station destroyed by Nuclear Device.", "end_error", "nuke - unhandled ending")
|
||||
SSticker.Reboot("Station destroyed by Nuclear Device.", "nuke - unhandled ending")
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -345,13 +345,13 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
/datum/game_mode/revolution/declare_completion()
|
||||
if(finished == 1)
|
||||
SSblackbox.set_details("round_end_result","win - heads killed")
|
||||
SSticker.mode_result = "win - heads killed"
|
||||
to_chat(world, "<span class='redtext'>The heads of staff were killed or exiled! The revolutionaries win!</span>")
|
||||
|
||||
SSticker.news_report = REVS_WIN
|
||||
|
||||
else if(finished == 2)
|
||||
SSblackbox.set_details("round_end_result","loss - rev heads killed")
|
||||
SSticker.mode_result = "loss - rev heads killed"
|
||||
to_chat(world, "<span class='redtext'>The heads of staff managed to stop the revolution!</span>")
|
||||
|
||||
SSticker.news_report = REVS_LOSE
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#define PINPOINTER_MINIMUM_RANGE 15
|
||||
#define PINPOINTER_EXTRA_RANDOM_RANGE 10
|
||||
#define PINPOINTER_PING_TIME 40
|
||||
#define PROB_ACTUAL_TRAITOR 20
|
||||
#define TRAITOR_AGENT_ROLE "Syndicate External Affairs Agent"
|
||||
|
||||
/datum/game_mode/traitor/internal_affairs
|
||||
name = "Internal Affairs"
|
||||
@@ -171,7 +173,10 @@
|
||||
if(!objective.check_completion())
|
||||
traitored = FALSE
|
||||
return
|
||||
to_chat(owner.current,"<span class='userdanger'> All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.</span>")
|
||||
if(owner.special_role == TRAITOR_AGENT_ROLE)
|
||||
to_chat(owner.current,"<span class='userdanger'> All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. </span>")
|
||||
else
|
||||
to_chat(owner.current,"<span class='userdanger'> All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.</span>")
|
||||
replace_escape_objective(owner)
|
||||
|
||||
|
||||
@@ -194,7 +199,10 @@
|
||||
if(objective.stolen)
|
||||
var/fail_msg = "<span class='userdanger'>Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! </span>"
|
||||
if(traitored)
|
||||
fail_msg += "<span class='userdanger'> The truth could still slip out!</font><B><font size=5 color=red> Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated.</span>"
|
||||
if(owner.special_role == TRAITOR_AGENT_ROLE)
|
||||
fail_msg += "<span class='userdanger'> You no longer have permission to die. </span>"
|
||||
else
|
||||
fail_msg += "<span class='userdanger'> The truth could still slip out!</font><B><font size=5 color=red> Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated.</span>"
|
||||
reinstate_escape_objective(owner)
|
||||
traitored = FALSE
|
||||
to_chat(owner.current, fail_msg)
|
||||
@@ -238,6 +246,10 @@
|
||||
state.add_steal_targets_timer()
|
||||
if(!issilicon(traitor.current))
|
||||
give_pinpointer(traitor)
|
||||
//Optional traitor objective
|
||||
if(prob(PROB_ACTUAL_TRAITOR))
|
||||
traitor.special_role = TRAITOR_AGENT_ROLE
|
||||
forge_single_objective(traitor)
|
||||
|
||||
else
|
||||
..() // Give them standard objectives.
|
||||
@@ -289,11 +301,18 @@
|
||||
|
||||
/datum/game_mode/traitor/internal_affairs/greet_traitor(datum/mind/traitor)
|
||||
var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence")
|
||||
to_chat(traitor.current, "<span class='userdanger'>You are the [traitor_name].</span>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.</span>")
|
||||
to_chat(traitor.current, "<B><font size=5 color=red>While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.</font></B>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.</span>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.</span>")
|
||||
if(traitor.special_role == TRAITOR_AGENT_ROLE)
|
||||
to_chat(traitor.current, "<span class='userdanger'>You are the [TRAITOR_AGENT_ROLE].</span>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.</span>")
|
||||
to_chat(traitor.current, "<B><font size=5 color=red>Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.</font></B>")
|
||||
to_chat(traitor.current, "<span class='userdanger'> You have been provided with a standard uplink to accomplish your task. </span>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.</span>")
|
||||
else
|
||||
to_chat(traitor.current, "<span class='userdanger'>You are the [traitor_name].</span>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.</span>")
|
||||
to_chat(traitor.current, "<B><font size=5 color=red>While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.</font></B>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.</span>")
|
||||
to_chat(traitor.current, "<span class='userdanger'>Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.</span>")
|
||||
traitor.announce_objectives()
|
||||
|
||||
|
||||
@@ -301,6 +320,8 @@
|
||||
/datum/game_mode/traitor/internal_affairs/give_codewords(mob/living/traitor_mob)
|
||||
return
|
||||
|
||||
#undef PROB_ACTUAL_TRAITOR
|
||||
#undef PINPOINTER_EXTRA_RANDOM_RANGE
|
||||
#undef PINPOINTER_MINIMUM_RANGE
|
||||
#undef PINPOINTER_PING_TIME
|
||||
|
||||
|
||||
@@ -85,40 +85,65 @@
|
||||
character.make_Traitor()
|
||||
|
||||
|
||||
/datum/game_mode/proc/forge_single_objective(datum/mind/traitor) //Returns how many objectives are added
|
||||
.=1
|
||||
if(issilicon(traitor.current))
|
||||
var/special_pick = rand(1,4)
|
||||
switch(special_pick)
|
||||
if(1)
|
||||
var/datum/objective/block/block_objective = new
|
||||
block_objective.owner = traitor
|
||||
traitor.objectives += block_objective
|
||||
if(2)
|
||||
var/datum/objective/purge/purge_objective = new
|
||||
purge_objective.owner = traitor
|
||||
traitor.objectives += purge_objective
|
||||
if(3)
|
||||
var/datum/objective/robot_army/robot_objective = new
|
||||
robot_objective.owner = traitor
|
||||
traitor.objectives += robot_objective
|
||||
if(4) //Protect and strand a target
|
||||
var/datum/objective/protect/yandere_one = new
|
||||
yandere_one.owner = traitor
|
||||
traitor.objectives += yandere_one
|
||||
yandere_one.find_target()
|
||||
var/datum/objective/maroon/yandere_two = new
|
||||
yandere_two.owner = traitor
|
||||
yandere_two.target = yandere_one.target
|
||||
yandere_two.update_explanation_text() // normally called in find_target()
|
||||
traitor.objectives += yandere_two
|
||||
.=2
|
||||
else
|
||||
if(prob(50))
|
||||
var/list/active_ais = active_ais()
|
||||
if(active_ais.len && prob(100/GLOB.joined_player_list.len))
|
||||
var/datum/objective/destroy/destroy_objective = new
|
||||
destroy_objective.owner = traitor
|
||||
destroy_objective.find_target()
|
||||
traitor.objectives += destroy_objective
|
||||
else if(prob(30))
|
||||
var/datum/objective/maroon/maroon_objective = new
|
||||
maroon_objective.owner = traitor
|
||||
maroon_objective.find_target()
|
||||
traitor.objectives += maroon_objective
|
||||
else
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = traitor
|
||||
kill_objective.find_target()
|
||||
traitor.objectives += kill_objective
|
||||
else
|
||||
var/datum/objective/steal/steal_objective = new
|
||||
steal_objective.owner = traitor
|
||||
steal_objective.find_target()
|
||||
traitor.objectives += steal_objective
|
||||
|
||||
|
||||
/datum/game_mode/proc/forge_traitor_objectives(datum/mind/traitor)
|
||||
if(issilicon(traitor.current))
|
||||
var/objective_count = 0
|
||||
|
||||
if(prob(30))
|
||||
var/special_pick = rand(1,4)
|
||||
switch(special_pick)
|
||||
if(1)
|
||||
var/datum/objective/block/block_objective = new
|
||||
block_objective.owner = traitor
|
||||
traitor.objectives += block_objective
|
||||
objective_count++
|
||||
if(2)
|
||||
var/datum/objective/purge/purge_objective = new
|
||||
purge_objective.owner = traitor
|
||||
traitor.objectives += purge_objective
|
||||
objective_count++
|
||||
if(3)
|
||||
var/datum/objective/robot_army/robot_objective = new
|
||||
robot_objective.owner = traitor
|
||||
traitor.objectives += robot_objective
|
||||
objective_count++
|
||||
if(4) //Protect and strand a target
|
||||
var/datum/objective/protect/yandere_one = new
|
||||
yandere_one.owner = traitor
|
||||
traitor.objectives += yandere_one
|
||||
yandere_one.find_target()
|
||||
objective_count++
|
||||
var/datum/objective/maroon/yandere_two = new
|
||||
yandere_two.owner = traitor
|
||||
yandere_two.target = yandere_one.target
|
||||
yandere_two.update_explanation_text() // normally called in find_target()
|
||||
traitor.objectives += yandere_two
|
||||
objective_count++
|
||||
objective_count+=forge_single_objective(traitor)
|
||||
|
||||
for(var/i = objective_count, i < config.traitor_objectives_amount, i++)
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
@@ -142,29 +167,8 @@
|
||||
assign_exchange_role(exchange_red)
|
||||
assign_exchange_role(exchange_blue)
|
||||
objective_count += 1 //Exchange counts towards number of objectives
|
||||
var/list/active_ais = active_ais()
|
||||
for(var/i = objective_count, i < config.traitor_objectives_amount, i++)
|
||||
if(prob(50))
|
||||
if(active_ais.len && prob(100/GLOB.joined_player_list.len))
|
||||
var/datum/objective/destroy/destroy_objective = new
|
||||
destroy_objective.owner = traitor
|
||||
destroy_objective.find_target()
|
||||
traitor.objectives += destroy_objective
|
||||
else if(prob(30))
|
||||
var/datum/objective/maroon/maroon_objective = new
|
||||
maroon_objective.owner = traitor
|
||||
maroon_objective.find_target()
|
||||
traitor.objectives += maroon_objective
|
||||
else
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = traitor
|
||||
kill_objective.find_target()
|
||||
traitor.objectives += kill_objective
|
||||
else
|
||||
var/datum/objective/steal/steal_objective = new
|
||||
steal_objective.owner = traitor
|
||||
steal_objective.find_target()
|
||||
traitor.objectives += steal_objective
|
||||
forge_single_objective(traitor)
|
||||
|
||||
if(is_hijacker && objective_count <= config.traitor_objectives_amount) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount
|
||||
if (!(locate(/datum/objective/hijack) in traitor.objectives))
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
/datum/game_mode/wizard/raginmages/declare_completion()
|
||||
if(finished)
|
||||
SSblackbox.set_details("round_end_result","loss - wizard killed")
|
||||
SSticker.mode_result = "loss - wizard killed"
|
||||
to_chat(world, "<FONT size=3><B>The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!</B></FONT>")
|
||||
..(1)
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
/datum/game_mode/wizard/declare_completion()
|
||||
if(finished)
|
||||
SSblackbox.set_details("round_end_result","loss - wizard killed")
|
||||
SSticker.mode_result = "loss - wizard killed"
|
||||
to_chat(world, "<span class='userdanger'>The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!</span>")
|
||||
|
||||
SSticker.news_report = WIZARD_KILLED
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user