Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into upstream-merge-27840
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
"ad" = (
|
||||
/obj/structure/flora/ausbushes/leafybush,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ae" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/toolbox/mechanical,
|
||||
@@ -21,44 +21,47 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"af" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ag" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ah" = (
|
||||
/obj/machinery/power/smes,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ai" = (
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aj" = (
|
||||
/turf/closed/wall/mineral/sandstone{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ak" = (
|
||||
/obj/structure/toilet,
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"al" = (
|
||||
/obj/structure/urinal{
|
||||
pixel_y = 32
|
||||
@@ -66,7 +69,7 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"am" = (
|
||||
/obj/structure/urinal{
|
||||
pixel_y = 32
|
||||
@@ -75,13 +78,16 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"an" = (
|
||||
/obj/item/device/flashlight/lantern,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ao" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
@@ -96,181 +102,187 @@
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ap" = (
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aq" = (
|
||||
/obj/structure/flora/ausbushes/sunnybush,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ar" = (
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"as" = (
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"at" = (
|
||||
/obj/item/weapon/tank/internals/oxygen,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"au" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"av" = (
|
||||
/obj/machinery/door/airlock/hatch,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aw" = (
|
||||
/obj/machinery/door/airlock/sandstone,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ax" = (
|
||||
/obj/structure/extinguisher_cabinet,
|
||||
/turf/closed/wall/mineral/sandstone{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ay" = (
|
||||
/obj/machinery/door/airlock/hatch,
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"az" = (
|
||||
/obj/item/clothing/neck/necklace/dope,
|
||||
/obj/item/weapon/reagent_containers/spray/spraytan,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aA" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aB" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aC" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aD" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/box/drinkingglasses,
|
||||
/obj/item/weapon/storage/box/drinkingglasses,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/weapon/storage/box/beakers,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aE" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/reagentgrinder,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aF" = (
|
||||
/obj/machinery/vending/boozeomat{
|
||||
emagged = 1;
|
||||
req_access_txt = "0"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aG" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/book/manual/barman_recipes,
|
||||
/obj/item/weapon/reagent_containers/glass/rag,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aH" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/box/donkpockets,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aI" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aJ" = (
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/item/weapon/tank/internals/emergency_oxygen,
|
||||
/obj/item/trash/candy,
|
||||
/obj/item/toy/talking/owl,
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aK" = (
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aL" = (
|
||||
/obj/effect/mob_spawn/human/bartender/alive{
|
||||
name = "beach bum sleeper"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aM" = (
|
||||
/obj/structure/reagent_dispensers/beerkeg,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aN" = (
|
||||
/obj/machinery/vending/cigarette,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aO" = (
|
||||
/obj/structure/stacklifter,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aP" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aQ" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/device/flashlight/lamp,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aR" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aS" = (
|
||||
/obj/machinery/processor,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aT" = (
|
||||
/obj/machinery/vending/cola,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aU" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aV" = (
|
||||
/obj/effect/mob_spawn/human/beach/alive{
|
||||
flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?";
|
||||
@@ -278,31 +290,31 @@
|
||||
uniform = /obj/item/clothing/under/pants/youngfolksjeans
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aW" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aX" = (
|
||||
/obj/structure/closet/secure_closet/freezer/meat,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aY" = (
|
||||
/obj/machinery/vending/snack,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"aZ" = (
|
||||
/obj/effect/overlay/coconut,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"ba" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4;
|
||||
@@ -316,24 +328,24 @@
|
||||
"bb" = (
|
||||
/obj/structure/weightlifter,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bc" = (
|
||||
/obj/machinery/door/airlock/sandstone,
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bd" = (
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen{
|
||||
req_access = null
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"be" = (
|
||||
/obj/vehicle/scooter/skateboard{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bf" = (
|
||||
/obj/machinery/light{
|
||||
icon_state = "tube1";
|
||||
@@ -347,10 +359,10 @@
|
||||
"bg" = (
|
||||
/obj/structure/sign/barsign,
|
||||
/turf/closed/wall/mineral/sandstone,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bh" = (
|
||||
/turf/closed/wall/mineral/sandstone,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bi" = (
|
||||
/turf/open/floor/plating/beach/sand{
|
||||
density = 1;
|
||||
@@ -365,14 +377,14 @@
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bk" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pastatomato,
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bl" = (
|
||||
/obj/structure/chair/wood/normal{
|
||||
icon_state = "wooden_chair";
|
||||
@@ -381,7 +393,7 @@
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bm" = (
|
||||
/mob/living/simple_animal/crab,
|
||||
/turf/open/floor/plating/beach/sand{
|
||||
@@ -456,7 +468,7 @@
|
||||
"bx" = (
|
||||
/obj/structure/flora/rock,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"by" = (
|
||||
/obj/machinery/door/airlock/sandstone,
|
||||
/obj/effect/decal/sandeffect,
|
||||
@@ -467,7 +479,7 @@
|
||||
"bz" = (
|
||||
/mob/living/simple_animal/crab,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bA" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
@@ -480,7 +492,7 @@
|
||||
/obj/item/weapon/storage/firstaid,
|
||||
/obj/item/weapon/storage/firstaid/brute,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bB" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4;
|
||||
@@ -492,7 +504,7 @@
|
||||
},
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bC" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/tank/internals/oxygen,
|
||||
@@ -512,11 +524,11 @@
|
||||
"bE" = (
|
||||
/obj/item/weapon/reagent_containers/spray/spraytan,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bF" = (
|
||||
/obj/item/toy/beach_ball,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bG" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
@@ -524,7 +536,7 @@
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/item/device/megaphone,
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bH" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4;
|
||||
@@ -538,7 +550,7 @@
|
||||
mob_gender = "female"
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bI" = (
|
||||
/obj/structure/dresser,
|
||||
/turf/open/floor/pod/dark{
|
||||
@@ -548,11 +560,11 @@
|
||||
"bJ" = (
|
||||
/obj/structure/chair,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bK" = (
|
||||
/obj/item/weapon/storage/backpack/dufflebag,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bL" = (
|
||||
/obj/effect/decal/sandeffect{
|
||||
density = 1
|
||||
@@ -562,43 +574,227 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
density = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bM" = (
|
||||
/turf/open/floor/plasteel/stairs/old,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bN" = (
|
||||
/obj/structure/flora/ausbushes/reedbush,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bO" = (
|
||||
/obj/item/device/camera,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bP" = (
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bQ" = (
|
||||
/obj/structure/flora/ausbushes/reedbush,
|
||||
/turf/open/floor/plating/beach/coastline_t,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bR" = (
|
||||
/turf/open/floor/plating/beach/coastline_t,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bS" = (
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/turf/open/floor/plating/beach/coastline_t,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bT" = (
|
||||
/turf/open/floor/plating/beach/coastline_b,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bU" = (
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/beach)
|
||||
"bV" = (
|
||||
/obj/structure/flora/ausbushes/stalkybush,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"bW" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"bX" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"bY" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"bZ" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"ca" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cb" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cc" = (
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cd" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/closed/wall/mineral/sandstone{
|
||||
baseturf = /turf/open/floor/plating/beach/sand
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"ce" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cf" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cg" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"ch" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"ci" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cj" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"ck" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/asteroid{
|
||||
baseturf = /turf/open/floor/plating/beach/sand;
|
||||
tag = "icon-asteroidwarning (NORTH)"
|
||||
},
|
||||
/area/ruin/powered/beach)
|
||||
"cl" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cm" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"cn" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"co" = (
|
||||
/obj/effect/decal/sandeffect,
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"cp" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark{
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"cq" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cr" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"cs" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/ruin/powered/beach)
|
||||
"ct" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cu" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cv" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cw" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cx" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
"cy" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/beach/water,
|
||||
/area/ruin/powered/beach)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -646,11 +842,11 @@ ab
|
||||
ab
|
||||
ab
|
||||
bn
|
||||
br
|
||||
cm
|
||||
bu
|
||||
bv
|
||||
bu
|
||||
bs
|
||||
co
|
||||
bC
|
||||
ab
|
||||
ab
|
||||
@@ -673,7 +869,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ap
|
||||
ar
|
||||
cg
|
||||
ar
|
||||
ar
|
||||
ab
|
||||
@@ -721,7 +917,7 @@ ap
|
||||
bR
|
||||
bT
|
||||
bU
|
||||
bU
|
||||
ct
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -740,7 +936,7 @@ aO
|
||||
ar
|
||||
bb
|
||||
ar
|
||||
ar
|
||||
ci
|
||||
ar
|
||||
ar
|
||||
aA
|
||||
@@ -748,7 +944,7 @@ aA
|
||||
aA
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
cr
|
||||
bN
|
||||
bR
|
||||
bT
|
||||
@@ -819,7 +1015,7 @@ bT
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cv
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -859,10 +1055,10 @@ aa
|
||||
(9,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aA
|
||||
bW
|
||||
bW
|
||||
bW
|
||||
ce
|
||||
aA
|
||||
aA
|
||||
aA
|
||||
@@ -893,7 +1089,7 @@ aa
|
||||
ac
|
||||
ae
|
||||
as
|
||||
ab
|
||||
bW
|
||||
aB
|
||||
aK
|
||||
aK
|
||||
@@ -980,7 +1176,7 @@ bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cx
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
@@ -1051,7 +1247,7 @@ aa
|
||||
(15,1,1) = {"
|
||||
aa
|
||||
ac
|
||||
aj
|
||||
cd
|
||||
aj
|
||||
aj
|
||||
aF
|
||||
@@ -1092,7 +1288,7 @@ aj
|
||||
aj
|
||||
bc
|
||||
aj
|
||||
aB
|
||||
cj
|
||||
aK
|
||||
aA
|
||||
ar
|
||||
@@ -1172,7 +1368,7 @@ bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cy
|
||||
ab
|
||||
aa
|
||||
"}
|
||||
@@ -1188,14 +1384,14 @@ aj
|
||||
aj
|
||||
aj
|
||||
aj
|
||||
aB
|
||||
ck
|
||||
aK
|
||||
aA
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
ar
|
||||
cq
|
||||
ar
|
||||
ar
|
||||
bR
|
||||
@@ -1275,10 +1471,10 @@ aa
|
||||
(22,1,1) = {"
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
aA
|
||||
bW
|
||||
bW
|
||||
bW
|
||||
cf
|
||||
aA
|
||||
aA
|
||||
aA
|
||||
@@ -1363,7 +1559,7 @@ bT
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
bU
|
||||
cw
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -1412,7 +1608,7 @@ aq
|
||||
ar
|
||||
be
|
||||
ar
|
||||
ar
|
||||
cl
|
||||
ar
|
||||
ar
|
||||
aA
|
||||
@@ -1420,7 +1616,7 @@ aA
|
||||
aA
|
||||
ar
|
||||
ar
|
||||
aU
|
||||
cs
|
||||
ar
|
||||
bR
|
||||
bT
|
||||
@@ -1457,7 +1653,7 @@ ap
|
||||
bR
|
||||
bT
|
||||
bU
|
||||
bU
|
||||
cu
|
||||
ab
|
||||
ab
|
||||
aa
|
||||
@@ -1473,7 +1669,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ap
|
||||
ar
|
||||
ch
|
||||
ap
|
||||
ar
|
||||
ab
|
||||
@@ -1510,11 +1706,11 @@ ab
|
||||
ab
|
||||
ab
|
||||
bo
|
||||
bs
|
||||
cn
|
||||
bu
|
||||
bu
|
||||
bv
|
||||
br
|
||||
cp
|
||||
bC
|
||||
ab
|
||||
ab
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
||||
/turf/closed/wall/r_wall{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"ac" = (
|
||||
/obj/item/stack/medical/ointment,
|
||||
/obj/structure/table,
|
||||
@@ -19,6 +19,9 @@
|
||||
/obj/structure/table,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -36,6 +39,9 @@
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"ag" = (
|
||||
/obj/structure/reagent_dispensers/beerkeg,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -54,6 +60,9 @@
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"aj" = (
|
||||
/obj/structure/sink,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -290,89 +299,92 @@
|
||||
/obj/item/clothing/shoes/winterboots,
|
||||
/obj/item/clothing/gloves/fingerless,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aT" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/fulltile,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aU" = (
|
||||
/obj/machinery/vending/coffee,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aV" = (
|
||||
/obj/structure/closet/secure_closet/freezer/fridge,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aW" = (
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aX" = (
|
||||
/turf/open/floor/pod/light,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aY" = (
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"aZ" = (
|
||||
/obj/machinery/door/airlock/hatch,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"ba" = (
|
||||
/obj/machinery/door/airlock/silver,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bb" = (
|
||||
/obj/machinery/door/airlock/silver,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bc" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bd" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/paper_bin,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"be" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bf" = (
|
||||
/obj/effect/decal/cleanable/oil,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bg" = (
|
||||
/obj/item/weapon/twohanded/required/chainsaw,
|
||||
/obj/structure/closet,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bh" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bi" = (
|
||||
/obj/machinery/computer/monitor,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bj" = (
|
||||
/obj/item/weapon/storage/toolbox/mechanical,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bk" = (
|
||||
/obj/structure/reagent_dispensers/fueltank,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bl" = (
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
@@ -382,22 +394,22 @@
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bm" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bn" = (
|
||||
/obj/item/clothing/mask/balaclava,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bo" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bp" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/paper,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"bq" = (
|
||||
/obj/machinery/light/built{
|
||||
dir = 1
|
||||
@@ -406,12 +418,202 @@
|
||||
baseturf = /turf/open/floor/plating/asteroid/basalt;
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
/area/ruin/powered)
|
||||
"br" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/obj/machinery/door/airlock/glass_large,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bs" = (
|
||||
/obj/machinery/door/airlock/glass_large,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bt" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bu" = (
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bv" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/ice{
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bw" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bx" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"by" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bz" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bA" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/wood{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
name = "floor"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bB" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bC" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bD" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bE" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bF" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bG" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bH" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bI" = (
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bJ" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bK" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bL" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bM" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bN" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/ice{
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bO" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bP" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plating/asteroid/snow{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
},
|
||||
/area/ruin/powered/snow_biodome)
|
||||
"bQ" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
"bR" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/ruin/powered)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -458,10 +660,10 @@ ab
|
||||
ab
|
||||
ab
|
||||
aS
|
||||
aW
|
||||
bG
|
||||
aW
|
||||
aX
|
||||
aW
|
||||
bI
|
||||
aW
|
||||
bh
|
||||
ab
|
||||
@@ -486,7 +688,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
by
|
||||
ak
|
||||
ab
|
||||
aS
|
||||
@@ -552,7 +754,7 @@ ak
|
||||
aI
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
bC
|
||||
az
|
||||
ak
|
||||
aB
|
||||
@@ -560,7 +762,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
aI
|
||||
ak
|
||||
bJ
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -577,7 +779,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
ab
|
||||
ao
|
||||
bv
|
||||
ao
|
||||
ao
|
||||
ao
|
||||
@@ -631,7 +833,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
bO
|
||||
ab
|
||||
ab
|
||||
bm
|
||||
@@ -744,7 +946,7 @@ aq
|
||||
aq
|
||||
aK
|
||||
aq
|
||||
ak
|
||||
bD
|
||||
ao
|
||||
ao
|
||||
ao
|
||||
@@ -770,7 +972,7 @@ ab
|
||||
ad
|
||||
af
|
||||
ar
|
||||
at
|
||||
bw
|
||||
at
|
||||
aD
|
||||
at
|
||||
@@ -790,7 +992,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
az
|
||||
ak
|
||||
bM
|
||||
ab
|
||||
aS
|
||||
aS
|
||||
@@ -806,7 +1008,7 @@ au
|
||||
au
|
||||
aq
|
||||
at
|
||||
at
|
||||
bz
|
||||
aq
|
||||
ak
|
||||
ak
|
||||
@@ -825,7 +1027,7 @@ ak
|
||||
aI
|
||||
ab
|
||||
bn
|
||||
aW
|
||||
bQ
|
||||
ab
|
||||
bm
|
||||
"}
|
||||
@@ -887,7 +1089,7 @@ ao
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
aO
|
||||
bs
|
||||
aX
|
||||
aX
|
||||
br
|
||||
@@ -919,10 +1121,10 @@ ao
|
||||
ao
|
||||
ak
|
||||
ak
|
||||
aP
|
||||
bt
|
||||
aX
|
||||
aX
|
||||
aP
|
||||
bt
|
||||
bm
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
@@ -966,7 +1168,7 @@ av
|
||||
at
|
||||
aG
|
||||
at
|
||||
at
|
||||
bA
|
||||
aq
|
||||
aR
|
||||
ak
|
||||
@@ -985,7 +1187,7 @@ ao
|
||||
ao
|
||||
ab
|
||||
aW
|
||||
aW
|
||||
bR
|
||||
ab
|
||||
bm
|
||||
"}
|
||||
@@ -995,7 +1197,7 @@ ai
|
||||
af
|
||||
aq
|
||||
av
|
||||
at
|
||||
bx
|
||||
aH
|
||||
at
|
||||
aN
|
||||
@@ -1014,7 +1216,7 @@ ak
|
||||
ak
|
||||
ak
|
||||
ao
|
||||
ao
|
||||
bN
|
||||
ab
|
||||
bo
|
||||
bp
|
||||
@@ -1032,7 +1234,7 @@ aq
|
||||
aq
|
||||
aq
|
||||
aq
|
||||
ak
|
||||
bE
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -1175,7 +1377,7 @@ ak
|
||||
aI
|
||||
aI
|
||||
ak
|
||||
ak
|
||||
bP
|
||||
ab
|
||||
ab
|
||||
bm
|
||||
@@ -1224,7 +1426,7 @@ az
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
bF
|
||||
ak
|
||||
ak
|
||||
ak
|
||||
@@ -1232,7 +1434,7 @@ ak
|
||||
ak
|
||||
az
|
||||
ak
|
||||
ak
|
||||
bK
|
||||
ak
|
||||
ak
|
||||
az
|
||||
@@ -1286,7 +1488,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
bB
|
||||
ak
|
||||
ab
|
||||
aU
|
||||
@@ -1298,7 +1500,7 @@ bf
|
||||
bj
|
||||
ab
|
||||
ak
|
||||
ak
|
||||
bL
|
||||
ak
|
||||
ab
|
||||
ab
|
||||
@@ -1322,7 +1524,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
aV
|
||||
aW
|
||||
bH
|
||||
aY
|
||||
bc
|
||||
be
|
||||
|
||||
@@ -15,36 +15,36 @@
|
||||
/area/ruin/powered)
|
||||
"e" = (
|
||||
/turf/open/floor/plating/lava/smooth,
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"f" = (
|
||||
/obj/item/weapon/reagent_containers/syringe/gluttony,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"g" = (
|
||||
/obj/effect/gluttony,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"h" = (
|
||||
/obj/item/weapon/veilrender/vealrender,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"i" = (
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"j" = (
|
||||
/obj/item/trash/plate,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"k" = (
|
||||
/obj/machinery/door/airlock/uranium,
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
@@ -57,37 +57,113 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"m" = (
|
||||
/obj/item/trash/raisins,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"n" = (
|
||||
/obj/item/trash/pistachios,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"o" = (
|
||||
/obj/item/trash/popcorn,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"p" = (
|
||||
/obj/item/trash/semki,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"q" = (
|
||||
/obj/item/trash/syndi_cakes,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/gluttony)
|
||||
"r" = (
|
||||
/obj/effect/gluttony,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"s" = (
|
||||
/obj/effect/gluttony,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"t" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"u" = (
|
||||
/obj/effect/gluttony,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"v" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"w" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"x" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"y" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"z" = (
|
||||
/obj/item/trash/plate,
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
"A" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/gluttony)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -211,7 +287,7 @@ c
|
||||
d
|
||||
i
|
||||
i
|
||||
i
|
||||
v
|
||||
d
|
||||
c
|
||||
b
|
||||
@@ -253,7 +329,7 @@ c
|
||||
c
|
||||
c
|
||||
d
|
||||
i
|
||||
t
|
||||
i
|
||||
m
|
||||
d
|
||||
@@ -277,7 +353,7 @@ d
|
||||
d
|
||||
g
|
||||
m
|
||||
i
|
||||
w
|
||||
d
|
||||
d
|
||||
d
|
||||
@@ -294,7 +370,7 @@ c
|
||||
d
|
||||
e
|
||||
d
|
||||
g
|
||||
r
|
||||
g
|
||||
g
|
||||
g
|
||||
@@ -302,7 +378,7 @@ g
|
||||
i
|
||||
p
|
||||
i
|
||||
j
|
||||
z
|
||||
l
|
||||
i
|
||||
d
|
||||
@@ -338,7 +414,7 @@ c
|
||||
d
|
||||
e
|
||||
d
|
||||
g
|
||||
s
|
||||
g
|
||||
g
|
||||
g
|
||||
@@ -346,7 +422,7 @@ i
|
||||
g
|
||||
i
|
||||
l
|
||||
i
|
||||
A
|
||||
i
|
||||
q
|
||||
d
|
||||
@@ -365,7 +441,7 @@ d
|
||||
d
|
||||
g
|
||||
i
|
||||
i
|
||||
x
|
||||
d
|
||||
d
|
||||
d
|
||||
@@ -385,7 +461,7 @@ c
|
||||
c
|
||||
c
|
||||
d
|
||||
g
|
||||
u
|
||||
i
|
||||
i
|
||||
d
|
||||
@@ -431,7 +507,7 @@ c
|
||||
d
|
||||
j
|
||||
i
|
||||
i
|
||||
y
|
||||
d
|
||||
c
|
||||
b
|
||||
|
||||
@@ -122,6 +122,9 @@
|
||||
name = "shrine of the liberator";
|
||||
pixel_x = 0
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -215,6 +218,7 @@
|
||||
/obj/item/weapon/storage/firstaid/fire,
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/firstaid/fire,
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
@@ -262,6 +266,122 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"I" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"J" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"K" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"L" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"M" = (
|
||||
/obj/effect/mob_spawn/human/golem/adamantine,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"N" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"O" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"P" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"Q" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"R" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"S" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"T" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"U" = (
|
||||
/obj/effect/mob_spawn/human/golem/adamantine,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/titanium/purple{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"V" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"W" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
"X" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/golem_ship)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -358,7 +478,7 @@ a
|
||||
a
|
||||
a
|
||||
b
|
||||
l
|
||||
L
|
||||
l
|
||||
j
|
||||
l
|
||||
@@ -384,10 +504,10 @@ l
|
||||
l
|
||||
b
|
||||
l
|
||||
l
|
||||
Q
|
||||
G
|
||||
l
|
||||
l
|
||||
T
|
||||
b
|
||||
b
|
||||
b
|
||||
@@ -427,7 +547,7 @@ j
|
||||
l
|
||||
l
|
||||
b
|
||||
l
|
||||
P
|
||||
l
|
||||
G
|
||||
l
|
||||
@@ -444,18 +564,18 @@ a
|
||||
a
|
||||
b
|
||||
c
|
||||
f
|
||||
I
|
||||
b
|
||||
m
|
||||
M
|
||||
o
|
||||
b
|
||||
l
|
||||
l
|
||||
G
|
||||
o
|
||||
m
|
||||
U
|
||||
b
|
||||
f
|
||||
V
|
||||
F
|
||||
b
|
||||
a
|
||||
@@ -510,18 +630,18 @@ a
|
||||
a
|
||||
b
|
||||
c
|
||||
f
|
||||
J
|
||||
b
|
||||
l
|
||||
l
|
||||
O
|
||||
l
|
||||
l
|
||||
l
|
||||
l
|
||||
S
|
||||
l
|
||||
z
|
||||
b
|
||||
f
|
||||
W
|
||||
F
|
||||
b
|
||||
a
|
||||
@@ -598,9 +718,9 @@ a
|
||||
a
|
||||
b
|
||||
e
|
||||
f
|
||||
K
|
||||
b
|
||||
l
|
||||
N
|
||||
l
|
||||
l
|
||||
l
|
||||
@@ -609,7 +729,7 @@ v
|
||||
l
|
||||
B
|
||||
b
|
||||
f
|
||||
X
|
||||
f
|
||||
b
|
||||
a
|
||||
@@ -670,7 +790,7 @@ h
|
||||
h
|
||||
b
|
||||
t
|
||||
l
|
||||
R
|
||||
b
|
||||
h
|
||||
h
|
||||
|
||||
@@ -16,26 +16,32 @@
|
||||
"e" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/gun/ballistic/revolver/russian/soul,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"f" = (
|
||||
/obj/structure/cursed_slot_machine,
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"g" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/coin/mythril,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"h" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/coin/diamond,
|
||||
@@ -43,13 +49,13 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"i" = (
|
||||
/turf/open/floor/carpet{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"j" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/coin/adamantine,
|
||||
@@ -57,7 +63,7 @@
|
||||
baseturf = /turf/open/floor/plating/lava/smooth;
|
||||
icon_state = "carpetsymbol"
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"k" = (
|
||||
/obj/machinery/computer/arcade/battle{
|
||||
emagged = 1
|
||||
@@ -65,46 +71,50 @@
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"l" = (
|
||||
/obj/item/weapon/coin/gold,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"m" = (
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"n" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c1000,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"o" = (
|
||||
/obj/item/weapon/storage/bag/money,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"p" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/weapon/ore/gold,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"q" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c20,
|
||||
/obj/item/stack/spacecash/c50,
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"r" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c500,
|
||||
@@ -113,21 +123,47 @@
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"s" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c200,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/greed)
|
||||
"t" = (
|
||||
/obj/machinery/door/airlock/gold,
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/obj/structure/fans/tiny/invisible,
|
||||
/area/ruin/powered)
|
||||
"u" = (
|
||||
/obj/structure/table/wood/poker,
|
||||
/obj/item/stack/spacecash/c500,
|
||||
/obj/item/stack/spacecash/c100,
|
||||
/obj/item/stack/spacecash/c1000,
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/greed)
|
||||
"v" = (
|
||||
/obj/item/weapon/coin/gold,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/greed)
|
||||
"w" = (
|
||||
/obj/item/weapon/storage/bag/money,
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/engine/cult{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/greed)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -320,7 +356,7 @@ m
|
||||
m
|
||||
l
|
||||
m
|
||||
l
|
||||
v
|
||||
d
|
||||
d
|
||||
a
|
||||
@@ -364,7 +400,7 @@ m
|
||||
l
|
||||
m
|
||||
l
|
||||
o
|
||||
w
|
||||
d
|
||||
d
|
||||
a
|
||||
@@ -404,7 +440,7 @@ c
|
||||
d
|
||||
d
|
||||
p
|
||||
r
|
||||
u
|
||||
r
|
||||
d
|
||||
c
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/pride)
|
||||
"f" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
@@ -28,12 +28,12 @@
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/pride)
|
||||
"g" = (
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/pride)
|
||||
"h" = (
|
||||
/obj/structure/mirror/magic/pride,
|
||||
/turf/closed/wall/mineral/diamond{
|
||||
@@ -47,6 +47,109 @@
|
||||
blocks_air = 1
|
||||
},
|
||||
/area/ruin/powered)
|
||||
"j" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"k" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"l" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"m" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"n" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"o" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"p" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"q" = (
|
||||
/obj/structure/mirror{
|
||||
pixel_x = 32
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"r" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
"s" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/mineral/silver{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/pride)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -120,16 +223,16 @@ c
|
||||
d
|
||||
d
|
||||
d
|
||||
j
|
||||
e
|
||||
e
|
||||
l
|
||||
e
|
||||
e
|
||||
n
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
p
|
||||
e
|
||||
e
|
||||
d
|
||||
@@ -153,7 +256,7 @@ g
|
||||
g
|
||||
g
|
||||
g
|
||||
g
|
||||
r
|
||||
d
|
||||
a
|
||||
a
|
||||
@@ -197,7 +300,7 @@ g
|
||||
g
|
||||
g
|
||||
g
|
||||
g
|
||||
s
|
||||
d
|
||||
c
|
||||
a
|
||||
@@ -208,16 +311,16 @@ c
|
||||
d
|
||||
d
|
||||
d
|
||||
k
|
||||
f
|
||||
f
|
||||
m
|
||||
f
|
||||
f
|
||||
o
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
f
|
||||
q
|
||||
f
|
||||
f
|
||||
d
|
||||
|
||||
@@ -19,31 +19,31 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"e" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/box/disks_plantgene,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"f" = (
|
||||
/obj/machinery/plantgenes/seedvault,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"g" = (
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"h" = (
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"i" = (
|
||||
/obj/structure/closet/crate/hydroponics,
|
||||
/obj/structure/beebox,
|
||||
@@ -57,7 +57,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"j" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
@@ -71,13 +71,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"l" = (
|
||||
/obj/machinery/door/airlock,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"m" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
icon_state = "propulsion";
|
||||
@@ -90,7 +90,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"o" = (
|
||||
/obj/structure/closet/crate/hydroponics,
|
||||
/obj/item/weapon/cultivator,
|
||||
@@ -108,13 +108,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"p" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"q" = (
|
||||
/obj/item/weapon/hatchet,
|
||||
/obj/item/weapon/storage/bag/plants,
|
||||
@@ -123,7 +123,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"r" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/bag/plants,
|
||||
@@ -133,7 +133,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"s" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/gun/energy/floragun,
|
||||
@@ -144,13 +144,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"t" = (
|
||||
/obj/effect/mob_spawn/human/seed_vault,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"u" = (
|
||||
/obj/structure/sink{
|
||||
icon_state = "sink";
|
||||
@@ -161,19 +161,19 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"v" = (
|
||||
/obj/machinery/vending/hydronutrients,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"w" = (
|
||||
/obj/machinery/vending/hydroseeds,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"x" = (
|
||||
/obj/machinery/reagentgrinder{
|
||||
pixel_y = 5
|
||||
@@ -186,7 +186,7 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"y" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
@@ -197,13 +197,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"z" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"A" = (
|
||||
/obj/machinery/door/airlock/external,
|
||||
/obj/structure/fans/tiny,
|
||||
@@ -217,31 +217,31 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"C" = (
|
||||
/obj/machinery/seed_extractor,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"D" = (
|
||||
/obj/machinery/biogenerator,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"E" = (
|
||||
/obj/machinery/chem_dispenser/mutagensaltpeter,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"F" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"G" = (
|
||||
/obj/structure/closet/crate/hydroponics,
|
||||
/obj/item/clothing/under/rank/hydroponics,
|
||||
@@ -251,13 +251,13 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"H" = (
|
||||
/obj/machinery/chem_master/condimaster,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"I" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/reagent_containers/glass/bucket,
|
||||
@@ -267,14 +267,14 @@
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"J" = (
|
||||
/obj/item/weapon/storage/toolbox/syndicate,
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered)
|
||||
/area/ruin/powered/seedvault)
|
||||
"K" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -292,6 +292,102 @@
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"N" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/weapon/storage/box/disks_plantgene,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"O" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"P" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"Q" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"R" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"S" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"T" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"U" = (
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"V" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"W" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"X" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
"Y" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer{
|
||||
baseturf = /turf/open/floor/plating/lava/smooth
|
||||
},
|
||||
/area/ruin/powered/seedvault)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -346,10 +442,10 @@ a
|
||||
a
|
||||
c
|
||||
c
|
||||
T
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
U
|
||||
c
|
||||
c
|
||||
a
|
||||
@@ -389,12 +485,12 @@ c
|
||||
k
|
||||
c
|
||||
n
|
||||
h
|
||||
R
|
||||
u
|
||||
h
|
||||
h
|
||||
u
|
||||
h
|
||||
V
|
||||
u
|
||||
c
|
||||
a
|
||||
@@ -429,17 +525,17 @@ a
|
||||
a
|
||||
a
|
||||
c
|
||||
e
|
||||
N
|
||||
h
|
||||
c
|
||||
p
|
||||
P
|
||||
h
|
||||
p
|
||||
h
|
||||
h
|
||||
p
|
||||
h
|
||||
p
|
||||
X
|
||||
c
|
||||
a
|
||||
a
|
||||
@@ -539,17 +635,17 @@ a
|
||||
b
|
||||
a
|
||||
c
|
||||
h
|
||||
O
|
||||
h
|
||||
c
|
||||
p
|
||||
Q
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
h
|
||||
p
|
||||
Y
|
||||
c
|
||||
a
|
||||
a
|
||||
@@ -587,12 +683,12 @@ c
|
||||
i
|
||||
c
|
||||
s
|
||||
h
|
||||
S
|
||||
y
|
||||
h
|
||||
h
|
||||
y
|
||||
h
|
||||
W
|
||||
J
|
||||
c
|
||||
a
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -37,6 +37,9 @@
|
||||
/area/ruin/powered/aesthetic)
|
||||
"j" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"k" = (
|
||||
@@ -153,10 +156,10 @@
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"G" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid/line,
|
||||
/turf/open/floor/plating/astplate{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/asteroid/line,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"H" = (
|
||||
/obj/effect/overlay/palmtree_l,
|
||||
@@ -196,6 +199,39 @@
|
||||
/obj/effect/decal/sandeffect,
|
||||
/turf/open/floor/plasteel/airless/asteroid,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"O" = (
|
||||
/obj/structure/chair/comfy/black{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"P" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"Q" = (
|
||||
/obj/machinery/light/small,
|
||||
/turf/open/floor/plasteel/vaporwave,
|
||||
/area/ruin/powered/aesthetic)
|
||||
"R" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/astplate{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"S" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/astplate{
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
},
|
||||
/area/ruin/unpowered/no_grav)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -294,7 +330,7 @@ h
|
||||
u
|
||||
y
|
||||
f
|
||||
B
|
||||
R
|
||||
d
|
||||
d
|
||||
a
|
||||
@@ -326,7 +362,7 @@ j
|
||||
k
|
||||
k
|
||||
v
|
||||
k
|
||||
P
|
||||
f
|
||||
C
|
||||
I
|
||||
@@ -390,11 +426,11 @@ a
|
||||
d
|
||||
c
|
||||
g
|
||||
n
|
||||
O
|
||||
n
|
||||
k
|
||||
w
|
||||
k
|
||||
Q
|
||||
g
|
||||
F
|
||||
I
|
||||
@@ -430,7 +466,7 @@ p
|
||||
u
|
||||
y
|
||||
g
|
||||
B
|
||||
S
|
||||
d
|
||||
d
|
||||
a
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
The /tg/ codebase currently requires you to have 11 z-levels of the same size dimensions.
|
||||
z-level order is important, the order you put them in inside the map config.dm will determine what z level number they are assigned ingame.
|
||||
Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1
|
||||
|
||||
current as of 2016/6/2
|
||||
z1 = station
|
||||
z2 = centcomm
|
||||
z5 = mining
|
||||
Everything else = randomized space
|
||||
Last space-z level = empty
|
||||
*/
|
||||
|
||||
#define CROSSLINKED 2
|
||||
#define SELFLOOPING 1
|
||||
#define UNAFFECTED 0
|
||||
|
||||
#define MAIN_STATION "Main Station"
|
||||
#define CENTCOMM "CentComm"
|
||||
#define EMPTY_AREA_1 "Empty Area 1"
|
||||
#define EMPTY_AREA_2 "Empty Area 2"
|
||||
#define MINING "Mining Asteroid"
|
||||
#define EMPTY_AREA_3 "Empty Area 3"
|
||||
#define EMPTY_AREA_4 "Empty Area 4"
|
||||
#define EMPTY_AREA_5 "Empty Area 5"
|
||||
#define EMPTY_AREA_6 "Empty Area 6"
|
||||
#define EMPTY_AREA_7 "Empty Area 7"
|
||||
#define EMPTY_AREA_8 "Empty Area 8"
|
||||
#define AWAY_MISSION "Away Mission"
|
||||
#define AWAY_MISSION_LIST list(AWAY_MISSION = SELFLOOPING)
|
||||
#define DEFAULT_MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, MINING = SELFLOOPING, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED, EMPTY_AREA_5 = CROSSLINKED, EMPTY_AREA_6 = CROSSLINKED, EMPTY_AREA_7 = CROSSLINKED, EMPTY_AREA_8 = CROSSLINKED)
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#include "map_files\generic\SpaceStation.dmm"
|
||||
#include "map_files\generic\Space.dmm"
|
||||
#include "map_files\generic\SpaceDock.dmm"
|
||||
#include "map_files\Mining\lavaland.dmm"
|
||||
#include "map_files\Mining\Lavaland.dmm"
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifdef ALL_MAPS
|
||||
#include "map_files\debug\runtimestation.dmm"
|
||||
#include "map_files\Deltastation\DeltaStation2.dmm"
|
||||
#include "map_files\MetaStation\MetaStation.dmm"
|
||||
#include "map_files\OmegaStation\OmegaStation.dmm"
|
||||
#include "map_files\PubbyStation\PubbyStation.dmm"
|
||||
#include "map_files\TgStation\tgstation.2.1.3.dmm"
|
||||
#include "map_files\Cerestation\cerestation.dmm"
|
||||
#include "map_files\CitadelStation\CitadelStation-1.2.1.dmm"
|
||||
|
||||
#include "map_files\generic\Centcomm.dmm"
|
||||
#include "map_files\generic\SpaceStation.dmm"
|
||||
#include "map_files\generic\Space.dmm"
|
||||
#include "map_files\generic\SpaceDock.dmm"
|
||||
|
||||
#include "map_files\Mining\Lavaland.dmm"
|
||||
|
||||
#ifdef TRAVISBUILDING
|
||||
#include "templates.dm"
|
||||
#endif
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -51,8 +51,10 @@
|
||||
#define LIGHT_COLOR_GREEN "#64C864" //Bright but quickly dissipating neon green. rgb(100, 200, 100)
|
||||
#define LIGHT_COLOR_BLUE "#6496FA" //Cold, diluted blue. rgb(100, 150, 250)
|
||||
|
||||
#define LIGHT_COLOR_BLUEGREEN "#7DE1AF" //Light blueish green. rgb(125, 225, 175)
|
||||
#define LIGHT_COLOR_CYAN "#7DE1E1" //Diluted cyan. rgb(125, 225, 225)
|
||||
#define LIGHT_COLOR_LIGHT_CYAN "#40CEFF" //More-saturated cyan. rgb(64, 206, 255)
|
||||
#define LIGHT_COLOR_DARK_BLUE "#6496FA" //Saturated blue. rgb(51, 117, 248)
|
||||
#define LIGHT_COLOR_PINK "#E17DE1" //Diluted, mid-warmth pink. rgb(225, 125, 225)
|
||||
#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
|
||||
#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
|
||||
|
||||
@@ -4,6 +4,19 @@
|
||||
// #define EAST 4
|
||||
// #define WEST 8
|
||||
|
||||
//These get to go at the top, because they're special
|
||||
//You can use these defines to get the typepath of the currently running proc/verb (yes procs + verbs are objects)
|
||||
/* eg:
|
||||
/mob/living/carbon/human/death()
|
||||
world << THIS_PROC_TYPE_STR //You can only output the string versions
|
||||
Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a string with () (eg: the _WITH_ARGS defines) to make it look nicer)
|
||||
*/
|
||||
#define THIS_PROC_TYPE .....
|
||||
#define THIS_PROC_TYPE_STR "[THIS_PROC_TYPE]" //Because you can only obtain a string of THIS_PROC_TYPE using "[]", and it's nice to just +/+= strings
|
||||
#define THIS_PROC_TYPE_STR_WITH_ARGS "[THIS_PROC_TYPE]([args.Join(",")])"
|
||||
#define THIS_PROC_TYPE_WEIRD ...... //This one is WEIRD, in some cases (When used in certain defines? (eg: ASSERT)) THIS_PROC_TYPE will fail to work, but THIS_PROC_TYPE_WEIRD will work instead
|
||||
#define THIS_PROC_TYPE_WEIRD_STR "[THIS_PROC_TYPE_WEIRD]" //Included for completeness
|
||||
#define THIS_PROC_TYPE_WEIRD_STR_WITH_ARGS "[THIS_PROC_TYPE_WEIRD]([args.Join(",")])" //Ditto
|
||||
|
||||
#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
|
||||
|
||||
|
||||
@@ -1079,18 +1079,17 @@ B --><-- A
|
||||
return L
|
||||
|
||||
//similar function to RANGE_TURFS(), but will search spiralling outwards from the center (like the above, but only turfs)
|
||||
/proc/spiral_range_turfs(dist=0, center=usr, orange=0)
|
||||
/proc/spiral_range_turfs(dist=0, center=usr, orange=0, list/outlist = list(), tick_checked)
|
||||
outlist.Cut()
|
||||
if(!dist)
|
||||
if(!orange)
|
||||
return list(center)
|
||||
else
|
||||
return list()
|
||||
outlist += center
|
||||
return outlist
|
||||
|
||||
var/turf/t_center = get_turf(center)
|
||||
if(!t_center)
|
||||
return list()
|
||||
return outlist
|
||||
|
||||
var/list/L = list()
|
||||
var/list/L = outlist
|
||||
var/turf/T
|
||||
var/y
|
||||
var/x
|
||||
@@ -1128,6 +1127,8 @@ B --><-- A
|
||||
if(T)
|
||||
L += T
|
||||
c_dist++
|
||||
if(tick_checked)
|
||||
CHECK_TICK
|
||||
|
||||
return L
|
||||
|
||||
|
||||
@@ -22,12 +22,12 @@ GLOBAL_VAR_INIT(tinted_weldhelh, TRUE)
|
||||
// Debug2 is used in conjunction with a lot of admin verbs and therefore is actually legit.
|
||||
GLOBAL_VAR_INIT(Debug, FALSE) // global debug switch
|
||||
GLOBAL_VAR_INIT(Debug2, FALSE)
|
||||
|
||||
//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
|
||||
GLOBAL_VAR_INIT(MAX_EX_DEVESTATION_RANGE, 3)
|
||||
GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7)
|
||||
GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
|
||||
|
||||
|
||||
//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
|
||||
GLOBAL_VAR_INIT(MAX_EX_DEVESTATION_RANGE, 3)
|
||||
GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7)
|
||||
GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
|
||||
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
|
||||
|
||||
|
||||
@@ -0,0 +1,510 @@
|
||||
SUBSYSTEM_DEF(explosion)
|
||||
priority = 99
|
||||
wait = 1
|
||||
flags = SS_TICKER|SS_NO_INIT
|
||||
|
||||
var/list/explosions
|
||||
|
||||
var/rebuild_tick_split_count = FALSE
|
||||
var/tick_portions_required = 0
|
||||
|
||||
var/list/logs
|
||||
|
||||
var/list/zlevels_that_ignore_bombcap
|
||||
var/list/doppler_arrays
|
||||
|
||||
//legacy caps, set by config
|
||||
var/devastation_cap = 3
|
||||
var/heavy_cap = 7
|
||||
var/light_cap = 14
|
||||
var/flash_cap = 14
|
||||
var/flame_cap = 14
|
||||
var/dyn_ex_scale = 0.5
|
||||
|
||||
var/id_counter = 0
|
||||
|
||||
/datum/controller/subsystem/explosion/PreInit()
|
||||
doppler_arrays = list()
|
||||
logs = list()
|
||||
explosions = list()
|
||||
zlevels_that_ignore_bombcap = list("[ZLEVEL_MINING]")
|
||||
|
||||
/datum/controller/subsystem/explosion/Shutdown()
|
||||
QDEL_LIST(explosions)
|
||||
QDEL_LIST(logs)
|
||||
zlevels_that_ignore_bombcap.Cut()
|
||||
|
||||
/datum/controller/subsystem/explosion/Recover()
|
||||
explosions = SSexplosion.explosions
|
||||
logs = SSexplosion.logs
|
||||
id_counter = SSexplosion.id_counter
|
||||
rebuild_tick_split_count = TRUE
|
||||
zlevels_that_ignore_bombcap = SSexplosion.zlevels_that_ignore_bombcap
|
||||
doppler_arrays = SSexplosion.doppler_arrays
|
||||
|
||||
devastation_cap = SSexplosion.devastation_cap
|
||||
heavy_cap = SSexplosion.heavy_cap
|
||||
light_cap = SSexplosion.light_cap
|
||||
flash_cap = SSexplosion.flash_cap
|
||||
flame_cap = SSexplosion.flame_cap
|
||||
dyn_ex_scale = SSexplosion.dyn_ex_scale
|
||||
|
||||
/datum/controller/subsystem/explosion/fire()
|
||||
var/list/cached_explosions = explosions
|
||||
var/num_explosions = cached_explosions.len
|
||||
if(!num_explosions)
|
||||
return
|
||||
|
||||
//figure exactly how many tick splits are required
|
||||
var/num_splits
|
||||
if(rebuild_tick_split_count)
|
||||
var/reactionary = config.reactionary_explosions
|
||||
num_splits = num_explosions
|
||||
for(var/I in cached_explosions)
|
||||
var/datum/explosion/E = I
|
||||
if(!E.turfs_processed)
|
||||
++num_splits
|
||||
if(reactionary && !E.densities_processed)
|
||||
++num_splits
|
||||
tick_portions_required = num_splits
|
||||
else
|
||||
num_splits = tick_portions_required
|
||||
|
||||
MC_SPLIT_TICK_INIT(num_splits)
|
||||
|
||||
for(var/I in cached_explosions)
|
||||
var/datum/explosion/E = I
|
||||
|
||||
var/etp = E.turfs_processed
|
||||
if(!etp)
|
||||
if(GatherTurfs(E))
|
||||
--tick_portions_required
|
||||
etp = TRUE
|
||||
MC_SPLIT_TICK
|
||||
|
||||
var/edp = E.densities_processed
|
||||
if(!edp)
|
||||
if(DensityCalculate(E, etp))
|
||||
--tick_portions_required
|
||||
edp = TRUE
|
||||
MC_SPLIT_TICK
|
||||
|
||||
if(ProcessExplosion(E, edp)) //splits the tick
|
||||
--tick_portions_required
|
||||
explosions -= E
|
||||
logs += E
|
||||
NotifyDopplers(E)
|
||||
MC_SPLIT_TICK
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/NotifyDopplers(datum/explosion/E)
|
||||
for(var/array in doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(E.epicenter, E.devastation, E.heavy, E.light, E.finished_at - E.started_at, E.orig_dev_range, E.orig_heavy_range, E.orig_light_range)
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/Create(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0 , silent = FALSE, smoke = FALSE)
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [get_area(epicenter)] [ADMIN_COORDJMP(epicenter)]")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
|
||||
var/datum/explosion/E = new(++id_counter, epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, flame_range, silent, smoke, ignorecap)
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect_system/explosion/Eff
|
||||
if(smoke)
|
||||
Eff = new /datum/effect_system/explosion/smoke
|
||||
else
|
||||
Eff = new
|
||||
Eff.set_up(epicenter)
|
||||
Eff.start()
|
||||
|
||||
//flash mobs
|
||||
if(flash_range)
|
||||
for(var/mob/living/L in viewers(flash_range, epicenter))
|
||||
L.flash_act()
|
||||
|
||||
if(!silent)
|
||||
ExplosionSound(epicenter, devastation_range, heavy_impact_range, E.extent)
|
||||
|
||||
//add to SS
|
||||
if(E.extent)
|
||||
tick_portions_required += 2 + (config.reactionary_explosions ? 1 : 0)
|
||||
explosions += E
|
||||
else
|
||||
logs += E //Already done processing
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/CreateDynamic(atom/epicenter, power, flash_range, adminlog = TRUE, ignorecap = TRUE, flame_range = 0 , silent = FALSE, smoke = TRUE)
|
||||
if(!power)
|
||||
return
|
||||
var/range = round((2 * power) ** dyn_ex_scale)
|
||||
Create(epicenter, round(range * 0.25), round(range * 0.5), round(range), flash_range*range, adminlog, ignorecap, flame_range*range, silent, smoke)
|
||||
|
||||
// Using default dyn_ex scale:
|
||||
// 100 explosion power is a (5, 10, 20) explosion.
|
||||
// 75 explosion power is a (4, 8, 17) explosion.
|
||||
// 50 explosion power is a (3, 7, 14) explosion.
|
||||
// 25 explosion power is a (2, 5, 10) explosion.
|
||||
// 10 explosion power is a (1, 3, 6) explosion.
|
||||
// 5 explosion power is a (0, 1, 3) explosion.
|
||||
// 1 explosion power is a (0, 0, 1) explosion.
|
||||
|
||||
/datum/explosion
|
||||
var/explosion_id
|
||||
var/turf/epicenter
|
||||
|
||||
var/started_at
|
||||
var/finished_at
|
||||
var/tick_started
|
||||
var/tick_finished
|
||||
|
||||
var/turfs_processed = FALSE
|
||||
var/densities_processed = FALSE
|
||||
|
||||
var/orig_dev_range
|
||||
var/orig_heavy_range
|
||||
var/orig_light_range
|
||||
var/orig_flash_range
|
||||
var/orig_flame_range
|
||||
|
||||
var/devastation
|
||||
var/heavy
|
||||
var/light
|
||||
var/extent
|
||||
|
||||
var/flash
|
||||
var/flame
|
||||
|
||||
var/gather_dist = 0
|
||||
|
||||
var/list/gathered_turfs
|
||||
var/list/calculated_turfs
|
||||
|
||||
var/list/unsafe_turfs
|
||||
|
||||
/datum/explosion/New(id, turf/epi, devastation_range, heavy_impact_range, light_impact_range, flash_range, flame_range, silent, smoke, ignorecap)
|
||||
explosion_id = id
|
||||
epicenter = epi
|
||||
|
||||
densities_processed = !config.reactionary_explosions
|
||||
|
||||
orig_dev_range = devastation_range
|
||||
orig_heavy_range = heavy_impact_range
|
||||
orig_light_range = light_impact_range
|
||||
orig_flash_range = flash_range
|
||||
orig_flame_range = flame_range
|
||||
|
||||
if(!ignorecap && !("[epicenter.z]" in SSexplosion.zlevels_that_ignore_bombcap))
|
||||
//Clamp all values
|
||||
devastation_range = min(SSexplosion.devastation_cap, devastation_range)
|
||||
heavy_impact_range = min(SSexplosion.heavy_cap, heavy_impact_range)
|
||||
light_impact_range = min(SSexplosion.light_cap, light_impact_range)
|
||||
flash_range = min(SSexplosion.flash_cap, flash_range)
|
||||
flame_range = min(SSexplosion.flame_cap, flame_range)
|
||||
|
||||
//store this
|
||||
devastation = devastation_range
|
||||
heavy = heavy_impact_range
|
||||
light = light_impact_range
|
||||
|
||||
extent = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
|
||||
|
||||
flash = flash_range
|
||||
flame = flame_range
|
||||
|
||||
started_at = REALTIMEOFDAY
|
||||
tick_started = world.time
|
||||
|
||||
gathered_turfs = list()
|
||||
calculated_turfs = list()
|
||||
unsafe_turfs = list()
|
||||
|
||||
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
|
||||
// Stereo users will also hear the direction of the explosion!
|
||||
|
||||
// Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions.
|
||||
// 3/7/14 will calculate to 80 + 35
|
||||
/proc/ExplosionSound(turf/epicenter, devastation_range, heavy_impact_range, extent)
|
||||
var/far_dist = 0
|
||||
far_dist += heavy_impact_range * 5
|
||||
far_dist += devastation_range * 20
|
||||
|
||||
var/z0 = epicenter.z
|
||||
|
||||
var/frequency = get_rand_frequency()
|
||||
var/ex_sound = get_sfx("explosion")
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
// Double check for client
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == z0)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(extent + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
|
||||
/datum/explosion/Destroy()
|
||||
SSexplosion.explosions -= src
|
||||
SSexplosion.logs -= src
|
||||
LAZYCLEARLIST(gathered_turfs)
|
||||
LAZYCLEARLIST(calculated_turfs)
|
||||
LAZYCLEARLIST(unsafe_turfs)
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/GatherTurfs(datum/explosion/E)
|
||||
var/turf/epicenter = E.epicenter
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
var/c_dist = E.gather_dist
|
||||
var/dist = E.extent
|
||||
|
||||
var/list/L = E.gathered_turfs
|
||||
|
||||
if(!c_dist)
|
||||
L += epicenter
|
||||
++c_dist
|
||||
|
||||
while( c_dist <= dist )
|
||||
var/y = y0 + c_dist
|
||||
var/x = x0 - c_dist + 1
|
||||
for(x in x to x0 + c_dist)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
|
||||
y = y0 + c_dist - 1
|
||||
x = x0 + c_dist
|
||||
for(y in y0 - c_dist to y)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
|
||||
y = y0 - c_dist
|
||||
x = x0 + c_dist - 1
|
||||
for(x in x0 - c_dist to x)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
|
||||
y = y0 - c_dist + 1
|
||||
x = x0 - c_dist
|
||||
for(y in y to y0 + c_dist)
|
||||
var/turf/T = locate(x, y, z0)
|
||||
if(T)
|
||||
L += T
|
||||
++c_dist
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
break
|
||||
|
||||
if(c_dist > dist)
|
||||
E.turfs_processed = TRUE
|
||||
return TRUE
|
||||
else
|
||||
E.gather_dist = c_dist
|
||||
return FALSE
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/DensityCalculate(datum/explosion/E, done_gathering_turfs)
|
||||
var/list/L = E.calculated_turfs
|
||||
var/cut_to = 1
|
||||
for(var/I in E.gathered_turfs) // we cache the explosion block rating of every turf in the explosion area
|
||||
var/turf/T = I
|
||||
++cut_to
|
||||
|
||||
var/current_exp_block = T.density ? T.explosion_block : 0
|
||||
|
||||
for(var/obj/machinery/door/D in T)
|
||||
if(D.density)
|
||||
current_exp_block += D.explosion_block
|
||||
|
||||
for(var/obj/structure/window/W in T)
|
||||
if(W.reinf && W.fulltile)
|
||||
current_exp_block += W.explosion_block
|
||||
|
||||
for(var/obj/structure/blob/B in T)
|
||||
current_exp_block += B.explosion_block
|
||||
|
||||
L[T] = current_exp_block
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
E.gathered_turfs.Cut(1, cut_to)
|
||||
return FALSE
|
||||
|
||||
E.gathered_turfs.Cut()
|
||||
return done_gathering_turfs
|
||||
|
||||
/datum/controller/subsystem/explosion/proc/ProcessExplosion(datum/explosion/E, done_calculating_turfs)
|
||||
//cache shit for speed
|
||||
var/id = E.explosion_id
|
||||
|
||||
var/list/cached_unsafe = E.unsafe_turfs
|
||||
var/list/cached_exp_block = E.calculated_turfs
|
||||
var/list/affected_turfs = cached_exp_block ? cached_exp_block : E.gathered_turfs
|
||||
|
||||
var/devastation_range = E.devastation
|
||||
var/heavy_impact_range = E.heavy
|
||||
var/light_impact_range = E.light
|
||||
|
||||
var/flame_range = E.flame
|
||||
var/throw_range_max = E.extent
|
||||
|
||||
var/turf/epi = E.epicenter
|
||||
|
||||
var/x0 = epi.x
|
||||
var/y0 = epi.y
|
||||
|
||||
var/cut_to = 1
|
||||
for(var/TI in affected_turfs)
|
||||
var/turf/T = TI
|
||||
++cut_to
|
||||
|
||||
var/init_dist = cheap_hypotenuse(T.x, T.y, x0, y0)
|
||||
var/dist = init_dist
|
||||
|
||||
if(cached_exp_block)
|
||||
var/turf/Trajectory = T
|
||||
while(Trajectory != epi)
|
||||
Trajectory = get_step_towards(Trajectory, epi)
|
||||
dist += cached_exp_block[Trajectory]
|
||||
|
||||
var/flame_dist = dist < flame_range
|
||||
var/throw_dist = dist
|
||||
|
||||
if(dist < devastation_range)
|
||||
dist = 1
|
||||
else if(dist < heavy_impact_range)
|
||||
dist = 2
|
||||
else if(dist < light_impact_range)
|
||||
dist = 3
|
||||
else
|
||||
dist = 0
|
||||
|
||||
//------- EX_ACT AND TURF FIRES -------
|
||||
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
|
||||
if(dist > 0)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
cached_unsafe += T
|
||||
|
||||
//--- THROW ITEMS AROUND ---
|
||||
|
||||
var/throw_dir = get_dir(epi, T)
|
||||
for(var/obj/item/I in T)
|
||||
if(!I.anchored)
|
||||
var/throw_range = rand(throw_dist, throw_range_max)
|
||||
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
|
||||
I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Resets when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, 4)
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
var/circumference = (PI * (init_dist + 4) * 2) //+4 to radius to prevent shit gaps
|
||||
if(cached_unsafe.len > circumference) //only do this every revolution
|
||||
for(var/Unexplode in cached_unsafe)
|
||||
var/turf/UnexplodeT = Unexplode
|
||||
UnexplodeT.explosion_level = 0
|
||||
cached_unsafe.Cut()
|
||||
done_calculating_turfs = FALSE
|
||||
break
|
||||
|
||||
affected_turfs.Cut(1, cut_to)
|
||||
|
||||
if(!done_calculating_turfs)
|
||||
return FALSE
|
||||
|
||||
//unfuck the shit
|
||||
for(var/Unexplode in cached_unsafe)
|
||||
var/turf/UnexplodeT = Unexplode
|
||||
UnexplodeT.explosion_level = 0
|
||||
cached_unsafe.Cut()
|
||||
|
||||
E.finished_at = REALTIMEOFDAY
|
||||
E.tick_finished = world.time
|
||||
|
||||
return TRUE
|
||||
|
||||
/client/proc/check_bomb_impacts()
|
||||
set name = "Check Bomb Impact"
|
||||
set category = "Debug"
|
||||
|
||||
var/newmode = alert("Use reactionary explosions?","Check Bomb Impact", "Yes", "No")
|
||||
var/turf/epicenter = get_turf(mob)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
|
||||
var/dev = 0
|
||||
var/heavy = 0
|
||||
var/light = 0
|
||||
var/list/choices = list("Small Bomb","Medium Bomb","Big Bomb","Custom Bomb")
|
||||
var/choice = input("Bomb Size?") in choices
|
||||
switch(choice)
|
||||
if(null)
|
||||
return 0
|
||||
if("Small Bomb")
|
||||
dev = 1
|
||||
heavy = 2
|
||||
light = 3
|
||||
if("Medium Bomb")
|
||||
dev = 2
|
||||
heavy = 3
|
||||
light = 4
|
||||
if("Big Bomb")
|
||||
dev = 3
|
||||
heavy = 5
|
||||
light = 7
|
||||
if("Custom Bomb")
|
||||
dev = input("Devestation range (Tiles):") as num
|
||||
heavy = input("Heavy impact range (Tiles):") as num
|
||||
light = input("Light impact range (Tiles):") as num
|
||||
else
|
||||
return
|
||||
|
||||
var/datum/explosion/E = new(null, epicenter, dev, heavy, light, ignorecap = TRUE)
|
||||
|
||||
while(!SSexplosion.GatherTurfs(E))
|
||||
stoplag()
|
||||
var/list/turfs
|
||||
if(newmode)
|
||||
while(!SSexplosion.DensityCalculate(E, TRUE))
|
||||
stoplag()
|
||||
turfs = E.calculated_turfs.Copy()
|
||||
else
|
||||
turfs = E.gathered_turfs.Copy()
|
||||
|
||||
qdel(E)
|
||||
|
||||
for(var/I in turfs)
|
||||
var/turf/T = I
|
||||
var/dist = cheap_hypotenuse(T.x, T.y, x0, y0) + turfs[T]
|
||||
|
||||
if(dist < dev)
|
||||
T.color = "red"
|
||||
T.maptext = "Dev"
|
||||
else if (dist < heavy)
|
||||
T.color = "yellow"
|
||||
T.maptext = "Heavy"
|
||||
else if (dist < light)
|
||||
T.color = "blue"
|
||||
T.maptext = "Light"
|
||||
CHECK_TICK
|
||||
|
||||
sleep(100)
|
||||
for(var/I in turfs)
|
||||
var/turf/T = I
|
||||
T.color = null
|
||||
T.maptext = null
|
||||
@@ -37,11 +37,11 @@ SUBSYSTEM_DEF(machines)
|
||||
|
||||
var/seconds = wait * 0.1
|
||||
while(currentrun.len)
|
||||
var/datum/thing = currentrun[currentrun.len]
|
||||
var/obj/machinery/thing = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if(thing && thing.process(seconds) != PROCESS_KILL)
|
||||
if(thing:use_power)
|
||||
thing:auto_use_power() //add back the power state
|
||||
if(thing.use_power)
|
||||
thing.auto_use_power() //add back the power state
|
||||
else
|
||||
processing -= thing
|
||||
if (thing)
|
||||
|
||||
@@ -119,7 +119,9 @@ SUBSYSTEM_DEF(mapping)
|
||||
INIT_ANNOUNCE("Loading [config.map_name]...")
|
||||
TryLoadZ(config.GetFullMapPath(), FailedZs, ZLEVEL_STATION)
|
||||
INIT_ANNOUNCE("Loaded station in [(REALTIMEOFDAY - start_time)/10]s!")
|
||||
SSblackbox.add_details("map_name", config.map_name)
|
||||
if(SSdbcore.Connect())
|
||||
var/datum/DBQuery/query_round_map_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET map_name = '[config.map_name]' WHERE id = [GLOB.round_id]")
|
||||
query_round_map_name.Execute()
|
||||
|
||||
if(config.minetype != "lavaland")
|
||||
INIT_ANNOUNCE("WARNING: A map without lavaland set as it's minetype was loaded! This is being ignored! Update the maploader code!")
|
||||
|
||||
@@ -25,6 +25,7 @@ SUBSYSTEM_DEF(shuttle)
|
||||
var/area/emergencyLastCallLoc
|
||||
var/emergencyCallAmount = 0 //how many times the escape shuttle was called
|
||||
var/emergencyNoEscape
|
||||
var/emergencyNoRecall = FALSE
|
||||
var/list/hostileEnvironments = list()
|
||||
|
||||
//supply shuttle stuff
|
||||
|
||||
@@ -1,10 +1,48 @@
|
||||
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range, silent = 0, smoke = 1)
|
||||
set waitfor = 0
|
||||
src = null //so we don't abort once src is deleted
|
||||
#define EXPLOSION_THROW_SPEED 4
|
||||
|
||||
GLOBAL_LIST_EMPTY(explosions)
|
||||
//Against my better judgement, I will return the explosion datum
|
||||
//If I see any GC errors for it I will find you
|
||||
//and I will gib you
|
||||
/proc/explosion(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = TRUE, ignorecap = FALSE, flame_range = 0 , silent = FALSE, smoke = FALSE)
|
||||
return new /datum/explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke)
|
||||
|
||||
//This datum creates 3 async tasks
|
||||
//1 GatherSpiralTurfsProc runs spiral_range_turfs(tick_checked = TRUE) to populate the affected_turfs list
|
||||
//2 CaculateExplosionBlock adds the blockings to the cached_exp_block list
|
||||
//3 The main thread explodes the prepared turfs
|
||||
|
||||
/datum/explosion
|
||||
var/explosion_id
|
||||
var/started_at
|
||||
var/running = TRUE
|
||||
var/stopped = 0 //This is the number of threads stopped !DOESN'T COUNT THREAD 2!
|
||||
var/static/id_counter = 0
|
||||
|
||||
#define EX_PREPROCESS_EXIT_CHECK \
|
||||
if(!running) {\
|
||||
stopped = 2;\
|
||||
qdel(src);\
|
||||
return;\
|
||||
}
|
||||
|
||||
#define EX_PREPROCESS_CHECK_TICK \
|
||||
if(TICK_CHECK) {\
|
||||
stoplag();\
|
||||
EX_PREPROCESS_EXIT_CHECK\
|
||||
}
|
||||
|
||||
/datum/explosion/New(atom/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog, ignorecap, flame_range, silent, smoke)
|
||||
set waitfor = FALSE
|
||||
|
||||
var/id = ++id_counter
|
||||
explosion_id = id
|
||||
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
GLOB.explosions += src
|
||||
if(isnull(flame_range))
|
||||
flame_range = light_impact_range
|
||||
if(isnull(flash_range))
|
||||
@@ -30,14 +68,13 @@
|
||||
//I would make this not ex_act the thing that triggered the explosion,
|
||||
//but everything that explodes gives us their loc or a get_turf()
|
||||
//and somethings expect us to ex_act them so they can qdel()
|
||||
sleep(1) //tldr, let the calling proc call qdel(src) before we explode
|
||||
stoplag() //tldr, let the calling proc call qdel(src) before we explode
|
||||
|
||||
var/static/explosionid = 1
|
||||
var/id = explosionid++
|
||||
var/start = world.timeofday
|
||||
EX_PREPROCESS_EXIT_CHECK
|
||||
|
||||
started_at = REALTIMEOFDAY
|
||||
|
||||
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
|
||||
var/list/cached_exp_block = list()
|
||||
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [get_area(epicenter)] [ADMIN_COORDJMP(epicenter)]")
|
||||
@@ -53,23 +90,27 @@
|
||||
far_dist += heavy_impact_range * 5
|
||||
far_dist += devastation_range * 20
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
if(!silent)
|
||||
var/frequency = get_rand_frequency()
|
||||
var/ex_sound = get_sfx("explosion")
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
// Double check for client
|
||||
if(M && M.client)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == epicenter.z)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == z0)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//postpone processing for a bit
|
||||
var/postponeCycles = max(round(devastation_range/8),1)
|
||||
@@ -77,66 +118,52 @@
|
||||
SSmachines.postpone(postponeCycles)
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect_system/explosion/E
|
||||
if(smoke)
|
||||
var/datum/effect_system/explosion/smoke/E = new/datum/effect_system/explosion/smoke()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
E = new /datum/effect_system/explosion/smoke
|
||||
else
|
||||
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion()
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
E = new
|
||||
E.set_up(epicenter)
|
||||
E.start()
|
||||
|
||||
var/x0 = epicenter.x
|
||||
var/y0 = epicenter.y
|
||||
var/z0 = epicenter.z
|
||||
|
||||
var/list/affected_turfs = spiral_range_turfs(max_range, epicenter)
|
||||
|
||||
if(config.reactionary_explosions)
|
||||
for(var/turf/T in affected_turfs) // we cache the explosion block rating of every turf in the explosion area
|
||||
cached_exp_block[T] = 0
|
||||
if(T.density && T.explosion_block)
|
||||
cached_exp_block[T] += T.explosion_block
|
||||
|
||||
for(var/obj/machinery/door/D in T)
|
||||
if(D.density && D.explosion_block)
|
||||
cached_exp_block[T] += D.explosion_block
|
||||
|
||||
for(var/obj/structure/window/W in T)
|
||||
if(W.reinf && W.fulltile)
|
||||
cached_exp_block[T] += W.explosion_block
|
||||
|
||||
for(var/obj/structure/blob/B in T)
|
||||
cached_exp_block[T] += B.explosion_block
|
||||
CHECK_TICK
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//flash mobs
|
||||
if(flash_range)
|
||||
for(var/mob/living/L in viewers(flash_range, epicenter))
|
||||
L.flash_act()
|
||||
|
||||
CHECK_TICK
|
||||
EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
var/list/exploded_this_tick = list() //open turfs that need to be blocked off while we sleep
|
||||
for(var/turf/T in affected_turfs)
|
||||
var/list/affected_turfs = GatherSpiralTurfs(max_range, epicenter)
|
||||
|
||||
if (!T)
|
||||
continue
|
||||
var/reactionary = config.reactionary_explosions
|
||||
var/list/cached_exp_block
|
||||
|
||||
if(reactionary)
|
||||
cached_exp_block = CaculateExplosionBlock(affected_turfs)
|
||||
|
||||
//lists are guaranteed to contain at least 1 turf at this point
|
||||
|
||||
var/iteration = 0
|
||||
var/affTurfLen = affected_turfs.len
|
||||
var/expBlockLen = cached_exp_block.len
|
||||
for(var/TI in affected_turfs)
|
||||
var/turf/T = TI
|
||||
++iteration
|
||||
var/init_dist = cheap_hypotenuse(T.x, T.y, x0, y0)
|
||||
var/dist = init_dist
|
||||
|
||||
if(config.reactionary_explosions)
|
||||
if(reactionary)
|
||||
var/turf/Trajectory = T
|
||||
while(Trajectory != epicenter)
|
||||
Trajectory = get_step_towards(Trajectory, epicenter)
|
||||
dist += cached_exp_block[Trajectory]
|
||||
|
||||
var/flame_dist = 0
|
||||
var/flame_dist = dist < flame_range
|
||||
var/throw_dist = dist
|
||||
|
||||
if(dist < flame_range)
|
||||
flame_dist = 1
|
||||
|
||||
if(dist < devastation_range)
|
||||
dist = 1
|
||||
else if(dist < heavy_impact_range)
|
||||
@@ -148,27 +175,61 @@
|
||||
|
||||
//------- EX_ACT AND TURF FIRES -------
|
||||
|
||||
if(T)
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
if(dist > 0)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
exploded_this_tick += T
|
||||
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||
new /obj/effect/hotspot(T) //Mostly for ambience!
|
||||
|
||||
if(dist > 0)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
exploded_this_tick += T
|
||||
|
||||
//--- THROW ITEMS AROUND ---
|
||||
|
||||
var/throw_dir = get_dir(epicenter,T)
|
||||
for(var/obj/item/I in T)
|
||||
if(I && !I.anchored)
|
||||
if(!I.anchored)
|
||||
var/throw_range = rand(throw_dist, max_range)
|
||||
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
|
||||
I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, I.throw_speed)
|
||||
I.throw_speed = EXPLOSION_THROW_SPEED //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
|
||||
I.throw_at(throw_at, throw_range, EXPLOSION_THROW_SPEED)
|
||||
|
||||
if(TICK_CHECK)
|
||||
//wait for the lists to repop
|
||||
var/break_condition
|
||||
if(reactionary)
|
||||
//If we've caught up to the density checker thread and there are no more turfs to process
|
||||
break_condition = iteration == expBlockLen && iteration < affTurfLen
|
||||
else
|
||||
//If we've caught up to the turf gathering thread and it's still running
|
||||
break_condition = iteration == affTurfLen && !stopped
|
||||
|
||||
if(break_condition || TICK_CHECK)
|
||||
stoplag()
|
||||
|
||||
if(!running)
|
||||
break
|
||||
|
||||
//update the trackers
|
||||
affTurfLen = affected_turfs.len
|
||||
expBlockLen = cached_exp_block.len
|
||||
|
||||
if(break_condition)
|
||||
if(reactionary)
|
||||
//until there are more block checked turfs than what we are currently at
|
||||
//or the explosion has stopped
|
||||
UNTIL(iteration < affTurfLen || !running)
|
||||
else
|
||||
//until there are more gathered turfs than what we are currently at
|
||||
//or there are no more turfs to gather/the explosion has stopped
|
||||
UNTIL(iteration < expBlockLen || stopped)
|
||||
|
||||
if(!running)
|
||||
break
|
||||
|
||||
//update the trackers
|
||||
affTurfLen = affected_turfs.len
|
||||
expBlockLen = cached_exp_block.len
|
||||
|
||||
var/circumference = (PI * (init_dist + 4) * 2) //+4 to radius to prevent shit gaps
|
||||
if(exploded_this_tick.len > circumference) //only do this every revolution
|
||||
for(var/Unexplode in exploded_this_tick)
|
||||
@@ -182,24 +243,67 @@
|
||||
UnexplodeT.explosion_level = 0
|
||||
exploded_this_tick.Cut()
|
||||
|
||||
var/took = (world.timeofday-start)/10
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
var/took = (REALTIMEOFDAY - started_at) / 10
|
||||
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
if(GLOB.Debug2)
|
||||
log_world("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.")
|
||||
|
||||
//Machines which report explosions.
|
||||
for(var/array in GLOB.doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(epicenter,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
|
||||
if(!stopped) //if we aren't in a hurry
|
||||
//Machines which report explosions.
|
||||
for(var/array in GLOB.doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, took,orig_dev_range, orig_heavy_range, orig_light_range)
|
||||
|
||||
return 1
|
||||
++stopped
|
||||
qdel(src)
|
||||
|
||||
#undef EX_PREPROCESS_EXIT_CHECK
|
||||
#undef EX_PREPROCESS_CHECK_TICK
|
||||
|
||||
//asyncly populate the affected_turfs list
|
||||
/datum/explosion/proc/GatherSpiralTurfs(range, turf/epicenter)
|
||||
set waitfor = FALSE
|
||||
. = list()
|
||||
spiral_range_turfs(range, epicenter, outlist = ., tick_checked = TRUE)
|
||||
++stopped
|
||||
|
||||
/proc/secondaryexplosion(turf/epicenter, range)
|
||||
for(var/turf/tile in spiral_range_turfs(range, epicenter))
|
||||
tile.ex_act(2)
|
||||
/datum/explosion/proc/CaculateExplosionBlock(list/affected_turfs)
|
||||
set waitfor = FALSE
|
||||
|
||||
. = list()
|
||||
var/processed = 0
|
||||
while(!stopped && running)
|
||||
var/I
|
||||
for(I in (processed + 1) to affected_turfs.len) // we cache the explosion block rating of every turf in the explosion area
|
||||
var/turf/T = affected_turfs[I]
|
||||
var/current_exp_block = T.density ? T.explosion_block : 0
|
||||
|
||||
for(var/obj/machinery/door/D in T)
|
||||
if(D.density)
|
||||
current_exp_block += D.explosion_block
|
||||
|
||||
for(var/obj/structure/window/W in T)
|
||||
if(W.reinf && W.fulltile)
|
||||
current_exp_block += W.explosion_block
|
||||
|
||||
for(var/obj/structure/blob/B in T)
|
||||
current_exp_block += B.explosion_block
|
||||
|
||||
.[T] = current_exp_block
|
||||
|
||||
if(TICK_CHECK)
|
||||
break
|
||||
|
||||
processed = I
|
||||
stoplag()
|
||||
|
||||
/datum/explosion/Destroy()
|
||||
running = FALSE
|
||||
if(stopped < 2) //wait for main thread and spiral_range thread
|
||||
return QDEL_HINT_IWILLGC
|
||||
GLOB.explosions -= src
|
||||
return ..()
|
||||
|
||||
/client/proc/check_bomb_impacts()
|
||||
set name = "Check Bomb Impact"
|
||||
@@ -44,11 +44,12 @@
|
||||
//cleans up ALL references :)
|
||||
/datum/holocall/Destroy()
|
||||
user.reset_perspective()
|
||||
if(user.client)
|
||||
if(!QDELETED(eye) && user.client)
|
||||
for(var/datum/camerachunk/chunk in eye.visibleCameraChunks)
|
||||
chunk.remove(eye)
|
||||
qdel(eye)
|
||||
eye = null
|
||||
user.remote_control = null
|
||||
QDEL_NULL(eye)
|
||||
|
||||
user = null
|
||||
if(hologram)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
diff a/code/datums/holocall.dm b/code/datums/holocall.dm (rejected hunks)
|
||||
@@ -45,7 +45,7 @@
|
||||
var/user_good = !QDELETED(user)
|
||||
if(user_good)
|
||||
user.reset_perspective()
|
||||
- user.remote_control = null
|
||||
+ user.remote_control = null
|
||||
|
||||
if(!QDELETED(eye))
|
||||
if(user_good && user.client)
|
||||
@@ -21,20 +21,48 @@
|
||||
|
||||
|
||||
//Areas
|
||||
|
||||
/area/ruin/powered/beach
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/clownplanet
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/animal_hospital
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/snow_biodome
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/gluttony
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/golem_ship
|
||||
name = "Free Golem Ship"
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/greed
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/unpowered/hierophant
|
||||
name = "Hierophant's Arena"
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/pride
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/seedvault
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/syndicate_lava_base
|
||||
name = "Secret Base"
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
|
||||
/area/ruin/unpowered/no_grav/way_home
|
||||
name = "\improper Salvation"
|
||||
icon_state = "away"
|
||||
|
||||
/area/ruin/powered/snow_biodome
|
||||
|
||||
/area/ruin/powered/golem_ship
|
||||
name = "Free Golem Ship"
|
||||
|
||||
/area/ruin/powered/syndicate_lava_base
|
||||
name = "Secret Base"
|
||||
|
||||
// Ruins of "onehalf" ship
|
||||
|
||||
|
||||
+32
-33
@@ -28,8 +28,8 @@
|
||||
var/list/our_overlays //our local copy of (non-priority) overlays without byond magic. Use procs in SSoverlays to manipulate
|
||||
var/list/priority_overlays //overlays that should remain on top and not normally removed when using cut_overlay functions, like c4.
|
||||
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
|
||||
/atom/New(loc, ...)
|
||||
//atom creation method that preloads variables at creation
|
||||
if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New()
|
||||
@@ -39,21 +39,21 @@
|
||||
|
||||
var/do_initialize = SSatoms.initialized
|
||||
if(do_initialize > INITIALIZATION_INSSATOMS)
|
||||
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
|
||||
if(SSatoms.InitAtom(src, args))
|
||||
//we were deleted
|
||||
return
|
||||
|
||||
var/list/created = SSatoms.created_atoms
|
||||
if(created)
|
||||
created += src
|
||||
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
|
||||
if(SSatoms.InitAtom(src, args))
|
||||
//we were deleted
|
||||
return
|
||||
|
||||
var/list/created = SSatoms.created_atoms
|
||||
if(created)
|
||||
created += src
|
||||
|
||||
//Called after New if the map is being loaded. mapload = TRUE
|
||||
//Called from base of New if the map is being loaded. mapload = FALSE
|
||||
//This base must be called or derivatives must set initialized to TRUE
|
||||
//must not sleep
|
||||
//This base must be called or derivatives must set initialized to TRUE
|
||||
//must not sleep
|
||||
//Other parameters are passed from New (excluding loc), this does not happen if mapload is TRUE
|
||||
//Must return an Initialize hint. Defined in __DEFINES/subsystems.dm
|
||||
//Must return an Initialize hint. Defined in __DEFINES/subsystems.dm
|
||||
|
||||
//Note: the following functions don't call the base for optimization and must copypasta:
|
||||
// /turf/Initialize
|
||||
@@ -76,23 +76,23 @@
|
||||
if (opacity && isturf(loc))
|
||||
var/turf/T = loc
|
||||
T.has_opaque_atom = TRUE // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways.
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
return INITIALIZE_HINT_NORMAL
|
||||
|
||||
//called if Initialize returns INITIALIZE_HINT_LATELOAD
|
||||
//This version shouldn't be called
|
||||
/atom/proc/LateInitialize()
|
||||
var/static/list/warned_types = list()
|
||||
if(!warned_types[type])
|
||||
WARNING("Old style LateInitialize behaviour detected in [type]!")
|
||||
warned_types[type] = TRUE
|
||||
Initialize(FALSE)
|
||||
//called if Initialize returns INITIALIZE_HINT_LATELOAD
|
||||
//This version shouldn't be called
|
||||
/atom/proc/LateInitialize()
|
||||
var/static/list/warned_types = list()
|
||||
if(!warned_types[type])
|
||||
WARNING("Old style LateInitialize behaviour detected in [type]!")
|
||||
warned_types[type] = TRUE
|
||||
Initialize(FALSE)
|
||||
|
||||
/atom/Destroy()
|
||||
if(alternate_appearances)
|
||||
for(var/K in alternate_appearances)
|
||||
var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K]
|
||||
AA.remove_from_hud(src)
|
||||
|
||||
for(var/K in alternate_appearances)
|
||||
var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K]
|
||||
AA.remove_from_hud(src)
|
||||
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
LAZYCLEARLIST(priority_overlays)
|
||||
//SSoverlays.processing -= src //we COULD do this, but it's better to just let it fall out of the processing queue
|
||||
|
||||
QDEL_NULL(light)
|
||||
|
||||
QDEL_NULL(light)
|
||||
|
||||
return ..()
|
||||
|
||||
/atom/proc/handle_ricochet(obj/item/projectile/P)
|
||||
@@ -277,7 +277,6 @@
|
||||
return
|
||||
|
||||
/atom/proc/ex_act(severity, target)
|
||||
set waitfor = FALSE
|
||||
contents_explosion(severity, target)
|
||||
|
||||
/atom/proc/blob_act(obj/structure/blob/B)
|
||||
@@ -509,10 +508,10 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
|
||||
/atom/proc/mech_melee_attack(obj/mecha/M)
|
||||
return
|
||||
|
||||
//If a mob logouts/logins in side of an object you can use this proc
|
||||
/atom/proc/on_log(login)
|
||||
if(loc)
|
||||
loc.on_log(login)
|
||||
//If a mob logouts/logins in side of an object you can use this proc
|
||||
/atom/proc/on_log(login)
|
||||
if(loc)
|
||||
loc.on_log(login)
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -261,6 +261,20 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
|
||||
gang_bosses += G.bosses
|
||||
return gang_bosses
|
||||
|
||||
/datum/game_mode/proc/shuttle_check()
|
||||
if(SSshuttle.emergencyNoRecall)
|
||||
return
|
||||
var/alive = 0
|
||||
for(var/mob/living/L in GLOB.player_list)
|
||||
if(L.stat != DEAD)
|
||||
alive++
|
||||
|
||||
if((alive < (GLOB.joined_player_list.len * 0.4)) && ((SSshuttle.emergency.timeLeft(1) > (SSshuttle.emergencyCallTime * 0.4))))
|
||||
|
||||
SSshuttle.emergencyNoRecall = TRUE
|
||||
SSshuttle.emergency.request(null, set_coefficient = 0.4)
|
||||
priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
|
||||
|
||||
/proc/determine_domination_time(var/datum/gang/G)
|
||||
return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9))
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
diff a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm (rejected hunks)
|
||||
@@ -255,11 +255,13 @@ GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","
|
||||
return gang_bosses
|
||||
|
||||
/datum/game_mode/proc/shuttle_check()
|
||||
+ if(SSshuttle.emergencyNoRecall)
|
||||
+ return
|
||||
var/alive = 0
|
||||
for(var/mob/living/L in GLOB.player_list)
|
||||
if(L.stat != DEAD)
|
||||
alive++
|
||||
- if((alive < (GLOB.joined_player_list.len * 0.4)) && (SSshuttle.emergency.timeLeft(1) < (SSshuttle.emergencyCallTime * 0.4)))
|
||||
+ if((alive < (GLOB.joined_player_list.len * 0.4)) && ((SSshuttle.emergency.timeLeft(1) > (SSshuttle.emergencyCallTime * 0.4))))
|
||||
SSshuttle.emergencyNoRecall = TRUE
|
||||
SSshuttle.emergency.request(null, set_coefficient = 0.4)
|
||||
priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
|
||||
@@ -202,7 +202,9 @@
|
||||
return
|
||||
var/added_names = ""
|
||||
var/lost_names = ""
|
||||
|
||||
|
||||
SSticker.mode.shuttle_check() // See if its time to start wrapping things up
|
||||
|
||||
//Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report
|
||||
var/list/reclaimed_territories = territory_new & territory_lost
|
||||
territory |= reclaimed_territories
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
diff a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm (rejected hunks)
|
||||
@@ -165,7 +165,7 @@
|
||||
if(!can_use(user))
|
||||
return 0
|
||||
|
||||
- if(SSticker.mode.forced_shuttle)
|
||||
+ if(SSshuttle.emergencyNoRecall)
|
||||
return 0
|
||||
|
||||
if(recalling)
|
||||
@@ -181,6 +181,7 @@
|
||||
to_chat(H, "<span class='warning'>You feel intensely watched.</span>")
|
||||
sleep(5)
|
||||
to_chat(H, "<span class='warning'><b>Your mind snaps!</b></span>")
|
||||
to_chat(H, "<big><span class='warning'><b>You can't remember how you got here...</b></span></big>")
|
||||
var/objtype = pick(subtypesof(/datum/objective/abductee/))
|
||||
var/datum/objective/abductee/O = new objtype()
|
||||
SSticker.mode.abductees += H.mind
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
|
||||
GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
|
||||
/obj/machinery/doppler_array
|
||||
name = "tachyon-doppler array"
|
||||
desc = "A highly precise directional sensor array which measures the release of quants from decaying tachyons. The doppler shifting of the mirror-image formed by these quants can reveal the size, location and temporal affects of energetic disturbances within a large radius ahead of the array.\n<span class='notice'>Alt-click to rotate it clockwise.</span>"
|
||||
@@ -13,10 +13,10 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
|
||||
/obj/machinery/doppler_array/New()
|
||||
..()
|
||||
GLOB.doppler_arrays += src
|
||||
GLOB.doppler_arrays += src
|
||||
|
||||
/obj/machinery/doppler_array/Destroy()
|
||||
GLOB.doppler_arrays -= src
|
||||
GLOB.doppler_arrays -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/doppler_array/process()
|
||||
|
||||
@@ -51,7 +51,7 @@ Possible to do for anyone motivated enough:
|
||||
var/static/list/holopads = list()
|
||||
|
||||
/obj/machinery/holopad/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null)
|
||||
B.apply_default_parts(src)
|
||||
holopads += src
|
||||
@@ -112,6 +112,10 @@ Possible to do for anyone motivated enough:
|
||||
return ..()
|
||||
|
||||
/obj/machinery/holopad/AltClick(mob/living/carbon/human/user)
|
||||
if(isAI(user))
|
||||
hangup_all_calls()
|
||||
return
|
||||
|
||||
if(!CheckCallClose())
|
||||
interact(user)
|
||||
|
||||
@@ -157,6 +161,12 @@ Possible to do for anyone motivated enough:
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.open()
|
||||
|
||||
//Stop ringing the AI!!
|
||||
/obj/machinery/holopad/proc/hangup_all_calls()
|
||||
for(var/I in holo_calls)
|
||||
var/datum/holocall/HC = I
|
||||
HC.Disconnect(src)
|
||||
|
||||
/obj/machinery/holopad/Topic(href, href_list)
|
||||
if(..() || isAI(usr))
|
||||
return
|
||||
|
||||
@@ -87,7 +87,9 @@
|
||||
if(has_cover)
|
||||
cover = new /obj/machinery/porta_turret_cover(loc)
|
||||
cover.parent_turret = src
|
||||
underlays += image('icons/obj/turrets.dmi',icon_state = "basedark")
|
||||
var/mutable_appearance/base = mutable_appearance('icons/obj/turrets.dmi', "basedark")
|
||||
base.layer = NOT_HIGH_OBJ_LAYER
|
||||
underlays += base
|
||||
if(!has_cover)
|
||||
INVOKE_ASYNC(src, .proc/popUp)
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
M.forceMove(loc)
|
||||
|
||||
if(prob(30))
|
||||
explosion(get_turf(loc), 0, 0, 1, 3)
|
||||
explosion(get_turf(loc), 0, 0, 1, 3)
|
||||
|
||||
if(wreckage)
|
||||
var/obj/structure/mecha_wreckage/WR = new wreckage(loc, AI)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
var/range_flash = 3
|
||||
|
||||
/obj/effect/mine/explosive/mineEffect(mob/victim)
|
||||
explosion(loc, range_devastation, range_heavy, range_light, range_flash)
|
||||
explosion(loc, range_devastation, range_heavy, range_light, range_flash)
|
||||
|
||||
|
||||
/obj/effect/mine/stun
|
||||
|
||||
@@ -897,9 +897,9 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if(T)
|
||||
T.hotspot_expose(700,125)
|
||||
if(istype(cartridge, /obj/item/weapon/cartridge/syndicate))
|
||||
explosion(T, -1, 1, 3, 4)
|
||||
explosion(T, -1, 1, 3, 4)
|
||||
else
|
||||
explosion(T, -1, -1, 2, 3)
|
||||
explosion(T, -1, -1, 2, 3)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -10,15 +10,14 @@
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
|
||||
|
||||
/obj/item/device/paicard/Initialize()
|
||||
..()
|
||||
SSpai.pai_card_list += src
|
||||
add_overlay("pai-off")
|
||||
return ..()
|
||||
|
||||
/obj/item/device/paicard/Destroy()
|
||||
//Will stop people throwing friend pAIs into the singularity so they can respawn
|
||||
SSpai.pai_card_list -= src
|
||||
if(!isnull(pai))
|
||||
pai.death(0)
|
||||
QDEL_NULL(pai)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/paicard/attack_self(mob/user)
|
||||
@@ -26,9 +25,9 @@
|
||||
return
|
||||
user.set_machine(src)
|
||||
var/dat = "<TT><B>Personal AI Device</B><BR>"
|
||||
if(pai && (!pai.master_dna || !pai.master))
|
||||
dat += "<a href='byond://?src=\ref[src];setdna=1'>Imprint Master DNA</a><br>"
|
||||
if(pai)
|
||||
if(!pai.master_dna || !pai.master)
|
||||
dat += "<a href='byond://?src=\ref[src];setdna=1'>Imprint Master DNA</a><br>"
|
||||
dat += "Installed Personality: [pai.name]<br>"
|
||||
dat += "Prime directive: <br>[pai.laws.zeroth]<br>"
|
||||
for(var/slaws in pai.laws.supplied)
|
||||
@@ -86,7 +85,7 @@
|
||||
to_chat(pai, "<span class='danger'>Byte by byte you lose your sense of self.</span>")
|
||||
to_chat(pai, "<span class='userdanger'>Your mental faculties leave you.</span>")
|
||||
to_chat(pai, "<span class='rose'>oblivion... </span>")
|
||||
pai.death(0)
|
||||
removePersonality()
|
||||
if(href_list["wires"])
|
||||
var/wire = text2num(href_list["wires"])
|
||||
if(pai.radio)
|
||||
@@ -119,9 +118,9 @@
|
||||
audible_message("\The [src] plays a cheerful startup noise!")
|
||||
|
||||
/obj/item/device/paicard/proc/removePersonality()
|
||||
src.pai = null
|
||||
src.cut_overlays()
|
||||
src.add_overlay("pai-off")
|
||||
QDEL_NULL(pai)
|
||||
cut_overlays()
|
||||
add_overlay("pai-off")
|
||||
|
||||
/obj/item/device/paicard/proc/setEmotion(emotion)
|
||||
if(pai)
|
||||
|
||||
@@ -141,5 +141,5 @@
|
||||
|
||||
if(power_drained >= max_power)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
explosion(src.loc, 4,8,16,32)
|
||||
explosion(src.loc, 4,8,16,32)
|
||||
qdel(src)
|
||||
|
||||
@@ -14,14 +14,16 @@
|
||||
origin_tech = "combat=1;plasmatech=2;engineering=2"
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/status = 0
|
||||
var/throw_amount = 100
|
||||
var/lit = 0 //on or off
|
||||
var/operating = 0//cooldown
|
||||
var/obj/item/weapon/weldingtool/weldtool = null
|
||||
var/obj/item/device/assembly/igniter/igniter = null
|
||||
var/obj/item/weapon/tank/internals/plasma/ptank = null
|
||||
var/warned_admins = 0 //for the message_admins() when lit
|
||||
|
||||
//variables for prebuilt flamethrowers
|
||||
var/create_full = FALSE
|
||||
var/create_with_tank = FALSE
|
||||
var/igniter_type = /obj/item/device/assembly/igniter
|
||||
|
||||
/obj/item/weapon/flamethrower/Destroy()
|
||||
if(weldtool)
|
||||
@@ -32,9 +34,8 @@
|
||||
qdel(ptank)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/process()
|
||||
if(!lit)
|
||||
if(!lit || !igniter)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return null
|
||||
var/turf/location = loc
|
||||
@@ -43,8 +44,7 @@
|
||||
if(M.is_holding(src))
|
||||
location = M.loc
|
||||
if(isturf(location)) //start a fire if possible
|
||||
location.hotspot_expose(700, 2)
|
||||
return
|
||||
igniter.flamethrower_process(location)
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/update_icon()
|
||||
@@ -58,6 +58,9 @@
|
||||
item_state = "flamethrower_1"
|
||||
else
|
||||
item_state = "flamethrower_0"
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, flag)
|
||||
@@ -82,13 +85,13 @@
|
||||
if(istype(W, /obj/item/weapon/wrench) && !status)//Taking this apart
|
||||
var/turf/T = get_turf(src)
|
||||
if(weldtool)
|
||||
weldtool.loc = T
|
||||
weldtool.forceMove(T)
|
||||
weldtool = null
|
||||
if(igniter)
|
||||
igniter.loc = T
|
||||
igniter.forceMove(T)
|
||||
igniter = null
|
||||
if(ptank)
|
||||
ptank.loc = T
|
||||
ptank.forceMove(T)
|
||||
ptank = null
|
||||
new /obj/item/stack/rods(T)
|
||||
qdel(src)
|
||||
@@ -114,7 +117,10 @@
|
||||
|
||||
else if(istype(W,/obj/item/weapon/tank/internals/plasma))
|
||||
if(ptank)
|
||||
to_chat(user, "<span class='notice'>There is already a plasma tank loaded in [src]!</span>")
|
||||
if(user.transferItemToLoc(W,src))
|
||||
ptank.forceMove(get_turf(src))
|
||||
ptank = W
|
||||
to_chat(user, "<span class='notice'>You swap the plasma tank in [src]!</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(W, src))
|
||||
return
|
||||
@@ -129,53 +135,26 @@
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/attack_self(mob/user)
|
||||
if(user.stat || user.restrained() || user.lying)
|
||||
return
|
||||
user.set_machine(src)
|
||||
toggle_igniter(user)
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/proc/toggle_igniter(mob/user)
|
||||
if(!ptank)
|
||||
to_chat(user, "<span class='notice'>Attach a plasma tank first!</span>")
|
||||
return
|
||||
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=\ref[src];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [ptank.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=\ref[src];amount=-100'>-</A> <A HREF='?src=\ref[src];amount=-10'>-</A> <A HREF='?src=\ref[src];amount=-1'>-</A> [throw_amount] <A HREF='?src=\ref[src];amount=1'>+</A> <A HREF='?src=\ref[src];amount=10'>+</A> <A HREF='?src=\ref[src];amount=100'>+</A><BR>\n<A HREF='?src=\ref[src];remove=1'>Remove plasmatank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>")
|
||||
user << browse(dat, "window=flamethrower;size=600x300")
|
||||
onclose(user, "flamethrower")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/Topic(href,href_list[])
|
||||
if(href_list["close"])
|
||||
usr.unset_machine()
|
||||
usr << browse(null, "window=flamethrower")
|
||||
if(!status)
|
||||
to_chat(user, "<span class='notice'>Secure the igniter first!</span>")
|
||||
return
|
||||
if(usr.stat || usr.restrained() || usr.lying)
|
||||
return
|
||||
usr.set_machine(src)
|
||||
if(href_list["light"])
|
||||
if(!ptank)
|
||||
return
|
||||
if(!status)
|
||||
return
|
||||
lit = !lit
|
||||
if(lit)
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(!warned_admins)
|
||||
message_admins("[ADMIN_LOOKUPFLW(usr)] has lit a flamethrower.")
|
||||
warned_admins = 1
|
||||
if(href_list["amount"])
|
||||
throw_amount = throw_amount + text2num(href_list["amount"])
|
||||
throw_amount = max(50, min(5000, throw_amount))
|
||||
if(href_list["remove"])
|
||||
if(!ptank)
|
||||
return
|
||||
usr.put_in_hands(ptank)
|
||||
ptank = null
|
||||
lit = 0
|
||||
usr.unset_machine()
|
||||
usr << browse(null, "window=flamethrower")
|
||||
for(var/mob/M in viewers(1, loc))
|
||||
if((M.client && M.machine == src))
|
||||
attack_self(M)
|
||||
to_chat(user, "<span class='notice'>You ignite [src]!</span>")
|
||||
lit = !lit
|
||||
if(lit)
|
||||
START_PROCESSING(SSobj, src)
|
||||
if(!warned_admins)
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] has lit a flamethrower.")
|
||||
warned_admins = 1
|
||||
else
|
||||
STOP_PROCESSING(SSobj,src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/flamethrower/CheckParts(list/parts_list)
|
||||
..()
|
||||
@@ -195,19 +174,22 @@
|
||||
for(var/turf/T in turflist)
|
||||
if(T == previousturf)
|
||||
continue //so we don't burn the tile we be standin on
|
||||
if(!T.atmos_adjacent_turfs || !T.atmos_adjacent_turfs[previousturf])
|
||||
var/list/turfs_sharing_with_prev = previousturf.GetAtmosAdjacentTurfs(alldir=1)
|
||||
if(!(T in turfs_sharing_with_prev))
|
||||
break
|
||||
ignite_turf(T)
|
||||
if(igniter)
|
||||
igniter.ignite_turf(src,T)
|
||||
else
|
||||
default_ignite(T)
|
||||
sleep(1)
|
||||
previousturf = T
|
||||
operating = 0
|
||||
for(var/mob/M in viewers(1, loc))
|
||||
if((M.client && M.machine == src))
|
||||
attack_self(M)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
|
||||
/obj/item/weapon/flamethrower/proc/default_ignite(turf/target, release_amount = 0.05)
|
||||
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
|
||||
//Transfer 5% of current tank air contents to turf
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
|
||||
@@ -218,30 +200,42 @@
|
||||
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500)
|
||||
//location.hotspot_expose(1000,500,1)
|
||||
SSair.add_to_active(target, 0)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/full/New(var/loc)
|
||||
..()
|
||||
if(!weldtool)
|
||||
weldtool = new /obj/item/weapon/weldingtool(src)
|
||||
weldtool.status = 0
|
||||
if(!igniter)
|
||||
igniter = new /obj/item/device/assembly/igniter(src)
|
||||
igniter.secured = 0
|
||||
status = 1
|
||||
update_icon()
|
||||
/obj/item/weapon/flamethrower/Initialize(mapload)
|
||||
. = ..()
|
||||
if(create_full)
|
||||
if(!weldtool)
|
||||
weldtool = new /obj/item/weapon/weldingtool(src)
|
||||
weldtool.status = 0
|
||||
if(!igniter)
|
||||
igniter = new igniter_type(src)
|
||||
igniter.secured = 0
|
||||
status = 1
|
||||
if(create_with_tank)
|
||||
ptank = new /obj/item/weapon/tank/internals/plasma/full(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/flamethrower/full/tank/New(var/loc)
|
||||
..()
|
||||
ptank = new /obj/item/weapon/tank/internals/plasma/full(src)
|
||||
update_icon()
|
||||
/obj/item/weapon/flamethrower/full/tank
|
||||
create_full = TRUE
|
||||
|
||||
/obj/item/weapon/flamethrower/full/tank
|
||||
create_with_tank = TRUE
|
||||
|
||||
/obj/item/weapon/flamethrower/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(ptank && damage && attack_type == PROJECTILE_ATTACK && prob(15))
|
||||
owner.visible_message("<span class='danger'>[attack_text] hits the fueltank on [owner]'s [src], rupturing it! What a shot!</span>")
|
||||
var/target_turf = get_turf(owner)
|
||||
ignite_turf(target_turf, 100)
|
||||
igniter.ignite_turf(src,target_turf, release_amount = 100)
|
||||
qdel(ptank)
|
||||
return 1 //It hit the flamethrower, not them
|
||||
|
||||
|
||||
/obj/item/device/assembly/igniter/proc/flamethrower_process(turf/open/location)
|
||||
location.hotspot_expose(700,2)
|
||||
|
||||
/obj/item/device/assembly/igniter/cold/flamethrower_process(turf/open/location)
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/igniter/proc/ignite_turf(obj/item/weapon/flamethrower/F,turf/open/location,release_amount = 0.05)
|
||||
F.default_ignite(location,release_amount)
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
|
||||
update_mob()
|
||||
explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball.
|
||||
explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball.
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/prime()
|
||||
update_mob()
|
||||
explosion(src.loc,1,2,4,flame_range = 2)
|
||||
explosion(src.loc,1,2,4,flame_range = 2)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/concussion
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/concussion/prime()
|
||||
update_mob()
|
||||
explosion(src.loc,0,2,3,flame_range = 3)
|
||||
explosion(src.loc,0,2,3,flame_range = 3)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/concussion/frag
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/singularity_act(current_size)
|
||||
var/dist = max((current_size - 2),1)
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
item_state = "plasmaman_tank_belt"
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5
|
||||
volume = 3
|
||||
volume = 6
|
||||
w_class = WEIGHT_CLASS_SMALL //thanks i forgot this
|
||||
|
||||
/obj/item/weapon/tank/internals/plasmaman/belt/full/New()
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
log_game("[key_name(user)] has detonated [src.name].")
|
||||
for(var/atom/movable/AM in src)
|
||||
qdel(AM)
|
||||
explosion(get_turf(src), 0, 1, 5, 5)
|
||||
explosion(get_turf(src), 0, 1, 5, 5)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/crate/secure/weapon
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
for(var/turf/T in get_area_turfs(thearea.type))
|
||||
L+=T
|
||||
var/loc = pick(L)
|
||||
explosion(loc,explosiondev,explosionmed,explosionlight)
|
||||
explosion(loc,explosiondev,explosionmed,explosionlight)
|
||||
reload = 0
|
||||
|
||||
/*/mob/proc/openfire()
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
explosion(M, 1, 0, 0, 0)
|
||||
explosion(M, 1, 0, 0, 0)
|
||||
qdel(src)
|
||||
|
||||
/////For the Wishgranter///////////
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
// Plasma. The oil of 26 century. The reason why you are here.
|
||||
/datum/export/material/plasma
|
||||
cost = 500
|
||||
cost = 300
|
||||
material_id = MAT_PLASMA
|
||||
message = "cm3 of plasma"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
// Plastitanium.
|
||||
/datum/export/material/plastitanium
|
||||
cost = 750
|
||||
cost = 550
|
||||
material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium, so ((250 x 250) + (250 x 500)) / 250
|
||||
message = "cm3 of plastitanium"
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
diff a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm (rejected hunks)
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
// Plasma. The oil of 26 century. The reason why you are here.
|
||||
/datum/export/material/plasma
|
||||
- cost = 500
|
||||
+ cost = 300
|
||||
k_elasticity = 0
|
||||
material_id = MAT_PLASMA
|
||||
message = "cm3 of plasma"
|
||||
@@ -39,8 +39,9 @@
|
||||
vision_flags = SEE_TURFS
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
|
||||
var/static/list/meson_mining_failure_excuses = list("seismic activity", "excessive lava", "ambient radiation", "electromagnetic storms", "bluespace disruption", \
|
||||
"gravity", "dust", "dense rock", "ash", "badly understood science", "radiant heat")
|
||||
var/static/list/meson_mining_failure_excuses = list("badly understood science", "damaged meson generators", "electromagnetic storms", "bluespace disruption", "ancient structures", \
|
||||
"ambient radiation", "seismic activity", "extreme weather", "strange signals", "excessive lava", "giant monsters", "a loose wire", "lens warping", "radiant heat", "volcanic ash", \
|
||||
"budget cuts","alien life","dense rock", "gravity", "dust")
|
||||
var/picked_excuse
|
||||
var/mesons_on = TRUE
|
||||
|
||||
@@ -65,7 +66,7 @@
|
||||
|
||||
if(iscarbon(user)) //only carbons can wear glasses
|
||||
var/mob/living/carbon/C = user
|
||||
if(!mesons_on)
|
||||
if(mesons_on)
|
||||
to_chat(C, "<span class='notice'>Your Meson Scanners have reactivated.</span>")
|
||||
else if(picked_excuse)
|
||||
to_chat(C, "<span class='warning'>Due to [picked_excuse], your Meson Scanners will not be able to display terrain layouts in this area.</span>")
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
M.speak = rampant_speeches.Copy()
|
||||
M.speak_chance = 7
|
||||
else
|
||||
explosion(upriser.loc, -1, 1, 2, 4, 0)
|
||||
explosion(upriser.loc, -1, 1, 2, 4, 0)
|
||||
qdel(upriser)
|
||||
|
||||
kill()
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/obj/machinery/telecomms/processor/P = T
|
||||
if(prob(10))
|
||||
// Damage the surrounding area to indicate that it popped
|
||||
explosion(get_turf(P), 0, 0, 2)
|
||||
explosion(get_turf(P), 0, 0, 2)
|
||||
// Only a level 1 explosion actually damages the machine
|
||||
// at all
|
||||
P.ex_act(1)
|
||||
|
||||
@@ -89,7 +89,8 @@ Shaft Miner
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/bag/ore=1,\
|
||||
/obj/item/weapon/kitchen/knife/combat/survival=1,\
|
||||
/obj/item/weapon/mining_voucher=1)
|
||||
/obj/item/weapon/mining_voucher=1,\
|
||||
/obj/item/stack/marker_beacon/ten=1)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/explorer
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel/explorer
|
||||
@@ -113,7 +114,8 @@ Shaft Miner
|
||||
/obj/item/weapon/kitchen/knife/combat/survival=1,
|
||||
/obj/item/weapon/mining_voucher=1,
|
||||
/obj/item/device/t_scanner/adv_mining_scanner/lesser=1,
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator=1)
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator=1,\
|
||||
/obj/item/stack/marker_beacon/ten=1)
|
||||
|
||||
/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
..()
|
||||
|
||||
@@ -159,6 +159,8 @@
|
||||
back = backpack //Department backpack
|
||||
|
||||
if(box)
|
||||
if(!backpack_contents)
|
||||
backpack_contents = list()
|
||||
backpack_contents.Insert(1, box) // Box always takes a first slot in backpack
|
||||
backpack_contents[box] = 1
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm (rejected hunks)
|
||||
@@ -156,7 +156,9 @@
|
||||
else
|
||||
back = backpack //Department backpack
|
||||
|
||||
- if(backpack_contents && box)
|
||||
+ if(box)
|
||||
+ if(!backpack_contents)
|
||||
+ backpack_contents = list()
|
||||
backpack_contents.Insert(1, box) // Box always takes a first slot in backpack
|
||||
backpack_contents[box] = 1
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
/*****************Marker Beacons**************************/
|
||||
GLOBAL_LIST_INIT(marker_beacon_colors, list(
|
||||
"Random" = FALSE,//not a true color, will pick a random color
|
||||
"Burgundy" = LIGHT_COLOR_FLARE,
|
||||
"Bronze" = LIGHT_COLOR_ORANGE,
|
||||
"Yellow" = LIGHT_COLOR_YELLOW,
|
||||
"Lime" = LIGHT_COLOR_SLIME_LAMP,
|
||||
"Olive" = LIGHT_COLOR_GREEN,
|
||||
"Jade" = LIGHT_COLOR_BLUEGREEN,
|
||||
"Teal" = LIGHT_COLOR_LIGHT_CYAN,
|
||||
"Cerulean" = LIGHT_COLOR_BLUE,
|
||||
"Indigo" = LIGHT_COLOR_DARK_BLUE,
|
||||
"Purple" = LIGHT_COLOR_PURPLE,
|
||||
"Violet" = LIGHT_COLOR_LAVENDER,
|
||||
"Fuchsia" = LIGHT_COLOR_PINK))
|
||||
|
||||
/obj/item/stack/marker_beacon
|
||||
name = "marker beacon"
|
||||
singular_name = "marker beacon"
|
||||
desc = "Prism-brand path illumination devices. Used by miners to mark paths and warn of danger."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "marker"
|
||||
merge_type = /obj/item/stack/marker_beacon
|
||||
max_amount = 100
|
||||
var/picked_color = "random"
|
||||
|
||||
/obj/item/stack/marker_beacon/ten //miners start with 10 of these
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/marker_beacon/thirty //and they're bought in stacks of 1, 10, or 30
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/marker_beacon/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/stack/marker_beacon/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Use in-hand to place a [singular_name].</span>")
|
||||
to_chat(user, "<span class='notice'>Alt-click to select a color. Current color is [picked_color].</span>")
|
||||
|
||||
/obj/item/stack/marker_beacon/update_icon()
|
||||
icon_state = "[initial(icon_state)][lowertext(picked_color)]"
|
||||
|
||||
/obj/item/stack/marker_beacon/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "<span class='warning'>You need more space to place a [singular_name] here.</span>")
|
||||
return
|
||||
if(locate(/obj/structure/marker_beacon) in user.loc)
|
||||
to_chat(user, "<span class='warning'>There is already a [singular_name] here.</span>")
|
||||
return
|
||||
if(use(1))
|
||||
to_chat(user, "<span class='notice'>You activate and anchor [amount ? "a":"the"] [singular_name] in place.</span>")
|
||||
playsound(user, 'sound/machines/click.ogg', 50, 1)
|
||||
var/obj/structure/marker_beacon/M = new(user.loc, picked_color)
|
||||
transfer_fingerprints_to(M)
|
||||
|
||||
/obj/item/stack/marker_beacon/AltClick(mob/user)
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!in_range(src, user))
|
||||
return
|
||||
var/input_color = input(user, "Choose a color.", "Beacon Color") as null|anything in GLOB.marker_beacon_colors
|
||||
if(user.incapacitated() || !in_range(src, user))
|
||||
return
|
||||
if(input_color)
|
||||
picked_color = input_color
|
||||
update_icon()
|
||||
|
||||
/obj/structure/marker_beacon
|
||||
name = "marker beacon"
|
||||
desc = "A Prism-brand path illumination device. It is anchored in place and glowing steadily."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "marker"
|
||||
layer = BELOW_OPEN_DOOR_LAYER
|
||||
armor = list(melee = 50, bullet = 75, laser = 75, energy = 75, bomb = 25, bio = 100, rad = 100, fire = 25, acid = 0)
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
anchored = TRUE
|
||||
light_range = 2
|
||||
light_power = 3
|
||||
var/remove_speed = 15
|
||||
var/picked_color
|
||||
|
||||
/obj/structure/marker_beacon/Initialize(mapload, set_color)
|
||||
. = ..()
|
||||
picked_color = set_color
|
||||
update_icon()
|
||||
|
||||
/obj/structure/marker_beacon/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
var/obj/item/stack/marker_beacon/M = new(loc)
|
||||
M.picked_color = picked_color
|
||||
M.update_icon()
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/marker_beacon/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to select a color. Current color is [picked_color].</span>")
|
||||
|
||||
/obj/structure/marker_beacon/update_icon()
|
||||
while(!picked_color || !GLOB.marker_beacon_colors[picked_color])
|
||||
picked_color = pick(GLOB.marker_beacon_colors)
|
||||
icon_state = "[initial(icon_state)][lowertext(picked_color)]-on"
|
||||
set_light(light_range, light_power, GLOB.marker_beacon_colors[picked_color])
|
||||
|
||||
/obj/structure/marker_beacon/attack_hand(mob/living/user)
|
||||
to_chat(user, "<span class='notice'>You start picking [src] up...</span>")
|
||||
if(do_after(user, remove_speed, target = src))
|
||||
var/obj/item/stack/marker_beacon/M = new(loc)
|
||||
M.picked_color = picked_color
|
||||
M.update_icon()
|
||||
transfer_fingerprints_to(M)
|
||||
if(user.put_in_hands(M, TRUE)) //delete the beacon if it fails
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
qdel(src) //otherwise delete us
|
||||
|
||||
/obj/structure/marker_beacon/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/stack/marker_beacon))
|
||||
var/obj/item/stack/marker_beacon/M = I
|
||||
to_chat(user, "<span class='notice'>You start picking [src] up...</span>")
|
||||
if(do_after(user, remove_speed, target = src) && M.amount + 1 <= M.max_amount)
|
||||
M.add(1)
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/marker_beacon/AltClick(mob/user)
|
||||
..()
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!in_range(src, user))
|
||||
return
|
||||
var/input_color = input(user, "Choose a color.", "Beacon Color") as null|anything in GLOB.marker_beacon_colors
|
||||
if(user.incapacitated() || !in_range(src, user))
|
||||
return
|
||||
if(input_color)
|
||||
picked_color = input_color
|
||||
update_icon()
|
||||
@@ -9,6 +9,9 @@
|
||||
anchored = 1
|
||||
var/obj/item/weapon/card/id/inserted_id
|
||||
var/list/prize_list = list( //if you add something to this, please, for the love of god, use tabs and not spaces.
|
||||
new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 10),
|
||||
new /datum/data/mining_equipment("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100),
|
||||
new /datum/data/mining_equipment("30 Marker Beacons", /obj/item/stack/marker_beacon/thirty, 300),
|
||||
new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 100),
|
||||
new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/premium,100),
|
||||
new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
|
||||
@@ -182,6 +185,7 @@
|
||||
if("Extraction and Rescue Kit")
|
||||
new /obj/item/weapon/extraction_pack(loc)
|
||||
new /obj/item/fulton_core(loc)
|
||||
new /obj/item/stack/marker_beacon/thirty(loc)
|
||||
if("Crusher Kit")
|
||||
new /obj/item/weapon/twohanded/required/mining_hammer(loc)
|
||||
new /obj/item/weapon/storage/belt/mining/alt(loc)
|
||||
|
||||
@@ -263,11 +263,11 @@
|
||||
spawn(det_time)
|
||||
if(primed)
|
||||
if(quality == 3)
|
||||
explosion(src.loc,2,4,9,adminlog = notify_admins)
|
||||
explosion(src.loc,2,4,9,adminlog = notify_admins)
|
||||
if(quality == 2)
|
||||
explosion(src.loc,1,2,5,adminlog = notify_admins)
|
||||
explosion(src.loc,1,2,5,adminlog = notify_admins)
|
||||
if(quality == 1)
|
||||
explosion(src.loc,-1,1,3,adminlog = notify_admins)
|
||||
explosion(src.loc,-1,1,3,adminlog = notify_admins)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/ore/Initialize()
|
||||
|
||||
@@ -65,12 +65,22 @@ GLOBAL_VAR(posibrain_notify_cooldown)
|
||||
/obj/item/device/mmi/posibrain/attack_ghost(mob/user)
|
||||
activate(user)
|
||||
|
||||
/obj/item/device/mmi/posibrain/proc/is_occupied()
|
||||
if(brainmob.key)
|
||||
return TRUE
|
||||
if(iscyborg(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R.mmi == src)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
//Two ways to activate a positronic brain. A clickable link in the ghost notif, or simply clicking the object itself.
|
||||
/obj/item/device/mmi/posibrain/proc/activate(mob/user)
|
||||
if(QDELETED(brainmob))
|
||||
return
|
||||
if(brainmob.key || jobban_isbanned(user,"posibrain"))
|
||||
if(is_occupied() || jobban_isbanned(user,"posibrain"))
|
||||
return
|
||||
|
||||
var/posi_ask = alert("Become a [name]? (Warning, You can no longer be cloned, and all past lives will be forgotten!)","Are you positive?","Yes","No")
|
||||
if(posi_ask == "No" || QDELETED(src))
|
||||
return
|
||||
@@ -98,7 +108,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
|
||||
/obj/item/device/mmi/posibrain/proc/transfer_personality(mob/candidate)
|
||||
if(QDELETED(brainmob))
|
||||
return
|
||||
if(brainmob.key) //Prevents hostile takeover if two ghosts get the prompt or link for the same brain.
|
||||
if(is_occupied()) //Prevents hostile takeover if two ghosts get the prompt or link for the same brain.
|
||||
to_chat(candidate, "This brain has already been taken! Please try your possession again later!")
|
||||
return FALSE
|
||||
if(candidate.mind && !isobserver(candidate))
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
if(explosive)
|
||||
spawn(10)
|
||||
explosion(src.loc, 3, 6, 12, 15)
|
||||
explosion(src.loc, 3, 6, 12, 15)
|
||||
|
||||
for(var/obj/machinery/ai_status_display/O in world) //change status
|
||||
if(src.key)
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
|
||||
/mob/living/silicon/pai/Destroy()
|
||||
GLOB.pai_list -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/mob/living/silicon/pai/Initialize()
|
||||
var/obj/item/device/paicard/P = loc
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
gold_core_spawnable = 2
|
||||
|
||||
/mob/living/simple_animal/pet/dog/Initialize()
|
||||
. = ..()
|
||||
var/dog_area = get_area(src)
|
||||
for(var/obj/structure/bed/dogbed/D in dog_area)
|
||||
if(!D.owner)
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
/obj/item/weapon/am_containment/ex_act(severity, target)
|
||||
switch(severity)
|
||||
if(1)
|
||||
explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess
|
||||
explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess
|
||||
if(src)
|
||||
qdel(src)
|
||||
if(2)
|
||||
if(prob((fuel/10)-stability))
|
||||
explosion(get_turf(src), 1, 2, 3, 5)
|
||||
explosion(get_turf(src), 1, 2, 3, 5)
|
||||
if(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
/obj/machinery/power/am_control_unit/process()
|
||||
if(exploding)
|
||||
explosion(get_turf(src),8,12,18,12)
|
||||
explosion(get_turf(src),8,12,18,12)
|
||||
if(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
#define APC_UPOVERLAY_OPERATING 8192
|
||||
|
||||
|
||||
#define APC_UPDATE_ICON_COOLDOWN 200 // 20 seconds
|
||||
|
||||
// the Area Power Controller (APC), formerly Power Distribution Unit (PDU)
|
||||
// one per area, needs wire conection to power network through a terminal
|
||||
|
||||
@@ -93,7 +91,7 @@
|
||||
var/force_update = 0
|
||||
var/update_state = -1
|
||||
var/update_overlay = -1
|
||||
|
||||
var/icon_update_needed = FALSE
|
||||
|
||||
/obj/machinery/power/apc/connect_to_network()
|
||||
//Override because the APC does not directly connect to the network; it goes through a terminal.
|
||||
@@ -212,11 +210,11 @@
|
||||
// update the APC icon to show the three base states
|
||||
// also add overlays for indicator lights
|
||||
/obj/machinery/power/apc/update_icon()
|
||||
|
||||
var/update = check_updates() //returns 0 if no need to update icons.
|
||||
// 1 if we need to update the icon_state
|
||||
// 2 if we need to update the overlays
|
||||
if(!update)
|
||||
icon_update_needed = FALSE
|
||||
return
|
||||
|
||||
if(update & 1) // Updating the icon state
|
||||
@@ -272,8 +270,9 @@
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
/obj/machinery/power/apc/proc/check_updates()
|
||||
icon_update_needed = FALSE
|
||||
|
||||
/obj/machinery/power/apc/proc/check_updates()
|
||||
var/last_update_state = update_state
|
||||
var/last_update_overlay = update_overlay
|
||||
update_state = 0
|
||||
@@ -344,7 +343,7 @@
|
||||
|
||||
// Used in process so it doesn't update the icon too much
|
||||
/obj/machinery/power/apc/proc/queue_icon_update()
|
||||
addtimer(CALLBACK(src, .proc/update_icon), APC_UPDATE_ICON_COOLDOWN, TIMER_UNIQUE)
|
||||
icon_update_needed = TRUE
|
||||
|
||||
//attack with an item - open/close cover, insert cell, or (un)lock interface
|
||||
|
||||
@@ -937,7 +936,8 @@
|
||||
return 0
|
||||
|
||||
/obj/machinery/power/apc/process()
|
||||
|
||||
if(icon_update_needed)
|
||||
update_icon()
|
||||
if(stat & (BROKEN|MAINT))
|
||||
return
|
||||
if(!area.requires_power)
|
||||
|
||||
@@ -527,7 +527,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
|
||||
user.visible_message("<span class='suicide'>[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return(OXYLOSS)
|
||||
|
||||
/obj/item/stack/cable_coil/New(loc, new_amount = null, var/param_color = null)
|
||||
/obj/item/stack/cable_coil/Initialize(mapload, new_amount = null, param_color = null)
|
||||
. = ..()
|
||||
if(new_amount) // MAXCOIL by default
|
||||
amount = new_amount
|
||||
@@ -779,9 +779,9 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
|
||||
/obj/item/stack/cable_coil/cut
|
||||
item_state = "coil_red2"
|
||||
|
||||
/obj/item/stack/cable_coil/cut/New(loc)
|
||||
..()
|
||||
src.amount = rand(1,2)
|
||||
/obj/item/stack/cable_coil/cut/Initialize(mapload)
|
||||
. =..()
|
||||
amount = rand(1,2)
|
||||
pixel_x = rand(-2,2)
|
||||
pixel_y = rand(-2,2)
|
||||
update_icon()
|
||||
@@ -819,10 +819,11 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
|
||||
item_color = "white"
|
||||
icon_state = "coil_white"
|
||||
|
||||
/obj/item/stack/cable_coil/random/New()
|
||||
/obj/item/stack/cable_coil/random/Initialize(mapload)
|
||||
. = ..()
|
||||
item_color = pick("red","orange","yellow","green","cyan","blue","pink","white")
|
||||
icon_state = "coil_[item_color]"
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/stack/cable_coil/random/five
|
||||
amount = 5
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
corrupt()
|
||||
return
|
||||
//explosion(T, 0, 1, 2, 2)
|
||||
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/proc/corrupt()
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
src.updateDialog()
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/proc/overheat()
|
||||
explosion(src.loc, 2, 5, 2, -1)
|
||||
explosion(src.loc, 2, 5, 2, -1)
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, sheet_path))
|
||||
@@ -294,7 +294,7 @@
|
||||
board_path = /obj/item/weapon/circuitboard/machine/pacman/super
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/super/overheat()
|
||||
explosion(src.loc, 3, 3, 3, -1)
|
||||
explosion(src.loc, 3, 3, 3, -1)
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/mrs
|
||||
name = "\improper M.R.S.P.A.C.M.A.N.-type portable generator"
|
||||
@@ -305,4 +305,4 @@
|
||||
board_path = /obj/item/weapon/circuitboard/machine/pacman/mrs
|
||||
|
||||
/obj/machinery/power/port_gen/pacman/mrs/overheat()
|
||||
explosion(src.loc, 4, 4, 4, -1)
|
||||
explosion(src.loc, 4, 4, 4, -1)
|
||||
|
||||
@@ -214,6 +214,7 @@
|
||||
|
||||
var/sprd = 0
|
||||
var/randomized_gun_spread = 0
|
||||
var/rand_spr = rand()
|
||||
if(spread)
|
||||
randomized_gun_spread = rand(0,spread)
|
||||
var/randomized_bonus_spread = rand(0, bonus_spread)
|
||||
@@ -230,7 +231,7 @@
|
||||
if(randomspread)
|
||||
sprd = round((rand() - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
else //Smart spread
|
||||
sprd = round((i / burst_size - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
sprd = round((((rand_spr/burst_size) * i) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
|
||||
if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd))
|
||||
shoot_with_empty_chamber(user)
|
||||
@@ -249,7 +250,7 @@
|
||||
firing_burst = 0
|
||||
else
|
||||
if(chambered)
|
||||
sprd = round((pick(1,-1)) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
sprd = round((rand() - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd))
|
||||
shoot_with_empty_chamber(user)
|
||||
return
|
||||
|
||||
@@ -166,5 +166,5 @@
|
||||
|
||||
/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user)
|
||||
..()
|
||||
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
charges--
|
||||
@@ -61,10 +61,10 @@
|
||||
|
||||
/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0)
|
||||
..()
|
||||
explosion(target, 0, 0, 2)
|
||||
explosion(target, 0, 0, 2)
|
||||
|
||||
/obj/item/projectile/bullet/pellet/overload/on_range()
|
||||
explosion(src, 0, 0, 2)
|
||||
explosion(src, 0, 0, 2)
|
||||
do_sparks(3, TRUE, src)
|
||||
..()
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
reagent_id = "welding_fuel"
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/boom()
|
||||
explosion(get_turf(src), 0, 1, 5, flame_range = 5)
|
||||
explosion(get_turf(src), 0, 1, 5, flame_range = 5)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/blob_act(obj/structure/blob/B)
|
||||
@@ -165,7 +165,7 @@
|
||||
reagent_id = "beer"
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B)
|
||||
explosion(src.loc,0,3,5,7,10)
|
||||
explosion(src.loc,0,3,5,7,10)
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -683,7 +683,7 @@
|
||||
spawn(rand(35,100))
|
||||
if(src.loc == user)
|
||||
visible_message("<span class='notice'>The [src]'s top opens, releasing a powerful blast!</span>")
|
||||
explosion(user.loc, -1, rand(1,5), rand(1,5), rand(1,5), rand(1,5), flame_range = 2)
|
||||
explosion(user.loc, -1, rand(1,5), rand(1,5), rand(1,5), rand(1,5), flame_range = 2)
|
||||
warn_admins(user, "Explosion")
|
||||
qdel(src) //Comment this line to produce a light grenade (the bomb that keeps on exploding when used)!!
|
||||
|
||||
|
||||
@@ -235,7 +235,9 @@
|
||||
/obj/docking_port/mobile/emergency/cancel(area/signalOrigin)
|
||||
if(mode != SHUTTLE_CALL)
|
||||
return
|
||||
|
||||
if(SSshuttle.emergencyNoRecall)
|
||||
return
|
||||
|
||||
invertTimer()
|
||||
mode = SHUTTLE_RECALL
|
||||
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
/obj/effect/proc_holder/spell/targeted/explosion/cast(list/targets,mob/user = usr)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
explosion(target.loc,ex_severe,ex_heavy,ex_light,ex_flash)
|
||||
explosion(target.loc,ex_severe,ex_heavy,ex_light,ex_flash)
|
||||
|
||||
return
|
||||
@@ -17,12 +17,22 @@
|
||||
|
||||
/datum/surgery_step/sever_tail
|
||||
name = "sever tail"
|
||||
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25)
|
||||
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100,
|
||||
/obj/item/weapon/melee/sabre = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100,
|
||||
/obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80,
|
||||
/obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50,
|
||||
/obj/item/weapon/hatchet = 40, /obj/item = 30) // 30% success with any sharp item.
|
||||
time = 64
|
||||
|
||||
/datum/surgery_step/sever_tail/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] begins to sever [target]'s tail!", "<span class='notice'>You begin to sever [target]'s tail...</span>")
|
||||
|
||||
/datum/surgery_step/sever_tail/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == /obj/item && !tool.is_sharp())
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/sever_tail/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/mob/living/carbon/human/L = target
|
||||
user.visible_message("[user] severs [L]'s tail!", "<span class='notice'>You sever [L]'s tail.</span>")
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "Joan, WJohnston"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds marker beacons to mining as a vendible item. They can be bought in stacks of 1, 10, and 30 at a rate of 10 points per beacon."
|
||||
- rscadd: "Miners start with a stack of 10 in their backpack, and the Extraction and Rescue Kit contains a stack of 30."
|
||||
- rscadd: "Marker beacons come in a large selection of colors and simply light up a small area when placed, but are useful as a path marker or to indicate dangers."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "CitadelStationBot"
|
||||
delete-after: True
|
||||
changes:
|
||||
- experiment: "Explosions will no longer have a start up delay"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "oranges"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "AI's can now hang up all holocalls at a station with alt+click"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Nanotrasen Plasmaman Outreach Division"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "plasmaman tank volume has been increased from 3 to 6."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "bandit"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "The officer's sabre standard in Nanotrasen captain rollouts can be used to remove the tails of lizard traitors, or lizards in general."
|
||||
+2
-2
@@ -14,7 +14,6 @@
|
||||
|
||||
// BEGIN_INCLUDE
|
||||
#include "_maps\basemap.dm"
|
||||
#include "_maps\tgstation2.dm"
|
||||
#include "code\_compile_options.dm"
|
||||
#include "code\world.dm"
|
||||
#include "code\__DATASTRUCTURES\globals.dm"
|
||||
@@ -246,6 +245,7 @@
|
||||
#include "code\datums\dna.dm"
|
||||
#include "code\datums\dog_fashion.dm"
|
||||
#include "code\datums\emotes.dm"
|
||||
#include "code\datums\explosion.dm"
|
||||
#include "code\datums\forced_movement.dm"
|
||||
#include "code\datums\holocall.dm"
|
||||
#include "code\datums\hud.dm"
|
||||
@@ -687,7 +687,6 @@
|
||||
#include "code\game\mecha\working\working.dm"
|
||||
#include "code\game\objects\buckling.dm"
|
||||
#include "code\game\objects\empulse.dm"
|
||||
#include "code\game\objects\explosion.dm"
|
||||
#include "code\game\objects\items.dm"
|
||||
#include "code\game\objects\obj_defense.dm"
|
||||
#include "code\game\objects\objs.dm"
|
||||
@@ -1490,6 +1489,7 @@
|
||||
#include "code\modules\mining\equipment\explorer_gear.dm"
|
||||
#include "code\modules\mining\equipment\kinetic_crusher.dm"
|
||||
#include "code\modules\mining\equipment\lazarus_injector.dm"
|
||||
#include "code\modules\mining\equipment\marker_beacons.dm"
|
||||
#include "code\modules\mining\equipment\mineral_scanner.dm"
|
||||
#include "code\modules\mining\equipment\resonator.dm"
|
||||
#include "code\modules\mining\equipment\vendor_items.dm"
|
||||
|
||||
Reference in New Issue
Block a user