Merge branch 'master' into bunnypack
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
CREATE TABLE `mentor_memo` (
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`memotext` text NOT NULL,
|
||||
`timestamp` datetime NOT NULL,
|
||||
`last_editor` varchar(32) DEFAULT NULL,
|
||||
`edits` text,
|
||||
PRIMARY KEY (`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE TABLE `mentor` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
@@ -77,7 +77,7 @@
|
||||
/area/ruin/powered/greed)
|
||||
"p" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/ore/gold,
|
||||
/obj/item/stack/ore/gold,
|
||||
/turf/open/floor/engine/cult,
|
||||
/area/ruin/powered/greed)
|
||||
"q" = (
|
||||
|
||||
@@ -690,9 +690,9 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/derelict/solar_control)
|
||||
"cn" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"co" = (
|
||||
@@ -736,7 +736,7 @@
|
||||
},
|
||||
/area/ruin/space/derelict/gravity_generator)
|
||||
"cv" = (
|
||||
/obj/item/ore/slag,
|
||||
/obj/item/stack/ore/slag,
|
||||
/turf/open/floor/plasteel/airless{
|
||||
icon_state = "damaged4"
|
||||
},
|
||||
@@ -807,7 +807,7 @@
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space/derelict/gravity_generator)
|
||||
"cI" = (
|
||||
/obj/item/ore/slag,
|
||||
/obj/item/stack/ore/slag,
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"cJ" = (
|
||||
@@ -1897,7 +1897,7 @@
|
||||
/turf/open/floor/plasteel/airless,
|
||||
/area/ruin/space/derelict/bridge/access)
|
||||
"gh" = (
|
||||
/obj/item/ore/slag,
|
||||
/obj/item/stack/ore/slag,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space/derelict/singularity_engine)
|
||||
"gi" = (
|
||||
|
||||
@@ -208,8 +208,7 @@
|
||||
/area/ruin/space/has_grav/derelictoutpost/powerstorage)
|
||||
"aN" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -679,7 +678,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_plating = "wall_thermite";
|
||||
icon_state = "wall_thermite";
|
||||
name = "melted wall"
|
||||
},
|
||||
@@ -1054,8 +1052,7 @@
|
||||
/area/ruin/space/has_grav/derelictoutpost/cargobay)
|
||||
"cH" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
@@ -1712,7 +1709,6 @@
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_plating = "wall_thermite";
|
||||
icon_state = "wall_thermite";
|
||||
name = "melted wall"
|
||||
},
|
||||
@@ -1730,7 +1726,6 @@
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
icon_plating = "wall_thermite";
|
||||
icon_state = "wall_thermite";
|
||||
name = "melted wall"
|
||||
},
|
||||
@@ -1812,8 +1807,7 @@
|
||||
/area/ruin/space/has_grav/derelictoutpost/cargostorage)
|
||||
"dY" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/stack/sheet/plasteel/twenty,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
@@ -1917,8 +1911,7 @@
|
||||
/area/ruin/space/has_grav/derelictoutpost/cargostorage)
|
||||
"ek" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/stack/sheet/cardboard/fifty,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
@@ -1964,8 +1957,7 @@
|
||||
/area/ruin/space/has_grav/derelictoutpost/cargostorage)
|
||||
"eq" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/crowbar,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -2049,8 +2041,7 @@
|
||||
/area/ruin/space/has_grav/derelictoutpost/cargostorage)
|
||||
"eB" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/paicard,
|
||||
/obj/machinery/light,
|
||||
|
||||
@@ -2877,8 +2877,7 @@
|
||||
/area/shuttle/caravan/freighter1)
|
||||
"jl" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/stack/sheet/metal/fifty,
|
||||
/turf/open/floor/plasteel/airless/dark,
|
||||
|
||||
@@ -27,19 +27,18 @@
|
||||
/area/ruin/unpowered)
|
||||
"i" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"j" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"k" = (
|
||||
@@ -84,7 +83,7 @@
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/unpowered)
|
||||
"p" = (
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"q" = (
|
||||
@@ -148,10 +147,10 @@
|
||||
/area/ruin/unpowered)
|
||||
"y" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/turf/open/floor/mineral/bananium/airless,
|
||||
/area/ruin/unpowered)
|
||||
"z" = (
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
"ad" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -38,7 +37,6 @@
|
||||
/area/ruin/unpowered)
|
||||
"ah" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg1";
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -55,7 +53,6 @@
|
||||
"ak" = (
|
||||
/obj/item/stack/rods,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -82,20 +79,17 @@
|
||||
"ao" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"ap" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"aq" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -106,7 +100,6 @@
|
||||
"as" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -117,7 +110,6 @@
|
||||
"au" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -136,7 +128,6 @@
|
||||
"ay" = (
|
||||
/obj/item/stack/tile/plasteel,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -159,7 +150,6 @@
|
||||
"aB" = (
|
||||
/obj/item/stack/tile/plasteel,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg1";
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -176,7 +166,6 @@
|
||||
},
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -240,7 +229,6 @@
|
||||
status = 2
|
||||
},
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -263,7 +251,6 @@
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/shard,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -271,7 +258,6 @@
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/trash/plate,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -312,14 +298,12 @@
|
||||
/area/ruin/unpowered)
|
||||
"be" = (
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg2";
|
||||
icon_state = "platingdmg2"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"bg" = (
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg1";
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -336,7 +320,6 @@
|
||||
/obj/item/stack/sheet/metal,
|
||||
/obj/item/clothing/head/chefhat,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -348,21 +331,18 @@
|
||||
"bk" = (
|
||||
/obj/structure/table_frame/wood,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"bl" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg1";
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"bm" = (
|
||||
/obj/item/chair,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -374,14 +354,12 @@
|
||||
/obj/item/stack/sheet/metal,
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg1";
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
"bq" = (
|
||||
/obj/item/stack/tile/plasteel,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg3";
|
||||
icon_state = "platingdmg3"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
@@ -389,7 +367,6 @@
|
||||
/obj/structure/girder,
|
||||
/obj/item/stack/sheet/metal,
|
||||
/turf/open/floor/plating/airless{
|
||||
icon_plating = "platingdmg1";
|
||||
icon_state = "platingdmg1"
|
||||
},
|
||||
/area/ruin/unpowered)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -43,9 +43,9 @@
|
||||
/obj/item/stack/sheet/mineral/gold{
|
||||
amount = 15
|
||||
},
|
||||
/obj/item/ore/bluespace_crystal,
|
||||
/obj/item/ore/bluespace_crystal,
|
||||
/obj/item/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/ancientstation/hivebot)
|
||||
"ak" = (
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
/area/ruin/space/has_grav/onehalf/drone_bay)
|
||||
"aF" = (
|
||||
/obj/structure/disposalpipe/trunk,
|
||||
/obj/item/ore/diamond,
|
||||
/obj/item/stack/ore/diamond,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/space/has_grav/onehalf/drone_bay)
|
||||
"aG" = (
|
||||
@@ -1100,7 +1100,7 @@
|
||||
/area/ruin/space/has_grav/onehalf/bridge)
|
||||
"cZ" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/coin/plasma,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/onehalf/bridge)
|
||||
|
||||
@@ -1724,8 +1724,7 @@
|
||||
/area/awaymission/caves/listeningpost)
|
||||
"fn" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/paper/fluff/awaymissions/caves/shipment_receipt,
|
||||
/obj/item/organ/eyes/robotic/thermals,
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/syndicate)
|
||||
"aS" = (
|
||||
/obj/item/ore/iron{
|
||||
/obj/item/stack/ore/iron{
|
||||
pixel_x = 7;
|
||||
pixel_y = -6
|
||||
},
|
||||
@@ -1656,8 +1656,8 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/syndicate)
|
||||
"dv" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/ore/iron{
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/item/stack/ore/iron{
|
||||
pixel_x = -7;
|
||||
pixel_y = -4
|
||||
},
|
||||
@@ -1708,7 +1708,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/syndicate)
|
||||
"dz" = (
|
||||
/obj/item/ore/iron{
|
||||
/obj/item/stack/ore/iron{
|
||||
pixel_x = -3;
|
||||
pixel_y = 9
|
||||
},
|
||||
@@ -1854,7 +1854,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/main)
|
||||
"dN" = (
|
||||
/obj/item/ore/iron{
|
||||
/obj/item/stack/ore/iron{
|
||||
pixel_x = -7;
|
||||
pixel_y = -4
|
||||
},
|
||||
@@ -4927,9 +4927,7 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/firedoor{
|
||||
density = 1;
|
||||
icon_state = "door_closed";
|
||||
/obj/machinery/door/firedoor/closed{
|
||||
opacity = 0
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -5026,9 +5024,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/door/firedoor{
|
||||
density = 1;
|
||||
icon_state = "door_closed";
|
||||
/obj/machinery/door/firedoor/closed{
|
||||
opacity = 0
|
||||
},
|
||||
/turf/open/floor/plasteel/floorgrime{
|
||||
@@ -5186,9 +5182,7 @@
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"kA" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/door/firedoor{
|
||||
density = 1;
|
||||
icon_state = "door_closed";
|
||||
/obj/machinery/door/firedoor/closed{
|
||||
opacity = 0
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -5250,9 +5244,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"kH" = (
|
||||
/obj/machinery/door/firedoor{
|
||||
density = 1;
|
||||
icon_state = "door_closed";
|
||||
/obj/machinery/door/firedoor/closed{
|
||||
opacity = 0
|
||||
},
|
||||
/turf/open/floor/plasteel{
|
||||
@@ -5339,9 +5331,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"kR" = (
|
||||
/obj/machinery/door/firedoor{
|
||||
density = 1;
|
||||
icon_state = "door_closed";
|
||||
/obj/machinery/door/firedoor/closed{
|
||||
opacity = 0
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
@@ -5350,9 +5340,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/arrivals)
|
||||
"kS" = (
|
||||
/obj/machinery/door/firedoor{
|
||||
density = 1;
|
||||
icon_state = "door_closed";
|
||||
/obj/machinery/door/firedoor/closed{
|
||||
opacity = 0
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
|
||||
@@ -2625,8 +2625,7 @@
|
||||
/area/awaymission/research/interior/maint)
|
||||
"hY" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
|
||||
+77681
-67930
File diff suppressed because it is too large
Load Diff
@@ -1735,11 +1735,11 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
"gT" = (
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/item/stack/ore/bananium,
|
||||
/obj/structure/closet/crate,
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/spacebattle/cruiser)
|
||||
|
||||
@@ -3032,7 +3032,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/iv_drip,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/turf/open/floor/plasteel/whitered/side{
|
||||
dir = 5
|
||||
},
|
||||
@@ -7187,8 +7187,7 @@
|
||||
/area/maintenance/port/fore)
|
||||
"arM" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -13846,7 +13845,9 @@
|
||||
/area/chapel/office)
|
||||
"aIB" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/bodycontainer/crematorium,
|
||||
/obj/structure/bodycontainer/crematorium{
|
||||
id = "crematoriumChapel"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/chapel/office)
|
||||
"aIC" = (
|
||||
@@ -14271,6 +14272,7 @@
|
||||
"aJG" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/button/crematorium{
|
||||
id = "crematoriumChapel";
|
||||
pixel_x = 25
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
@@ -34231,7 +34233,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/miningdock)
|
||||
"bHz" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
@@ -35471,8 +35473,8 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/miningdock)
|
||||
"bKk" = (
|
||||
/obj/item/ore/silver,
|
||||
/obj/item/ore/silver,
|
||||
/obj/item/stack/ore/silver,
|
||||
/obj/item/stack/ore/silver,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
@@ -51884,8 +51886,8 @@
|
||||
/area/quartermaster/storage)
|
||||
"cCp" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood/AMinus,
|
||||
/obj/item/reagent_containers/blood/BMinus{
|
||||
pixel_x = -4;
|
||||
|
||||
@@ -5807,8 +5807,7 @@
|
||||
"amD" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/flashlight,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -8649,8 +8648,7 @@
|
||||
/area/maintenance/port/fore)
|
||||
"asU" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -9954,8 +9952,7 @@
|
||||
/area/maintenance/port/fore)
|
||||
"avq" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/crowbar/red,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -10795,8 +10792,7 @@
|
||||
"axl" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -11852,8 +11848,7 @@
|
||||
/area/quartermaster/storage)
|
||||
"azA" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/effect/turf_decal/bot,
|
||||
@@ -12521,7 +12516,6 @@
|
||||
/area/engine/atmospherics_engine)
|
||||
"aBd" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/sign/directions/engineering{
|
||||
@@ -12533,7 +12527,6 @@
|
||||
/area/engine/atmospherics_engine)
|
||||
"aBe" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
|
||||
icon_state = "intact";
|
||||
dir = 10
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -12885,8 +12878,7 @@
|
||||
/area/quartermaster/warehouse)
|
||||
"aBN" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -16688,8 +16680,7 @@
|
||||
"aJv" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -22164,8 +22155,7 @@
|
||||
/area/security/execution/education)
|
||||
"aUJ" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/visible{
|
||||
dir = 4
|
||||
@@ -29173,8 +29163,7 @@
|
||||
"bjo" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/flashlight,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -56882,8 +56871,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"clv" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/device/flashlight,
|
||||
@@ -61354,8 +61342,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"cuH" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/clothing/shoes/jackboots,
|
||||
/obj/item/device/radio,
|
||||
@@ -63386,8 +63373,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"cza" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -68671,8 +68657,7 @@
|
||||
"cJM" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/flashlight,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -70444,8 +70429,7 @@
|
||||
/area/science/xenobiology)
|
||||
"cNj" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/flashlight,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -90134,8 +90118,7 @@
|
||||
"dCR" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/flashlight,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -94162,8 +94145,7 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -94534,8 +94516,7 @@
|
||||
"dLT" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/crowbar/red,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
@@ -98791,8 +98772,7 @@
|
||||
"dUX" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/device/flashlight,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -102093,7 +102073,6 @@
|
||||
/area/shuttle/escape)
|
||||
"ecg" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
|
||||
icon_state = "inje_map";
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
|
||||
@@ -2034,8 +2034,7 @@
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/visible,
|
||||
/obj/item/wrench,
|
||||
@@ -9684,15 +9683,13 @@
|
||||
/area/maintenance/starboard/fore)
|
||||
"auC" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/space/nearstation)
|
||||
"auD" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/structure/sign/warning/vacuum/external{
|
||||
pixel_y = 32
|
||||
@@ -10630,8 +10627,7 @@
|
||||
/area/security/brig)
|
||||
"awA" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/storage/box/donkpockets,
|
||||
/turf/open/floor/plating,
|
||||
@@ -11785,7 +11781,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/space/nearstation)
|
||||
"azj" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
@@ -13140,8 +13136,8 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/engineering)
|
||||
"aBS" = (
|
||||
/obj/item/ore/silver,
|
||||
/obj/item/ore/silver,
|
||||
/obj/item/stack/ore/silver,
|
||||
/obj/item/stack/ore/silver,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
},
|
||||
@@ -13215,7 +13211,7 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/item/ore/glass,
|
||||
/obj/item/stack/ore/glass,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/quartermaster/warehouse)
|
||||
"aCc" = (
|
||||
@@ -17320,8 +17316,7 @@
|
||||
"aKw" = (
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/wirecutters,
|
||||
/obj/item/weldingtool,
|
||||
@@ -17462,8 +17457,8 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/ore/glass,
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/glass,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
@@ -17933,10 +17928,8 @@
|
||||
},
|
||||
/area/hydroponics/garden)
|
||||
"aLX" = (
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
density = 1;
|
||||
/obj/machinery/door/firedoor/border_only/closed{
|
||||
dir = 8;
|
||||
icon_state = "door_closed";
|
||||
name = "Animal Pen A";
|
||||
opacity = 1
|
||||
},
|
||||
@@ -19846,8 +19839,7 @@
|
||||
/area/quartermaster/storage)
|
||||
"aQk" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
@@ -19942,8 +19934,7 @@
|
||||
/area/quartermaster/qm)
|
||||
"aQu" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
@@ -20327,10 +20318,8 @@
|
||||
},
|
||||
/area/hydroponics/garden)
|
||||
"aRg" = (
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
density = 1;
|
||||
/obj/machinery/door/firedoor/border_only/closed{
|
||||
dir = 8;
|
||||
icon_state = "door_closed";
|
||||
name = "Animal Pen B";
|
||||
opacity = 1
|
||||
},
|
||||
@@ -21050,8 +21039,7 @@
|
||||
/area/maintenance/port)
|
||||
"aSP" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
@@ -29600,8 +29588,7 @@
|
||||
/area/quartermaster/office)
|
||||
"bks" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/open/floor/plasteel/brown{
|
||||
@@ -41146,8 +41133,7 @@
|
||||
/area/gateway)
|
||||
"bIp" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/stack/sheet/rglass{
|
||||
amount = 50
|
||||
@@ -42372,8 +42358,7 @@
|
||||
/area/maintenance/port)
|
||||
"bLc" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 3;
|
||||
@@ -43143,8 +43128,7 @@
|
||||
/area/maintenance/port)
|
||||
"bMG" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/rack_parts,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -48851,8 +48835,7 @@
|
||||
/area/maintenance/port/aft)
|
||||
"bYP" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/storage/box/donkpockets,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -53191,8 +53174,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"chD" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/cane,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -55691,8 +55673,7 @@
|
||||
/area/aisat)
|
||||
"cmY" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -56418,11 +56399,11 @@
|
||||
},
|
||||
/obj/item/reagent_containers/blood/random,
|
||||
/obj/item/reagent_containers/blood/random,
|
||||
/obj/item/reagent_containers/blood/empty{
|
||||
/obj/item/reagent_containers/blood{
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/item/reagent_containers/blood/empty{
|
||||
/obj/item/reagent_containers/blood{
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
@@ -66149,8 +66130,8 @@
|
||||
pixel_x = 8;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/structure/sign/warning/biohazard{
|
||||
@@ -66543,8 +66524,8 @@
|
||||
/area/medical/virology)
|
||||
"cIu" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood/empty{
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood{
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
@@ -69004,7 +68985,7 @@
|
||||
/area/medical/virology)
|
||||
"cNt" = (
|
||||
/obj/machinery/button/crematorium{
|
||||
id = "cremawheat";
|
||||
id = "crematoriumChapel";
|
||||
pixel_x = -26;
|
||||
req_access_txt = "27"
|
||||
},
|
||||
@@ -75666,7 +75647,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/ore/slag,
|
||||
/obj/item/stack/ore/slag,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/aft)
|
||||
"diS" = (
|
||||
@@ -77189,6 +77170,7 @@
|
||||
/area/science/circuit)
|
||||
"eFN" = (
|
||||
/obj/structure/bodycontainer/crematorium{
|
||||
id = "crematoriumChapel";
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
|
||||
@@ -1216,8 +1216,8 @@
|
||||
/area/mine/maintenance)
|
||||
"dB" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood/empty{
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood{
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
@@ -1317,8 +1317,7 @@
|
||||
/area/mine/production)
|
||||
"dL" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -1772,15 +1771,13 @@
|
||||
pixel_y = -22
|
||||
},
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/turf/open/floor/plasteel/purple/side,
|
||||
/area/mine/production)
|
||||
"eT" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/brown,
|
||||
@@ -1791,8 +1788,7 @@
|
||||
/area/mine/production)
|
||||
"eV" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/turf/open/floor/plasteel/brown{
|
||||
dir = 6
|
||||
|
||||
@@ -462,7 +462,7 @@
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/asteroid/nearstation)
|
||||
"aaW" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/area/asteroid/nearstation)
|
||||
"aaX" = (
|
||||
@@ -927,7 +927,7 @@
|
||||
/turf/open/space,
|
||||
/area/asteroid/nearstation)
|
||||
"abS" = (
|
||||
/obj/item/ore/glass,
|
||||
/obj/item/stack/ore/glass,
|
||||
/turf/open/floor/plating/astplate,
|
||||
/area/asteroid/nearstation)
|
||||
"abT" = (
|
||||
@@ -1717,8 +1717,7 @@
|
||||
/area/shuttle/supply)
|
||||
"adv" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/open/floor/plating/astplate,
|
||||
@@ -2887,7 +2886,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/asteroid/nearstation)
|
||||
"afM" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/obj/structure/barricade/wooden,
|
||||
/turf/open/floor/plating/astplate,
|
||||
/area/asteroid/nearstation)
|
||||
@@ -3289,8 +3288,8 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"agE" = (
|
||||
/obj/item/ore/silver,
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/silver,
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/open/floor/plating/astplate,
|
||||
/area/asteroid/nearstation)
|
||||
"agF" = (
|
||||
@@ -5052,7 +5051,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/supply)
|
||||
"ajQ" = (
|
||||
/obj/item/ore/iron,
|
||||
/obj/item/stack/ore/iron,
|
||||
/turf/open/floor/plating/astplate,
|
||||
/area/asteroid/nearstation)
|
||||
"ajR" = (
|
||||
@@ -11620,8 +11619,7 @@
|
||||
/area/maintenance/port/fore)
|
||||
"avP" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/clothing/shoes/jackboots,
|
||||
/obj/item/device/radio,
|
||||
@@ -33431,8 +33429,7 @@
|
||||
/area/maintenance/starboard)
|
||||
"sCQ" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
|
||||
@@ -7207,8 +7207,7 @@
|
||||
/area/crew_quarters/fitness/recreation)
|
||||
"ato" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -7526,7 +7525,7 @@
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/tank/internals/plasma/full,
|
||||
/obj/item/disk/nuclear/fake,
|
||||
/obj/item/ore/diamond,
|
||||
/obj/item/stack/ore/diamond,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 4
|
||||
@@ -16450,8 +16449,7 @@
|
||||
/area/quartermaster/warehouse)
|
||||
"aQf" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
@@ -17262,8 +17260,7 @@
|
||||
/area/maintenance/department/crew_quarters/bar)
|
||||
"aRY" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
@@ -19193,8 +19190,7 @@
|
||||
/area/quartermaster/storage)
|
||||
"aWz" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2;
|
||||
@@ -36440,8 +36436,7 @@
|
||||
/area/science/mineral_storeroom)
|
||||
"bLj" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/storage/bag/ore,
|
||||
@@ -40161,7 +40156,6 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -40169,14 +40163,12 @@
|
||||
"bUx" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/green/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/atmos)
|
||||
"bUy" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/yellow/side{
|
||||
@@ -40187,7 +40179,6 @@
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
@@ -40195,7 +40186,6 @@
|
||||
"bUA" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/space,
|
||||
@@ -40646,8 +40636,7 @@
|
||||
"bVB" = (
|
||||
/obj/item/book/manual/barman_recipes,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/cigbutt,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -42222,7 +42211,6 @@
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"bZi" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/meter,
|
||||
@@ -42230,7 +42218,6 @@
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"bZj" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 9
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -42471,7 +42458,6 @@
|
||||
/area/maintenance/disposal/incinerator)
|
||||
"bZR" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/purple/visible{
|
||||
icon_state = "intact";
|
||||
dir = 5
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
|
||||
@@ -1079,8 +1079,7 @@
|
||||
/area/holodeck/rec_center/kobayashi)
|
||||
"dv" = (
|
||||
/obj/structure/closet{
|
||||
density = 0;
|
||||
opened = 1
|
||||
density = 0
|
||||
},
|
||||
/obj/item/clothing/suit/judgerobe,
|
||||
/obj/item/clothing/head/powdered_wig,
|
||||
@@ -8981,8 +8980,7 @@
|
||||
/area/wizard_station)
|
||||
"zp" = (
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
opened = 1
|
||||
icon_state = "crateopen"
|
||||
},
|
||||
/obj/item/clothing/suit/wizrobe/red,
|
||||
/obj/item/clothing/head/wizard/red,
|
||||
|
||||
@@ -790,7 +790,6 @@
|
||||
/area/shuttle/escape)
|
||||
"cq" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible{
|
||||
icon_state = "intact";
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -801,7 +800,6 @@
|
||||
/area/shuttle/escape)
|
||||
"cs" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/general/visible{
|
||||
icon_state = "intact";
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -879,8 +877,8 @@
|
||||
/area/shuttle/escape)
|
||||
"cE" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood/empty,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood/AMinus,
|
||||
/obj/item/reagent_containers/blood/BMinus{
|
||||
pixel_x = -4;
|
||||
|
||||
@@ -0,0 +1,947 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"aa" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"ab" = (
|
||||
/turf/closed/wall/clockwork,
|
||||
/area/shuttle/escape)
|
||||
"ac" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"ad" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"ae" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/turf/closed/wall/mineral/cult,
|
||||
/area/shuttle/escape)
|
||||
"af" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor,
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"ag" = (
|
||||
/obj/structure/shuttle/engine/propulsion/right{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
"ah" = (
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal,
|
||||
/area/shuttle/escape)
|
||||
"ai" = (
|
||||
/obj/machinery/computer/emergency_shuttle,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aj" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/card/emag/fake,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"ak" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"al" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"am" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/effect/decal/cleanable/crayon,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"an" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"ao" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/tome,
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"ap" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/gloves/clockwork,
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor,
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"aq" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/suit/armor/clockwork,
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor,
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"ar" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/shoes/clockwork,
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor,
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"as" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
"at" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/machinery/portable_atmospherics/canister/water_vapor,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"au" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/holosign/wetsign,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"av" = (
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "bridge door";
|
||||
req_access_txt = "19";
|
||||
secondsElectrified = -1
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aw" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"ax" = (
|
||||
/obj/structure/shuttle/engine/propulsion/left{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/escape)
|
||||
"ay" = (
|
||||
/obj/machinery/light,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"az" = (
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/turf/closed/wall/mineral/cult,
|
||||
/area/shuttle/escape)
|
||||
"aA" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/twohanded/spear,
|
||||
/obj/item/device/assembly/flash/handheld,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"aB" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/greentext,
|
||||
/obj/item/banhammer,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"aC" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"aD" = (
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "security airlock";
|
||||
req_access_txt = "63";
|
||||
secondsElectrified = -1
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"aE" = (
|
||||
/obj/structure/sign/poster/contraband/energy_swords,
|
||||
/turf/closed/wall/clockwork,
|
||||
/area/shuttle/escape)
|
||||
"aF" = (
|
||||
/obj/structure/sign/poster/contraband/revolver,
|
||||
/turf/closed/wall/clockwork,
|
||||
/area/shuttle/escape)
|
||||
"aG" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/machinery/door/airlock/clockwork{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"aH" = (
|
||||
/obj/structure/sign/poster/contraband/kudzu,
|
||||
/turf/closed/wall/clockwork,
|
||||
/area/shuttle/escape)
|
||||
"aI" = (
|
||||
/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6,
|
||||
/turf/closed/wall/clockwork,
|
||||
/area/shuttle/escape)
|
||||
"aJ" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle/large,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aK" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aL" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/mask/vape,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aM" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/toy/plush/plushvar,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aN" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/food/snacks/salad/validsalad,
|
||||
/obj/item/toy/figure/warden,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aO" = (
|
||||
/obj/item/grown/bananapeel,
|
||||
/obj/item/storage/backpack,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aP" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aQ" = (
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aR" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/toy/spinningtoy,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aS" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/toy/katana,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aT" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/obj/item/soap/deluxe,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aU" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/toy/syndicateballoon,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aW" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/mask/vape,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aX" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/toy/plush/narplush,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"aY" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/food/snacks/salad/validsalad,
|
||||
/obj/item/toy/figure/hos,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"ba" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/gun/ballistic/revolver/reverse,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bb" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/toy/sword,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bc" = (
|
||||
/obj/machinery/light/small,
|
||||
/obj/item/soap/deluxe,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bd" = (
|
||||
/obj/machinery/door/airlock/titanium,
|
||||
/obj/docking_port/mobile/emergency{
|
||||
dheight = 0;
|
||||
dir = 8;
|
||||
dwidth = 6;
|
||||
height = 18;
|
||||
name = "Saltmine";
|
||||
port_direction = 4;
|
||||
timid = 1;
|
||||
width = 14
|
||||
},
|
||||
/obj/item/soap/deluxe,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"be" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/mob/living/simple_animal/bot/secbot/beepsky,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bf" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle/large,
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bg" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bh" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/mask/vape,
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bi" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/toy/plush/nukeplushie,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bj" = (
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bk" = (
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/food/snacks/salad/validsalad,
|
||||
/obj/item/toy/figure/secofficer,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bl" = (
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/obj/item/storage/backpack,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bm" = (
|
||||
/obj/structure/window/plasma/reinforced,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bn" = (
|
||||
/obj/structure/sign/poster/contraband/lizard,
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal,
|
||||
/area/shuttle/escape)
|
||||
"bo" = (
|
||||
/obj/structure/sign/poster/contraband/lusty_xenomorph,
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal,
|
||||
/area/shuttle/escape)
|
||||
"bp" = (
|
||||
/obj/structure/sign/poster/contraband/grey_tide,
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal,
|
||||
/area/shuttle/escape)
|
||||
"bq" = (
|
||||
/obj/structure/sign/poster/contraband/fun_police,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"br" = (
|
||||
/obj/structure/sign/poster/official/wtf_is_co2,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"bs" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle/large,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bt" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bu" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/head/collectable/wizard,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bv" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/clothing/head/kitty/genuine,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bw" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/device/assembly/flash,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bx" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/toy/plush/lizardplushie,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"by" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"bz" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/suit/wizrobe,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bA" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/head/rabbitears,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bB" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/stack/sheet/animalhide/lizard,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bC" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/bikehorn,
|
||||
/obj/item/organ/eyes/moth,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bD" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/turf/open/floor/fakepit,
|
||||
/area/shuttle/escape)
|
||||
"bE" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/storage/firstaid/fire,
|
||||
/turf/open/floor/fakepit,
|
||||
/area/shuttle/escape)
|
||||
"bF" = (
|
||||
/obj/machinery/light,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/gun/magic/wand/resurrection/inert,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bG" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/clothing/head/rabbitears,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bH" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/lizardwine,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bI" = (
|
||||
/turf/open/chasm,
|
||||
/area/shuttle/escape)
|
||||
"bJ" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/clothing/mask/frog,
|
||||
/obj/item/storage/box/hug/medical,
|
||||
/turf/open/floor/fakepit,
|
||||
/area/shuttle/escape)
|
||||
"bK" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/clothing/head/kitty/genuine,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bL" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/toy/plush/lizardplushie,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"bM" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/machinery/sleeper/syndie,
|
||||
/turf/open/floor/fakepit,
|
||||
/area/shuttle/escape)
|
||||
"bN" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grenade/flashbang,
|
||||
/obj/item/grenade/flashbang,
|
||||
/obj/item/grenade/flashbang,
|
||||
/obj/item/grenade/flashbang,
|
||||
/obj/item/grenade/flashbang,
|
||||
/turf/open/floor/fakepit,
|
||||
/area/shuttle/escape)
|
||||
"jz" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/statue/plasma/scientist{
|
||||
desc = "This statue is suitably made from tears of a certain man, you can still hear him crying to this day.";
|
||||
oreAmount = 0
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"oC" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/window,
|
||||
/obj/structure/window{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/hostile/retaliate/clown{
|
||||
health = 200;
|
||||
maxHealth = 200
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"rH" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/honker,
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"vf" = (
|
||||
/obj/effect/spawner/structure/window/shuttle,
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"wp" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor,
|
||||
/obj/structure/destructible/clockwork/trap/brass_skewer,
|
||||
/obj/item/device/radio/beacon,
|
||||
/turf/open/indestructible/clock_spawn_room,
|
||||
/area/shuttle/escape)
|
||||
"xd" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/codespeak_manual/unlimited,
|
||||
/turf/open/floor/plasteel/cult,
|
||||
/area/shuttle/escape)
|
||||
"xi" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"Ac" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/mob/living/simple_animal/bot/honkbot,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"CB" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/window{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/hostile/retaliate/clown{
|
||||
health = 200;
|
||||
maxHealth = 200
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"Ho" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/window/plasma/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/neck/petcollar,
|
||||
/obj/item/restraints/handcuffs,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"HA" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/under/schoolgirl,
|
||||
/obj/item/clothing/head/kitty,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"Iq" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/structure/bed/dogbed/ian,
|
||||
/obj/item/stack/sheet/animalhide/corgi,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/corgi,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"LR" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/mecha/combat/honker{
|
||||
max_integrity = 60
|
||||
},
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
"Uc" = (
|
||||
/obj/effect/decal/cleanable/salt,
|
||||
/obj/item/grown/bananapeel,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/clothing/suit/armor/reactive/table,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/shuttle/escape)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
aa
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
ad
|
||||
ac
|
||||
aa
|
||||
aa
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
ah
|
||||
LR
|
||||
CB
|
||||
vf
|
||||
jz
|
||||
aU
|
||||
aU
|
||||
aU
|
||||
jz
|
||||
ah
|
||||
ac
|
||||
aa
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
ai
|
||||
oC
|
||||
xi
|
||||
av
|
||||
Ac
|
||||
ak
|
||||
be
|
||||
ak
|
||||
Ac
|
||||
ak
|
||||
ac
|
||||
aa
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
aj
|
||||
rH
|
||||
ay
|
||||
ac
|
||||
aJ
|
||||
aJ
|
||||
bf
|
||||
bs
|
||||
aJ
|
||||
aJ
|
||||
ac
|
||||
aa
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
ak
|
||||
at
|
||||
ak
|
||||
ac
|
||||
aK
|
||||
aK
|
||||
bg
|
||||
bt
|
||||
aK
|
||||
aK
|
||||
ac
|
||||
aa
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
Iq
|
||||
au
|
||||
ak
|
||||
ac
|
||||
aL
|
||||
aW
|
||||
bh
|
||||
bu
|
||||
bz
|
||||
bF
|
||||
ah
|
||||
ac
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
aa
|
||||
ae
|
||||
ae
|
||||
av
|
||||
az
|
||||
ae
|
||||
aK
|
||||
aK
|
||||
bg
|
||||
bt
|
||||
aK
|
||||
aK
|
||||
aK
|
||||
ac
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
aa
|
||||
ae
|
||||
al
|
||||
al
|
||||
al
|
||||
az
|
||||
aM
|
||||
aX
|
||||
bi
|
||||
bv
|
||||
bA
|
||||
bG
|
||||
bK
|
||||
ac
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
aa
|
||||
ae
|
||||
am
|
||||
al
|
||||
aA
|
||||
aD
|
||||
aK
|
||||
aK
|
||||
bj
|
||||
bw
|
||||
aK
|
||||
aK
|
||||
aK
|
||||
ad
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
aa
|
||||
ae
|
||||
an
|
||||
al
|
||||
al
|
||||
az
|
||||
aN
|
||||
aY
|
||||
bk
|
||||
bx
|
||||
bB
|
||||
bH
|
||||
bL
|
||||
ad
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
aa
|
||||
ae
|
||||
al
|
||||
al
|
||||
al
|
||||
ae
|
||||
aO
|
||||
aO
|
||||
bl
|
||||
bt
|
||||
aK
|
||||
aK
|
||||
aK
|
||||
ad
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
aa
|
||||
ae
|
||||
ao
|
||||
xd
|
||||
aB
|
||||
ae
|
||||
aP
|
||||
ba
|
||||
bm
|
||||
Ho
|
||||
aK
|
||||
Uc
|
||||
HA
|
||||
ac
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aE
|
||||
aQ
|
||||
aQ
|
||||
bn
|
||||
ah
|
||||
bC
|
||||
ad
|
||||
ac
|
||||
ac
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
ab
|
||||
wp
|
||||
ap
|
||||
af
|
||||
af
|
||||
aF
|
||||
aR
|
||||
aR
|
||||
bo
|
||||
by
|
||||
bD
|
||||
bD
|
||||
bM
|
||||
ac
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
ab
|
||||
wp
|
||||
aq
|
||||
af
|
||||
af
|
||||
aG
|
||||
aQ
|
||||
aQ
|
||||
bp
|
||||
by
|
||||
bD
|
||||
bI
|
||||
bD
|
||||
ac
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
ab
|
||||
wp
|
||||
ar
|
||||
aw
|
||||
aC
|
||||
aH
|
||||
aS
|
||||
bb
|
||||
bq
|
||||
ac
|
||||
bE
|
||||
bJ
|
||||
bN
|
||||
ac
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aI
|
||||
aQ
|
||||
bc
|
||||
br
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
ac
|
||||
ag
|
||||
as
|
||||
ax
|
||||
ac
|
||||
ac
|
||||
aT
|
||||
bd
|
||||
ac
|
||||
ah
|
||||
ag
|
||||
as
|
||||
ax
|
||||
ac
|
||||
"}
|
||||
@@ -215,8 +215,7 @@
|
||||
},
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
name = "spare equipment crate";
|
||||
opened = 1
|
||||
name = "spare equipment crate"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/yellow,
|
||||
/area/shuttle/abandoned)
|
||||
@@ -239,8 +238,7 @@
|
||||
},
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
name = "spare equipment crate";
|
||||
opened = 1
|
||||
name = "spare equipment crate"
|
||||
},
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/pickaxe,
|
||||
@@ -289,8 +287,7 @@
|
||||
},
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
name = "spare equipment crate";
|
||||
opened = 1
|
||||
name = "spare equipment crate"
|
||||
},
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/pickaxe,
|
||||
@@ -411,8 +408,7 @@
|
||||
},
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
name = "spare equipment crate";
|
||||
opened = 1
|
||||
name = "spare equipment crate"
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/mineral/titanium/yellow,
|
||||
|
||||
@@ -215,8 +215,7 @@
|
||||
/obj/item/cigbutt,
|
||||
/obj/structure/closet/crate{
|
||||
icon_state = "crateopen";
|
||||
name = "spare equipment crate";
|
||||
opened = 1
|
||||
name = "spare equipment crate"
|
||||
},
|
||||
/obj/item/tank/internals/oxygen/red,
|
||||
/obj/item/tank/internals/air,
|
||||
@@ -1288,7 +1287,7 @@
|
||||
/area/shuttle/abandoned)
|
||||
"cl" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/blood/empty{
|
||||
/obj/item/reagent_containers/blood{
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
|
||||
@@ -11,4 +11,19 @@
|
||||
#define APPRENTICE_DESTRUCTION "destruction"
|
||||
#define APPRENTICE_BLUESPACE "bluespace"
|
||||
#define APPRENTICE_ROBELESS "robeless"
|
||||
#define APPRENTICE_HEALING "healing"
|
||||
#define APPRENTICE_HEALING "healing"
|
||||
|
||||
|
||||
//ERT Types
|
||||
#define ERT_BLUE "Blue"
|
||||
#define ERT_RED "Red"
|
||||
#define ERT_AMBER "Amber"
|
||||
#define ERT_DEATHSQUAD "Deathsquad"
|
||||
|
||||
//ERT subroles
|
||||
#define ERT_SEC "sec"
|
||||
#define ERT_MED "med"
|
||||
#define ERT_ENG "eng"
|
||||
#define ERT_LEADER "leader"
|
||||
#define DEATHSQUAD "ds"
|
||||
#define DEATHSQUAD_LEADER "ds_leader"
|
||||
@@ -67,7 +67,7 @@ Last space-z level = empty
|
||||
DECLARE_LEVEL("Main Station", CROSSLINKED, list(ZTRAIT_STATION = TRUE)),\
|
||||
DECLARE_LEVEL("Empty Area 1", CROSSLINKED, list(ZTRAIT_SPACE_RUINS = TRUE)),\
|
||||
DECLARE_LEVEL("Empty Area 2", CROSSLINKED, list(ZTRAIT_SPACE_RUINS = TRUE)),\
|
||||
DECLARE_LEVEL("Lavaland", UNAFFECTED, list(ZTRAIT_MINING = TRUE, ZTRAIT_LAVA_RUINS = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 3)),\
|
||||
DECLARE_LEVEL("Lavaland", UNAFFECTED, list(ZTRAIT_MINING = TRUE, ZTRAIT_LAVA_RUINS = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 2)),\
|
||||
DECLARE_LEVEL("Reebe", UNAFFECTED, list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5)),\
|
||||
)
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
#define OFFSET_NECK "neck"
|
||||
|
||||
//MINOR TWEAKS/MISC
|
||||
#define AGE_MIN 17 //youngest a character can be
|
||||
#define AGE_MIN 18 //youngest a character can be
|
||||
#define AGE_MAX 85 //oldest a character can be
|
||||
#define WIZARD_AGE_MIN 30 //youngest a wizard can be
|
||||
#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
#define STATUS_EFFECT_FLESHMEND /datum/status_effect/fleshmend //Very fast healing; suppressed by fire, and heals less fire damage
|
||||
|
||||
#define STATUS_EFFECT_EXERCISED /datum/status_effect/exercised //Prevents heart disease
|
||||
|
||||
/////////////
|
||||
// DEBUFFS //
|
||||
/////////////
|
||||
|
||||
@@ -1506,10 +1506,13 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
|
||||
// Makes a call in the context of a different usr
|
||||
// Use sparingly
|
||||
/world/proc/PushUsr(mob/M, datum/callback/CB)
|
||||
/world/proc/PushUsr(mob/M, datum/callback/CB, ...)
|
||||
var/temp = usr
|
||||
usr = M
|
||||
. = CB.Invoke()
|
||||
if (length(args) > 2)
|
||||
. = CB.Invoke(arglist(args.Copy(3)))
|
||||
else
|
||||
. = CB.Invoke()
|
||||
usr = temp
|
||||
|
||||
//Returns a list of all servants of Ratvar and observers.
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
//////////////
|
||||
GLOBAL_VAR_INIT(NEARSIGHTBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(EPILEPSYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(COUGHBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(TOURETTESBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(NERVOUSBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(BLINDBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(DEAFBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(HULKBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(TELEBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(FIREBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(XRAYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(CLUMSYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(STRANGEBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(RACEBLOCK, 0)
|
||||
|
||||
GLOBAL_LIST(bad_se_blocks)
|
||||
GLOBAL_LIST(good_se_blocks)
|
||||
GLOBAL_LIST(op_se_blocks)
|
||||
|
||||
GLOBAL_VAR(NULLED_SE)
|
||||
GLOBAL_VAR(NULLED_UI)
|
||||
|
||||
GLOBAL_LIST_EMPTY(global_mutations) // list of hidden mutation things
|
||||
|
||||
GLOBAL_LIST_EMPTY(bad_mutations)
|
||||
GLOBAL_LIST_EMPTY(good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
//////////////
|
||||
GLOBAL_VAR_INIT(NEARSIGHTBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(EPILEPSYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(COUGHBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(TOURETTESBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(NERVOUSBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(BLINDBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(DEAFBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(HULKBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(TELEBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(FIREBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(XRAYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(CLUMSYBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(STRANGEBLOCK, 0)
|
||||
GLOBAL_VAR_INIT(RACEBLOCK, 0)
|
||||
|
||||
GLOBAL_LIST(bad_se_blocks)
|
||||
GLOBAL_LIST(good_se_blocks)
|
||||
GLOBAL_LIST(op_se_blocks)
|
||||
|
||||
GLOBAL_VAR(NULLED_SE)
|
||||
GLOBAL_VAR(NULLED_UI)
|
||||
|
||||
GLOBAL_LIST_EMPTY(global_mutations) // list of hidden mutation things
|
||||
|
||||
GLOBAL_LIST_EMPTY(bad_mutations)
|
||||
GLOBAL_LIST_EMPTY(good_mutations)
|
||||
GLOBAL_LIST_EMPTY(not_good_mutations)
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
if(..())
|
||||
return
|
||||
var/mob/living/silicon/S = usr
|
||||
S.sensor_mode()
|
||||
S.toggle_sensors()
|
||||
|
||||
|
||||
/datum/hud/ai
|
||||
|
||||
+20
-19
@@ -1004,49 +1004,49 @@ obj/item/projectile/bullet/c10mm/soporific
|
||||
switch(choice)
|
||||
|
||||
if("Frame Color")
|
||||
var/frame_color_input = input(usr,"Choose Frame Color") as color|null
|
||||
var/frame_color_input = input(usr,"","Choose Frame Color",frame_color) as color|null
|
||||
if(frame_color_input)
|
||||
frame_color = sanitize_hexcolor(frame_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Receiver Color")
|
||||
var/receiver_color_input = input(usr,"Choose Receiver Color") as color|null
|
||||
var/receiver_color_input = input(usr,"","Choose Receiver Color",receiver_color) as color|null
|
||||
if(receiver_color_input)
|
||||
receiver_color = sanitize_hexcolor(receiver_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Body Color")
|
||||
var/body_color_input = input(usr,"Choose Body Color") as color|null
|
||||
var/body_color_input = input(usr,"","Choose Body Color",body_color) as color|null
|
||||
if(body_color_input)
|
||||
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Barrel Color")
|
||||
var/barrel_color_input = input(usr,"Choose Barrel Color") as color|null
|
||||
var/barrel_color_input = input(usr,"","Choose Barrel Color",barrel_color) as color|null
|
||||
if(barrel_color_input)
|
||||
barrel_color = sanitize_hexcolor(barrel_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Barrel Tip Color")
|
||||
var/tip_color_input = input(usr,"Choose Barrel Tip Color") as color|null
|
||||
var/tip_color_input = input(usr,"","Choose Barrel Tip Color",tip_color) as color|null
|
||||
if(tip_color_input)
|
||||
tip_color = sanitize_hexcolor(tip_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Grip Light Color")
|
||||
var/grip_color_input = input(usr,"Choose Grip Light Color") as color|null
|
||||
var/grip_color_input = input(usr,"","Choose Grip Light Color",grip_color) as color|null
|
||||
if(grip_color_input)
|
||||
grip_color = sanitize_hexcolor(grip_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Light Color")
|
||||
var/energy_color_input = input(usr,"Choose Light Color") as color|null
|
||||
var/energy_color_input = input(usr,"","Choose Light Color",energy_color) as color|null
|
||||
if(energy_color_input)
|
||||
energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
if("Arm Color")
|
||||
var/arm_color_input = input(usr,"Choose Arm Color") as color|null
|
||||
var/arm_color_input = input(usr,"","Choose Arm Color",arm_color) as color|null
|
||||
if(arm_color_input)
|
||||
arm_color = sanitize_hexcolor(arm_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
@@ -1155,6 +1155,7 @@ obj/item/projectile/bullet/c10mm/soporific
|
||||
pin = /obj/item/device/firing_pin
|
||||
spawnwithmagazine = TRUE
|
||||
obj_flags = 0
|
||||
casing_ejector = FALSE
|
||||
mag_type = /obj/item/ammo_box/magazine/toy/pistol
|
||||
can_suppress = FALSE
|
||||
actions_types = list(/datum/action/item_action/pick_color)
|
||||
@@ -1182,7 +1183,6 @@ obj/item/gun/energy/e_gun/cx
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser)
|
||||
flight_x_offset = 15
|
||||
flight_y_offset = 10
|
||||
actions_types = list(/datum/action/item_action/pick_color)
|
||||
var/body_color = "#252528"
|
||||
|
||||
obj/item/gun/energy/e_gun/cx/update_icon()
|
||||
@@ -1196,16 +1196,17 @@ obj/item/gun/energy/e_gun/cx/update_icon()
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
obj/item/gun/energy/e_gun/cx/ui_action_click(mob/user, var/datum/action/A)
|
||||
if(istype(A, /datum/action/item_action/pick_color))
|
||||
if(alert("Are you sure you want to repaint your gun?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/body_color_input = input(usr,"Choose Body Color") as color|null
|
||||
if(body_color_input)
|
||||
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
|
||||
obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(alert("Are you sure you want to repaint your gun?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/body_color_input = input(usr,"","Choose Body Color",body_color) as color|null
|
||||
if(body_color_input)
|
||||
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
A.UpdateButtonIcon()
|
||||
else
|
||||
..()
|
||||
|
||||
obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file)
|
||||
. = ..()
|
||||
@@ -1261,7 +1262,7 @@ obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file)
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(alert("Are you sure you want to recolor your gun?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/body_color_input = input(usr,"Choose Shroud Color") as color|null
|
||||
var/body_color_input = input(usr,"","Choose Shroud Color",body_color) as color|null
|
||||
if(body_color_input)
|
||||
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
@@ -49,7 +49,8 @@ SUBSYSTEM_DEF(atoms)
|
||||
++count
|
||||
CHECK_TICK
|
||||
|
||||
log_world("Initialized [count] atoms")
|
||||
testing("Initialized [count] atoms")
|
||||
pass(count)
|
||||
|
||||
initialized = INITIALIZATION_INNEW_REGULAR
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@ SUBSYSTEM_DEF(ticker)
|
||||
check_queue()
|
||||
check_maprotate()
|
||||
scripture_states = scripture_unlock_alert(scripture_states)
|
||||
//SSshuttle.autoEnd()
|
||||
SSshuttle.autoEnd()
|
||||
|
||||
if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending)
|
||||
current_state = GAME_STATE_FINISHED
|
||||
|
||||
@@ -78,11 +78,13 @@
|
||||
if(W)
|
||||
var/mob/M = W.resolve()
|
||||
if(M)
|
||||
if (length(args))
|
||||
return world.PushUsr(arglist(list(M, src) + args))
|
||||
return world.PushUsr(M, src)
|
||||
|
||||
|
||||
if (!object)
|
||||
return
|
||||
|
||||
|
||||
var/list/calling_arguments = arguments
|
||||
if (length(args))
|
||||
if (length(arguments))
|
||||
@@ -104,11 +106,13 @@
|
||||
if(W)
|
||||
var/mob/M = W.resolve()
|
||||
if(M)
|
||||
if (length(args))
|
||||
return world.PushUsr(arglist(list(M, src) + args))
|
||||
return world.PushUsr(M, src)
|
||||
|
||||
|
||||
if (!object)
|
||||
return
|
||||
|
||||
|
||||
var/list/calling_arguments = arguments
|
||||
if (length(args))
|
||||
if (length(arguments))
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now
|
||||
proc_or_callback = CALLBACK(src, proc_or_callback)
|
||||
procs[sig_type] = proc_or_callback
|
||||
|
||||
|
||||
enabled = TRUE
|
||||
|
||||
/datum/component/proc/InheritComponent(datum/component/C, i_am_original)
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
var/datum/component/old_comp
|
||||
var/datum/component/new_comp
|
||||
|
||||
|
||||
if(ispath(nt))
|
||||
if(nt == /datum/component)
|
||||
CRASH("[nt] attempted instantiation!")
|
||||
|
||||
@@ -72,10 +72,10 @@
|
||||
/datum/component/material_container/proc/user_insert(obj/item/I, mob/living/user)
|
||||
set waitfor = FALSE
|
||||
var/requested_amount
|
||||
var/Itype = I.type
|
||||
if(ispath(Itype, /obj/item/stack) && precise_insertion)
|
||||
if(istype(I, /obj/item/stack) && precise_insertion)
|
||||
var/atom/current_parent = parent
|
||||
requested_amount = input(user, "How much do you want to insert?", "Inserting sheets") as num|null
|
||||
var/obj/item/stack/S = I
|
||||
requested_amount = input(user, "How much do you want to insert?", "Inserting [S.singular_name]s") as num|null
|
||||
if(isnull(requested_amount) || (requested_amount <= 0))
|
||||
return
|
||||
if(QDELETED(I) || QDELETED(user) || QDELETED(src) || parent != current_parent || !user.canUseTopic(current_parent) || !user.is_holding(I) || !user.Adjacent(current_parent))
|
||||
@@ -86,14 +86,15 @@
|
||||
var/inserted = insert_item(I, stack_amt = requested_amount)
|
||||
if(inserted)
|
||||
if(istype(I, /obj/item/stack))
|
||||
to_chat(user, "<span class='notice'>You insert [inserted] sheet[inserted>1 ? "s" : ""] into [parent].</span>")
|
||||
var/obj/item/stack/S = I
|
||||
to_chat(user, "<span class='notice'>You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].</span>")
|
||||
if(!QDELETED(I))
|
||||
user.put_in_active_hand(I)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You insert a material total of [inserted] into [parent].</span>")
|
||||
qdel(I)
|
||||
if(after_insert)
|
||||
after_insert.Invoke(Itype, last_inserted_id, inserted)
|
||||
after_insert.Invoke(I.type, last_inserted_id, inserted)
|
||||
else
|
||||
user.put_in_active_hand(I)
|
||||
|
||||
@@ -114,7 +115,7 @@
|
||||
return (total_amount - total_amount_saved)
|
||||
return FALSE
|
||||
|
||||
/datum/component/material_container/proc/insert_stack(obj/item/stack/S, amt)
|
||||
/datum/component/material_container/proc/insert_stack(obj/item/stack/S, amt, multiplier = 1)
|
||||
if(isnull(amt))
|
||||
amt = S.amount
|
||||
|
||||
@@ -132,7 +133,7 @@
|
||||
if(!amt)
|
||||
return FALSE
|
||||
|
||||
last_inserted_id = insert_materials(S,amt)
|
||||
last_inserted_id = insert_materials(S,amt * multiplier)
|
||||
S.use(amt)
|
||||
return amt
|
||||
|
||||
@@ -140,7 +141,7 @@
|
||||
if(!I)
|
||||
return FALSE
|
||||
if(istype(I, /obj/item/stack))
|
||||
return insert_stack(I, stack_amt)
|
||||
return insert_stack(I, stack_amt, multiplier)
|
||||
|
||||
var/material_amount = get_item_material_amount(I)
|
||||
if(!material_amount || !has_space(material_amount))
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/datum/disease/heart_failure
|
||||
form = "Condition"
|
||||
name = "Myocardial Infarction"
|
||||
max_stages = 5
|
||||
stage_prob = 2
|
||||
cure_text = "Heart replacement surgery to cure. Defibrillation (or as a last resort, uncontrolled electric shocking) may also be effective after the onset of cardiac arrest. Corazone can also mitigate cardiac arrest."
|
||||
agent = "Shitty Heart"
|
||||
viable_mobtypes = list(/mob/living/carbon)
|
||||
permeability_mod = 1
|
||||
desc = "If left untreated the subject will die!"
|
||||
severity = "Dangerous!"
|
||||
disease_flags = CAN_CARRY|CAN_RESIST
|
||||
spread_flags = VIRUS_SPREAD_NON_CONTAGIOUS
|
||||
visibility_flags = HIDDEN_PANDEMIC
|
||||
required_organs = list(/obj/item/organ/heart)
|
||||
var/sound = FALSE
|
||||
|
||||
/datum/disease/heart_failure/stage_act()
|
||||
..()
|
||||
var/obj/item/organ/heart/O = affected_mob.getorgan(/obj/item/organ/heart)
|
||||
var/mob/living/carbon/H = affected_mob
|
||||
if(O && H.can_heartattack())
|
||||
switch(stage)
|
||||
if(1 to 2)
|
||||
if(prob(2))
|
||||
to_chat(H, "<span class='warning'>You feel [pick("discomfort", "pressure", "a burning sensation", "pain")] in your chest.</span>")
|
||||
if(prob(2))
|
||||
to_chat(H, "<span class='warning'>You feel dizzy.</span>")
|
||||
H.confused += 6
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='warning'>You feel [pick("full", "nauseous", "sweaty", "weak", "tired", "short on breath", "uneasy")].</span>")
|
||||
if(3 to 4)
|
||||
if(!sound)
|
||||
H.playsound_local(H, 'sound/health/slowbeat.ogg',40,0, channel = CHANNEL_HEARTBEAT)
|
||||
sound = TRUE
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='danger'>You feel a sharp pain in your chest!</span>")
|
||||
if(prob(25))
|
||||
affected_mob.vomit(95)
|
||||
H.emote("cough")
|
||||
H.Knockdown(40)
|
||||
H.losebreath += 4
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='danger'>You feel very weak and dizzy...</span>")
|
||||
H.confused += 8
|
||||
H.adjustStaminaLoss(40)
|
||||
H.emote("cough")
|
||||
if(5)
|
||||
H.stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, 0)
|
||||
if(H.stat == CONSCIOUS)
|
||||
H.visible_message("<span class='userdanger'>[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!</span>")
|
||||
H.adjustStaminaLoss(60)
|
||||
H.reagents.add_reagent("corazone", 3) // To give the victim a final chance to shock their heart before losing consciousness
|
||||
H.set_heartattack(TRUE)
|
||||
cure()
|
||||
|
||||
else
|
||||
cure()
|
||||
+20
-2
@@ -202,6 +202,12 @@
|
||||
var/list/entries = list()
|
||||
var/language = /datum/language/common //Initial language, can be changed by HOLORECORD_LANGUAGE entries
|
||||
|
||||
/datum/holorecord/proc/set_caller_image(mob/user)
|
||||
var/olddir = user.dir
|
||||
user.setDir(SOUTH)
|
||||
caller_image = getFlatIcon(user)
|
||||
user.setDir(olddir)
|
||||
|
||||
/obj/item/disk/holodisk
|
||||
name = "holorecord disk"
|
||||
desc = "Stores recorder holocalls."
|
||||
@@ -234,7 +240,7 @@
|
||||
record.language = holodiskOriginal.record.language
|
||||
to_chat(user, "You copy the record from [holodiskOriginal] to [src] by connecting the ports!")
|
||||
name = holodiskOriginal.name
|
||||
else
|
||||
else
|
||||
to_chat(user, "[holodiskOriginal] has no record on it!")
|
||||
..()
|
||||
|
||||
@@ -278,7 +284,7 @@
|
||||
else
|
||||
var/datum/preset_holoimage/H = new preset_image_type
|
||||
record.caller_image = H.build_image()
|
||||
|
||||
|
||||
//These build caller image from outfit and some additional data, for use by mappers for ruin holorecords
|
||||
/datum/preset_holoimage
|
||||
var/nonhuman_mobtype //Fill this if you just want something nonhuman
|
||||
@@ -324,9 +330,21 @@
|
||||
/datum/preset_holoimage/engineer
|
||||
outfit_type = /datum/outfit/job/engineer/gloved/rig
|
||||
|
||||
/datum/preset_holoimage/researcher
|
||||
outfit_type = /datum/outfit/job/scientist
|
||||
|
||||
/datum/preset_holoimage/captain
|
||||
outfit_type = /datum/outfit/job/captain
|
||||
|
||||
/datum/preset_holoimage/nanotrasenprivatesecurity
|
||||
outfit_type = /datum/outfit/nanotrasensoldiercorpse2
|
||||
|
||||
/datum/preset_holoimage/gorilla
|
||||
nonhuman_mobtype = /mob/living/simple_animal/hostile/gorilla
|
||||
|
||||
/datum/preset_holoimage/corgi
|
||||
nonhuman_mobtype = /mob/living/simple_animal/pet/dog/corgi
|
||||
|
||||
/datum/preset_holoimage/clown
|
||||
outfit_type = /datum/outfit/job/clown
|
||||
|
||||
|
||||
@@ -268,3 +268,10 @@
|
||||
suffix = "whiteshipdock.dmm"
|
||||
name = "Whiteship Dock"
|
||||
description = "An abandoned but functional vessel parked in deep space, ripe for the taking."
|
||||
|
||||
/datum/map_template/ruin/space/cat_experiments
|
||||
id = "meow"
|
||||
suffix = "mrow_thats_right.dmm"
|
||||
name = "Feline-Human Combination Den"
|
||||
description = "With heated debates over the legality of the catperson and their status in the workforce, there's always a place for the blackmarket to slip in for some cash. Whether the results \
|
||||
are morally sound or not is another issue entirely."
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
description = "A respectable mid-sized shuttle that first saw service shuttling Nanotrasen crew to and from their asteroid belt embedded facilities."
|
||||
credit_cost = 3000
|
||||
|
||||
|
||||
/datum/map_template/shuttle/emergency/bar
|
||||
suffix = "bar"
|
||||
name = "The Emergency Escape Bar"
|
||||
@@ -109,6 +110,18 @@
|
||||
admin_notes = "This shuttle will likely crush escape, killing anyone there."
|
||||
credit_cost = -5000
|
||||
|
||||
/datum/map_template/shuttle/emergency/saltmine
|
||||
suffix = "saltmine"
|
||||
name = "The Saltmine"
|
||||
description = "Contains everything that upsets you."
|
||||
admin_notes = "Don't forget: You're here forever."
|
||||
credit_cost = 5000
|
||||
|
||||
/datum/map_template/shuttle/emergency/saltmine/prerequisites_met()
|
||||
if("revenant" in SSshuttle.shuttle_purchase_requirements_met)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/map_template/shuttle/emergency/luxury
|
||||
suffix = "luxury"
|
||||
name = "Luxury Shuttle"
|
||||
|
||||
@@ -436,3 +436,17 @@
|
||||
name = "Fleshmend"
|
||||
desc = "Our wounds are rapidly healing. <i>This effect is prevented if we are on fire.</i>"
|
||||
icon_state = "fleshmend"
|
||||
|
||||
/datum/status_effect/exercised
|
||||
id = "Exercised"
|
||||
duration = 1200
|
||||
alert_type = null
|
||||
|
||||
/datum/status_effect/exercised/on_creation(mob/living/new_owner, ...)
|
||||
. = ..()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
START_PROCESSING(SSprocessing, src) //this lasts 20 minutes, so SSfastprocess isn't needed.
|
||||
|
||||
/datum/status_effect/exercised/Destroy()
|
||||
. = ..()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
@@ -0,0 +1,26 @@
|
||||
/datum/weather/snow_storm
|
||||
name = "snow storm"
|
||||
desc = "Harsh snowstorms roam the topside of this arctic planet, burying any area unfortunate enough to be in its path."
|
||||
probability = 90
|
||||
|
||||
telegraph_message = "<span class='warning'>Drifting particles of snow begin to dust the surrounding area..</span>"
|
||||
telegraph_duration = 300
|
||||
telegraph_overlay = "light_snow"
|
||||
|
||||
weather_message = "<span class='userdanger'><i>Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!</i></span>"
|
||||
weather_overlay = "snow_storm"
|
||||
weather_duration_lower = 600
|
||||
weather_duration_upper = 1500
|
||||
|
||||
end_duration = 100
|
||||
end_message = "<span class='boldannounce'>The snowfall dies down, it should be safe to go outside again.</span>"
|
||||
|
||||
area_type = /area/awaymission/snowdin/outside
|
||||
target_trait = ZTRAIT_AWAY
|
||||
|
||||
immunity_type = "snow"
|
||||
|
||||
|
||||
/datum/weather/snow_storm/weather_act(mob/living/L)
|
||||
L.bodytemperature -=(rand(5,15))
|
||||
|
||||
@@ -55,6 +55,9 @@
|
||||
/area/ruin/space/has_grav/powered/dinner_for_two
|
||||
name = "Dinner for Two"
|
||||
|
||||
/area/ruin/space/has_grav/powered/cat_man
|
||||
name = "Kitty Den"
|
||||
|
||||
/area/ruin/space/has_grav/powered/authorship
|
||||
name = "Authorship"
|
||||
|
||||
|
||||
+2
-2
@@ -370,7 +370,7 @@
|
||||
SendSignal(COMSIG_ATOM_EMAG_ACT)
|
||||
|
||||
/atom/proc/rad_act(strength)
|
||||
SendSignal(COMSIG_ATOM_RAD_ACT)
|
||||
SendSignal(COMSIG_ATOM_RAD_ACT, strength)
|
||||
|
||||
/atom/proc/narsie_act()
|
||||
SendSignal(COMSIG_ATOM_NARSIE_ACT)
|
||||
@@ -569,4 +569,4 @@
|
||||
return
|
||||
|
||||
/atom/proc/GenerateTag()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -98,7 +98,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
var/threat = 0 // used for determining which meteors are most interesting
|
||||
var/lifetime = DEFAULT_METEOR_LIFETIME
|
||||
var/timerid = null
|
||||
var/list/meteordrop = list(/obj/item/ore/iron)
|
||||
var/list/meteordrop = list(/obj/item/stack/ore/iron)
|
||||
var/dropamt = 2
|
||||
|
||||
/obj/effect/meteor/Move()
|
||||
@@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
hits = 1
|
||||
hitpwr = 3
|
||||
meteorsound = 'sound/weapons/gunshot_smg.ogg'
|
||||
meteordrop = list(/obj/item/ore/glass)
|
||||
meteordrop = list(/obj/item/stack/ore/glass)
|
||||
threat = 1
|
||||
|
||||
//Medium-sized
|
||||
@@ -250,7 +250,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
hits = 5
|
||||
heavy = 1
|
||||
meteorsound = 'sound/effects/bamf.ogg'
|
||||
meteordrop = list(/obj/item/ore/plasma)
|
||||
meteordrop = list(/obj/item/stack/ore/plasma)
|
||||
threat = 20
|
||||
|
||||
/obj/effect/meteor/flaming/meteor_effect()
|
||||
@@ -262,7 +262,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
name = "glowing meteor"
|
||||
icon_state = "glowing"
|
||||
heavy = 1
|
||||
meteordrop = list(/obj/item/ore/uranium)
|
||||
meteordrop = list(/obj/item/stack/ore/uranium)
|
||||
threat = 15
|
||||
|
||||
|
||||
@@ -332,7 +332,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
hitpwr = 1
|
||||
heavy = 1
|
||||
meteorsound = 'sound/effects/bamf.ogg'
|
||||
meteordrop = list(/obj/item/ore/plasma)
|
||||
meteordrop = list(/obj/item/stack/ore/plasma)
|
||||
threat = 50
|
||||
|
||||
/obj/effect/meteor/tunguska/Move()
|
||||
|
||||
@@ -89,18 +89,17 @@
|
||||
|
||||
if(default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", O))
|
||||
updateUsrDialog()
|
||||
return
|
||||
return TRUE
|
||||
|
||||
if(exchange_parts(user, O))
|
||||
return
|
||||
return TRUE
|
||||
|
||||
if(panel_open)
|
||||
if(istype(O, /obj/item/crowbar))
|
||||
default_deconstruction_crowbar(O)
|
||||
return TRUE
|
||||
else if(is_wire_tool(O))
|
||||
wires.interact(user)
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(O))
|
||||
return TRUE
|
||||
|
||||
if(panel_open && is_wire_tool(O))
|
||||
wires.interact(user)
|
||||
return TRUE
|
||||
|
||||
if(user.a_intent == INTENT_HARM) //so we can hit the machine
|
||||
return ..()
|
||||
@@ -124,7 +123,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/autolathe/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted)
|
||||
if(ispath(type_inserted, /obj/item/ore/bluespace_crystal))
|
||||
if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal))
|
||||
use_power(MINERAL_MATERIAL_AMOUNT / 10)
|
||||
else
|
||||
switch(id_inserted)
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
/obj/item/toy/eightball = 2,
|
||||
/obj/item/toy/windupToolbox = 2,
|
||||
/obj/item/toy/clockwork_watch = 2,
|
||||
/obj/item/toy/toy_dagger = 2,
|
||||
/obj/item/extendohand/acme = 1)
|
||||
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
@@ -76,7 +77,7 @@
|
||||
new prizeselect(src)
|
||||
|
||||
var/atom/movable/prize = pick(contents)
|
||||
visible_message("<span class='notice'>[src] dispenses a [prize]!</span>", "<span class='notice'>You hear a chime and a clunk.</span>")
|
||||
visible_message("<span class='notice'>[src] dispenses [prize]!</span>", "<span class='notice'>You hear a chime and a clunk.</span>")
|
||||
|
||||
prize.forceMove(get_turf(src))
|
||||
#undef PULSE_MEDAL
|
||||
|
||||
@@ -745,9 +745,9 @@
|
||||
|
||||
/datum/comm_message/New(new_title,new_content,new_possible_answers)
|
||||
..()
|
||||
if(title)
|
||||
if(new_title)
|
||||
title = new_title
|
||||
if(content)
|
||||
if(new_content)
|
||||
content = new_content
|
||||
if(new_possible_answers)
|
||||
possible_answers = new_possible_answers
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
if(defib && defib.cell && defib.cell.charge < defib.cell.maxcharge)
|
||||
use_power(20)
|
||||
defib.cell.give(18) //90% efficiency, slightly better than the cell charger's 87.5%
|
||||
if(isliving(defib.paddles.loc))
|
||||
if(defib && defib.paddles && isliving(defib.paddles.loc))
|
||||
var/mob/living/L = defib.paddles.loc
|
||||
if(!L.Adjacent(src))
|
||||
to_chat(L, "<span class='warning'>[defib]'s paddles overextend and come out of your hands!</span>")
|
||||
|
||||
@@ -62,9 +62,23 @@
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "woodenbarricade"
|
||||
material = WOOD
|
||||
var/drop_amount = 3
|
||||
|
||||
/obj/structure/barricade/wooden/crude
|
||||
name = "crude plank barricade"
|
||||
desc = "This space is blocked off by a crude assortment of planks."
|
||||
icon_state = "woodenbarricade-old"
|
||||
drop_amount = 1
|
||||
max_integrity = 50
|
||||
proj_pass_rate = 65
|
||||
|
||||
/obj/structure/barricade/wooden/crude/snow
|
||||
desc = "This space is blocked off by a crude assortment of planks. It seems to be covered in a layer of snow."
|
||||
icon_state = "woodenbarricade-snow-old"
|
||||
max_integrity = 75
|
||||
|
||||
/obj/structure/barricade/wooden/make_debris()
|
||||
new /obj/item/stack/sheet/mineral/wood(get_turf(src), 3)
|
||||
new /obj/item/stack/sheet/mineral/wood(get_turf(src), drop_amount)
|
||||
|
||||
|
||||
/obj/structure/barricade/sandbags
|
||||
|
||||
@@ -211,6 +211,11 @@
|
||||
flags_1 = ON_BORDER_1
|
||||
CanAtmosPass = ATMOS_PASS_PROC
|
||||
|
||||
/obj/machinery/door/firedoor/border_only/closed
|
||||
icon_state = "door_closed"
|
||||
opacity = TRUE
|
||||
density = TRUE
|
||||
|
||||
/obj/machinery/door/firedoor/border_only/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover) && (mover.pass_flags & PASSGLASS))
|
||||
return 1
|
||||
|
||||
@@ -110,10 +110,15 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
if(!istype(linked_techweb))
|
||||
say("Warning: No linked research system!")
|
||||
return
|
||||
var/point_gain = techweb_scale_bomb(orig_light - 20 - linked_techweb.max_bomb_value)
|
||||
if(!point_gain)
|
||||
var/adjusted = orig_light - 10 - linked_techweb.max_bomb_value
|
||||
if(adjusted <= 0)
|
||||
say("Explosion not large enough for research calculations.")
|
||||
return
|
||||
linked_techweb.max_bomb_value = orig_light - 20
|
||||
var/point_gain = techweb_scale_bomb(adjusted)
|
||||
if(point_gain <= 0)
|
||||
say("Explosion not large enough for research calculations.")
|
||||
return
|
||||
linked_techweb.max_bomb_value = orig_light - 10
|
||||
linked_techweb.research_points += point_gain
|
||||
say("Gained [point_gain] points from explosion dataset.")
|
||||
|
||||
@@ -124,4 +129,4 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
linked_techweb = SSresearch.science_tech
|
||||
|
||||
/proc/techweb_scale_bomb(lightradius)
|
||||
return (lightradius ** 0.5) * 13000
|
||||
return (lightradius ** 0.5) * 5000
|
||||
|
||||
@@ -165,10 +165,10 @@ The console is located at computer/gulag_teleporter.dm
|
||||
name = "labor camp teleporter (Machine Board)"
|
||||
build_path = /obj/machinery/gulag_teleporter
|
||||
req_components = list(
|
||||
/obj/item/ore/bluespace_crystal = 2,
|
||||
/obj/item/stack/ore/bluespace_crystal = 2,
|
||||
/obj/item/stock_parts/scanning_module,
|
||||
/obj/item/stock_parts/manipulator)
|
||||
def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial)
|
||||
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
|
||||
/* beacon that receives the teleported prisoner */
|
||||
/obj/structure/gulag_beacon
|
||||
|
||||
@@ -58,6 +58,7 @@ Possible to do for anyone motivated enough:
|
||||
var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging
|
||||
var/static/list/holopads = list()
|
||||
var/obj/effect/overlay/holoray/ray
|
||||
var/offset = FALSE
|
||||
|
||||
/obj/machinery/holopad/Initialize()
|
||||
. = ..()
|
||||
@@ -279,7 +280,16 @@ Possible to do for anyone motivated enough:
|
||||
record_stop()
|
||||
else if(href_list["record_clear"])
|
||||
record_clear()
|
||||
|
||||
else if(href_list["offset"])
|
||||
offset++
|
||||
if (offset > 4)
|
||||
offset = FALSE
|
||||
var/turf/new_turf
|
||||
if (!offset)
|
||||
new_turf = get_turf(src)
|
||||
else
|
||||
new_turf = get_step(src, GLOB.cardinals[offset])
|
||||
replay_holo.forceMove(new_turf)
|
||||
updateDialog()
|
||||
|
||||
//do not allow AIs to answer calls or people will use it to meta the AI sattelite
|
||||
@@ -420,7 +430,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
|
||||
/obj/machinery/holopad/proc/clear_holo(mob/living/user)
|
||||
qdel(masters[user]) // Get rid of user's hologram
|
||||
qdel(holorays[user])
|
||||
unset_holo(user)
|
||||
return TRUE
|
||||
|
||||
@@ -429,6 +438,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
if(istype(AI) && AI.current == src)
|
||||
AI.current = null
|
||||
LAZYREMOVE(masters, user) // Discard AI from the list of those who use holopad
|
||||
qdel(holorays[user])
|
||||
LAZYREMOVE(holorays, user)
|
||||
SetLightsAndPower()
|
||||
return TRUE
|
||||
@@ -493,7 +503,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
replay_mode = TRUE
|
||||
replay_holo = setup_replay_holo(disk.record)
|
||||
temp = "Replaying...<br>"
|
||||
temp += "<A href='?src=[REF(src)];replay_stop=1'>End replay.</A>"
|
||||
temp += "<A href='?src=[REF(src)];offset=1'>Change offset</A><br>"
|
||||
temp += "<A href='?src=[REF(src)];replay_stop=1'>End replay</A>"
|
||||
SetLightsAndPower()
|
||||
replay_entry(1)
|
||||
return
|
||||
@@ -502,6 +513,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
if(replay_mode)
|
||||
replay_mode = FALSE
|
||||
loop_mode = FALSE
|
||||
offset = FALSE
|
||||
temp = null
|
||||
QDEL_NULL(replay_holo)
|
||||
SetLightsAndPower()
|
||||
@@ -514,16 +526,10 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
record_mode = TRUE
|
||||
record_start = world.time
|
||||
record_user = user
|
||||
disk.record.caller_image = get_record_icon(user)
|
||||
disk.record.set_caller_image(user)
|
||||
temp = "Recording...<br>"
|
||||
temp += "<A href='?src=[REF(src)];record_stop=1'>End recording.</A>"
|
||||
|
||||
/obj/machinery/holopad/proc/get_record_icon(mob/living/user)
|
||||
var/olddir = user.dir
|
||||
user.setDir(SOUTH)
|
||||
. = getFlatIcon(user)
|
||||
user.setDir(olddir)
|
||||
|
||||
/obj/machinery/holopad/proc/record_message(mob/living/speaker,message,language)
|
||||
if(!record_mode)
|
||||
return
|
||||
@@ -553,8 +559,10 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
/obj/machinery/holopad/proc/replay_entry(entry_number)
|
||||
if(!replay_mode)
|
||||
return
|
||||
if (!disk.record.entries.len) // check for zero entries such as photographs and no text recordings
|
||||
return // and pretty much just display them statically untill manually stopped
|
||||
if(disk.record.entries.len < entry_number)
|
||||
if (loop_mode)
|
||||
if(loop_mode)
|
||||
entry_number = 1
|
||||
else
|
||||
replay_stop()
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
/obj/machinery/mecha_part_fabricator/Initialize()
|
||||
var/datum/component/material_container/materials = AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0,
|
||||
FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
materials.precise_insertion = TRUE
|
||||
stored_research = new
|
||||
return ..()
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
else
|
||||
to_chat(user, ("<span class='warning'>There's not enough cable to finish the task!</span>"))
|
||||
return FALSE
|
||||
else if(istype(used_atom, /obj/item/stack/ore/bluespace_crystal))
|
||||
var/obj/item/stack/ore/bluespace_crystal/BSC = used_atom
|
||||
BSC.use(1)
|
||||
else if(istype(used_atom, /obj/item/stack))
|
||||
var/obj/item/stack/S = used_atom
|
||||
if(S.get_amount() < 5)
|
||||
@@ -1320,7 +1323,7 @@
|
||||
"backkey"=/obj/item/crowbar,
|
||||
"desc"="The bluespace crystal is installed."),
|
||||
//12
|
||||
list("key"=/obj/item/ore/bluespace_crystal,
|
||||
list("key"=/obj/item/stack/ore/bluespace_crystal,
|
||||
"backkey"=/obj/item/screwdriver,
|
||||
"desc"="Super capacitor is secured."),
|
||||
//13
|
||||
@@ -1514,7 +1517,7 @@
|
||||
holder.icon_state = "phazon16"
|
||||
else
|
||||
user.visible_message("[user] removes the bluespace crystal from the [holder].", "<span class='notice'>You remove the bluespace crystal from the [holder].</span>")
|
||||
new /obj/item/ore/bluespace_crystal(get_turf(holder))
|
||||
new /obj/item/stack/ore/bluespace_crystal(get_turf(holder))
|
||||
holder.icon_state = "phazon14"
|
||||
if(11)
|
||||
if(diff==FORWARD)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if(locate(/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp) in equipment)
|
||||
var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in cargo
|
||||
if(ore_box)
|
||||
for(var/obj/item/ore/ore in range(1, src))
|
||||
for(var/obj/item/stack/ore/ore in range(1, src))
|
||||
if(ore.Adjacent(src) && ((get_dir(src, ore) & dir) || ore.loc == loc)) //we can reach it and it's in front of us? grab it!
|
||||
ore.forceMove(ore_box)
|
||||
|
||||
@@ -128,10 +128,10 @@
|
||||
if(href_list["drop_from_cargo"])
|
||||
var/obj/O = locate(href_list["drop_from_cargo"])
|
||||
if(O && O in src.cargo)
|
||||
src.occupant_message("<span class='notice'>You unload [O].</span>")
|
||||
occupant_message("<span class='notice'>You unload [O].</span>")
|
||||
O.forceMove(drop_location())
|
||||
src.cargo -= O
|
||||
src.log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
|
||||
cargo -= O
|
||||
log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -1,30 +1,33 @@
|
||||
/obj/effect/decal/remains
|
||||
name = "remains"
|
||||
gender = PLURAL
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
|
||||
/obj/effect/decal/remains/acid_act()
|
||||
visible_message("<span class='warning'>[src] dissolve[gender==PLURAL?"":"s"] into a puddle of sizzling goop!</span>")
|
||||
playsound(src, 'sound/items/welder.ogg', 150, 1)
|
||||
new /obj/effect/decal/cleanable/greenglow(drop_location())
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/remains/human
|
||||
desc = "They look like human remains. They have a strange aura about them."
|
||||
icon_state = "remains"
|
||||
|
||||
/obj/effect/decal/remains/xeno
|
||||
desc = "They look like the remains of something... alien. They have a strange aura about them."
|
||||
icon_state = "remainsxeno"
|
||||
|
||||
/obj/effect/decal/remains/xeno/larva
|
||||
icon_state = "remainslarva"
|
||||
|
||||
/obj/effect/decal/remains/robot
|
||||
desc = "They look like the remains of something mechanical. They have a strange aura about them."
|
||||
icon = 'icons/mob/robots.dmi'
|
||||
icon_state = "remainsrobot"
|
||||
|
||||
/obj/effect/decal/cleanable/robot_debris/old
|
||||
name = "dusty robot debris"
|
||||
desc = "Looks like nobody has touched this in a while."
|
||||
/obj/effect/decal/remains
|
||||
name = "remains"
|
||||
gender = PLURAL
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
|
||||
/obj/effect/decal/remains/acid_act()
|
||||
visible_message("<span class='warning'>[src] dissolve[gender==PLURAL?"":"s"] into a puddle of sizzling goop!</span>")
|
||||
playsound(src, 'sound/items/welder.ogg', 150, 1)
|
||||
new /obj/effect/decal/cleanable/greenglow(drop_location())
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/remains/human
|
||||
desc = "They look like human remains. They have a strange aura about them."
|
||||
icon_state = "remains"
|
||||
|
||||
/obj/effect/decal/remains/plasma
|
||||
icon_state = "remainsplasma"
|
||||
|
||||
/obj/effect/decal/remains/xeno
|
||||
desc = "They look like the remains of something... alien. They have a strange aura about them."
|
||||
icon_state = "remainsxeno"
|
||||
|
||||
/obj/effect/decal/remains/xeno/larva
|
||||
icon_state = "remainslarva"
|
||||
|
||||
/obj/effect/decal/remains/robot
|
||||
desc = "They look like the remains of something mechanical. They have a strange aura about them."
|
||||
icon = 'icons/mob/robots.dmi'
|
||||
icon_state = "remainsrobot"
|
||||
|
||||
/obj/effect/decal/cleanable/robot_debris/old
|
||||
name = "dusty robot debris"
|
||||
desc = "Looks like nobody has touched this in a while."
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
/obj/effect/turf_decal/weather
|
||||
name = "sandy floor"
|
||||
icon_state = "sandyfloor"
|
||||
|
||||
/obj/effect/turf_decal/weather/snow
|
||||
name = "snowy floor"
|
||||
icon_state = "snowyfloor"
|
||||
|
||||
/obj/effect/turf_decal/weather/snow/corner
|
||||
name = "snow corner piece"
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
icon_state = "snow_corner"
|
||||
@@ -147,7 +147,7 @@
|
||||
var/turf/real_target = get_link_target_turf()
|
||||
if(!istype(real_target))
|
||||
return FALSE
|
||||
if(!ismecha(M) && M.anchored && !allow_anchored)
|
||||
if(!ismecha(M) && !istype(M, /obj/item/projectile) && M.anchored && !allow_anchored)
|
||||
return
|
||||
if(ismegafauna(M))
|
||||
message_admins("[M] has used a portal at [ADMIN_COORDJMP(src)] made by [usr].")
|
||||
|
||||
@@ -126,12 +126,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
if(damtype == "brute")
|
||||
hitsound = "swing_hit"
|
||||
|
||||
if (!embedding)
|
||||
embedding = getEmbeddingBehavior()
|
||||
else if (islist(embedding))
|
||||
embedding = getEmbeddingBehavior(arglist(embedding))
|
||||
else if (!istype(embedding, /datum/embedding_behavior))
|
||||
stack_trace("Invalid type [embedding.type] found in .embedding during /obj/item Initialize()")
|
||||
if (!embedding)
|
||||
embedding = getEmbeddingBehavior()
|
||||
else if (islist(embedding))
|
||||
embedding = getEmbeddingBehavior(arglist(embedding))
|
||||
else if (!istype(embedding, /datum/embedding_behavior))
|
||||
stack_trace("Invalid type [embedding.type] found in .embedding during /obj/item Initialize()")
|
||||
|
||||
/obj/item/Destroy()
|
||||
flags_1 &= ~DROPDEL_1 //prevent reqdels
|
||||
|
||||
@@ -191,6 +191,7 @@
|
||||
var/obj/machinery/door/firedoor/FD = D
|
||||
FD.CalculateAffectingAreas()
|
||||
to_chat(usr, "<span class='notice'>You rename the '[prevname]' to '[str]'.</span>")
|
||||
log_game("[key_name(usr)] has renamed [prevname] to [str]")
|
||||
interact()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -78,6 +78,10 @@
|
||||
return
|
||||
A.emag_act(user)
|
||||
|
||||
/obj/item/card/emag/fake/afterattack()
|
||||
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
|
||||
return
|
||||
|
||||
/obj/item/card/id
|
||||
name = "identification card"
|
||||
desc = "A card used to provide ID and determine access across the station."
|
||||
|
||||
@@ -58,9 +58,9 @@
|
||||
name = "Bluespace Launchpad (Machine Board)"
|
||||
build_path = /obj/machinery/launchpad
|
||||
req_components = list(
|
||||
/obj/item/ore/bluespace_crystal = 1,
|
||||
/obj/item/stack/ore/bluespace_crystal = 1,
|
||||
/obj/item/stock_parts/manipulator = 1)
|
||||
def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial)
|
||||
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
|
||||
/obj/item/circuitboard/machine/limbgrower
|
||||
name = "Limb Grower (Machine Board)"
|
||||
@@ -74,11 +74,11 @@
|
||||
name = "Quantum Pad (Machine Board)"
|
||||
build_path = /obj/machinery/quantumpad
|
||||
req_components = list(
|
||||
/obj/item/ore/bluespace_crystal = 1,
|
||||
/obj/item/stack/ore/bluespace_crystal = 1,
|
||||
/obj/item/stock_parts/capacitor = 1,
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stack/cable_coil = 1)
|
||||
def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial)
|
||||
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
|
||||
/obj/item/circuitboard/machine/recharger
|
||||
name = "Weapon Recharger (Machine Board)"
|
||||
@@ -175,18 +175,18 @@
|
||||
name = "Teleporter Hub (Machine Board)"
|
||||
build_path = /obj/machinery/teleport/hub
|
||||
req_components = list(
|
||||
/obj/item/ore/bluespace_crystal = 3,
|
||||
/obj/item/stack/ore/bluespace_crystal = 3,
|
||||
/obj/item/stock_parts/matter_bin = 1)
|
||||
def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial)
|
||||
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
|
||||
/obj/item/circuitboard/machine/teleporter_station
|
||||
name = "Teleporter Station (Machine Board)"
|
||||
build_path = /obj/machinery/teleport/station
|
||||
req_components = list(
|
||||
/obj/item/ore/bluespace_crystal = 2,
|
||||
/obj/item/stack/ore/bluespace_crystal = 2,
|
||||
/obj/item/stock_parts/capacitor = 2,
|
||||
/obj/item/stack/sheet/glass = 1)
|
||||
def_components = list(/obj/item/ore/bluespace_crystal = /obj/item/ore/bluespace_crystal/artificial)
|
||||
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
|
||||
/obj/item/circuitboard/machine/vendor
|
||||
name = "Booze-O-Mat Vendor (Machine Board)"
|
||||
@@ -674,7 +674,7 @@
|
||||
name = "Bluespace Artillery Fusor (Machine Board)"
|
||||
build_path = /obj/machinery/bsa/middle
|
||||
req_components = list(
|
||||
/obj/item/ore/bluespace_crystal = 20,
|
||||
/obj/item/stack/ore/bluespace_crystal = 20,
|
||||
/obj/item/stack/cable_coil = 2)
|
||||
|
||||
/obj/item/circuitboard/machine/bsa/front
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
loop.start()
|
||||
|
||||
/obj/item/device/geiger_counter/rad_act(amount)
|
||||
. = ..()
|
||||
if(amount <= RAD_BACKGROUND_RADIATION || !scanning)
|
||||
return
|
||||
current_tick_amount += amount
|
||||
@@ -200,6 +201,20 @@
|
||||
to_chat(user, "<span class='warning'>You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.</span>")
|
||||
obj_flags |= EMAGGED
|
||||
|
||||
/obj/item/device/geiger_counter/cyborg
|
||||
var/datum/component/mobhook
|
||||
|
||||
/obj/item/device/geiger_counter/cyborg/equipped(mob/user)
|
||||
. = ..()
|
||||
if (mobhook && mobhook.parent != user)
|
||||
QDEL_NULL(mobhook)
|
||||
if (!mobhook)
|
||||
mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_ATOM_RAD_ACT), CALLBACK(src, /atom.proc/rad_act))
|
||||
|
||||
/obj/item/device/geiger_counter/cyborg/dropped()
|
||||
. = ..()
|
||||
QDEL_NULL(mobhook)
|
||||
|
||||
#undef RAD_LEVEL_NORMAL
|
||||
#undef RAD_LEVEL_MODERATE
|
||||
#undef RAD_LEVEL_HIGH
|
||||
|
||||
@@ -40,10 +40,11 @@
|
||||
var/cuffsound = 'sound/weapons/handcuffs.ogg'
|
||||
var/trashtype = null //for disposable cuffs
|
||||
|
||||
/obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/living/carbon/human/user)
|
||||
/obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/living/user)
|
||||
if(!istype(C))
|
||||
return
|
||||
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
|
||||
|
||||
if(iscarbon(user) && (user.has_trait(TRAIT_CLUMSY) && prob(50)))
|
||||
to_chat(user, "<span class='warning'>Uh... how do those things work?!</span>")
|
||||
apply_cuffs(user,user)
|
||||
return
|
||||
@@ -61,7 +62,10 @@
|
||||
|
||||
playsound(loc, cuffsound, 30, 1, -2)
|
||||
if(do_mob(user, C, 30) && (C.get_num_arms() >= 2 || C.get_arm_ignore()))
|
||||
apply_cuffs(C,user)
|
||||
if(iscyborg(user))
|
||||
apply_cuffs(C, user, TRUE)
|
||||
else
|
||||
apply_cuffs(C, user)
|
||||
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
|
||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||
|
||||
@@ -113,7 +117,6 @@
|
||||
materials = list(MAT_METAL=150, MAT_GLASS=75)
|
||||
breakouttime = 300 //Deciseconds = 30s
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
var/datum/robot_energy_storage/wirestorage = null
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/Initialize(mapload, param_color)
|
||||
. = ..()
|
||||
@@ -128,23 +131,6 @@
|
||||
color = null
|
||||
add_atom_colour(item_color, FIXED_COLOUR_PRIORITY)
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/attack(mob/living/carbon/C, mob/living/carbon/human/user)
|
||||
if(!istype(C))
|
||||
return
|
||||
if(wirestorage && wirestorage.energy < 15)
|
||||
to_chat(user, "<span class='warning'>You need at least 15 wire to restrain [C]!</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/apply_cuffs(mob/living/carbon/target, mob/user, var/dispense = 0)
|
||||
if(wirestorage)
|
||||
if(!wirestorage.use_charge(15))
|
||||
to_chat(user, "<span class='warning'>You need at least 15 wire to restrain [target]!</span>")
|
||||
return
|
||||
return ..(target, user, 1)
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/red
|
||||
item_color = "red"
|
||||
color = "#ff0000"
|
||||
@@ -215,21 +201,6 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
|
||||
if(iscyborg(user))
|
||||
if(!C.handcuffed)
|
||||
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
|
||||
C.visible_message("<span class='danger'>[user] is trying to put zipties on [C]!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to put zipties on [C]!</span>")
|
||||
if(do_mob(user, C, 30))
|
||||
if(!C.handcuffed)
|
||||
C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
|
||||
C.update_handcuffed()
|
||||
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
|
||||
add_logs(user, C, "handcuffed")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to handcuff [C]!</span>")
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties
|
||||
name = "zipties"
|
||||
desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use."
|
||||
@@ -249,7 +220,6 @@
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
|
||||
return
|
||||
|
||||
|
||||
//Legcuffs
|
||||
|
||||
/obj/item/restraints/legcuffs
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Bluespace crystals, used in telescience and when crushed it will blink you to a random turf.
|
||||
/obj/item/ore/bluespace_crystal
|
||||
/obj/item/stack/ore/bluespace_crystal
|
||||
name = "bluespace crystal"
|
||||
desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate."
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
@@ -11,38 +11,38 @@
|
||||
refined_type = /obj/item/stack/sheet/bluespace_crystal
|
||||
grind_results = list("bluespace" = 20)
|
||||
|
||||
/obj/item/ore/bluespace_crystal/refined
|
||||
/obj/item/stack/ore/bluespace_crystal/refined
|
||||
name = "refined bluespace crystal"
|
||||
points = 0
|
||||
refined_type = null
|
||||
|
||||
/obj/item/ore/bluespace_crystal/New()
|
||||
..()
|
||||
/obj/item/stack/ore/bluespace_crystal/Initialize()
|
||||
. = ..()
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/ore/bluespace_crystal/attack_self(mob/user)
|
||||
/obj/item/stack/ore/bluespace_crystal/attack_self(mob/user)
|
||||
user.visible_message("<span class='warning'>[user] crushes [src]!</span>", "<span class='danger'>You crush [src]!</span>")
|
||||
new /obj/effect/particle_effect/sparks(loc)
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
playsound(loc, "sparks", 50, 1)
|
||||
blink_mob(user)
|
||||
qdel(src)
|
||||
use(1)
|
||||
|
||||
/obj/item/ore/bluespace_crystal/proc/blink_mob(mob/living/L)
|
||||
/obj/item/stack/ore/bluespace_crystal/proc/blink_mob(mob/living/L)
|
||||
do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg')
|
||||
|
||||
/obj/item/ore/bluespace_crystal/throw_impact(atom/hit_atom)
|
||||
/obj/item/stack/ore/bluespace_crystal/throw_impact(atom/hit_atom)
|
||||
if(!..()) // not caught in mid-air
|
||||
visible_message("<span class='notice'>[src] fizzles and disappears upon impact!</span>")
|
||||
var/turf/T = get_turf(hit_atom)
|
||||
new /obj/effect/particle_effect/sparks(T)
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
playsound(loc, "sparks", 50, 1)
|
||||
if(isliving(hit_atom))
|
||||
blink_mob(hit_atom)
|
||||
qdel(src)
|
||||
use(1)
|
||||
|
||||
//Artifical bluespace crystal, doesn't give you much research.
|
||||
/obj/item/ore/bluespace_crystal/artificial
|
||||
/obj/item/stack/ore/bluespace_crystal/artificial
|
||||
name = "artificial bluespace crystal"
|
||||
desc = "An artificially made bluespace crystal, it looks delicate."
|
||||
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT / 2)
|
||||
@@ -61,7 +61,7 @@
|
||||
attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
|
||||
novariants = TRUE
|
||||
grind_results = list("bluespace" = 20)
|
||||
var/crystal_type = /obj/item/ore/bluespace_crystal/refined
|
||||
var/crystal_type = /obj/item/stack/ore/bluespace_crystal/refined
|
||||
|
||||
/obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening
|
||||
to_chat(user, "<span class='warning'>You cannot crush the polycrystal in-hand, try breaking one off.</span>")
|
||||
|
||||
@@ -36,7 +36,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
|
||||
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("aesthetic volcanic floor tile", /obj/item/stack/tile/basalt, 2, 2, 4, 20), \
|
||||
new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Breakdown into sand", /obj/item/ore/glass, 1, one_per_turf = 0, on_floor = 1) \
|
||||
new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1) \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandstone
|
||||
@@ -84,12 +84,13 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/emptysandbag/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/ore/glass))
|
||||
if(istype(W, /obj/item/stack/ore/glass))
|
||||
var/obj/item/stack/ore/glass/G = W
|
||||
to_chat(user, "<span class='notice'>You fill the sandbag.</span>")
|
||||
var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags
|
||||
qdel(src)
|
||||
user.put_in_hands(I)
|
||||
qdel(W)
|
||||
G.use(1)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -85,11 +85,56 @@
|
||||
icon_state = "satchel"
|
||||
slot_flags = SLOT_BELT | SLOT_POCKET
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
storage_slots = 50
|
||||
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
can_hold = list(/obj/item/ore)
|
||||
storage_slots = 8
|
||||
max_combined_w_class = 16 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
|
||||
max_w_class = WEIGHT_CLASS_HUGE
|
||||
can_hold = list(/obj/item/stack/ore)
|
||||
var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it
|
||||
var/datum/component/mobhook
|
||||
|
||||
/obj/item/storage/bag/ore/equipped(mob/user)
|
||||
. = ..()
|
||||
if (mobhook && mobhook.parent != user)
|
||||
QDEL_NULL(mobhook)
|
||||
if (!mobhook)
|
||||
mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED), CALLBACK(src, .proc/Pickup_ores, user))
|
||||
|
||||
/obj/item/storage/bag/ore/dropped()
|
||||
. = ..()
|
||||
if (mobhook)
|
||||
QDEL_NULL(mobhook)
|
||||
|
||||
/obj/item/storage/bag/ore/proc/Pickup_ores(mob/living/user)
|
||||
var/show_message = FALSE
|
||||
var/obj/structure/ore_box/box
|
||||
var/turf/tile = user.loc
|
||||
if (!isturf(tile))
|
||||
return
|
||||
if (istype(user.pulling, /obj/structure/ore_box))
|
||||
box = user.pulling
|
||||
for(var/A in tile)
|
||||
if (!is_type_in_typecache(A, can_hold))
|
||||
continue
|
||||
if (box)
|
||||
user.transferItemToLoc(A, box)
|
||||
show_message = TRUE
|
||||
else if(can_be_inserted(A, TRUE, user))
|
||||
handle_item_insertion(A, TRUE, user)
|
||||
show_message = TRUE
|
||||
else
|
||||
if(!spam_protection)
|
||||
to_chat(user, "<span class='warning'>Your [name] is full and can't hold any more!</span>")
|
||||
spam_protection = TRUE
|
||||
continue
|
||||
if(show_message)
|
||||
playsound(user, "rustle", 50, TRUE)
|
||||
if (box)
|
||||
user.visible_message("<span class='notice'>[user] offloads the ores beneath them into [box].</span>", \
|
||||
"<span class='notice'>You offload the ores beneath you into your [box].</span>")
|
||||
else
|
||||
user.visible_message("<span class='notice'>[user] scoops up the ores beneath them.</span>", \
|
||||
"<span class='notice'>You scoop up the ores beneath you with your [name].</span>")
|
||||
spam_protection = FALSE
|
||||
|
||||
/obj/item/storage/bag/ore/cyborg
|
||||
name = "cyborg mining satchel"
|
||||
@@ -228,7 +273,7 @@
|
||||
var/col_count = min(7,storage_slots) -1
|
||||
if (adjusted_contents > 7)
|
||||
row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width.
|
||||
src.standard_orient_objs(row_num, col_count, numbered_contents)
|
||||
standard_orient_objs(row_num, col_count, numbered_contents)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
|
||||
slot_flags = SLOT_BELT
|
||||
attack_verb = list("whipped", "lashed", "disciplined")
|
||||
max_integrity = 300
|
||||
@@ -230,7 +232,7 @@
|
||||
/obj/item/device/t_scanner/adv_mining_scanner,
|
||||
/obj/item/reagent_containers/pill,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/ore,
|
||||
/obj/item/stack/ore,
|
||||
/obj/item/reagent_containers/food/drinks,
|
||||
/obj/item/organ/regenerative_core,
|
||||
/obj/item/device/wormhole_jaunter,
|
||||
|
||||
@@ -26,12 +26,13 @@
|
||||
do_teleport(M, get_turf(M), 15)
|
||||
|
||||
/obj/item/melee/baton/cattleprod/attackby(obj/item/I, mob/user, params)//handles sticking a crystal onto a stunprod to make a teleprod
|
||||
if(istype(I, /obj/item/ore/bluespace_crystal))
|
||||
if(istype(I, /obj/item/stack/ore/bluespace_crystal))
|
||||
if(!cell)
|
||||
var/obj/item/stack/ore/bluespace_crystal/BSC = I
|
||||
var/obj/item/melee/baton/cattleprod/teleprod/S = new /obj/item/melee/baton/cattleprod/teleprod
|
||||
remove_item_from_storage(user)
|
||||
qdel(src)
|
||||
qdel(I)
|
||||
BSC.use(1)
|
||||
user.put_in_hands(S)
|
||||
to_chat(user, "<span class='notice'>You place the bluespace crystal firmly into the igniter.</span>")
|
||||
else
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
* Kitty toys!
|
||||
* Snowballs
|
||||
* Clockwork Watches
|
||||
* Toy Daggers
|
||||
*/
|
||||
|
||||
|
||||
@@ -1075,6 +1076,22 @@
|
||||
..()
|
||||
to_chat(user, "<span class='info'>Station Time: [worldtime2text()]")
|
||||
|
||||
/*
|
||||
* Toy Dagger
|
||||
*/
|
||||
|
||||
/obj/item/toy/toy_dagger
|
||||
name = "toy dagger"
|
||||
desc = "A cheap plastic replica of a dagger. Produced by THE ARM Toys, Inc."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "render"
|
||||
item_state = "cultdagger"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
inhand_x_dimension = 32
|
||||
inhand_y_dimension = 32
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/*
|
||||
* Xenomorph action figure
|
||||
*/
|
||||
|
||||
@@ -80,5 +80,5 @@
|
||||
|
||||
/obj/item/trash/coal/burn()
|
||||
visible_message("[src] fuses into a diamond! Someone wasn't so naughty after all...")
|
||||
new /obj/item/ore/diamond(loc)
|
||||
new /obj/item/stack/ore/diamond(loc)
|
||||
qdel(src)
|
||||
@@ -365,6 +365,7 @@
|
||||
buildstacktype = /obj/item/stack/tile/brass
|
||||
buildstackamount = 1
|
||||
item_chair = null
|
||||
var/turns = 0
|
||||
|
||||
/obj/structure/chair/brass/Destroy()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
@@ -373,11 +374,15 @@
|
||||
/obj/structure/chair/brass/process()
|
||||
setDir(turn(dir,-90))
|
||||
playsound(src, 'sound/effects/servostep.ogg', 50, FALSE)
|
||||
turns++
|
||||
if(turns >= 8)
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/obj/structure/chair/brass/ratvar_act()
|
||||
return
|
||||
|
||||
/obj/structure/chair/brass/AltClick(mob/living/user)
|
||||
turns = 0
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if(!isprocessing)
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
/obj/structure/closet/crate/New()
|
||||
..()
|
||||
if(icon_state == "[initial(icon_state)]open")
|
||||
opened = TRUE
|
||||
update_icon()
|
||||
|
||||
/obj/structure/closet/crate/CanPass(atom/movable/mover, turf/target)
|
||||
@@ -87,8 +89,8 @@
|
||||
|
||||
/obj/structure/closet/crate/freezer/blood/PopulateContents()
|
||||
. = ..()
|
||||
new /obj/item/reagent_containers/blood/empty(src)
|
||||
new /obj/item/reagent_containers/blood/empty(src)
|
||||
new /obj/item/reagent_containers/blood(src)
|
||||
new /obj/item/reagent_containers/blood(src)
|
||||
new /obj/item/reagent_containers/blood/AMinus(src)
|
||||
new /obj/item/reagent_containers/blood/BMinus(src)
|
||||
new /obj/item/reagent_containers/blood/BPlus(src)
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
//Chain link fences
|
||||
//Sprites ported from /VG/
|
||||
|
||||
|
||||
#define CUT_TIME 100
|
||||
#define CLIMB_TIME 150
|
||||
|
||||
#define NO_HOLE 0 //section is intact
|
||||
#define MEDIUM_HOLE 1 //medium hole in the section - can climb through
|
||||
#define LARGE_HOLE 2 //large hole in the section - can walk through
|
||||
#define MAX_HOLE_SIZE LARGE_HOLE
|
||||
|
||||
/obj/structure/fence
|
||||
name = "fence"
|
||||
desc = "A chain link fence. Not as effective as a wall, but generally it keeps people out."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
icon = 'icons/obj/fence.dmi'
|
||||
icon_state = "straight"
|
||||
|
||||
var/cuttable = TRUE
|
||||
var/hole_size= NO_HOLE
|
||||
var/invulnerable = FALSE
|
||||
|
||||
/obj/structure/fence/Initialize()
|
||||
. = ..()
|
||||
|
||||
update_cut_status()
|
||||
|
||||
/obj/structure/fence/examine(mob/user)
|
||||
.=..()
|
||||
|
||||
switch(hole_size)
|
||||
if(MEDIUM_HOLE)
|
||||
user.show_message("There is a large hole in \the [src].")
|
||||
if(LARGE_HOLE)
|
||||
user.show_message("\The [src] has been completely cut through.")
|
||||
|
||||
/obj/structure/fence/end
|
||||
icon_state = "end"
|
||||
cuttable = FALSE
|
||||
|
||||
/obj/structure/fence/corner
|
||||
icon_state = "corner"
|
||||
cuttable = FALSE
|
||||
|
||||
/obj/structure/fence/post
|
||||
icon_state = "post"
|
||||
cuttable = FALSE
|
||||
|
||||
/obj/structure/fence/cut/medium
|
||||
icon_state = "straight_cut2"
|
||||
hole_size = MEDIUM_HOLE
|
||||
|
||||
/obj/structure/fence/cut/large
|
||||
icon_state = "straight_cut3"
|
||||
hole_size = LARGE_HOLE
|
||||
|
||||
/obj/structure/fence/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/wirecutters))
|
||||
if(!cuttable)
|
||||
to_chat(user, "<span class='notice'>This section of the fence can't be cut.</span>")
|
||||
return
|
||||
if(invulnerable)
|
||||
to_chat(user, "<span class='notice'>This fence is too strong to cut through.</span>")
|
||||
return
|
||||
var/current_stage = hole_size
|
||||
if(current_stage >= MAX_HOLE_SIZE)
|
||||
to_chat(user, "<span class='notice'>This fence has too much cut out of it already.</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] starts cutting through \the [src] with \the [W].</span>",\
|
||||
"<span class='danger'>You start cutting through \the [src] with \the [W].</span>")
|
||||
|
||||
if(do_after(user, CUT_TIME*W.toolspeed, target = src))
|
||||
if(current_stage == hole_size)
|
||||
switch(++hole_size)
|
||||
if(MEDIUM_HOLE)
|
||||
visible_message("<span class='notice'>\The [user] cuts into \the [src] some more.</span>")
|
||||
to_chat(user, "<span class='info'>You could probably fit yourself through that hole now. Although climbing through would be much faster if you made it even bigger.</span>")
|
||||
climbable = TRUE
|
||||
if(LARGE_HOLE)
|
||||
visible_message("<span class='notice'>\The [user] completely cuts through \the [src].</span>")
|
||||
to_chat(user, "<span class='info'>The hole in \the [src] is now big enough to walk through.</span>")
|
||||
climbable = FALSE
|
||||
|
||||
update_cut_status()
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/structure/fence/proc/update_cut_status()
|
||||
if(!cuttable)
|
||||
return
|
||||
density = TRUE
|
||||
switch(hole_size)
|
||||
if(NO_HOLE)
|
||||
icon_state = initial(icon_state)
|
||||
if(MEDIUM_HOLE)
|
||||
icon_state = "straight_cut2"
|
||||
if(LARGE_HOLE)
|
||||
icon_state = "straight_cut3"
|
||||
density = FALSE
|
||||
|
||||
//FENCE DOORS
|
||||
|
||||
/obj/structure/fence/door
|
||||
name = "fence door"
|
||||
desc = "Not very useful without a real lock."
|
||||
icon_state = "door_closed"
|
||||
cuttable = FALSE
|
||||
var/open = FALSE
|
||||
|
||||
/obj/structure/fence/door/Initialize()
|
||||
. = ..()
|
||||
|
||||
update_door_status()
|
||||
|
||||
/obj/structure/fence/door/opened
|
||||
icon_state = "door_opened"
|
||||
open = TRUE
|
||||
density = TRUE
|
||||
|
||||
/obj/structure/fence/door/attack_hand(mob/user)
|
||||
if(can_open(user))
|
||||
toggle(user)
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/structure/fence/door/proc/toggle(mob/user)
|
||||
switch(open)
|
||||
if(FALSE)
|
||||
visible_message("<span class='notice'>\The [user] opens \the [src].</span>")
|
||||
open = TRUE
|
||||
if(TRUE)
|
||||
visible_message("<span class='notice'>\The [user] closes \the [src].</span>")
|
||||
open = FALSE
|
||||
|
||||
update_door_status()
|
||||
playsound(src, 'sound/machines/click.ogg', 100, 1)
|
||||
|
||||
/obj/structure/fence/door/proc/update_door_status()
|
||||
switch(open)
|
||||
if(FALSE)
|
||||
density = TRUE
|
||||
icon_state = "door_closed"
|
||||
if(TRUE)
|
||||
density = FALSE
|
||||
icon_state = "door_opened"
|
||||
|
||||
/obj/structure/fence/door/proc/can_open(mob/user)
|
||||
return TRUE
|
||||
|
||||
#undef CUT_TIME
|
||||
#undef CLIMB_TIME
|
||||
|
||||
#undef NO_HOLE
|
||||
#undef SMALL_HOLE
|
||||
#undef MEDIUM_HOLE
|
||||
#undef LARGE_HOLE
|
||||
#undef MAX_HOLE_SIZE
|
||||
@@ -161,3 +161,9 @@
|
||||
name = "shrine"
|
||||
desc = "A shrine dedicated to a deity."
|
||||
icon_state = "shrine"
|
||||
|
||||
/obj/structure/fluff/fokoff_sign
|
||||
name = "crude sign"
|
||||
desc = "A crudely-made sign with the words 'fok of' written in some sort of red paint."
|
||||
icon = 'icons/obj/fluff.dmi'
|
||||
icon_state = "fokof"
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
name = "magic mirror"
|
||||
desc = "Turn and face the strange... face."
|
||||
icon_state = "magic_mirror"
|
||||
var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant")
|
||||
var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant", "android", "synth")
|
||||
var/list/choosable_races = list()
|
||||
|
||||
/obj/structure/mirror/magic/New()
|
||||
|
||||
@@ -352,7 +352,9 @@
|
||||
|
||||
|
||||
/turf/open/rad_act(pulse_strength)
|
||||
. = ..()
|
||||
if (air.gases[/datum/gas/carbon_dioxide] && air.gases[/datum/gas/oxygen])
|
||||
pulse_strength = min(pulse_strength,air.gases[/datum/gas/carbon_dioxide][MOLES]*1000,air.gases[/datum/gas/oxygen][MOLES]*2000) //Ensures matter is conserved properly
|
||||
air.gases[/datum/gas/carbon_dioxide][MOLES]=max(air.gases[/datum/gas/carbon_dioxide][MOLES]-(pulse_strength/1000),0)
|
||||
air.gases[/datum/gas/oxygen][MOLES]=max(air.gases[/datum/gas/oxygen][MOLES]-(pulse_strength/2000),0)
|
||||
air.assert_gas(/datum/gas/pluoxium)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
floor_tile = /obj/item/stack/tile/grass
|
||||
broken_states = list("sand")
|
||||
flags_1 = NONE
|
||||
var/ore_type = /obj/item/ore/glass
|
||||
var/ore_type = /obj/item/stack/ore/glass
|
||||
var/turfverb = "uproot"
|
||||
|
||||
/turf/open/floor/grass/Initialize()
|
||||
@@ -81,9 +81,8 @@
|
||||
|
||||
/turf/open/floor/grass/attackby(obj/item/C, mob/user, params)
|
||||
if(istype(C, /obj/item/shovel) && params)
|
||||
new ore_type(src)
|
||||
new ore_type(src) //Make some sand if you shovel grass
|
||||
user.visible_message("[user] digs up [src].", "<span class='notice'>You [src.turfverb] [src].</span>")
|
||||
new ore_type(src, 2)
|
||||
user.visible_message("[user] digs up [src].", "<span class='notice'>You [turfverb] [src].</span>")
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
|
||||
make_plating()
|
||||
if(..())
|
||||
@@ -109,7 +108,7 @@
|
||||
name = "volcanic floor"
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "basalt"
|
||||
ore_type = /obj/item/ore/glass/basalt
|
||||
ore_type = /obj/item/stack/ore/glass/basalt
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
slowdown = 0
|
||||
|
||||
@@ -126,7 +125,7 @@
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "basalt"
|
||||
floor_tile = /obj/item/stack/tile/basalt
|
||||
ore_type = /obj/item/ore/glass/basalt
|
||||
ore_type = /obj/item/stack/ore/glass/basalt
|
||||
turfverb = "dig up"
|
||||
slowdown = 0
|
||||
|
||||
@@ -183,11 +182,11 @@
|
||||
A.narsie_act()
|
||||
|
||||
/turf/open/floor/carpet/break_tile()
|
||||
broken = 1
|
||||
broken = TRUE
|
||||
update_icon()
|
||||
|
||||
/turf/open/floor/carpet/burn_tile()
|
||||
burnt = 1
|
||||
burnt = TRUE
|
||||
update_icon()
|
||||
|
||||
/turf/open/floor/carpet/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/environment_type = "asteroid"
|
||||
var/turf_type = /turf/open/floor/plating/asteroid //Because caves do whacky shit to revert to normal
|
||||
var/floor_variance = 20 //probability floor has a different icon state
|
||||
archdrops = list(/obj/item/ore/glass = 5)
|
||||
archdrops = list(/obj/item/stack/ore/glass = 5)
|
||||
attachment_holes = FALSE
|
||||
|
||||
/turf/open/floor/plating/asteroid/Initialize()
|
||||
@@ -41,7 +41,7 @@
|
||||
if(istype(W, /obj/item/storage/bag/ore))
|
||||
var/obj/item/storage/bag/ore/S = W
|
||||
if(S.collection_mode == 1)
|
||||
for(var/obj/item/ore/O in src.contents)
|
||||
for(var/obj/item/stack/ore/O in contents)
|
||||
O.attackby(W,user)
|
||||
return
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
icon_state = "basalt"
|
||||
icon_plating = "basalt"
|
||||
environment_type = "basalt"
|
||||
archdrops = list(/obj/item/ore/glass/basalt = 5)
|
||||
archdrops = list(/obj/item/stack/ore/glass/basalt = 5)
|
||||
floor_variance = 15
|
||||
|
||||
/turf/open/floor/plating/asteroid/basalt/lava //lava underneath
|
||||
@@ -213,7 +213,7 @@
|
||||
C.produce_tunnel_from_data(rand(10, 15), dir)
|
||||
else
|
||||
SpawnFloor(tunnel)
|
||||
else //if(!istype(tunnel, src.parent)) // We hit space/normal/wall, stop our tunnel.
|
||||
else //if(!istype(tunnel, parent)) // We hit space/normal/wall, stop our tunnel.
|
||||
break
|
||||
|
||||
// Chance to change our direction left or right.
|
||||
@@ -284,17 +284,42 @@
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow
|
||||
icon_state = "snow"
|
||||
icon_plating = "snow"
|
||||
initial_gas_mix = "TEMP=180"
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
slowdown = 2
|
||||
environment_type = "snow"
|
||||
flags_1 = NONE
|
||||
planetary_atmos = TRUE
|
||||
archdrops = list(/obj/item/stack/sheet/mineral/snow = 5)
|
||||
burnt_states = list("snow_dug")
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/burn_tile()
|
||||
if(!burnt)
|
||||
visible_message("<span class='danger'>[src] melts away!.</span>")
|
||||
slowdown = 0
|
||||
burnt = TRUE
|
||||
icon_state = "snow_dug"
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/ice
|
||||
name = "icey snow"
|
||||
desc = "Looks colder."
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
|
||||
initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"
|
||||
floor_variance = 0
|
||||
icon_state = "snow-ice"
|
||||
icon_plating = "snow-ice"
|
||||
environment_type = "snow_cavern"
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/ice/burn_tile()
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/temperatre
|
||||
initial_gas_mix = "TEMP=255.37"
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=255.37"
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
planetary_atmos = FALSE
|
||||
|
||||
@@ -122,18 +122,31 @@
|
||||
/turf/open/floor/plating/ironsand/burn_tile()
|
||||
return
|
||||
|
||||
|
||||
/turf/open/floor/plating/ice
|
||||
name = "ice sheet"
|
||||
desc = "A sheet of solid ice. Looks slippery."
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
icon_state = "ice"
|
||||
icon = 'icons/turf/floors/ice_turf.dmi'
|
||||
icon_state = "unsmooth"
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
temperature = 180
|
||||
planetary_atmos = TRUE
|
||||
baseturfs = /turf/open/floor/plating/ice
|
||||
slowdown = 1
|
||||
wet = TURF_WET_PERMAFROST
|
||||
attachment_holes = FALSE
|
||||
|
||||
/turf/open/floor/plating/ice/HandleWet()
|
||||
if(wet == TURF_WET_ICE)
|
||||
return
|
||||
..()
|
||||
MakeSlippery(TURF_WET_ICE) //rewet after ..() clears out lube/ice etc.
|
||||
|
||||
/turf/open/floor/plating/ice/smooth
|
||||
icon_state = "smooth"
|
||||
smooth = SMOOTH_MORE | SMOOTH_BORDER
|
||||
canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice)
|
||||
/turf/open/floor/plating/ice/colder
|
||||
|
||||
/turf/open/floor/plating/ice/colder
|
||||
temperature = 140
|
||||
|
||||
@@ -149,11 +162,23 @@
|
||||
|
||||
/turf/open/floor/plating/snowed
|
||||
name = "snowed-over plating"
|
||||
desc = "A section of plating covered in a light layer of snow."
|
||||
desc = "A section of heated plating, helps keep the snow from stacking up too high."
|
||||
icon = 'icons/turf/snow.dmi'
|
||||
icon_state = "snowplating"
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
temperature = 180
|
||||
attachment_holes = FALSE
|
||||
planetary_atmos = TRUE
|
||||
|
||||
/turf/open/floor/plating/snowed/cavern
|
||||
initial_gas_mix = "o2=0;n2=82;plasma=24;TEMP=120"
|
||||
|
||||
/turf/open/floor/plating/snowed/smoothed
|
||||
smooth = SMOOTH_MORE | SMOOTH_BORDER
|
||||
canSmoothWith = list(/turf/open/floor/plating/snowed/smoothed, /turf/open/floor/plating/snowed)
|
||||
planetary_atmos = TRUE
|
||||
icon = 'icons/turf/floors/snow_turf.dmi'
|
||||
icon_state = "smooth"
|
||||
|
||||
/turf/open/floor/plating/snowed/colder
|
||||
temperature = 140
|
||||
|
||||
@@ -71,11 +71,9 @@
|
||||
return attack_hand(user)
|
||||
|
||||
/turf/closed/mineral/proc/gets_drilled()
|
||||
if (mineralType && (src.mineralAmt > 0) && (src.mineralAmt < 11))
|
||||
var/i
|
||||
for(i in 1 to mineralAmt)
|
||||
new mineralType(src)
|
||||
SSblackbox.record_feedback("tally", "ore_mined", 1, mineralType)
|
||||
if (mineralType && (mineralAmt > 0))
|
||||
new mineralType(src, mineralAmt)
|
||||
SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, mineralType)
|
||||
for(var/obj/effect/temp_visual/mining_overlay/M in src)
|
||||
qdel(M)
|
||||
var/flags = NONE
|
||||
@@ -108,7 +106,7 @@
|
||||
else if(iscyborg(AM))
|
||||
var/mob/living/silicon/robot/R = AM
|
||||
if(istype(R.module_active, /obj/item/pickaxe))
|
||||
src.attackby(R.module_active,R)
|
||||
attackby(R.module_active,R)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -121,12 +119,12 @@
|
||||
switch(severity)
|
||||
if(3)
|
||||
if (prob(75))
|
||||
src.gets_drilled(null, 1)
|
||||
gets_drilled(null, 1)
|
||||
if(2)
|
||||
if (prob(90))
|
||||
src.gets_drilled(null, 1)
|
||||
gets_drilled(null, 1)
|
||||
if(1)
|
||||
src.gets_drilled(null, 1)
|
||||
gets_drilled(null, 1)
|
||||
return
|
||||
|
||||
/turf/closed/mineral/Spread(turf/T)
|
||||
@@ -225,7 +223,7 @@
|
||||
|
||||
|
||||
/turf/closed/mineral/iron
|
||||
mineralType = /obj/item/ore/iron
|
||||
mineralType = /obj/item/stack/ore/iron
|
||||
spreadChance = 20
|
||||
spread = 1
|
||||
scan_state = "rock_Iron"
|
||||
@@ -237,9 +235,18 @@
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
/turf/closed/mineral/iron/ice
|
||||
environment_type = "snow_cavern"
|
||||
icon_state = "icerock_iron"
|
||||
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow/ice
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
defer_change = TRUE
|
||||
|
||||
|
||||
/turf/closed/mineral/uranium
|
||||
mineralType = /obj/item/ore/uranium
|
||||
mineralType = /obj/item/stack/ore/uranium
|
||||
spreadChance = 5
|
||||
spread = 1
|
||||
scan_state = "rock_Uranium"
|
||||
@@ -253,7 +260,7 @@
|
||||
|
||||
|
||||
/turf/closed/mineral/diamond
|
||||
mineralType = /obj/item/ore/diamond
|
||||
mineralType = /obj/item/stack/ore/diamond
|
||||
spreadChance = 0
|
||||
spread = 1
|
||||
scan_state = "rock_Diamond"
|
||||
@@ -265,9 +272,18 @@
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
/turf/closed/mineral/diamond/ice
|
||||
environment_type = "snow_cavern"
|
||||
icon_state = "icerock_diamond"
|
||||
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow/ice
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
defer_change = TRUE
|
||||
|
||||
|
||||
/turf/closed/mineral/gold
|
||||
mineralType = /obj/item/ore/gold
|
||||
mineralType = /obj/item/stack/ore/gold
|
||||
spreadChance = 5
|
||||
spread = 1
|
||||
scan_state = "rock_Gold"
|
||||
@@ -281,7 +297,7 @@
|
||||
|
||||
|
||||
/turf/closed/mineral/silver
|
||||
mineralType = /obj/item/ore/silver
|
||||
mineralType = /obj/item/stack/ore/silver
|
||||
spreadChance = 5
|
||||
spread = 1
|
||||
scan_state = "rock_Silver"
|
||||
@@ -295,7 +311,7 @@
|
||||
|
||||
|
||||
/turf/closed/mineral/titanium
|
||||
mineralType = /obj/item/ore/titanium
|
||||
mineralType = /obj/item/stack/ore/titanium
|
||||
spreadChance = 5
|
||||
spread = 1
|
||||
scan_state = "rock_Titanium"
|
||||
@@ -309,7 +325,7 @@
|
||||
|
||||
|
||||
/turf/closed/mineral/plasma
|
||||
mineralType = /obj/item/ore/plasma
|
||||
mineralType = /obj/item/stack/ore/plasma
|
||||
spreadChance = 8
|
||||
spread = 1
|
||||
scan_state = "rock_Plasma"
|
||||
@@ -321,9 +337,19 @@
|
||||
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
|
||||
defer_change = 1
|
||||
|
||||
/turf/closed/mineral/plasma/ice
|
||||
environment_type = "snow_cavern"
|
||||
icon_state = "icerock_plasma"
|
||||
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow/ice
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
defer_change = TRUE
|
||||
|
||||
|
||||
|
||||
/turf/closed/mineral/bananium
|
||||
mineralType = /obj/item/ore/bananium
|
||||
mineralType = /obj/item/stack/ore/bananium
|
||||
mineralAmt = 3
|
||||
spreadChance = 0
|
||||
spread = 0
|
||||
@@ -331,7 +357,7 @@
|
||||
|
||||
|
||||
/turf/closed/mineral/bscrystal
|
||||
mineralType = /obj/item/ore/bluespace_crystal
|
||||
mineralType = /obj/item/stack/ore/bluespace_crystal
|
||||
mineralAmt = 1
|
||||
spreadChance = 0
|
||||
spread = 0
|
||||
@@ -370,6 +396,29 @@
|
||||
turf_type = /turf/open/floor/plating/ashplanet/rocky
|
||||
defer_change = 1
|
||||
|
||||
/turf/closed/mineral/snowmountain
|
||||
name = "snowy mountainside"
|
||||
icon = 'icons/turf/mining.dmi'
|
||||
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
|
||||
icon_state = "mountainrock"
|
||||
smooth = SMOOTH_MORE|SMOOTH_BORDER
|
||||
canSmoothWith = list (/turf/closed)
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
environment_type = "snow"
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow
|
||||
defer_change = TRUE
|
||||
|
||||
/turf/closed/mineral/snowmountain/cavern
|
||||
name = "ice cavern rock"
|
||||
icon = 'icons/turf/mining.dmi'
|
||||
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
|
||||
icon_state = "icerock"
|
||||
smooth = SMOOTH_MORE|SMOOTH_BORDER
|
||||
canSmoothWith = list (/turf/closed)
|
||||
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
|
||||
environment_type = "snow_cavern"
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow/ice
|
||||
|
||||
//GIBTONITE
|
||||
|
||||
@@ -441,7 +490,7 @@
|
||||
stage = GIBTONITE_STABLE
|
||||
if(det_time < 0)
|
||||
det_time = 0
|
||||
visible_message("<span class='notice'>The chain reaction was stopped! The gibtonite had [src.det_time] reactions left till the explosion!</span>")
|
||||
visible_message("<span class='notice'>The chain reaction was stopped! The gibtonite had [det_time] reactions left till the explosion!</span>")
|
||||
|
||||
/turf/closed/mineral/gibtonite/gets_drilled(mob/user, triggered_by_explosion = 0)
|
||||
if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated
|
||||
|
||||
@@ -8,11 +8,18 @@ GLOBAL_PROTECT(admin_ranks)
|
||||
var/list/subs
|
||||
|
||||
/datum/admin_rank/New(init_name, init_rights, list/init_adds, list/init_subs)
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
if (name == "NoRank") //only del if this is a true creation (and not just a New() proc call), other wise trialmins/coders could abuse this to deadmin other admins
|
||||
QDEL_IN(src, 0)
|
||||
CRASH("Admin proc call creation of admin datum")
|
||||
return
|
||||
name = init_name
|
||||
switch(name)
|
||||
if("Removed",null,"")
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
QDEL_IN(src, 0)
|
||||
throw EXCEPTION("invalid admin-rank name")
|
||||
return
|
||||
if(init_rights)
|
||||
@@ -24,6 +31,14 @@ GLOBAL_PROTECT(admin_ranks)
|
||||
adds = init_adds
|
||||
subs = init_subs
|
||||
|
||||
/datum/admin_rank/Destroy()
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return QDEL_HINT_LETMELIVE
|
||||
. = ..()
|
||||
|
||||
/datum/admin_rank/vv_edit_var(var_name, var_value)
|
||||
return FALSE
|
||||
|
||||
@@ -78,7 +93,7 @@ GLOBAL_PROTECT(admin_ranks)
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin_private("[key_name(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return
|
||||
var/flag = admin_keyword_to_flag(word, previous_rights)
|
||||
if(flag)
|
||||
|
||||
@@ -40,7 +40,10 @@
|
||||
// Jim (Status) FLW PM TP
|
||||
/datum/antagonist/proc/antag_listing_entry()
|
||||
var/list/parts = list()
|
||||
parts += antag_listing_name()
|
||||
if(show_name_in_check_antagonists)
|
||||
parts += "[antag_listing_name()]([name])"
|
||||
else
|
||||
parts += antag_listing_name()
|
||||
parts += antag_listing_status()
|
||||
parts += antag_listing_commands()
|
||||
return "<tr><td>[parts.Join("</td><td>")]</td></tr>"
|
||||
|
||||
@@ -27,6 +27,14 @@ GLOBAL_PROTECT(href_token)
|
||||
var/deadmined
|
||||
|
||||
/datum/admins/New(datum/admin_rank/R, ckey, force_active = FALSE)
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
if (!target) //only del if this is a true creation (and not just a New() proc call), other wise trialmins/coders could abuse this to deadmin other admins
|
||||
QDEL_IN(src, 0)
|
||||
CRASH("Admin proc call creation of admin datum")
|
||||
return
|
||||
if(!ckey)
|
||||
QDEL_IN(src, 0)
|
||||
throw EXCEPTION("Admin datum created without a ckey")
|
||||
@@ -48,8 +56,20 @@ GLOBAL_PROTECT(href_token)
|
||||
else
|
||||
deactivate()
|
||||
|
||||
/datum/admins/Destroy()
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return QDEL_HINT_LETMELIVE
|
||||
. = ..()
|
||||
|
||||
/datum/admins/proc/activate()
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return
|
||||
GLOB.deadmins -= target
|
||||
GLOB.admin_datums[target] = src
|
||||
deadmined = FALSE
|
||||
@@ -58,6 +78,11 @@ GLOBAL_PROTECT(href_token)
|
||||
|
||||
|
||||
/datum/admins/proc/deactivate()
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return
|
||||
GLOB.deadmins[target] = src
|
||||
GLOB.admin_datums -= target
|
||||
deadmined = TRUE
|
||||
@@ -70,14 +95,14 @@ GLOBAL_PROTECT(href_token)
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin_private("[key_name(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return
|
||||
|
||||
if(istype(C))
|
||||
if(C.ckey != target)
|
||||
var/msg = " has attempted to associate with [target]'s admin datum"
|
||||
message_admins("[key_name_admin(C)][msg]")
|
||||
log_admin_private("[key_name(C)][msg]")
|
||||
log_admin("[key_name(C)][msg]")
|
||||
return
|
||||
if (deadmined)
|
||||
activate()
|
||||
@@ -88,6 +113,11 @@ GLOBAL_PROTECT(href_token)
|
||||
GLOB.admins |= C
|
||||
|
||||
/datum/admins/proc/disassociate()
|
||||
if(IsAdminAdvancedProcCall())
|
||||
var/msg = " has tried to elevate permissions!"
|
||||
message_admins("[key_name_admin(usr)][msg]")
|
||||
log_admin("[key_name(usr)][msg]")
|
||||
return
|
||||
if(owner)
|
||||
GLOB.admins -= owner
|
||||
owner.remove_admin_verbs()
|
||||
@@ -173,4 +203,4 @@ you will have to do something like if(client.rights & R_ADMIN) yourself.
|
||||
return "admin_token=[RawHrefToken(forceGlobal)]"
|
||||
|
||||
/proc/HrefTokenFormField(forceGlobal = FALSE)
|
||||
return "<input type='hidden' name='admin_token' value='[RawHrefToken(forceGlobal)]'>"
|
||||
return "<input type='hidden' name='admin_token' value='[RawHrefToken(forceGlobal)]'>"
|
||||
|
||||
@@ -271,77 +271,7 @@
|
||||
|
||||
// DEATH SQUADS
|
||||
/datum/admins/proc/makeDeathsquad()
|
||||
var/mission = input("Assign a mission to the deathsquad", "Assign Mission", "Leave no witnesses.")
|
||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for an elite Nanotrasen Strike Team?", "deathsquad", null)
|
||||
var/squadSpawned = 0
|
||||
|
||||
if(candidates.len >= 2) //Minimum 2 to be considered a squad
|
||||
//Pick the lucky players
|
||||
var/numagents = min(5,candidates.len) //How many commandos to spawn
|
||||
var/list/spawnpoints = GLOB.emergencyresponseteamspawn
|
||||
while(numagents && candidates.len)
|
||||
if (numagents > spawnpoints.len)
|
||||
numagents--
|
||||
continue // This guy's unlucky, not enough spawn points, we skip him.
|
||||
var/spawnloc = spawnpoints[numagents]
|
||||
var/mob/dead/observer/chosen_candidate = pick(candidates)
|
||||
candidates -= chosen_candidate
|
||||
if(!chosen_candidate.key)
|
||||
continue
|
||||
|
||||
//Spawn and equip the commando
|
||||
var/mob/living/carbon/human/Commando = new(spawnloc)
|
||||
chosen_candidate.client.prefs.copy_to(Commando)
|
||||
if(numagents == 1) //If Squad Leader
|
||||
Commando.real_name = "Officer [pick(GLOB.commando_names)]"
|
||||
Commando.equipOutfit(/datum/outfit/death_commando/officer)
|
||||
else
|
||||
Commando.real_name = "Trooper [pick(GLOB.commando_names)]"
|
||||
Commando.equipOutfit(/datum/outfit/death_commando)
|
||||
Commando.dna.update_dna_identity()
|
||||
Commando.key = chosen_candidate.key
|
||||
Commando.mind.assigned_role = "Death Commando"
|
||||
for(var/obj/machinery/door/poddoor/ert/door in GLOB.airlocks)
|
||||
spawn(0)
|
||||
door.open()
|
||||
|
||||
//Assign antag status and the mission
|
||||
Commando.mind.special_role = "deathsquad"
|
||||
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = Commando.mind
|
||||
missionobj.explanation_text = mission
|
||||
missionobj.completed = 1
|
||||
Commando.mind.objectives += missionobj
|
||||
|
||||
Commando.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
//Greet the commando
|
||||
to_chat(Commando, "<B><font size=3 color=red>You are the [numagents==1?"Deathsquad Officer":"Death Commando"].</font></B>")
|
||||
var/missiondesc = "Your squad is being sent on a mission to [station_name()] by Nanotrasen's Security Division."
|
||||
if(numagents == 1) //If Squad Leader
|
||||
missiondesc += " Lead your squad to ensure the completion of the mission. Board the shuttle when your team is ready."
|
||||
else
|
||||
missiondesc += " Follow orders given to you by your squad leader."
|
||||
missiondesc += "<BR><B>Your Mission</B>: [mission]"
|
||||
to_chat(Commando, missiondesc)
|
||||
|
||||
if(CONFIG_GET(flag/enforce_human_authority))
|
||||
Commando.set_species(/datum/species/human)
|
||||
|
||||
//Logging and cleanup
|
||||
if(numagents == 1)
|
||||
message_admins("The deathsquad has spawned with the mission: [mission].")
|
||||
log_game("[key_name(Commando)] has been selected as a Death Commando")
|
||||
numagents--
|
||||
squadSpawned++
|
||||
|
||||
if (squadSpawned)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
return
|
||||
return makeEmergencyresponseteam(ERT_DEATHSQUAD)
|
||||
|
||||
/datum/admins/proc/makeOfficial()
|
||||
var/mission = input("Assign a task for the official", "Assign Task", "Conduct a routine preformance review of [station_name()] and its Captain.")
|
||||
@@ -386,38 +316,70 @@
|
||||
return 0
|
||||
|
||||
// CENTCOM RESPONSE TEAM
|
||||
/datum/admins/proc/makeEmergencyresponseteam()
|
||||
var/alert = input("Which team should we send?", "Select Response Level") as null|anything in list("Green: CentCom Official", "Blue: Light ERT (No Armoury Access)", "Amber: Full ERT (Armoury Access)", "Red: Elite ERT (Armoury Access + Pulse Weapons)", "Delta: Deathsquad")
|
||||
if(!alert)
|
||||
return
|
||||
/datum/admins/proc/makeEmergencyresponseteam(alert_type)
|
||||
var/alert
|
||||
if(!alert_type)
|
||||
alert = input("Which team should we send?", "Select Response Level") as null|anything in list("Green: CentCom Official", "Blue: Light ERT (No Armoury Access)", "Amber: Full ERT (Armoury Access)", "Red: Elite ERT (Armoury Access + Pulse Weapons)", "Delta: Deathsquad")
|
||||
if(!alert)
|
||||
return
|
||||
else
|
||||
alert = alert_type
|
||||
|
||||
var/teamsize = 0
|
||||
var/deathsquad = FALSE
|
||||
|
||||
switch(alert)
|
||||
if("Delta: Deathsquad")
|
||||
return makeDeathsquad()
|
||||
alert = ERT_DEATHSQUAD
|
||||
teamsize = 5
|
||||
deathsquad = TRUE
|
||||
if("Red: Elite ERT (Armoury Access + Pulse Weapons)")
|
||||
alert = "Red"
|
||||
alert = ERT_RED
|
||||
if("Amber: Full ERT (Armoury Access)")
|
||||
alert = "Amber"
|
||||
alert = ERT_AMBER
|
||||
if("Blue: Light ERT (No Armoury Access)")
|
||||
alert = "Blue"
|
||||
alert = ERT_BLUE
|
||||
if("Green: CentCom Official")
|
||||
return makeOfficial()
|
||||
var/teamcheck = input("Maximum size of team? (7 max)", "Select Team Size",4) as null|num
|
||||
if(isnull(teamcheck))
|
||||
return
|
||||
var/teamsize = min(7,teamcheck)
|
||||
var/mission = input("Assign a mission to the Emergency Response Team", "Assign Mission", "Assist the station.") as null|text
|
||||
else
|
||||
return
|
||||
|
||||
if(!teamsize)
|
||||
var/teamcheck = input("Maximum size of team? (7 max)", "Select Team Size",4) as null|num
|
||||
if(isnull(teamcheck))
|
||||
return
|
||||
teamsize = min(7,teamcheck)
|
||||
|
||||
|
||||
var/default_mission = deathsquad ? "Leave no witnesses." : "Assist the station."
|
||||
var/mission = input("Assign a mission to the Emergency Response Team", "Assign Mission", default_mission) as null|text
|
||||
if(!mission)
|
||||
return
|
||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a Code [alert] Nanotrasen Emergency Response Team?", "deathsquad", null)
|
||||
|
||||
var/prompt_name = deathsquad ? "an elite Nanotrasen Strike Team" : "a Code [alert] Nanotrasen Emergency Response Team"
|
||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [prompt_name] ?", "deathsquad", null)
|
||||
var/teamSpawned = 0
|
||||
|
||||
if(candidates.len > 0)
|
||||
//Pick the (un)lucky players
|
||||
var/numagents = min(teamsize,candidates.len) //How many officers to spawn
|
||||
var/redalert //If the ert gets super weapons
|
||||
if (alert == "Red")
|
||||
numagents = min(teamsize,candidates.len)
|
||||
redalert = 1
|
||||
|
||||
//Create team
|
||||
var/datum/team/ert/ert_team = new
|
||||
if(deathsquad)
|
||||
ert_team.name = "Death Squad"
|
||||
|
||||
//Asign team objective
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.team = ert_team
|
||||
missionobj.explanation_text = mission
|
||||
missionobj.completed = 1
|
||||
ert_team.objectives += missionobj
|
||||
ert_team.mission = missionobj
|
||||
|
||||
//We give these out in order, then back from the start if there's more than 3
|
||||
var/list/role_order = list(ERT_SEC,ERT_MED,ERT_ENG)
|
||||
|
||||
var/list/spawnpoints = GLOB.emergencyresponseteamspawn
|
||||
while(numagents && candidates.len)
|
||||
if (numagents > spawnpoints.len)
|
||||
@@ -429,75 +391,38 @@
|
||||
if(!chosen_candidate.key)
|
||||
continue
|
||||
|
||||
//Spawn and equip the officer
|
||||
//Spawn the body
|
||||
var/mob/living/carbon/human/ERTOperative = new(spawnloc)
|
||||
var/list/lastname = GLOB.last_names
|
||||
chosen_candidate.client.prefs.copy_to(ERTOperative)
|
||||
var/ertname = pick(lastname)
|
||||
switch(numagents)
|
||||
if(1)
|
||||
ERTOperative.real_name = "Commander [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/commander/alert : /datum/outfit/ert/commander)
|
||||
if(2)
|
||||
ERTOperative.real_name = "Security Officer [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/security/alert : /datum/outfit/ert/security)
|
||||
if(3)
|
||||
ERTOperative.real_name = "Medical Officer [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/medic/alert : /datum/outfit/ert/medic)
|
||||
if(4)
|
||||
ERTOperative.real_name = "Engineer [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/engineer/alert : /datum/outfit/ert/engineer)
|
||||
if(5)
|
||||
ERTOperative.real_name = "Security Officer [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/security/alert : /datum/outfit/ert/security)
|
||||
if(6)
|
||||
ERTOperative.real_name = "Medical Officer [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/medic/alert : /datum/outfit/ert/medic)
|
||||
if(7)
|
||||
ERTOperative.real_name = "Engineer [ertname]"
|
||||
ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/engineer/alert : /datum/outfit/ert/engineer)
|
||||
ERTOperative.dna.update_dna_identity()
|
||||
ERTOperative.key = chosen_candidate.key
|
||||
ERTOperative.mind.assigned_role = "ERT"
|
||||
|
||||
//Open the Armory doors
|
||||
if(alert != "Blue")
|
||||
for(var/obj/machinery/door/poddoor/ert/door in GLOB.airlocks)
|
||||
spawn(0)
|
||||
door.open()
|
||||
|
||||
//Assign antag status and the mission
|
||||
ERTOperative.mind.special_role = "ERT"
|
||||
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = ERTOperative.mind
|
||||
missionobj.explanation_text = mission
|
||||
missionobj.completed = 1
|
||||
ERTOperative.mind.objectives += missionobj
|
||||
|
||||
ERTOperative.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
//Greet the commando
|
||||
to_chat(ERTOperative, "<B><font size=3 color=red>You are [numagents==1?"the Emergency Response Team Commander":"an Emergency Response Officer"].</font></B>")
|
||||
var/missiondesc = "Your squad is being sent on a Code [alert] mission to [station_name()] by Nanotrasen's Security Division."
|
||||
if(numagents == 1) //If Squad Leader
|
||||
missiondesc += " Lead your squad to ensure the completion of the mission. Avoid civilian casualites when possible. Board the shuttle when your team is ready."
|
||||
else
|
||||
missiondesc += " Follow orders given to you by your commander. Avoid civilian casualites when possible."
|
||||
missiondesc += "<BR><B>Your Mission</B>: [mission]"
|
||||
to_chat(ERTOperative, missiondesc)
|
||||
|
||||
|
||||
if(CONFIG_GET(flag/enforce_human_authority))
|
||||
ERTOperative.set_species(/datum/species/human)
|
||||
|
||||
//Logging and cleanup
|
||||
//Give antag datum
|
||||
var/datum/antagonist/ert/ert_antag = new
|
||||
ert_antag.high_alert = alert == ERT_RED
|
||||
if(numagents == 1)
|
||||
message_admins("A Code [alert] emergency response team has spawned with the mission: [mission]")
|
||||
log_game("[key_name(ERTOperative)] has been selected as an Emergency Response Officer")
|
||||
ert_antag.role = deathsquad ? DEATHSQUAD_LEADER : ERT_LEADER
|
||||
else
|
||||
ert_antag.role = deathsquad ? DEATHSQUAD : role_order[WRAP(numagents,1,role_order.len + 1)]
|
||||
ERTOperative.mind.add_antag_datum(ert_antag,ert_team)
|
||||
|
||||
ERTOperative.mind.assigned_role = ert_antag.name
|
||||
|
||||
//Logging and cleanup
|
||||
log_game("[key_name(ERTOperative)] has been selected as an [ert_antag.name]")
|
||||
numagents--
|
||||
teamSpawned++
|
||||
|
||||
if (teamSpawned)
|
||||
message_admins("[prompt_name] has spawned with the mission: [mission]")
|
||||
|
||||
//Open the Armory doors
|
||||
if(alert != ERT_BLUE)
|
||||
for(var/obj/machinery/door/poddoor/ert/door in GLOB.airlocks)
|
||||
spawn(0)
|
||||
door.open()
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -17,6 +17,7 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
//Antag panel properties
|
||||
var/show_in_antagpanel = TRUE //This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind
|
||||
var/antagpanel_category = "Uncategorized" //Antagpanel will display these together, REQUIRED
|
||||
var/show_name_in_check_antagonists = FALSE //Will append antagonist name in admin listings - use for categories that share more than one antag type
|
||||
|
||||
/datum/antagonist/New()
|
||||
GLOB.antagonists += src
|
||||
@@ -206,6 +207,7 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
/datum/antagonist/auto_custom
|
||||
show_in_antagpanel = FALSE
|
||||
antagpanel_category = "Other"
|
||||
show_name_in_check_antagonists = TRUE
|
||||
|
||||
/datum/antagonist/auto_custom/on_gain()
|
||||
..()
|
||||
@@ -219,12 +221,10 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
already_registered_objectives |= A.objectives
|
||||
objectives = owner.objectives - already_registered_objectives
|
||||
|
||||
/datum/antagonist/auto_custom/antag_listing_name()
|
||||
return ..() + "([name])"
|
||||
|
||||
//This one is created by admin tools for custom objectives
|
||||
/datum/antagonist/custom
|
||||
antagpanel_category = "Custom"
|
||||
show_name_in_check_antagonists = TRUE //They're all different
|
||||
|
||||
/datum/antagonist/custom/admin_add(datum/mind/new_owner,mob/admin)
|
||||
var/custom_name = stripped_input(admin, "Custom antagonist name:", "Custom antag", "Antagonist")
|
||||
@@ -232,7 +232,4 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
name = custom_name
|
||||
else
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/antagonist/custom/antag_listing_name()
|
||||
return ..() + "([name])"
|
||||
..()
|
||||
@@ -1,266 +1,252 @@
|
||||
/obj/item/antag_spawner
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/used = FALSE
|
||||
|
||||
/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user)
|
||||
return
|
||||
|
||||
/obj/item/antag_spawner/proc/equip_antag(mob/target)
|
||||
return
|
||||
|
||||
|
||||
///////////WIZARD
|
||||
|
||||
/obj/item/antag_spawner/contract
|
||||
name = "contract"
|
||||
desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state ="scroll2"
|
||||
|
||||
/obj/item/antag_spawner/contract/attack_self(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
if(used)
|
||||
dat = "<B>You have already summoned your apprentice.</B><BR>"
|
||||
else
|
||||
dat = "<B>Contract of Apprenticeship:</B><BR>"
|
||||
dat += "<I>Using this contract, you may summon an apprentice to aid you on your mission.</I><BR>"
|
||||
dat += "<I>If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.</I><BR>"
|
||||
dat += "<B>Which school of magic is your apprentice studying?:</B><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_DESTRUCTION]'>Destruction</A><BR>"
|
||||
dat += "<I>Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.</I><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_BLUESPACE]'>Bluespace Manipulation</A><BR>"
|
||||
dat += "<I>Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.</I><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_HEALING]'>Healing</A><BR>"
|
||||
dat += "<I>Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.</I><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_ROBELESS]'>Robeless</A><BR>"
|
||||
dat += "<I>Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.</I><BR>"
|
||||
user << browse(dat, "window=radio")
|
||||
onclose(user, "radio")
|
||||
return
|
||||
|
||||
/obj/item/antag_spawner/contract/Topic(href, href_list)
|
||||
..()
|
||||
var/mob/living/carbon/human/H = usr
|
||||
|
||||
if(H.stat || H.restrained())
|
||||
return
|
||||
if(!ishuman(H))
|
||||
return 1
|
||||
|
||||
if(loc == H || (in_range(src, H) && isturf(loc)))
|
||||
H.set_machine(src)
|
||||
if(href_list["school"])
|
||||
if(used)
|
||||
to_chat(H, "You already used this contract!")
|
||||
return
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src)
|
||||
if(LAZYLEN(candidates))
|
||||
if(used)
|
||||
to_chat(H, "You already used this contract!")
|
||||
return
|
||||
used = TRUE
|
||||
var/client/C = pick(candidates)
|
||||
spawn_antag(C, get_turf(src), href_list["school"],H.mind)
|
||||
else
|
||||
to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")
|
||||
|
||||
/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user)
|
||||
new /obj/effect/particle_effect/smoke(T)
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
|
||||
C.prefs.copy_to(M)
|
||||
M.key = C.key
|
||||
var/datum/mind/app_mind = M.mind
|
||||
|
||||
var/datum/antagonist/wizard/apprentice/app = new()
|
||||
app.master = user
|
||||
app.school = kind
|
||||
|
||||
var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard)
|
||||
if(master_wizard)
|
||||
if(!master_wizard.wiz_team)
|
||||
master_wizard.create_wiz_team()
|
||||
app.wiz_team = master_wizard.wiz_team
|
||||
master_wizard.wiz_team.add_member(app_mind)
|
||||
app_mind.add_antag_datum(app)
|
||||
//TODO Kill these if possible
|
||||
app_mind.assigned_role = "Apprentice"
|
||||
app_mind.special_role = "apprentice"
|
||||
//
|
||||
SEND_SOUND(M, sound('sound/effects/magic.ogg'))
|
||||
|
||||
///////////BORGS AND OPERATIVES
|
||||
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops
|
||||
name = "syndicate operative teleporter"
|
||||
desc = "A single-use teleporter designed to quickly reinforce operatives in the field."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
var/borg_to_spawn
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user)
|
||||
if(used)
|
||||
to_chat(user, "<span class='warning'>[src] is out of power!</span>")
|
||||
return FALSE
|
||||
if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE))
|
||||
to_chat(user, "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>")
|
||||
return FALSE
|
||||
if(!user.onSyndieBase())
|
||||
to_chat(user, "<span class='warning'>[src] is out of range! It can only be used at your base!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/attack_self(mob/user)
|
||||
if(!(check_usability(user)))
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You activate [src] and wait for confirmation.</span>")
|
||||
var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE)
|
||||
if(LAZYLEN(nuke_candidates))
|
||||
if(!(check_usability(user)))
|
||||
return
|
||||
used = TRUE
|
||||
var/client/C = pick(nuke_candidates)
|
||||
spawn_antag(C, get_turf(src), "syndieborg", user.mind)
|
||||
do_sparks(4, TRUE, src)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>")
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user)
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
|
||||
C.prefs.copy_to(M)
|
||||
M.key = C.key
|
||||
|
||||
var/datum/antagonist/nukeop/new_op = new()
|
||||
new_op.send_to_spawnpoint = FALSE
|
||||
new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals
|
||||
|
||||
var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
|
||||
if(creator_op)
|
||||
M.mind.add_antag_datum(new_op,creator_op.nuke_team)
|
||||
M.mind.special_role = "Nuclear Operative"
|
||||
|
||||
//////SYNDICATE BORG
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele
|
||||
name = "syndicate cyborg teleporter"
|
||||
desc = "A single-use teleporter designed to quickly reinforce operatives in the field.."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele/assault
|
||||
name = "syndicate assault cyborg teleporter"
|
||||
borg_to_spawn = "Assault"
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele/medical
|
||||
name = "syndicate medical teleporter"
|
||||
borg_to_spawn = "Medical"
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user)
|
||||
var/mob/living/silicon/robot/R
|
||||
var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
|
||||
if(!creator_op)
|
||||
return
|
||||
|
||||
switch(borg_to_spawn)
|
||||
if("Medical")
|
||||
R = new /mob/living/silicon/robot/modules/syndicate/medical(T)
|
||||
else
|
||||
R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default
|
||||
|
||||
var/brainfirstname = pick(GLOB.first_names_male)
|
||||
if(prob(50))
|
||||
brainfirstname = pick(GLOB.first_names_female)
|
||||
var/brainopslastname = pick(GLOB.last_names)
|
||||
if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops.
|
||||
brainopslastname = creator_op.nuke_team.syndicate_name
|
||||
var/brainopsname = "[brainfirstname] [brainopslastname]"
|
||||
|
||||
R.mmi.name = "Man-Machine Interface: [brainopsname]"
|
||||
R.mmi.brain.name = "[brainopsname]'s brain"
|
||||
R.mmi.brainmob.real_name = brainopsname
|
||||
R.mmi.brainmob.name = brainopsname
|
||||
R.real_name = R.name
|
||||
|
||||
R.key = C.key
|
||||
|
||||
var/datum/antagonist/nukeop/new_borg = new()
|
||||
new_borg.send_to_spawnpoint = FALSE
|
||||
R.mind.add_antag_datum(new_borg,creator_op.nuke_team)
|
||||
R.mind.special_role = "Syndicate Cyborg"
|
||||
|
||||
///////////SLAUGHTER DEMON
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game
|
||||
name = "vial of blood"
|
||||
desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "vial"
|
||||
|
||||
var/shatter_msg = "<span class='notice'>You shatter the bottle, no turning back now!</span>"
|
||||
var/veil_msg = "<span class='warning'>You sense a dark presence lurking just beyond the veil...</span>"
|
||||
var/objective_verb = "Kill"
|
||||
var/mob/living/demon_type = /mob/living/simple_animal/slaughter
|
||||
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user)
|
||||
if(!is_station_level(user.z))
|
||||
to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>")
|
||||
return
|
||||
if(used)
|
||||
return
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src)
|
||||
if(LAZYLEN(candidates))
|
||||
if(used)
|
||||
return
|
||||
used = TRUE
|
||||
var/client/C = pick(candidates)
|
||||
spawn_antag(C, get_turf(src), initial(demon_type.name),user.mind)
|
||||
to_chat(user, shatter_msg)
|
||||
to_chat(user, veil_msg)
|
||||
playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.</span>")
|
||||
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user)
|
||||
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
|
||||
var/mob/living/simple_animal/slaughter/S = new demon_type(holder)
|
||||
S.holder = holder
|
||||
S.key = C.key
|
||||
S.mind.assigned_role = S.name
|
||||
S.mind.special_role = S.name
|
||||
var/datum/objective/assassinate/new_objective
|
||||
if(user)
|
||||
new_objective = new /datum/objective/assassinate
|
||||
new_objective.owner = S.mind
|
||||
new_objective.target = user
|
||||
new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you."
|
||||
S.mind.objectives += new_objective
|
||||
var/datum/objective/new_objective2 = new /datum/objective
|
||||
new_objective2.owner = S.mind
|
||||
new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]."
|
||||
S.mind.objectives += new_objective2
|
||||
S.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
to_chat(S, S.playstyle_string)
|
||||
to_chat(S, "<B>You are currently not currently in the same plane of existence as the station. \
|
||||
Ctrl+Click a blood pool to manifest.</B>")
|
||||
if(new_objective)
|
||||
to_chat(S, "<B>Objective #[1]</B>: [new_objective.explanation_text]")
|
||||
to_chat(S, "<B>Objective #[new_objective ? "[2]":"[1]"]</B>: [new_objective2.explanation_text]")
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon/laughter
|
||||
name = "vial of tickles"
|
||||
desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "vial"
|
||||
color = "#FF69B4" // HOT PINK
|
||||
|
||||
veil_msg = "<span class='warning'>You sense an adorable presence lurking just beyond the veil...</span>"
|
||||
objective_verb = "Hug and Tickle"
|
||||
demon_type = /mob/living/simple_animal/slaughter/laughter
|
||||
/obj/item/antag_spawner
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/used = 0
|
||||
|
||||
/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user)
|
||||
return
|
||||
|
||||
/obj/item/antag_spawner/proc/equip_antag(mob/target)
|
||||
return
|
||||
|
||||
|
||||
///////////WIZARD
|
||||
|
||||
/obj/item/antag_spawner/contract
|
||||
name = "contract"
|
||||
desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state ="scroll2"
|
||||
|
||||
/obj/item/antag_spawner/contract/attack_self(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
if(used)
|
||||
dat = "<B>You have already summoned your apprentice.</B><BR>"
|
||||
else
|
||||
dat = "<B>Contract of Apprenticeship:</B><BR>"
|
||||
dat += "<I>Using this contract, you may summon an apprentice to aid you on your mission.</I><BR>"
|
||||
dat += "<I>If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.</I><BR>"
|
||||
dat += "<B>Which school of magic is your apprentice studying?:</B><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_DESTRUCTION]'>Destruction</A><BR>"
|
||||
dat += "<I>Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.</I><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_BLUESPACE]'>Bluespace Manipulation</A><BR>"
|
||||
dat += "<I>Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.</I><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_HEALING]'>Healing</A><BR>"
|
||||
dat += "<I>Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.</I><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_ROBELESS]'>Robeless</A><BR>"
|
||||
dat += "<I>Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.</I><BR>"
|
||||
user << browse(dat, "window=radio")
|
||||
onclose(user, "radio")
|
||||
return
|
||||
|
||||
/obj/item/antag_spawner/contract/Topic(href, href_list)
|
||||
..()
|
||||
var/mob/living/carbon/human/H = usr
|
||||
|
||||
if(H.stat || H.restrained())
|
||||
return
|
||||
if(!ishuman(H))
|
||||
return 1
|
||||
|
||||
if(loc == H || (in_range(src, H) && isturf(loc)))
|
||||
H.set_machine(src)
|
||||
if(href_list["school"])
|
||||
if(used)
|
||||
to_chat(H, "You already used this contract!")
|
||||
return
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src)
|
||||
if(candidates.len)
|
||||
if(used)
|
||||
to_chat(H, "You already used this contract!")
|
||||
return
|
||||
used = 1
|
||||
var/mob/dead/observer/theghost = pick(candidates)
|
||||
spawn_antag(theghost.client, get_turf(src), href_list["school"],H.mind)
|
||||
else
|
||||
to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")
|
||||
|
||||
/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user)
|
||||
new /obj/effect/particle_effect/smoke(T)
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
|
||||
C.prefs.copy_to(M)
|
||||
M.key = C.key
|
||||
var/datum/mind/app_mind = M.mind
|
||||
|
||||
var/datum/antagonist/wizard/apprentice/app = new()
|
||||
app.master = user
|
||||
app.school = kind
|
||||
|
||||
var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard)
|
||||
if(master_wizard)
|
||||
if(!master_wizard.wiz_team)
|
||||
master_wizard.create_wiz_team()
|
||||
app.wiz_team = master_wizard.wiz_team
|
||||
master_wizard.wiz_team.add_member(app_mind)
|
||||
app_mind.add_antag_datum(app)
|
||||
//TODO Kill these if possible
|
||||
app_mind.assigned_role = "Apprentice"
|
||||
app_mind.special_role = "apprentice"
|
||||
//
|
||||
SEND_SOUND(M, sound('sound/effects/magic.ogg'))
|
||||
|
||||
///////////BORGS AND OPERATIVES
|
||||
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops
|
||||
name = "syndicate operative teleporter"
|
||||
desc = "A single-use teleporter designed to quickly reinforce operatives in the field."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
var/borg_to_spawn
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user)
|
||||
if(used)
|
||||
to_chat(user, "<span class='warning'>[src] is out of power!</span>")
|
||||
return FALSE
|
||||
if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE))
|
||||
to_chat(user, "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>")
|
||||
return FALSE
|
||||
if(!user.onSyndieBase())
|
||||
to_chat(user, "<span class='warning'>[src] is out of range! It can only be used at your base!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/attack_self(mob/user)
|
||||
if(!(check_usability(user)))
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You activate [src] and wait for confirmation.</span>")
|
||||
var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE)
|
||||
if(nuke_candidates.len)
|
||||
if(!(check_usability(user)))
|
||||
return
|
||||
used = TRUE
|
||||
var/mob/dead/observer/theghost = pick(nuke_candidates)
|
||||
spawn_antag(theghost.client, get_turf(src), "syndieborg", user.mind)
|
||||
do_sparks(4, TRUE, src)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>")
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user)
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
|
||||
C.prefs.copy_to(M)
|
||||
M.key = C.key
|
||||
|
||||
var/datum/antagonist/nukeop/new_op = new()
|
||||
new_op.send_to_spawnpoint = FALSE
|
||||
new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals
|
||||
|
||||
var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
|
||||
if(creator_op)
|
||||
M.mind.add_antag_datum(new_op,creator_op.nuke_team)
|
||||
M.mind.special_role = "Nuclear Operative"
|
||||
|
||||
//////SYNDICATE BORG
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele
|
||||
name = "syndicate cyborg teleporter"
|
||||
desc = "A single-use teleporter designed to quickly reinforce operatives in the field.."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele/assault
|
||||
name = "syndicate assault cyborg teleporter"
|
||||
borg_to_spawn = "Assault"
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele/medical
|
||||
name = "syndicate medical teleporter"
|
||||
borg_to_spawn = "Medical"
|
||||
|
||||
/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user)
|
||||
var/mob/living/silicon/robot/R
|
||||
var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
|
||||
if(!creator_op)
|
||||
return
|
||||
|
||||
switch(borg_to_spawn)
|
||||
if("Medical")
|
||||
R = new /mob/living/silicon/robot/modules/syndicate/medical(T)
|
||||
else
|
||||
R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default
|
||||
|
||||
var/brainfirstname = pick(GLOB.first_names_male)
|
||||
if(prob(50))
|
||||
brainfirstname = pick(GLOB.first_names_female)
|
||||
var/brainopslastname = pick(GLOB.last_names)
|
||||
if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops.
|
||||
brainopslastname = creator_op.nuke_team.syndicate_name
|
||||
var/brainopsname = "[brainfirstname] [brainopslastname]"
|
||||
|
||||
R.mmi.name = "Man-Machine Interface: [brainopsname]"
|
||||
R.mmi.brain.name = "[brainopsname]'s brain"
|
||||
R.mmi.brainmob.real_name = brainopsname
|
||||
R.mmi.brainmob.name = brainopsname
|
||||
R.real_name = R.name
|
||||
|
||||
R.key = C.key
|
||||
|
||||
var/datum/antagonist/nukeop/new_borg = new()
|
||||
new_borg.send_to_spawnpoint = FALSE
|
||||
R.mind.add_antag_datum(new_borg,creator_op.nuke_team)
|
||||
R.mind.special_role = "Syndicate Cyborg"
|
||||
|
||||
///////////SLAUGHTER DEMON
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game
|
||||
name = "vial of blood"
|
||||
desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "vial"
|
||||
|
||||
var/shatter_msg = "<span class='notice'>You shatter the bottle, no turning back now!</span>"
|
||||
var/veil_msg = "<span class='warning'>You sense a dark presence lurking just beyond the veil...</span>"
|
||||
var/mob/living/demon_type = /mob/living/simple_animal/slaughter
|
||||
var/antag_type = /datum/antagonist/slaughter
|
||||
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user)
|
||||
if(!is_station_level(user.z))
|
||||
to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>")
|
||||
return
|
||||
if(used)
|
||||
return
|
||||
var/list/demon_candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", null, null, ROLE_ALIEN, 50, src)
|
||||
if(demon_candidates.len)
|
||||
if(used)
|
||||
return
|
||||
used = 1
|
||||
var/mob/dead/observer/theghost = pick(demon_candidates)
|
||||
spawn_antag(theghost.client, get_turf(src), initial(demon_type.name),user.mind)
|
||||
to_chat(user, shatter_msg)
|
||||
to_chat(user, veil_msg)
|
||||
playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.</span>")
|
||||
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user)
|
||||
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
|
||||
var/mob/living/simple_animal/slaughter/S = new demon_type(holder)
|
||||
S.holder = holder
|
||||
S.key = C.key
|
||||
S.mind.assigned_role = S.name
|
||||
S.mind.special_role = S.name
|
||||
S.mind.add_antag_datum(antag_type)
|
||||
to_chat(S, S.playstyle_string)
|
||||
to_chat(S, "<B>You are currently not currently in the same plane of existence as the station. \
|
||||
Ctrl+Click a blood pool to manifest.</B>")
|
||||
|
||||
/obj/item/antag_spawner/slaughter_demon/laughter
|
||||
name = "vial of tickles"
|
||||
desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "vial"
|
||||
color = "#FF69B4" // HOT PINK
|
||||
|
||||
veil_msg = "<span class='warning'>You sense an adorable presence lurking just beyond the veil...</span>"
|
||||
demon_type = /mob/living/simple_animal/slaughter/laughter
|
||||
antag_type = /datum/antagonist/slaughter/laughter
|
||||
|
||||
@@ -27,8 +27,25 @@
|
||||
/datum/team/proc/roundend_report()
|
||||
var/list/report = list()
|
||||
|
||||
report += "<b>[name]:</b>"
|
||||
report += "<span class='header'>[name]:</span>"
|
||||
report += "The [member_name]s were:"
|
||||
report += printplayerlist(members)
|
||||
|
||||
return report.Join("<br>")
|
||||
if(objectives.len)
|
||||
report += "<span class='header'>Team had following objectives:</span>"
|
||||
var/win = TRUE
|
||||
var/objective_count = 1
|
||||
for(var/datum/objective/objective in objectives)
|
||||
if(objective.check_completion())
|
||||
report += "<B>Objective #[objective_count]</B>: [objective.explanation_text] <span class='greentext'><B>Success!</span>"
|
||||
else
|
||||
report += "<B>Objective #[objective_count]</B>: [objective.explanation_text] <span class='redtext'>Fail.</span>"
|
||||
win = FALSE
|
||||
objective_count++
|
||||
if(win)
|
||||
report += "<span class='greentext'>The [name] was successful!</span>"
|
||||
else
|
||||
report += "<span class='redtext'>The [name] have failed!</span>"
|
||||
|
||||
|
||||
return "<div class='panel redborder'>[report.Join("<br>")]</div>"
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
result += printplayer(abductor_mind)
|
||||
result += printobjectives(abductor_mind)
|
||||
|
||||
return result.Join("<br>")
|
||||
return "<div class='panel redborder'>[result.Join("<br>")]</div>"
|
||||
|
||||
/datum/antagonist/abductee
|
||||
name = "Abductee"
|
||||
|
||||
@@ -264,8 +264,8 @@
|
||||
/obj/item/organ/heart/gland/egg/activate()
|
||||
to_chat(owner, "<span class='boldannounce'>You lay an egg!</span>")
|
||||
var/obj/item/reagent_containers/food/snacks/egg/egg = new(owner.drop_location())
|
||||
egg.reagents.add_reagent("sacid",20)
|
||||
egg.desc += " It smells bad."
|
||||
egg.reagents.add_reagent(get_random_reagent_id(), 15)
|
||||
egg.desc += " It looks weird..."
|
||||
|
||||
/obj/item/organ/heart/gland/electric
|
||||
cooldown_low = 800
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
to_chat(user, "<span class='[message_span]'>[cultist_message]</span>")
|
||||
if(user.mind && user.mind.isholy)
|
||||
to_chat(user, "<span class='boldannounce'>The power of your faith melts away [src]!</span>")
|
||||
var/obj/item/ore/slag/wrath = new /obj/item/ore/slag
|
||||
var/obj/item/stack/ore/slag/wrath = new /obj/item/stack/ore/slag
|
||||
qdel(src)
|
||||
user.put_in_active_hand(wrath)
|
||||
if(is_servant_of_ratvar(user) && prob(20))
|
||||
|
||||
@@ -89,13 +89,12 @@
|
||||
if(cooldowntime > world.time)
|
||||
to_chat(user, "<span class='cult italic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
return
|
||||
var/choice = alert(user,"You study the schematics etched into the altar...",,"Eldritch Whetstone","Construct Shells","Flask of Unholy Water")
|
||||
var/choice = alert(user,"You study the schematics etched into the altar...",,"Eldritch Whetstone","Construct Shell","Flask of Unholy Water")
|
||||
var/list/pickedtype = list()
|
||||
switch(choice)
|
||||
if("Eldritch Whetstone")
|
||||
pickedtype += /obj/item/sharpener/cult
|
||||
if("Construct Shells")
|
||||
pickedtype += /obj/structure/constructshell
|
||||
if("Construct Shell")
|
||||
pickedtype += /obj/structure/constructshell
|
||||
if("Flask of Unholy Water")
|
||||
pickedtype += /obj/item/reagent_containers/glass/beaker/unholywater
|
||||
|
||||
@@ -138,21 +138,10 @@ This file contains the cult dagger and rune list code
|
||||
if(isspaceturf(T))
|
||||
to_chat(user, "<span class='warning'>You cannot scribe runes in space!</span>")
|
||||
return FALSE
|
||||
|
||||
if(locate(/obj/effect/rune) in T)
|
||||
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
if(!is_station_level(T.z) && !is_mining_level(T.z))
|
||||
to_chat(user, "<span class='warning'>The veil is not weak enough here.</span>")
|
||||
|
||||
return FALSE
|
||||
|
||||
var/area/A = get_area(T)
|
||||
if(A && !A.blob_allowed)
|
||||
to_chat(user, "<span class='warning'>There's a passage in [src] specifically forbidding oyster consumption, triple-frying, and building outside of designated cult zones.</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -316,7 +316,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
to_chat(M, "<span class='cultlarge'>\"I accept this meager sacrifice.\"</span>")
|
||||
|
||||
var/obj/item/device/soulstone/stone = new /obj/item/device/soulstone(get_turf(src))
|
||||
if(sacrificial.mind)
|
||||
if(sacrificial.mind && !sacrificial.suiciding)
|
||||
stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul()
|
||||
stone.transfer_soul("FORCE", sacrificial, usr)
|
||||
stone.invisibility = 0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user